Reduzca el uso de memoria para texturas en OpenGL ES 1.1
Mi escena en OpenGL ES requiere varias texturas de gran resolución, pero son en escala de grises, ya que las estoy usando sólo para máscaras. Necesito reducir mi uso de memoria.
He intentado cargar estas texturas con Bitmap.Config.ALPHA_8, y como RGB_565. ALPHA_8 parece aumentar realmente el uso de memoria.
- "SDK-buildable" Navegadores Web de código abierto para Android
- ¿Cómo puedo determinar lo que se toca en el espacio 3D de la pantalla?
- Excepción OutofMemoryError dalvik.system.VMRuntime.newNonMovableArray (Método nativo)
- OpenGL ES Tracer no recopila datos en mi Nexus 10
- Previsualización y procesamiento simultáneo de la cámara
¿Hay alguna manera de obtener una textura cargada en OpenGL y tener que utilizar menos de 16 bits por píxel?
glCompressedTexImage2D parece que podría ser prometedor, pero por lo que puedo decir, diferentes teléfonos ofrecen diferentes métodos de compresión de textura. Además, no sé si la compresión realmente reduce el uso de memoria en tiempo de ejecución. ¿Es la solución para almacenar mis texturas en formatos ATITC y PVRTC? En caso afirmativo, ¿cómo puedo detectar qué formato es compatible con el dispositivo?
¡Gracias!
- Cómo detener el procesador GL abierto
- Framerate tartamudea ocasionalmente en Android opengl es 2.0
- Página Curl Animation en Android con OpenGL-ES
- ¿Cómo funciona matrix.setlookatm?
- GLSurfaceView que causa ANR después de la actividad se destruye
- OpenGL ES 1.1: ¿Cómo cambiar el color de la textura sin perder luminancia?
- Llamar para comprobar si existe un EGLContext actual en Android
- Prevenga onPause de la basura OpenGL Context
PVRTC, ATITC, S3TC y así sucesivamente, la textura comprimida nativa de GPU debería reducir el uso de memoria y mejorar el rendimiento de renderizado.
Por ejemplo (lo siento en C, puede implementarlo como utilizando GL11.glGetString en Java),
const char *extensions = glGetString(GL_EXTENSIONS); int isPVRTCsupported = strstr(extensions, "GL_IMG_texture_compression_pvrtc") != 0; int isATITCsupported = strstr(extensions, "GL_ATI_texture_compression_atitc") != 0; int isS3TCsupported = strstr(extensions, "GL_EXT_texture_compression_s3tc") != 0; if (isPVRTCsupportd) { /* load PVRTC texture using glCompressedTexImage2D */ } else if (isATITCsupported) { ...
Además, puede especificar dispositivos compatibles utilizando el formato de textura en AndroidManifest.xml.
- El archivo AndroidManifest.xml – supports-gl-texture
EDIT :
- MOTODEV – Comprensión de la compresión de texturas
Con los sistemas basados en Imagination Technologies (también conocidos como PowerVR), debería ser capaz de usar PVRTC 4bpp y (dependiendo de los requisitos de textura y calidad) quizás incluso la variante 2bpp PVRTC.
Además, aunque no estoy seguro de lo que está expuesto en los sistemas Android, el PVRTextool listas I8 (es decir, en escala de grises 8bpp) como formato de textura de destino, que le daría una opción sin pérdidas.
La compresión de texturas ETC1 es compatible con todos los dispositivos Android con Android 2.2 y versiones posteriores.
- Cambiar entre la pestaña mediante el grupo de actividades desea mostrar la última actividad – Tab ActivityGroup
- Cómo crear una imagen de perfil circular de facebook