Actualmente estoy trabajando en un juego de carreras de autos en 3D para la plataforma iOS. Tuve que implementar un sistema de reproducción y luego grabar esa reproducción en un archivo de video para subirlo a YouTube.
Solo tengo problemas con la parte de grabación, el resto está hecho. Lo que estoy haciendo es usar el glReadPixels()
comando de OpenGL ES 1.1 para capturar el contenido del framebuffer y crear un video a partir de estos cuadros durante el tiempo de ejecución (usando el marco AVFoundation).
El problema al que me enfrento es que tengo que llamar glReadPixels()
a cada actualización, que es muy lenta. Disminuye el FPS de alrededor de 30 a solo 2-3 ... ¿Hay alguna alternativa al glReadPixels()
comando? ¿O alguien creó un sistema de reproducción y lo grabó en video?
Creo que la forma más sencilla es registrar las acciones y el estado de los usuarios y de la IA durante el juego, no los cuadros reales. Una vez que el juego ha finalizado, ya sea que el jugador complete la carrera o regrese al menú principal, se les da la opción de mirar una repetición (o guardar una) y solo entonces esas acciones se utilizan para recrear los cuadros al reproducir las acciones y Estado a través del motor del juego. Esto tiene el beneficio adicional de no (esencialmente) tener que dibujar cada fotograma completo varias veces adicionales durante el juego.
fuente