Actualmente estoy trabajando en un proyecto para convertir una simulación de física a un video en el iPhone.OpenGL para video en el iPhone
Para hacer esto, actualmente estoy usando dos bucles diferentes. El primer bucle se ejecuta en el bloque donde el objeto AVAssetWriterInput sondea el EAGLView para obtener más imágenes. EAGLView proporciona las imágenes de una matriz donde se almacenan.
El otro lazo es la simulación real. Apagué el temporizador de simulación y llamo a la marca yo mismo con una diferencia de tiempo preestablecida cada vez. Cada vez que se llama a un tic, creo una nueva imagen en el método de buffer de intercambio de EAGLView después de que los buffers han sido intercambiados. Esta imagen luego se coloca en la matriz que AVAssetWriter sondea.
También hay algo de código misceláneo para asegurarse de que la matriz no sea demasiado grande
Todo esto funciona bien, pero es muy, muy lento.
¿Hay algo que estoy haciendo que, conceptualmente, hace que todo el proceso sea más lento de lo que podría ser? Además, ¿alguien sabe de una forma más rápida de obtener una imagen de Open GL que glReadPixels?
En primer lugar, ¿ha utilizado Instruments (Time Profiler, Shark) para comprobarse a sí mismo qué funciones están ocupando la mayor cantidad de tiempo? – makdad