OpenGL: Cosa succede se specificare una luce sia come speculare e diffusa?
Domanda
Sull'esempio di illuminazione sfera del Redbook ho letto questo:
GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
Poi dice:
In questo esempio, le prime tre chiamate a glLightfv () sono superflui, poiché essi sono utilizzati per specificare il predefiniti valori per la GL_AMBIENT, GL_DIFFUSE, e GL_SPECULAR parametro
Per quanto ho capito finora, ogni sorgente di luce ha valori di default per il suo ambiente, diffuso e parametri speculari e queste tre matrici di specificare quali sono i valori di default, è quello giusto? fa ogni sorgente di luce è di diffusa predefinita, speculari e ambiente?
Soluzione
Nel modello di illuminazione OpenGL, 4 equazioni illuminazione separati vengono calcolati per un oggetto: ambiente, diffuso, speculare, ed Emissione. Ambiente non prende le normali in considerazione, diffusa e speculare fanno, e di emissione non tiene la luce in considerazione a tutti.
Tutti questi valori differenti di illuminazione vengono sommati per dare il colore finale di un oggetto.
Altri suggerimenti
Sì, questi sono i valori predefiniti per Light0: http: // www.opengl.org/sdk/docs/man/xhtml/glLight.xml