Como mínimo, un juego de Android OpenGL tiene un subproceso de interfaz de usuario y un subproceso Renderer creado por GLSurfaceView
. Renderer.onDrawFrame()
debería estar haciendo un mínimo de trabajo para obtener el FPS más grande. La física, la IA, etc. no necesitan ejecutar cada cuadro, por lo que podemos ponerlos en otro hilo. Ahora tenemos:
- Subproceso de renderizador: actualice animaciones y dibuje polys
- Tema del juego: actualizaciones de lógica y física periódica, IA, etc.
- Subproceso de interfaz de usuario: solo interacción con la interfaz de usuario de Android
Como nunca quieres bloquear el hilo de la interfaz de usuario, ejecuto un hilo más para la lógica del juego. ¿Quizás eso no es necesario? ¿Hay alguna razón para ejecutar la lógica del juego en el hilo del renderizador?
fuente