2012-09-10 11 views
11

Con todos mis programas SDL/OpenGL, la velocidad de fotogramas está bloqueada a 60 fps, por lo que parece que la función vsync está habilitada, pero no yo, ni en mi código ni en mi configuración. entonces me gustaría ahora si hay una forma de desactivarlo, ¿tal vez en algunas configuraciones macOS profundas?Cómo deshabilitar vsync en macOS

Respuesta

3

después de años en busca de una solución (y con la ayuda de Brett Hale) esto es lo que funcionó para mí - He añadido ese pedazo de código en el inicio de mi bucle de render (y no sólo en init, ya que Apple parece restablecer la configuración SwapInterval cada vez ...) y finalmente fue capaz de tener imágenes por segundo Desincronizar:

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

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

no se olvide de incluir <OpenGL/gl.h>

no es el mejor solución, pero en realidad es la única que encontré que funciona como un encanto.

4

Bienvenido a SO. Esbocé un enfoque here para una pregunta similar. Debería tener en cuenta que la mayoría de las Mac LCD están bloqueadas a 60Hz, y el hardware más reciente está limitado a 120Hz. La desactivación de vsync puede simplemente dar como resultado ciclos de CPU/GPU desperdiciados y posiblemente introducir artefactos de desgarro.

+0

Sí, he dejado de buscar una solución ... ¡Gracias de todos modos! – Nox

7

Esto me permitió obtener alrededor de ~ 700 fotogramas por segundo en mi MacBook Pro.

tampoco es permanente , perfecto para pruebas/benchmarking.

Source

+1

¡Oh, mi gad, después de todo ese tiempo! ¡Muchas gracias amigo! – Nox

+0

intenté esto y no pasó nada. ¿Qué estoy haciendo mal? –

+0

1. Verifique que la aplicación que está probando en realidad puede superar los 60 fps; 2. Esta solución fue para Mavericks 10.9, no probado para Yosemite o El Capitán – cevaris