2012-09-10 26 views
11

We wszystkich moich programach SDL/OpenGL, ilość klatek na sekundę utknęła przy 60 fps, więc wygląda na to, że opcja vsync jest włączona, ale nie przeze mnie, ani w moim kodzie ani moich ustawieniach. więc chciałbym teraz, jeśli istnieje sposób, aby go wyłączyć, może w niektórych głębokich ustawieniach macOS?Jak wyłączyć vsync na macOS

Odpowiedz

3

Po latach szukają obejścia (iz pomocą Brett Hale) jest to, co pracował dla mnie - Dodałem, że kawałek kodu na początku mojego uczynić pętli (i nie tylko init, jak Apple wydaje się zresetować ustawienia swapinterval za każdym razem ...) i mógł wreszcie mieć anulowanie synchronizacji framerate:

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

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

nie zapomnij podać <OpenGL/gl.h>

To nie jest najładniejszy rozwiązanie, ale tak naprawdę to jedyny, który znalazłem działający jak urok.

4

Witamy w SO. Nakreśliłem podejście here dla podobnego pytania. Należy wziąć pod uwagę, że większość monitorów LCD Mac jest zablokowana na 60 Hz, a nowsze urządzenia są ograniczone do 120 Hz. Wyłączenie funkcji vsync może po prostu spowodować zmarnowanie cykli procesora/procesora graficznego i prawdopodobnie wprowadzenie artefaktów łzawiących.

+0

Tak, przestałem się rozglądać, aby znaleźć rozwiązanie ... Dzięki! – Nox

7

Pozwoliło mi to obejść ~ 700 klatek na sekundę na moim MacBooku Pro.

To także nie jest trwałe , idealny do testowania/testowania.

Source

+1

Och, mój gad, po całym tym czasie !! Wielkie dzięki! – Nox

+0

Próbowałem tego i nic się nie stało. Co ja robię źle? –

+0

1. Sprawdź, czy testowana aplikacja faktycznie przekracza 60 klatek na sekundę; 2. To rozwiązanie było dla Mavericks 10.9, nieprzetestowane dla Yosemite lub El Capitan. – cevaris