在OpenGL中使用带有GLFW的两个视口时,保持30 fps的速度

时间:2015-04-21 08:23:22

标签: opengl viewport frame-rate glfw vsync

使用glfwSwapInterval(1)或glfwSwapInterval(0)打开和关闭vsync

单个视口是glClear - > glViewport(0,0,win_w,win_h) - > drawcene() - >渲染循环中的glfwSwapBuffers

双视口是glClear - > glViewport(0,0,win_w / 2,win_h) - > drawcene() - > glViewport(win_w / 2,0,win_w / 2,win_h) - > drawcene() - > glfwSwapBuffers在渲染循环中

我的场景单视口没有vsync - > 140 fps

我的场景双视口没有vsync - > 70 fps(正如预期的那样两次绘制相同的场景)

我的带有vsync的场景单一视口 - > 60 fps(正如预期,因为我的显示器刷新率是60Hz)

带有vsync的我的场景双视口 - > 30 fps(???我在这里期待60 fps,因为它没有vsync就达到了70> 60 fps,我还有什么额外的GLFW功能吗?)

1 个答案:

答案 0 :(得分:1)

问题可能是你在每次渲染调用结束时都放了glFinish或swap buffer命令。这意味着渲染引擎将停止,直到执行所有绘图命令。这可能解释你走得这么慢的方式。

我认为你必须在两次渲染调用结束时只放一个。