使用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功能吗?)
答案 0 :(得分:1)
问题可能是你在每次渲染调用结束时都放了glFinish或swap buffer命令。这意味着渲染引擎将停止,直到执行所有绘图命令。这可能解释你走得这么慢的方式。
我认为你必须在两次渲染调用结束时只放一个。