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
(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.
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.
Bu, MacBook Pro'mda saniyede yaklaşık 700 kare almamı sağladı.
- Download Graphics Tools for Xcode - Late August 2014
- Araçlarına
- Açık Kuvars Debug
- Git yükleyin ya da sadece Grafik Araçlar monte -> Show Işın Sync Araçları
- Seç Devre Dışı Işın Senkronizasyon
Bu da kalıcı değil Test/kıyaslama için mükemmel. Geçici bir çözüm arayan YIL sonra
Oh oh, tüm o zamandan sonra benim gad! Çok teşekkürler dostum! – Nox
Bunu denedim ve hiçbir şey olmadı. Neyi yanlış yapıyorum? –
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
Evet, bir çözüm bulmak için etrafa bakmaktan vazgeçtim ... Neyse, teşekkürler! – Nox