2011-01-24 14 views
6

Il codice OpenGL che funziona sul Nexus One non funziona correttamente sul Nexus S. Le trame non sembrano il rendering e mi rimane solo il nero dove dovrebbero essere le trame.OpenGL ES black texture su Nexus S

Qualcuno ha qualche idea?

+1

Una buona idea potrebbe essere quella di incollare del codice. Per i principianti, stai abilitando l'unità texture? –

risposta

2

I accepted answer given here risolve questo problema in un po 'più approfondito di quanto voglio io, ma mentre questo problema schermo nero si pone dalla Nexus S (e alcuni altri dispositivi) che sono rigidi riguardo la potenza di due trame, , non significa che le trame debbano avere dimensioni che sono un Po2.

Nel codice trama di carico, si possono avere le seguenti linee:

 GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); 

e se questo codice viene modificato per aggiungere altre due linee per il bloccaggio, quindi il telefono sarà supporto nPo2 trame disponibile uno è ok con il bloccaggio. Ecco il codice con il morsetto aggiunto:

 GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); 
0

Nexus S è più rigido delle dimensioni delle immagini utilizzate come trame in OpenGL ES.

texture deve essere una dimensione di 2^n (ad esempio 256, 512, 1024, ecc)

+1

Non si può usare GL_CLAMP_TO_EDGE per evitare questo problema? –