![]() |
Windows: lightmaterial.exe Linux: /pub/szgrafika/szamitogepes_grafika/Tutors.linux/lightmaterial Bal egérgomb: paramétermódosítás. Jobb egérgomb: opciók (mindhárom panelen!). |
![]() |
Windows: lightposition.exe Linux: /pub/szgrafika/szamitogepes_grafika/Tutors.linux/lightposition Bal egérgomb: paramétermódosítás. Jobb egérgomb: opciók (mindhárom panelen!). |
glEnable( GL_LIGHTING ); // megvilágítás be glDisable( GL_LIGHTING ); // megvilágítás ki
GLfloat ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f }; ... glLightModelfv( GL_LIGHT_MODEL_AMBIENT, ambientLight );
glEnable( GL_LIGHT0 ); /* GL_LIGHT0, ..., GL_LIGHT7, GL_MAX_LIGHTS */ glDisable( GL_LIGHT0 ); /* GL_LIGHT0, ..., GL_LIGHT7, GL_MAX_LIGHTS */
glLightfv( GLenum light, GLenum pname, const GLfloat *params );
light paraméter | pname paraméter | params paraméter |
---|---|---|
GL_LIGHT0 ... GL_LIGHT7 ... GL_MAX_LIGHTS |
GL_AMBIENT GL_DIFFUSE GL_SPECULAR |
4 elemű GLfloat tömb a színértékekkel |
GL_POSITION |
4 elemű GLfloat tömb a fényforrás helyével. Utolsó elem: ha 1, akkor térbeli pozíciót, ha 0, akkor térbeli irányt definiál a vektor. |
|
GL_SPOT_DIRECTION |
3 elemű GLfloat tömb, a reflektor irányát adja. |
|
GL_SPOT_CUTOFF GL_SPOT_EXPONENT |
Skalár értékek, a reflektor nyílásszöge és gyengülési együtthatója. |
|
GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION |
Skalár értékek, a fény gyengülési együtthatói. |
glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
face paraméter | pname paraméter | params paraméter |
---|---|---|
GL_FRONT GL_BACK GL_FRONT_AND_BACK |
GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_AMBIENT_AND_DIFFUSE |
4 elemű GLfloat tömb a visszatükrözési arányokkal |
GL_EMISSION |
4 elemű GLfloat tömb, az objektum saját fénye (Más objektumot nem világít meg.) |
|
GL_SHININESS |
Skalár érték, csillogási paraméter. |
glEnable( GL_COLOR_MATERIAL ); // anyagjellemzők a glColor()-ból glColorMaterial( GL_FRONT, GL_AMBIENT_AND_DIFFUSE ); // ambiens és diffúz jellemzők ... glColor3f( ... );
Fontos: A megvilágítási egyenletek csak a csúcspontokban (glVertex()) értékelődnek ki, a poligonok kitöltése a shading-nek megfelelően történik. Emiatt:
Megjegyzés: A megvilágítási egyenletek nem veszik figyelembe azt, hogy a fényforrás(ok) és az objektumpont között más objektumok vannak-e, vagyis árnyékoló hatást nem fogunk látni.