La mejor manera de hacer el bucle del juego para Android usando OpengGLSurface

De lo que he visto, si quiero hacer un bucle de juego NON-opengl lo que puedo hacer es tener un hilo de juego que durante el bucle actualizará el estado del juego (o la física del juego) y también actualizará los gráficos bloqueando un Canvas de Una (normal) SurfaceView , haciendo el dibujo a través de los métodos Canvas.drawXXX (…) y desbloqueándolo en qué punto los gráficos se actualizan para el bucle.

Realmente no entiendo cómo hacerlo cuando se utiliza GLSurfaceView y Renderer . Por lo que entiendo, ya no puedo tener mi juego hecho a mano Thread a la demanda como lo hice con la superficie regular y es Canvas , porque ahora hay un hilo de renderizado que llamará Renderer.onDrawFrame() (en mi implementación del renderizador Clase que paso al GLSurfaceView).

Mi pregunta es entonces, ¿cuál es una buena manera de hacer un bucle de juego con GLSurfaceView y Renderer? ¿Debo seguir haciendo mi hilo de juego independiente, pero sólo manejar las actualizaciones de estado de juego (física) en él y luego usar ese estado de juego en mi implementación de Renderer.onDrawFrame () para dibujar gráficos en función del estado actual? ¿Debería usar el hilo del Rendere también para hacer actualizaciones de estado?

Bueno, como resulta, el mejor camino a seguir es usar el hilo proporcionado por GLSurface. El gancho a lo que viene a través de una aplicación de la interfaz Renderer. Efectivamente, el método onDrawFrame () de Renderer puede considerarse análogo al método run () de Thread normal. Este tipo de lanzamientos hacia fuera la ventana el concepto de un paradigma fijo de las actualizaciones por segundo (no realmente, pero es demasiado enredo a hacer en este contexto) pero por otro lado usted consigue las actualizaciones gráficas óptimas.

Hay un gran tutorial sobre Android y OpenGL aquí:

http://insanitydesign.com/wp/projects/nehe-android-ports/

  • Límites de memoria de Android Graphics
  • ¿Hay alguna forma de comprobar si el dispositivo Android es compatible con openGL ES 2.0?
  • Recibe la entrada completa de unicode android en C / C ++
  • Android OpenGL2.0 que muestra texturas negras
  • parámetros de glGenTexture?
  • Voltear eje Y en OpenGL ES?
  • Ayúdame a configurar OpenGL para 2D
  • Los límites de Viewport en cualquier resolución con OpenGL ES
  • Compresión de textura de Android OpenGL
  • ¿Por qué eglCreateImageKHR está devolviendo EGL_NO_IMAGE_KHR (en android)?
  • OpenGLES en Android - IllegalStateException: setRenderer ya ha sido llamado para esta instancia
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.