2012-09-10 35 views
11

Tüm SDL/OpenGL programlarıyla, kare hızı 60 fps'de kaldı, bu yüzden vsync'nin etkinleştirilmesine benziyor, bana değil, koduma veya ayarlarım'a göre. Bu yüzden şimdi, bazı derin macOS ayarlarında, devre dışı bırakmanın bir yolu varsa şimdi isterim?MacOS'taki vsync nasıl devre dışı bırakılır

cevap

3

(ve Brett Hale yardımıyla) bu benim için çalıştı budur - Ben ekledim benim işlemek döngünün başında kod parçası (ve sadece içinde Apple olarak init, ... her zaman SwapInterval ayarlarını sıfırlamak gibi görünüyor) ve unsynchronize kare hızına sahip mümkün nihayet oldu:

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

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

O güzel değil <OpenGL/gl.h>

eklemeyi unutmayın çözüm ama aslında bir cazibeye benzeyen tek bulduğum.

4

SO. Benzer bir soru için bir here numaralı yaklaşımı özetledim. Çoğu Mac LCD'nin 60Hz'ye kilitlendiğini ve daha yeni donanımların 120Hz ile sınırlı olduğunu düşünmelisiniz. Vsync'nin devre dışı bırakılması, sadece boşa harcanan CPU/GPU döngüleri ile sonuçlanabilir ve muhtemelen yırtılma eserler ortaya çıkarabilir.

+0

Evet, bir çözüm bulmak için etrafa bakmaktan vazgeçtim ... Neyse, teşekkürler! – Nox

7

Bu, MacBook Pro'mda saniyede yaklaşık 700 kare almamı sağladı.

Bu da kalıcı değil Test/kıyaslama için mükemmel. Geçici bir çözüm arayan YIL sonra

Source

+1

Oh oh, tüm o zamandan sonra benim gad! Çok teşekkürler dostum! – Nox

+0

Bunu denedim ve hiçbir şey olmadı. Neyi yanlış yapıyorum? –

+0

1. Test ettiğiniz uygulamanın aslında 60 fps'yi geçebileceğini kontrol edin; 2. Bu çözüm, Yosemite veya El Capitan için test edilmemiş olan Mavericks 10.9 içindi. – cevaris

İlgili konular