en Android, la documentación GLSurfaceView
dice esto:Android: ¿Cuándo se destruye el contexto OpenGL?
Un GLSurfaceView debe ser notificado cuando se detiene la actividad y reanudó. Los clientes GLSurfaceView deben llamar a OnPause() cuando se detiene la actividad y onResume() cuando se reanuda la actividad. Estas llamadas permiten a GLSurfaceView pausar y reanudar el hilo de representación, y también permiten a GLSurfaceView liberar y recrear la pantalla de OpenGL.
Así que tengo que hacer algo como esto en mi actividad:
public void onPause() {
myGlSurfaceView.onPause();
}
public void onResume() {
myGlSurfaceView.onResume();
}
estoy observando en mi código que si no llamo onPause()
y onResume()
entonces el contexto no se pierde cuando presiono el botón de inicio, entonces puedo cambiar entre aplicaciones y luego volver a mi juego y todo está funcionando. Lo que veo es que si cierro el juego con el botón Atrás, la pantalla se vuelve negra cuando lo abro de nuevo, pero puedo cambiar el comportamiento del botón Atrás para cerrar por completo el juego y evitar este problema.
Así que mi pregunta es: ¿cuándo se destruye el contexto OpenGL? Si no llamo al onPause()
y onResume()
, ¿puedo suponer que nunca será destruido?
EDIT:
he orientado Android 2.2, por lo setPreserveEGLContextOnPause()
no es una opción para mí.
Sería curioso saber el valor de myGlSurfaceView.getPreserveEGLContextOnPause(). Si eso está establecido en verdadero, entonces tu contexto puede ser preservado. Consulte http://developer.android.com/reference/android/opengl/GLSurfaceView.html#setPreserveEGLContextOnPause(boolean) para obtener más información. –
@RodHyde lo siento, me olvidé de decir que me estoy dirigiendo a Android 2.2 – Damian
Aquí hay un código que usa GLSurface para dibujar. http://code.google.com/p/andengine/source/browse/src/org/anddev/andengine/opengl/view/GLSurfaceView.java?r=ef54dd94f1fe8fa9ed134d993802c3c9974d3a84 –