 
   
 
     
  
     
   
 
     
  
     
   
 
     
  
     
   
 
     
  
     
   
 
     
  
     
   
 
     
  
     
   
 
     
  
     
  
Fichier source : LumieresEtMateriel.cpp
static const float blanc[]       = { 1.0F,1.0F,1.0F,1.0F };
    static const float jaune[]       = { 1.0F,1.0F,0.0F,1.0F };
    static const float cyan[]        = { 0.0F,1.0F,0.0F,1.0F };
    static const float magenta[]     = { 1.0F,0.0F,1.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 noir[]        = { 0.0F,0.0F,0.0F,1.0F };
    static const float grisMoyen[]   = { 0.5F,0.5F,0.5F,1.0F };
    
    static float rxl = 0.0;
    static float ryl = 0.0;
    static float rzl = 0.0;
    
    /* Scene dessinee 2                              */
    
    static void configurationMaterielCube(void) {
      switch (question) {
        case 6 :
          glMaterialfv(GL_FRONT,GL_DIFFUSE,blanc);
          break;
        case 7 :
          glMaterialfv(GL_FRONT,GL_DIFFUSE,blanc);
          glMaterialfv(GL_FRONT,GL_SPECULAR,blanc);
          glMaterialf(GL_FRONT,GL_SHININESS,64.0F);
          break; }
    }
    
    static void scene2() {
      glPushMatrix();
      configurationMaterielCube();
      mySolidCube(7.0,n);
      glPopMatrix();
    }
    
    /* Scene dessinee 1                              */
    
    static void configurationMaterielTore1(void) {
      switch (question) {
        case 6 :
          glMaterialfv(GL_FRONT,GL_SPECULAR,blanc);
          glMaterialf(GL_FRONT,GL_SHININESS,64.0F);
          break;
        case 7 :
          glMaterialfv(GL_FRONT,GL_DIFFUSE,noir);
          glMaterialfv(GL_FRONT,GL_SPECULAR,jaune);
          glMaterialf(GL_FRONT,GL_SHININESS,15.0F);
          break; }
    }
    
    static void configurationMaterielTore2(void) {
      switch (question) {
        case 6 :
          glMaterialfv(GL_FRONT,GL_SPECULAR,blanc);
          glMaterialf(GL_FRONT,GL_SHININESS,64.0F);
          break;
        case 7 :
          glMaterialfv(GL_FRONT,GL_DIFFUSE,jaune);
          glMaterialfv(GL_FRONT,GL_SPECULAR,rouge);
          glMaterialf(GL_FRONT,GL_SHININESS,100.0F);
          break; }
    }
    
    static void configurationMaterielTore3(void) {
      switch (question) {
        case 6 :
          glMaterialfv(GL_FRONT,GL_SPECULAR,blanc);
          glMaterialf(GL_FRONT,GL_SHININESS,64.0F);
          break;
        case 7 :
          glMaterialfv(GL_FRONT,GL_EMISSION,grisMoyen);
          glMaterialfv(GL_FRONT,GL_DIFFUSE,rouge);
          glMaterialfv(GL_FRONT,GL_SPECULAR,bleu);
          glMaterialf(GL_FRONT,GL_SHININESS,64.0F);
          break; }
    }
    
    static void scene1() {
      glPushMatrix();
      configurationMaterielTore1();
      glutSolidTorus(1.0,5.0,n1,n2);
      glRotatef(90.0F,1.0F,0.0F,0.0F);
      configurationMaterielTore2();
      glutSolidTorus(1.0,5.0,n1,n2);
      glRotatef(90.0F,0.0F,1.0F,0.0F);
      configurationMaterielTore3();
      glutSolidTorus(1.0,5.0,n1,n2);
      glPopMatrix();
    }
    
    /* Fonction de configuration de la lumiere 0     */
    
    static void configurationLumiere0() {
      const GLfloat pos[] = { 2.0,2.0,2.0,1.0 };
      glLightfv(GL_LIGHT0,GL_POSITION,pos);
      glLightfv(GL_LIGHT0,GL_DIFFUSE,rouge);
      glLightfv(GL_LIGHT0,GL_SPECULAR,noir);
      glLightfv(GL_LIGHT0,GL_AMBIENT,noir);
      switch ( attenuation ) {
        case 1 :
          glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,0.0F);
          glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,1.0F);
          glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.0F);
          break;
        case 2 :
          glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,0.0F);
          glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,0.0F);
          glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,1.0F);
          break; }
      glEnable(GL_LIGHT0);
    }
    
    /* Fonction de configuration de la lumiere 1     */
    
    static void configurationLumiere1() {
      const GLfloat pos[] = { -2.0,0.0,4.0,0.0 };
      glLightfv(GL_LIGHT1,GL_POSITION,pos);
      glLightfv(GL_LIGHT1,GL_DIFFUSE,vert);
      glLightfv(GL_LIGHT1,GL_SPECULAR,blanc);
      glLightfv(GL_LIGHT1,GL_AMBIENT,noir);
      glEnable(GL_LIGHT1);
    }
    
    /* Fonction de configuration de la lumiere 2     */
    
    static void configurationLumiere2() {
      const GLfloat pos[] = { -2.0,-2.0, 10.0,1.0 };
      const GLfloat dir[] = {  3.0, 3.0,-10.0 };
      glLightfv(GL_LIGHT2,GL_POSITION,pos);
      glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,dir);
      glLightf(GL_LIGHT2,GL_SPOT_CUTOFF,20.0F);
      glLightfv(GL_LIGHT2,GL_DIFFUSE,bleu);
      glLightfv(GL_LIGHT2,GL_SPECULAR,jaune);
      glLightfv(GL_LIGHT2,GL_AMBIENT,noir);
      glEnable(GL_LIGHT2);
    }
    
    /* Fonction de configuration des lumieres        */
    
    static void configurationLumieres(void) {
      glPushMatrix();
      glRotatef(rxl,1.0F,0.0F,0.0F);
      glRotatef(ryl,0.0F,1.0F,0.0F);
      glRotatef(rzl,0.0F,0.0F,1.0F);
      switch (question) {
        case 1 :
          glEnable(GL_LIGHTING);
          glEnable(GL_LIGHT0);
          break;
        case 2 :
          glEnable(GL_LIGHTING);
          configurationLumiere0();
          break;
        case 3 :
          glEnable(GL_LIGHTING);
          configurationLumiere1();
          break;
        case 4 :
          glEnable(GL_LIGHTING);
          configurationLumiere2();
          break;
        case 5 :
        case 6 :
        case 7 :
          glEnable(GL_LIGHTING);
          configurationLumiere0();
          configurationLumiere1();
          configurationLumiere2();
          break; }
      glPopMatrix();
    }