Problema con illuminazione OpenGLES Android
Domanda
Ciao a tutti, Sto scrivendo un piccolo motore 3D per Android per meglio conoscere la piattaforma e OpenGL. Spero eventualmente utilizzare come base per i piccoli giochi 3D a.
Sto cercando di implementare l'illuminazione in questo momento, e in generale in seguito alla NeHe OpenGL tutorial porta Android. Ho un cubo semplice filatura e 1 luce che non dovrebbe cambiare posizione. Al momento il rendering mia scena su un dispositivo viene visualizzato il segno di luce per "dim" e ri-alleggerire come ruota cubo.
Questo è un video swf del comportamento: http://drop.io/obzfq4g
Il codice per il mio "motore" si trova qui: http: // GitHub. com / mlasky / Smashout-Android-3D-Engine /
I bit rilevanti sono:
http: //github.com/mlasky/Smashout-Android-3D-Engine/blob/master/src/com/supernovamobile/smashout/SmashoutGLRenderer.java
questo è dove sto inizializzazione OpenGL e installare il mio scena.
e
http: //github.com/mlasky/Smashout-Android-3D-Engine/blob/master/src/com/supernovamobile/smashout/SMMesh.java questo è il codice effettivamente rotante / disegno maglia cubo.
Vorrei poter formulare una domanda migliore; ma io sono molto bloccato / confusa e non riesco nemmeno a pensare a una domanda intelligente di chiedere oltre a "qualcuno sa che cosa potrebbe causare il tipo di comportamento che sto vedendo?"
Grazie per qualsiasi aiuto che potete fornire.
Edit: anche la lentezza / choppyness dell'animazione nel video è il risultato del software screencap. E 'liscia per tutta la rotazione sul emu.
Soluzione
Dal video sembra che le vostre normali non sono corrette.
Per un cubo asse allineato le normali in cube.xml sembrano fuori. Essi dovrebbero essere l'asse allineato, non qualunque esse siano. Dove hai preso il modello?
Questa risposta può anche essere collegato se mVNormalsBuffer
è vuoto.
Altri suggerimenti
Si utilizza
gl.glNormalPointer(3, GL10.GL_FLOAT, mVNormalsBuffer);
sbagliata.
Dovrebbe essere:
gl.glNormalPointer(GL10.GL_FLOAT,0, mVNormalsBuffer);