【发布时间】:2018-10-28 23:15:40
【问题描述】:
我正在用 C++ 编写一个带有 OGL / GLFW 的游戏。
我的游戏始终以 60 fps 的速度运行,并且没有任何屏幕撕裂。经过一番研究,glfwSwapInterval() 功能似乎应该能够启用/禁用 V-sync 或 60fps 上限。
但是,无论我传递给函数的值如何,帧速率都锁定在 60 并且没有任何撕裂。我还检查了linux和nvidia面板上的合成器设置,它们没有生效。
我认为这是很常见的事情,有没有办法绕过这个 fps 上限?
【问题讨论】:
-
您可能在您的 GPU 驱动程序中启用了 vsync hard。搜索如何与任何供应商禁用它,看看它是否解锁了帧率。
-
10 秒的 google (GLFW vsync) 让我明白了这一点:glfw.org/docs/latest/… - 一种查询您的 GLFW 实现的方式来实现围绕撕裂支持的扩展。当您调用它时,它对这些扩展的支持是怎么说的?
-
@ricco19 我已经试过了,我的驱动程序中的 vsync 已禁用,但还是谢谢你。
-
@Yakk-AdamNevraumont 我尝试使用“GLX_EXT_swap_control”,结果为真。我认为这意味着可以使用交换控制,但那不应该是我之前尝试过的 glfwSwapInterval() 行吗?
-
glfwSwapInterval(0)将是编程方式,除非您需要直接在驱动程序 (GPU) 控制面板中覆盖它。
标签: c++ opengl frame-rate glfw vsync