14

对于我所有的 SDL/OpenGL 程序,帧速率都停留在 60fps,所以看起来垂直同步已启用,但不是由我启用,也不是在我的代码或我的设置中。所以我现在想如果有办法禁用它,也许在一些深层的 macOS 设置中?

4

3 回答 3

8

这使我能够在我的 MacBook Pro 上获得大约每秒 700 帧。

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

来源

于 2014-09-05T04:14:54.047 回答
5

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

于 2012-09-10T07:52:47.100 回答
5

经过多年寻找解决方法(并在Brett Hale的帮助下),这对我有用 - 我在渲染循环开始时添加了那段代码(不仅在 init 中,因为 Apple 似乎重置了每次的 SwapInterval 设置......),终于能够有不同步的帧率:

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

CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif

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

这不是最好的解决方案,但它实际上是我发现的唯一一个像魅力一样工作的解决方案。

于 2016-09-12T20:26:58.977 回答