使用我的所有SDL / OpenGL程序时,帧速率停留在60fps,因此看起来似乎启用了vsync,但不是我,也不是我的代码或我的设置。所以我想现在,如果有一种方法可以禁用它,可能在一些深度macOS设置?
答案 0 :(得分:8)
这让我可以在MacBook Pro上每秒大约700帧。
它也不是永久性的,非常适合测试/基准测试。
答案 1 :(得分:5)
欢迎来到SO。我概述了针对类似问题的方法here。您应该考虑到大多数Mac LCD锁定为60Hz,而最近的硬件限制为120Hz。禁用vsync可能只会导致浪费的CPU / GPU周期,并可能引入撕裂工件。
答案 2 :(得分:5)
在YEARS寻找解决方法之后(并在Brett Hale的帮助下)这对我有用 - 我在渲染循环开始时添加了那段代码(而不仅仅是在init中) ,因为Apple似乎每次重置SwapInterval设置......)并且最终能够使帧率不同步:
#ifdef __APPLE__
GLint sync = 0;
CGLContextObj ctx = CGLGetCurrentContext();
CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif
不要忘记包含<OpenGL/gl.h>
这不是最好的解决方案,但它实际上是我发现的唯一一个像魅力一样工作的解决方案。