Ejecutar Android OpenGL en el fondo como recurso de renderizado para la aplicación?
Quiero ejecutar una superficie OpenGL-ES de Android en el fondo de mi aplicación para proporcionar recursos gráficos dinámicos (mapas de bits, etc.) para la aplicación. OpenGl GLSurfaceView no es la pantalla visible de mi aplicación; Sólo se utiliza como una fábrica de renderizado para fabricar gráficos para su uso por la actividad principal.
¿Alguien sabe cómo hacer que un GLSurfaceView de Android se ejecute cuando no es una vista activa? La documentación de Google Android es clara cuando una GLSurfaceView pierde su estado como una vista primaria, la superficie se destruye junto con todos sus recursos.
- Compartir el contexto EGL2.0 entre 2 GLSurfaceViews causó EGL_BAD_ACCESS en las tabletas Android
- Coordenadas de textura en opengl android mostrando la imagen invertida
- Tomando una captura de pantalla de Android OpenGL
- Java.lang.RuntimeException: eglSwapBuffers falló: EGL_SUCCESS
- GlTexSubImage2D es más lento con objetos de búfer de píxeles
¿Hay alguna manera de mantener un GLSurfaceView y su GLSurfaceView.Renderer asociado corriendo normalmente cuando no es (y nunca es) la vista primaria de la aplicación?
- Juego opengl android
- OpenGL en Android usando sólo C ++
- Java anidado clase interna acceso a las variables de clase externa
- Diferencia entre GL10 y GLES10 en Android
- Android: GLES20: Se llama API OpenGL ES no implementada
- ¿Cómo deshacerse de los bordes dentados en Android OpenGL ES?
- Dibujar mapa de bits utilizando Opengl es en Android
- Cómo limitar framerate cuando se utiliza GLSurfaceView.RENDERMODE_CONTINUOUSLY de Android?
Para lo que está tratando de hacer, debe omitir el GLSurfaceView completamente. Dado que sólo desea hacer un renderizado fuera de pantalla de OpenGL, puede hacer uso de un búfer de píxeles EGL y convertirlo en un mapa de bits. Vea este hilo en anddev para una solución. Lo he usado con mucho éxito en algunas de mis aplicaciones.
La implementación hacia el fondo de ese hilo es un poco buggy, ya que hace algunos EGL muy simple elegir. Recomendaría implementar un selector más robusto, que puede encontrar en GLWallpaperService de Robert Green, si lo desea.
Otro cambio que acabé haciendo fue eliminar el reflejo vertical de píxeles. Acabo de terminar volteando mi viewport en onSurfaceCreate, en lugar de voltear manualmente píxeles renderizados al escribir en el mapa de bits.
¡Buena suerte!
Recomiendo encarecidamente que no intente hacer esto. Muchos controladores actuales en dispositivos Android no admiten varios contextos activos de GL a través de procesos; Si el controlador es compatible con esto, la característica no se ha ejercido mucho porque Android en sí no hace esto, por lo que es probable que sean los errores desagradables que resultan.
El contexto GL múltiple sólo está siendo utilizado por la plataforma a partir de Android 3.0.
- Cómo dibujar una imagen de marcador pequeño y mantener la actualización de su posición en mi imagen de mapa PERSONALIZADO? – Android
- Extraño error NoClassDefFoundError al iniciar una versión firmada APK con proguard habilitado