当GLFW / OpenGL窗口不可见时,CPU使用率很高

前端之家收集整理的这篇文章主要介绍了当GLFW / OpenGL窗口不可见时,CPU使用率很高前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用GLFW,所以用OpenGL设置一个Window.由于我刚刚开始学习OpenGL及其周围的所有内容,这可能听起来像一个愚蠢的问题,但为什么GLFW的示例程序在Window未被主动显示时使用接近100%的cpu(最小化或被另一个窗口隐藏) )?

这是GLFW的例子,我在Mac OS上使用Xcode运行它:

#include <GLFW/glfw3.h>
int main(void)
{
    GLFWwindow* window;

    if (!glfwInit())  /* Initialize the library */
        return -1;

/* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640,480,"Hello World",NULL,NULL);
    if (!window)
    {
       glfwTerminate();
        return -1;
    }

/* Make the window's context current */
    glfwMakeContextCurrent(window);

/* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

解决方法

无论窗口的最小化状态是什么,都会执行渲染循环.

如果要停止渲染,则必须稍微调整应用程序逻辑以跟踪窗口所处的状态.GLFW支持用户定义的回调,用于glfwSetWindowIconifyCallback()这样的事情
因此,当窗口最小化或恢复时,您的应用程序会被注意到.您可以决定停止渲染循环,并且可以使用glfwWaitEvents()等待某些事情发生(例如正在恢复的窗口),而不使用所有可用的cpu时间.

猜你在找的C&C++相关文章