这里有一个解决方案:如何在macOS上禁用垂直同步。然而,这只适用于10.10及更早版本和Xcode 6及更早版本。似乎随Xcode 7附带的石英调试工具没有关闭vysnc(beam sync)的选项。如果您能提供任何帮助,将不胜感激。我使用的是Mac Book Pro 13寸。
多年来一直在寻找解决方法,最终我在渲染循环的开头添加了这段代码,终于实现了不同步的帧率:
#ifdef __APPLE__
GLint sync = 0;
CGLContextObj ctx = CGLGetCurrentContext();
CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif
<OpenGL/gl.h>
这可能不是最好的解决方案,但这是我找到的唯一一个完美运行的方法。kCGLCPSwapInterval
/ NSOpenGLCPSwapInterval
/ CVDisplayLink
。 - vk.edward.liflushBuffer()
的实际绘图代码不能放在 func draw(_ dirtyRect: NSRect)
中。 - vk.edward.lifunc draw(_ dirtyRect: NSRect)
中(如果我没记错的话)。 - vk.edward.li