在 OpenGL 中使用两个带有 GLFW 的视口时,卡在 30 fps 上


vsync 使用 glfwSwapInterval(

1) 或 glfwSwapInterval(0) 打开和关闭

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

double viewport is glClear --> glViewport(0, 0, win_w/2,win_h) --> drawscene() -->

glViewport(win_w/2, 0, win_w/2,win_h) --> drawscene() --渲染循环中的>glfwSwapBuffers

我的场景单视口,没有垂直同步 --> 140 fps

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

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

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

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

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

最新更新