Lumière ponctuelle rouge | Lumière directionnelle verte |
Spot bleu | Composition des 3 lumières |
Pas d'atténuation | Atténuation quadratique avec composante constante |
Rotation des lumières | |
Matériel "par défaut" | Matériel diffusant dans le blanc |
Matériel diffusant dans le rouge | Matériel diffusant dans le jaune |
Matériel avec diffusion dans le blanc et réflexion spéculaire dans le blanc |
Fichier source : LumieresMateriel.cpp
Modules utilitaires
static const float noir[] = { 0.0F,0.0F,0.0F,1.0F };
static const float rouge[] = { 1.0F,0.0F,0.0F,1.0F };
static const float vert[] = { 0.0F,1.0F,0.0F,1.0F };
static const float bleu[] = { 0.0F,0.0F,1.0F,1.0F };
static const float jaune[] = { 1.0F,1.0F,0.0F,1.0F };
static const float grisClair[] = { 0.8F,0.8F,0.8F,1.0F };
static const float grisFonce[] = { 0.2F,0.2F,0.2F,1.0F };
static const float blanc[] = { 1.0F,1.0F,1.0F,1.0F };
static void lumiere0(void) {
const GLfloat light0_position[] = { 0.0,0.0,2.5,1.0 };
glPushMatrix();
glRotatef(r,0.0F,1.0F,0.0F);
glLightfv(GL_LIGHT0,GL_POSITION,light0_position);
glPopMatrix();
glLightfv(GL_LIGHT0,GL_DIFFUSE,rouge);
glLightfv(GL_LIGHT0,GL_SPECULAR,blanc);
glLightfv(GL_LIGHT0,GL_AMBIENT,noir);
if ( a ) {
glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,0.3F);
glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,0.0F);
glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.3F); }
else {
glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,1.0F);
glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,0.0F);
glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.0F); }
glEnable(GL_LIGHT0);
}
static void lumiere1(void) {
const GLfloat light1_position[] = { 1.0,0.0,0.0,0.0 };
glPushMatrix();
glRotatef(r,0.0F,1.0F,0.0F);
glLightfv(GL_LIGHT1,GL_POSITION,light1_position);
glPopMatrix();
glLightfv(GL_LIGHT1,GL_DIFFUSE,vert);
glLightfv(GL_LIGHT1,GL_SPECULAR,blanc);
glLightfv(GL_LIGHT1,GL_AMBIENT,noir);
glEnable(GL_LIGHT1);
}
static void lumiere2(void) {
const GLfloat light2_position[] = { 2.0,10.0,2.0,1.0 };
const GLfloat light2_direction[] = { -4.0,-10.0,-4.0 };
glLightfv(GL_LIGHT2,GL_POSITION,light2_position);
glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,light2_direction);
glLightf(GL_LIGHT2,GL_SPOT_CUTOFF,ouv);
glLightfv(GL_LIGHT2,GL_DIFFUSE,bleu);
glLightfv(GL_LIGHT2,GL_SPECULAR,blanc);
glLightfv(GL_LIGHT2,GL_AMBIENT,noir);
glEnable(GL_LIGHT2);
}
static void materiel0(void) {
glMaterialfv(GL_FRONT,GL_DIFFUSE,blanc);
glMaterialfv(GL_FRONT,GL_SPECULAR,noir);
glMaterialf(GL_FRONT,GL_SHININESS,0.0F);
glMaterialfv(GL_FRONT,GL_AMBIENT,noir);
glMaterialfv(GL_FRONT,GL_EMISSION,noir);
}
static void materiel1(void) {
glMaterialfv(GL_FRONT,GL_DIFFUSE,rouge);
glMaterialfv(GL_FRONT,GL_SPECULAR,noir);
glMaterialf(GL_FRONT,GL_SHININESS,0.0F);
glMaterialfv(GL_FRONT,GL_AMBIENT,noir);
glMaterialfv(GL_FRONT,GL_EMISSION,noir);
}
static void materiel2(void) {
glMaterialfv(GL_FRONT,GL_DIFFUSE,jaune);
glMaterialfv(GL_FRONT,GL_SPECULAR,noir);
glMaterialf(GL_FRONT,GL_SHININESS,0.0F);
glMaterialfv(GL_FRONT,GL_AMBIENT,noir);
glMaterialfv(GL_FRONT,GL_EMISSION,noir);
}
static void materiel3(void) {
glMaterialfv(GL_FRONT,GL_DIFFUSE,blanc);
glMaterialfv(GL_FRONT,GL_SPECULAR,blanc);
glMaterialf(GL_FRONT,GL_SHININESS,shn);
glMaterialfv(GL_FRONT,GL_AMBIENT,noir);
glMaterialfv(GL_FRONT,GL_EMISSION,noir);
}
static void materielBase(void) {
glMaterialfv(GL_FRONT,GL_DIFFUSE,grisClair);
glMaterialfv(GL_FRONT,GL_SPECULAR,noir);
glMaterialf(GL_FRONT,GL_SHININESS,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,grisFonce);
glMaterialfv(GL_FRONT,GL_EMISSION,noir);
}