Domanda

I state seguendo un illuminazione guida e impostare una fonte di illuminazione per il mio cubo rotante (rotazioni per interazione utente su 3 assi)

Comunque, qualunque cosa io faccia, non riesco a tenere il soggiorno fonte di luce nella giusta posizione, sembra ruotare il cubo. Quindi, se ho ruotare il cubo una parte è acceso e uno da una parte non lo è.

sto facendo un po 'di manipolazione della matrice. Ho provato a ripristinare la matrice e poi applicando la sorgente luminosa, ho cercato glLoadIdentity() per reimpostare la visualizzazione.

Ho appena può non sembrano tenerlo ancora.

static const Vertex3D light0Position[] = {{0.0, 10.0, 10.0}};
glLightfv(GL_LIGHT0, GL_POSITION, (const GLfloat *)light0Position); 

// Calculate light vector so it points at the object
static const Vertex3D objectPoint[] = {{8.0, 8.0, -4.0}};
const Vertex3D lightVector = Vector3DMakeWithStartAndEndPoints(light0Position[0], objectPoint[0]);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, (GLfloat *)&lightVector);
È stato utile?

Soluzione

La posizione e riflettori direzione che si specifica di OpenGL ES vengono trasformati dalla matrice modelview corrente al momento della chiamata a glLightfv, e sono applicati a un vertice dopo che è stata trasformata dalla matrice modelview al momento della chiamare per glDrawArrays / glDrawElements. Né tiene conto dello stato della matrice di proiezione.

In modo per noi per capire come il vostro trasformazioni potrebbero andare male, avrete bisogno di mostrare esattamente quando si applica i tuoi trasformazioni oggetto / mondo / telecamera alla matrice modelview, e se le specifiche proprietà della luce e il disegno si svolge rispetto al questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top