2012-09-07 13 views
5

Actualmente estoy escribiendo una aplicación de Android que funciona con OpenGL ES 1.1. Funcionó bien en mi HTC Desire (Android 2.3.7) donde lo desarrollé. Ahora quería probarlo en un Nexus 7 pero solo muestra una pantalla negra. Descubrí que todas las texturas simplemente se vuelven negras. En las partes donde no se representa ningún objeto ni textura, obtengo el color de fondo (casi) negro.Texturas que solo se muestran en algunos dispositivos

Así que mi pregunta es ¿por qué las texturas se procesan bien en algunos dispositivos y no en otros?

Las texturas son todas cuadradas con una potencia de tamaño de 2 (es decir, 512x512, 1024x1024). Estos son los ajustes que se utilizan cuando se crean las texturas:

gl.glBindTexture(GL10.GL_TEXTURE_2D, getTextureId()); 

// Create Nearest Filtered Texture 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, 
     GL10.GL_LINEAR); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, 
     GL10.GL_LINEAR); 

// Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, 
     GL10.GL_CLAMP_TO_EDGE); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, 
     GL10.GL_REPEAT); 

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE); 

// Use the Android GLUtils to specify a two-dimensional texture image 
// from our bitmap 
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); 

Qué puedo tratar de conseguir las texturas prestados en ambos dispositivos?

Respuesta

8

Si obtiene sus mapas de bits de objetos arrastrables, asegúrese de que estén todos en la carpeta drawable-nodpi.

De lo contrario, su potencia de dos imágenes podría no ser potencia de dos después de ampliarse en diferentes densidades de Android (una imagen de 1024x1024 en la carpeta drawable pasa a 1536x1536 en dispositivos HDPI).

+0

así que necesito una carpeta adicional "drawables-nodpi"? Hasta ahora solo tengo ldpi, mdpi, hdpi y xhdpi ... Aunque eran todos ... – evident

+0

Ahh lo encontré: necesito una carpeta drawable-tvdpi con las texturas ... Cuando creo una carpeta con este nombre y pon las texturas ahí, funciona bien ... :) ¡Gracias! – evident

+0

Cualquier cosa que coloque en una carpeta llamada 'drawable-nodpi' nunca se escala. Entonces una textura de 1024x1024 siempre será 1024x1024. Si solo está volcando la misma textura en 5 directorios diferentes, eso es realmente un desperdicio @vidente. – Tim

Cuestiones relacionadas