2012-09-10 28 views
11

Con tutti i miei programmi SDL/OpenGL, il framerate è bloccato a 60fps, quindi sembra che il vsync sia abilitato, ma non da me, né nel mio codice o nelle mie impostazioni. quindi mi piacerebbe ora se c'è un modo per disabilitarlo, forse in alcune impostazioni macOS profonde?Come disabilitare vsync su macOS

risposta

3

dopo anni alla ricerca di una soluzione alternativa (e con l'aiuto di Brett Hale) questo è ciò che ha funzionato per me - ho aggiunto quel pezzo di codice all'inizio del mio ciclo di rendering (e non solo in init, come Apple sembra ripristinare le impostazioni swapinterval ogni volta ...) ed è stato finalmente in grado di avere framerate desincronizzare:

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

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

non dimenticare di includere <OpenGL/gl.h>

non è la più bella soluzione ma in realtà è l'unica che ho trovato che funziona come un fascino.

4

Benvenuti in SO. Ho delineato un approccio here per una domanda simile. Dovresti considerare che la maggior parte degli LCD Mac è bloccata a 60 Hz e che l'hardware più recente è limitato a 120 Hz. La disattivazione di vsync potrebbe semplicemente comportare cicli di CPU/GPU sprecati e probabilmente introdurre artefatti da strappare.

+0

Sì, ho smesso di guardarmi intorno per trovare una soluzione ... Grazie comunque! – Nox

7

Questo mi ha permesso di ottenere circa 700 fotogrammi al secondo sul mio MacBook Pro.

Non è neanche permanente , perfetto per test/benchmarking.

Source

+1

Oh mio gad, dopo tutto quel tempo !! Grazie mille amico! – Nox

+0

ho provato questo e non è successo niente. Che cosa sto facendo di sbagliato? –

+0

1. Verifica che l'app che stai testando superi i 60fps; 2. Questa soluzione era per Mavericks 10.9, non testata per Yosemite o El Capitan – cevaris

Problemi correlati