在OpenGL程序中必须调用glfwSwapInterval(1)吗?

cig3rfwq  于 2022-09-26  发布在  其他
关注(0)|答案(2)|浏览(211)

我运行了我的程序两次。第一次使用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();
v1uwarro

v1uwarro1#

GLFW文档提到:“在上下文创建期间不调用glfwSwapInterval,将交换间隔设置为该平台上的默认设置。”

因此,从本质上讲,是否启用同步取决于您的平台。例如,在我的机器上,默认设置似乎与您看到的相反。

在大多数情况下,您会希望调用glfwSwapInterval(1)来启用同步,但如果您有理由禁用它(例如,如果您正在比较着色器性能),也可以调用glfwSwapInterval(0)

6bc51xsx

6bc51xsx2#

如果您希望将渲染循环同步到监视器的刷新率,则必须调用它。默认行为是渲染尽可能多的帧。

相关问题