android opengl-es textures libgdx

Mala textura en dispositivos Android con menor GL_MAX_TEXTURE_SIZE



opengl-es textures (1)

Recientemente probé uno de mis juegos en varios dispositivos Android. Durante eso, me encontré con un encuentro extraño con Galaxy S2. Cuando lancé el juego, todo el juego funcionaba bien, excepto el fondo. El fondo del juego aparecía negro en lugar de la textura deseada. Mientras buscaba en Internet, encontré este foro y me di cuenta de que este era un problema de textura malo en Galaxy S2 porque la imagen de fondo del juego estaba en una hoja de sprites separada y muy grande (4096) mientras que el resto de los actores el juego estaba contenido en uno más pequeño. A partir de esto, concebí que esto era algo relacionado con GL_MAX_TEXTURE_SIZE.

Ahora mi pregunta es: ¿es posible que un dispositivo con una pantalla grande como el Google Nexus 10 (con un ancho de 2560) tenga un GL_MAX_TEXTURE_SIZE de quizás 2048?

Y además, ¿cuál es el GL_MAX_TEXTURE_SIZE más común en los dispositivos Android y cómo atender con ese tipo de problemas si también quieres que tu aplicación sirva dispositivos con resoluciones muy grandes?


Sí, es posible por desgracia.

Los dispositivos móviles pueden variar entre ellos. ¡La especificación de OpenGL ES 2.0 dice que el valor mínimo de GL_MAX_TEXTURE_SIZE es solo 64! Por lo tanto, es un buen hábito verificar las tapas de hardware en su juego. Los vendedores deben admitir solo un mínimo de especificaciones y el resto es su elección.

ver http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml para obtener información sobre los topes mínimos de OpenGL ES 2.0.

aquí: http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/DeterminingOpenGLESCapabilities/DeterminingOpenGLESCapabilities.html hay información que:

El hardware de gráficos PowerVR MBX admite texturas de hasta 1024 x 1024, mientras que el software PowerVR SGX admite texturas de hasta 2048 x 2048; ambos tamaños superan en gran medida 64 x 64, que es el tamaño mínimo requerido en la especificación OpenGL ES. Si las necesidades de su aplicación exceden las capacidades mínimas requeridas por la especificación OpenGL ES, debería consultar la implementación para verificar las capacidades reales del hardware y fallar con elegancia; Puede cargar una textura más pequeña o elegir una estrategia de representación diferente.

Esto es de iPhone ... pero también se puede encontrar el mismo hardware en dispositivos Android.

En OpenGL ES 3.0 el valor mínimo de GL_MAX_TEXTURE_SIZE es 2048 http://www.khronos.org/opengles/sdk/docs/man3/xhtml/glGet.xml

que hacer entonces? OpenGL ofrece una capa de software decente y unificada que se puede usar para crear sus aplicaciones. Pero aún hay algunas diferencias entre plataformas y hardware. Por lo general, en el motor de juego verificamos la capacidad dada y luego hacemos un "repliegue" para asegurarnos de que funciona incluso con requisitos mínimos. No hay una sola respuesta a tu pregunta. Depende del problema

para el tamaño de la textura, creo que puedes cortar tu textura grande en algunas piezas más pequeñas y luego mostrarla usando varios rectángulos / quads