Necesito aplicar algunos sombreadores de píxeles a un mapa de bits (usando OpenGL) y enviar el resultado al servidor. Se supone que la representación se realiza en segundo plano, por lo que no puedo crear GLSurfaceView para este fin. Entonces mi pregunta es: ¿es posible hacer un renderizado OpenGL en Android sin usar GLSurfaceView? ¿Como renderizar directamente en mapa de bits, o lienzo o algún tipo de búfer/matriz? ¿O puede ser posible utilizar algún tipo de GLSurfaceView ficticio?OpenGl render directamente a mapa de bits (sin ninguna vista)
Respuesta
This SO post contiene un enlace a an anddev post. Un poco hacia abajo, alguien creó una clase PixelBuffer
que reutiliza la interfaz GLSurfaceView.Renderer
, pero aparte de eso, solo EGL.
Afortunadamente, acabo de terminar mi propio procesador basado en la misma idea. Gracias por la respuesta y el pensamiento de enlace. Puede ser útil para otros. –
El objeto PixelBuffer mencionado contiene una buena prueba de concepto, pero tiene un problema de rendimiento crítico: una vez que se representa el búfer, se realiza una segunda copia del mapa de bits copiando cada píxel en un bucle que puede causar un 100% o más Aumentar el tiempo de ejecución! Solo muestra que es importante mantener tus marcos de referencia alineados en OGL. – tomwhipple
Además, PixelBuffer funciona en algunos teléfonos, pero no en otros. ¡Yay, fragmentación! – tomwhipple
Parece que desea procesar un objeto de búfer de cuadros (es decir, directamente a una textura). Esto es definitivamente posible. Simplemente busque la respuesta aquí o en la web. Encontré este sin esforzarme demasiado. No estoy seguro de si está usando GL ES 1.1 o 2.0.
http://blog.shayanjaved.com/2011/05/13/android-opengl-es-2-0-render-to-texture/
También se parece a APIDemos en el SDK tiene una muestra de 1,1
Gracias por la respuesta. Como puedo ver, ambos métodos dependen de GLSurfaceView. Necesito que mi representación se realice sin ninguna pantalla/actividad/diseño disponible. Quiero decir en algún hilo de fondo. Me pregunto si GLSurfaceView puede crear contexto GL sin poder inicializar su superficie (ya que requiere una pantalla para dibujar). Gracias por la pista de todos modos, esto parece ser útil. –
@boulder ¿GLSurfaceView no se inicializa si está fuera de la pantalla? ¿Qué pasa si está en la pantalla por 1px? –
@BradMoore No recuerdo ahora. Puede verificar esto usted mismo bastante fácil. Por lo que recuerdo, no es posible usar GLSurfaceView sin una pantalla. 1px no era una opción ya que el renderizado debería haberse realizado en el servicio. –
- 1. android convertir vista XML a mapa de bits sin mostrarlo
- 2. Render multiplataforma en OpenGL ES
- 3. iPhone OpenGl render texto
- 4. Conversión de marco de vista previa a mapa de bits
- 5. Convertir vista a mapa de bits en Android
- 6. Cómo dibujar un mapa de bits en Android usando OpenGL
- 7. Razor - Render sin Render() y sin Codificación
- 8. Configuración de OpenGL Multiple Render Targets
- 9. Render DateTime.Now directamente en la página ASPX
- 10. Recortar mapa de bits sin leer todo el mapa de bits primero
- 11. Android: mapa de bits de vista de gran tamaño
- 12. Píxeles de mapa de bits de Android: ¿escribir directamente en el archivo?
- 13. colocar un mapa de bits como fondo de una vista
- 14. Cargar Jpg/Gif/Mapa de bits y convertir a mapa de bits
- 15. Renderice la superficie de cairo directamente a la textura OpenGL
- 16. Renderizando vista web de Android a mapa de bits, html5 javascript, devolución de llamada problema
- 17. Cómo obtener un mapa de bits a partir de una imagen sin formato
- 18. Convirtiendo un mapa de bits a monocromo
- 19. Cómo convertir mapa de bits a imagen
- 20. Mapa de bits a int [] usando Marshal.Copy()
- 21. Convertir mapa de bits a cadena
- 22. Gdiplus :: ¿Mapa de bits a matriz BYTE?
- 23. OuterGlowBitmapEffect Alternative Sin efectos de mapa de bits
- 24. Conversión de mapa de bits a byteArray android
- 25. Entonces, ¿un CALayer no contiene un mapa de bits de contenido de una vista?
- 26. ¿Cómo renderizo una vista que contiene capas de animación principal en un mapa de bits?
- 27. captura de pantalla de mapa de bits a GLSurfaceView
- 28. ¿Cómo convertir las coordenadas de la vista de imagen a las coordenadas del mapa de bits?
- 29. Conversión de mapa de bits: crear un mapa de bits que excluya los lados transparentes del mapa de bits transparente
- 30. Preservar los valores de mapa de bits al crear un nuevo mapa de bits desde System.Drawing.Image
Posible duplicado de [Ejecute Android OpenGL en segundo plano como recurso de representación para la aplicación?] (Http://stackoverflow.com/questions/6524212/run-android-opengl-in-background-as-rendering-resource-for- aplicación) –