2012-03-13 13 views
5

¿Cuál debería ser la diferencia, a propósito, entre estos dos métodos en mi ciclo de renderizado?Diferencia entre glkView: drawInRect: y glkViewControllerUpdate :? OpenGL ES 2 - iOS

Apple tiene esto que decir ....

Sobre la actualización() El controlador ver las llamadas de su delegado glkViewControllerUpdate: método. Su delegado debe actualizar los datos de marcos que no implican la representación de los resultados en la pantalla.

Sobre drawInRect: el objeto GLKView hace su contexto OpenGL ES el contexto actual y se une a su framebuffer como el objetivo para OpenGL ES representación comandos. Su método delegado debería dibujar los contenidos de la vista.

Básicamente, cuando creo un GLKView en mi controlador de vista, ese controlador se convierte en el desajuste, entonces estoy viendo estos métodos uno al lado del otro.

Supuse que update() debería contener cualquier transformación u otra lógica.

Respuesta

4

En primer lugar, Apple está tratando de ayudarlo a desacoplar el tiempo de la velocidad de fotogramas. Si su juego siempre logra dibujar un marco en el tiempo asignado para un solo cuadro, los dos ocurrirán en bloque. Pero incluso si aparecen muchos objetos en la pantalla y la velocidad de fotogramas disminuye un poco, igual obtendrá el mismo número de actualizaciones por segundo para que los objetos se muevan a la misma velocidad.

En el segundo, le ayudan a mantener su código dividido como modelo-vista-controlador. Cómo se presentan sus objetos debe estar desacoplado de cómo actúan.

Así que su actualización debe progresar sea lo que sea que causa su animación, su sorteo debe presentar el estado actual.

+0

Ya veo. Así que, por ejemplo, en Space Invaders, un nuevo barco que ingrese a la vista de modelo o el jugador que hace zoom sobre un planeta sería responsabilidad de la actualización. Mientras drawInRect: simplemente proyecta la matriz, hasta la velocidad de fotogramas deseada, pero no siempre puede mantenerse al día dependiendo de la carga. –

+0

Sí, cualquier lógica que actualice el estado del juego sería parte de la actualización, ya sea que esté agregando un nuevo modelo o moviendo la cámara. – Tommy

Cuestiones relacionadas