2012-09-10 41 views
11

禁用垂直同步用我所有的SDL/OpenGL程序,幀率是停留在60fps,所以看起來像VSYNC是啓用的,但不是我,也不是我的代碼或我的設置。所以我想現在如果有一種方法可以禁用它,也許在一些深層的macOS設置?如何在MacOS

回答

3

經過多年的尋找解決方法(和與Brett Hale的幫助),這是對我工作 - 我添加了一段代碼在我的渲染循環的開始(而不是隻在在init,蘋果似乎每次重置SwapInterval設置...),並終於能有取消同步幀率:

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

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

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

這是不是最好的解決方案,但它實際上是我發現的唯一一個像魅力一樣工作的人。

4

歡迎SO。對於類似的問題,我概述了一種方法here。你應該考慮到大多數Mac液晶顯示器都被鎖定到60Hz,而最近的硬件被限制在120Hz。禁用vsync可能只會導致浪費CPU/GPU週期,並可能引入撕裂僞像。

+0

是啊,我停止環視無論如何要找到一個解決辦法...謝謝! – Nox

7

這使我能夠避開〜每秒700幀的我的MacBook Pro。

  • ​​
  • 安裝或只安裝圖形工具
  • 打開石英調試
  • 選擇工具 - >顯示梁同步工具
  • 選擇禁用梁同步

它也不是永久的,非常適合測試/基準測試。

Source

+1

呵呵,我的小子,畢竟那個時候! 非常感謝! – Nox

+0

我試過了,沒有發生任何事情。我究竟做錯了什麼? –

+0

1.仔細檢查您正在測試的應用程序可以真正去了60fps的; 2.此解決方案適用於Mavericks 10.9,未經Yosemite或El Capitan認證 – cevaris