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.

¿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?

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.

  • Android Aplicar efecto en el marco de la cámara
  • android ffmpeg opengl es hacer película
  • Render-a-textura y sincronización
  • Android - GLSurfaceView EGL_BAD_ALLOC
  • OpenGL ES Vertex / Indicies
  • Excepción OutofMemoryError dalvik.system.VMRuntime.newNonMovableArray (Método nativo)
  • Cómo detectar el clic en un objeto en OpenGL ES en la aplicación de Android?
  • Bordes posteriores punteados del objeto
  • Android OpenGL ES - Todas las extensiones compatibles?
  • Escribir en tiempo real opengl-es de juego para Android - alguna pregunta (optimización)
  • Mapas normales versus coordenadas normales
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.