¿Cómo desacoplar de forma segura la representación de la actualización del modelo?

Hablando con algunos desarrolladores de juegos, sugirieron que un motor de juego basado en OpenGL ES no se ocupa de todo en el hilo principal. Esto permite que el motor del juego funcione mejor en dispositivos con múltiples núcleos de CPU.

Dijeron que podía desacoplar las actualizaciones de la representación. Entonces, si entendí esto correctamente, un ciclo de ejecución del motor del juego puede funcionar así:

Configurar un CADisplayLink que llama arender método.

render El método hace que el modelo del mundo actual en el fondo.

render entonces el método llamaupdate Método en el hilo principal.

Entonces, mientras se procesa en segundo plano, ya puede actualizar al mismo tiempo el modelo mundial para la próxima iteración.

Para mí todo esto se siente mucho torpe. ¿Alguien puede explicar o vincular cómo se realiza en realidad esta representación simultánea + actualización del modelo? Me sorprende que esto no genere problemas porque, si la actualización del modelo lleva más tiempo que el renderizado o lo contrario. Quién espera qué y cuándo.

Lo que trato de entender es cómo esto se implementa teóricamente desde un punto de vista de alto nivel pero también en detalle.

Respuestas a la pregunta(2)

Su respuesta a la pregunta