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).
- Construyendo un juego en Mobile. ¿Nativo o motor?
- ¿Cómo puedo extraer las normales, las texturas, los vértices, los índices del archivo .obj de la licuadora al archivo .h?
- EGLImages con renderbuffer como hermano de origen y textura como hermano objetivo
- Opengls eglCreateWindowSurface GL Error EGL_BAD_ALLOC
- Cómo crear la pantalla de carga en libgdx?
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?
- OpenGL y 9 trazos desmontables
- Rotar la vista de anuncio con API 8
- Conversión de YUV a RGB por fragment shader
- ¿Cuál es el significado de la clase EGL14
- Manera recomendada de cargar (no interactivo) animaciones (hechas usando Maya) en OpenGL ES en iOS y Android
- Combinación Android de OpenGL de SurfaceTexture (imagen externa) y textura ordinaria
- ¿Están soportados Vertex Array Objects en Android OpenGL ES 2.0 usando extensiones?
- ¿Qué es JNI Graphics o cómo usarlo?
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í:
- Ver el almacenamiento en caché de encabezados y pies de página en una vista de lista
- Android Studio Logcat lento en la visualización de resultados