Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在macOS上禁用vsync_Macos_Opengl_Sdl_Vsync - Fatal编程技术网

如何在macOS上禁用vsync

如何在macOS上禁用vsync,macos,opengl,sdl,vsync,Macos,Opengl,Sdl,Vsync,在我所有的SDL/OpenGL程序中,帧速率都保持在60fps,所以看起来vsync是启用的,但不是由我启用的,也不是在我的代码或设置中启用的。因此,我现在想知道是否有办法禁用它,可能是在某些深层macOS设置中?欢迎使用。我概述了解决类似问题的方法。你应该考虑到大多数MAC LCD都被锁定到60Hz,而最近的硬件限制在120赫兹。禁用vsync可能只会导致CPU/GPU周期浪费,并可能引入撕裂伪影。这使我能够在MacBook Pro上每秒获得约700帧 安装或仅安装图形工具 打开石英调试

在我所有的SDL/OpenGL程序中,帧速率都保持在60fps,所以看起来vsync是启用的,但不是由我启用的,也不是在我的代码或设置中启用的。因此,我现在想知道是否有办法禁用它,可能是在某些深层macOS设置中?

欢迎使用。我概述了解决类似问题的方法。你应该考虑到大多数MAC LCD都被锁定到60Hz,而最近的硬件限制在120赫兹。禁用vsync可能只会导致CPU/GPU周期浪费,并可能引入撕裂伪影。

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

  • 安装或仅安装图形工具
  • 打开石英调试
  • 转到工具->显示光束同步工具
  • 选择“禁用波束同步”
它也不是永久性的,非常适合于测试/基准测试


在多年寻找解决方案(并在的帮助下)后,这对我来说是有效的-我在渲染循环的开始添加了这段代码(不仅在init中,因为苹果似乎每次都会重置SwapInterval设置…),并最终能够实现非同步帧速率:

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

CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif
不要忘记包括


这不是最好的解决方案,但事实上,这是我发现的唯一一个有效的解决方案。

是的,我已经不再四处寻找解决方案了。。。无论如何谢谢你!哦,天哪,这么久了!!谢谢你,伙计!我试过了,什么也没发生。我做错了什么。仔细检查你正在测试的应用程序是否可以达到每秒60帧以上;2.这个解决方案是针对Mavericks 10.9的,没有针对Yosemite或El Capitan进行过测试。您是否介意在您的回答中声明,这个解决方案实际上不再适用于xCode 7.3的10.11版本(这是我唯一尝试过的版本)请?您的第一个链接已断开:它说
您的会话已过期。请登录。
。显然,这在Mac OS 10.14(Mojave)中已被破坏,vsync始终处于禁用状态(但Metal中的vsync仍然有效)。SDL2.0.10+(尚未发布)将通过使用CVDisplayLink解决此错误。您可以看到,而且,SDL2以前使用的代码似乎只设置了一次,而不是每一帧。可能是因为他们在Mac OS 10.14.4中调用了
[NSOpenGLContext setValues:&value-forParameter:NSOpenGLCPSwapInterval]
新闻