如何在macOS上禁用vsync

Nox*_*Nox 14 opengl macos sdl vsync

使用我的所有SDL/OpenGL程序,帧速率保持在60fps,因此看起来像vsync是启用,但不是我,也不是我的代码或我的设置.所以我想现在如果有办法禁用它,可能在一些深度macOS设置?

cev*_*ris 8

这使我能够在MacBook Pro上获得每秒约700帧的速度.

它也不是永久性的,非常适合测试/基准测试.

资源


Bre*_*ale 5

欢迎来到SO.我在这里概述了一个类似问题的方法.您应该考虑到大多数Mac LCD锁定为60Hz,而最近的硬件限制为120Hz.禁用vsync可能只会导致浪费的CPU/GPU周期,并可能引入撕裂工件.


Nox*_*Nox 5

在YEARS寻找解决方法(并在Brett Hale的帮助下)之后,这才对我有用-我在渲染循环开始时添加了这段代码(不仅在init中,因为Apple似乎重置了该代码)每次都使用SwapInterval设置...),最终能够取消帧速率的同步:

#ifdef __APPLE__
GLint                       sync = 0;
CGLContextObj               ctx = CGLGetCurrentContext();

CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif
Run Code Online (Sandbox Code Playgroud)

不要忘记包括 <OpenGL/gl.h>

这不是最好的解决方案,但实际上它是我发现的唯一一种魅力十足的解决方案。