-1

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

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

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

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

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

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

我的场景双视口带有 vsync --> 30 fps(???我在这里期待 60 fps,因为它在没有 vsync 的情况下实现了 70 > 60 fps,我需要调用任何额外的 GLFW 函数吗?)

4

1 回答 1

1

也许问题在于您将 glFinish 或交换缓冲区命令放在每个渲染调用的末尾。这意味着渲染引擎将停止,直到执行所有绘图命令。它可以解释你走得这么慢的方式。

我认为你必须在两个渲染调用的末尾只放一个。

于 2015-04-21T08:26:46.810 回答