Pregunta

Actualmente estoy trabajando en un motor de juego escrito en pygame y quería agregar compatibilidad con OpenGL.

Escribí una prueba para ver cómo hacer que pygame y OpenGL funcionen juntos, y cuando se ejecuta en modo de ventana, se ejecuta entre 150 y 200 fps. Cuando lo ejecuto a pantalla completa (todo lo que hice fue agregar la bandera PANTALLA COMPLETA cuando configuré la ventana), se reduce a 60 fps. Agregué muchas más funciones de dibujo para ver si era solo una gran caída de rendimiento, pero siempre se ejecutó a 60 fps.

¿Hay algo más que deba hacer para decirle a OpenGL que se está ejecutando a pantalla completa o es una limitación de OpenGL?

(Estoy ejecutando en Windows XP)

¿Fue útil?

Solución

Como señaló frou, esto se debería a que Pygame está esperando el retroceso vertical cuando actualiza la pantalla llamando a display.flip () . Como Pygame muestra documentación notas, si configura el modo de visualización utilizando HWSURFACE o las banderas DOUBLEBUF , display.flip () esperará el retroceso vertical antes intercambiando buffers.

Para ser honesto, no veo ninguna buena razón (aparte de la evaluación comparativa) para tratar de lograr una velocidad de fotogramas que sea más rápida que la frecuencia de actualización de la pantalla. Usted (y las personas que juegan su juego) no podrán notar ninguna diferencia en velocidad o rendimiento, ya que la pantalla solo puede dibujar 60 fps de todos modos. Además, si no se sincroniza con el retroceso vertical, existe una buena posibilidad de que obtenga desgarro de la pantalla .

Otros consejos

¿Es este un problema de V-Sync ? Algo sobre la configuración o su entorno puede estar limitando la velocidad máxima de cuadros a la frecuencia de actualización de su monitor.

Si no está cambiando su clock.tick () cuando cambia entre pantalla completa y modo de ventana, esto es casi seguro un problema de vsync. Si está en una pantalla LCD, entonces es 100% seguro.

Desafortunadamente, v-sync se puede manejar en muchos lugares, incluidos SDL, Pyopengl, su servidor de visualización y sus controladores de video. Si está utilizando Windows, puede ajustar la alternancia vsync en el panel de control de nvidia para probar, y es muy probable que haya algo en la configuración de nvidia para Linux también. Supongo que los controladores de otros fabricantes tienen configuraciones similares, pero eso es una suposición.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top