2012-09-07 21 views
5

Attualmente sto scrivendo un'applicazione Android che funziona con OpenGL ES 1.1. Ha funzionato bene sul mio HTC Desire (Android 2.3.7) in cui l'ho sviluppato. Ora volevo testarlo su un Nexus 7 ma mostra solo uno schermo nero. Ho scoperto che tutte le trame sono semplicemente rese nere. Sulle parti in cui non viene eseguito il rendering di alcun oggetto e nessuna trama, ottengo il colore di sfondo (quasi) nero.Textures che mostrano solo su alcuni dispositivi

Quindi la mia domanda è: perché le trame sono visualizzate bene su alcuni dispositivi e non su altri?

Le trame sono tutte quadrate con una potenza di 2 dimensioni (ad esempio 512x512, 1024x1024). Queste sono le impostazioni utilizzate quando si creano le texture:

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); 

Cosa posso cercare di ottenere le texture resi su entrambi i dispositivi?

risposta

8

Se si ottengono i bitmap dai drawable, assicurarsi che siano tutti in una cartella nodpi disegnabile.

In caso contrario, la potenza di due immagini potrebbe non essere superiore a due dopo che è stata aumentata in scala su diverse densità di Android (un'immagine 1024x1024 nella cartella drawable diventa 1536x1536 su dispositivi HDPI).

+0

quindi ho bisogno di una cartella extra "drawables-nodpi"? Fino ad ora ho solo ldpi, mdpi, hdpi e xhdpi ... Anche se erano tutti ... – evident

+0

Ah ho trovato: ho bisogno di una cartella drawable-tvdpi con le trame ... Quando creo una cartella con questo nome e metti le trame lì funziona bene ... :) Grazie! – evident

+0

Tutto ciò che viene inserito in una cartella chiamata 'drawable-nodpi' non viene mai ridimensionato. Quindi una trama 1024x1024 sarà sempre 1024x1024. Se stai semplicemente scaricando la stessa texture in 5 diverse directory che è davvero sprecone @evident. – Tim

Problemi correlati