我运行了我的程序两次。第一次使用glfwSwapInterval(1)时,一切都很好。第二次没有使用glfwSwapInterval(1),它使用了100%的CPU。
我的问题是:这是正常的吗?我真的必须调用glfwSwapInterval(1)才能使我的程序正常运行吗?
代码:
glfwInit();
long window = glfwCreateWindow(1200, 800, "OpenGL", 0, 0);
glfwShowWindow(window);
glfwMakeContextCurrent(window);
GL.createCapabilities();
glClearColor(1, 0, 0, 1);
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
}
glfwTerminate();
2条答案
按热度按时间v1uwarro1#
GLFW文档提到:“在上下文创建期间不调用
glfwSwapInterval
,将交换间隔设置为该平台上的默认设置。”因此,从本质上讲,是否启用同步取决于您的平台。例如,在我的机器上,默认设置似乎与您看到的相反。
在大多数情况下,您会希望调用
glfwSwapInterval(1)
来启用同步,但如果您有理由禁用它(例如,如果您正在比较着色器性能),也可以调用glfwSwapInterval(0)
。6bc51xsx2#
如果您希望将渲染循环同步到监视器的刷新率,则必须调用它。默认行为是渲染尽可能多的帧。