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
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.
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.
Questo mi ha permesso di ottenere circa 700 fotogrammi al secondo sul mio MacBook Pro.
- Download Graphics Tools for Xcode - Late August 2014
- Installare o semplicemente montare Strumenti grafici
- Aprire Quartz Debug
- Vai su Strumenti -> Mostra Fascio Strumenti Sync
- Selezionare Disabilita raggio di sincronizzazione
Non è neanche permanente , perfetto per test/benchmarking.
Sì, ho smesso di guardarmi intorno per trovare una soluzione ... Grazie comunque! – Nox