L'exécutable

Le source: Material.cpp

#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>

void myinit(void) { 
  GLfloat ambient[] = {0.0F,0.0F,0.0F,1.0F}; 
  GLfloat diffuse[] = {1.0F,1.0F,1.0F,1.0F}; 
  GLfloat specular[] = {1.0F,1.0F,1.0F,1.0F}; 
  GLfloat position[] = {0.0F,3.0F,2.0F,0.0F}; 
  GLfloat mod_ambt[] = {0.4F,0.4F,0.4F,1.0F}; 
  GLfloat local_view[] = {0.0F}; 
  glEnable(GL_DEPTH_TEST); 
  glDepthFunc(GL_LESS); 
  glLightfv(GL_LIGHT0,GL_AMBIENT,ambient); 
  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse); 
  glLightfv(GL_LIGHT0,GL_POSITION,position); 
  glLightModelfv(GL_LIGHT_MODEL_AMBIENT,mod_ambt); 
  glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER,local_view); 
  glEnable(GL_LIGHTING); 
  glEnable(GL_LIGHT0); 
  glClearColor(0.0F,0.1F,0.1F,0.0F); 
} 
  
void CALLBACK display(void) { 
  GLfloat no_mat[] = { 0.0F,0.0F,0.0F,1.0F };
  GLfloat mat_ambient[] = { 0.7F,0.7F,0.7F,1.0F };
  GLfloat mat_ambient_color[] = { 0.8F,0.8F,0.2F,1.0F };
  GLfloat mat_diffuse[] = { 0.1F,0.5F,0.8F,1.0F };
  GLfloat mat_specular[] = { 1.0F,1.0F,1.0F,1.0F };
  GLfloat no_shininess[] = { 0.0F };
  GLfloat low_shininess[] = { 5.0F };
  GLfloat high_shininess[] = { 100.0F };
  GLfloat mat_emission[] = {0.3F,0.2F,0.2F,0.0F};
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  glPushMatrix();
  glTranslatef(-3.75F,3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
  glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(-1.25F,3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(1.25F,3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(3.75F,3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
  glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(-3.75F,0.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
  glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(-1.25F,0.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(1.25F,0.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(3.75F,0.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
  glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(-3.75F,-3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
  glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(-1.25F,-3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(1.25F,-3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
  auxSolidSphere(1.0);
  glPopMatrix();
  glPushMatrix();
  glTranslatef(3.75F,-3.0F,0.0F);
  glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
  glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
  glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
  auxSolidSphere(1.0);
  glPopMatrix();
  glFlush(); 
} 
  
void CALLBACK myReshape(int w,int h) { 
  glViewport(0,0,w,h); 
  glMatrixMode(GL_PROJECTION); 
  glLoadIdentity(); 
  if( w <=(h * 2) ) 
    glOrtho(-6.,6.,-3.*((float)h*2)/(float)w,3.0*((float)h*2)/(float)w,-10.0,10.0); 
    else 
    glOrtho(-6.0*(float)w/((float)h*2),6.0*(float)w/((float)h*2),-3.0,3.0,-10.0,10.0); 
  glMatrixMode(GL_MODELVIEW); 
} 
  
void main(void) { 
  auxInitDisplayMode(AUX_SINGLE|AUX_RGB|AUX_DEPTH); 
  auxInitPosition(0,0,340,250); 
  auxInitWindow("Material"); 
  myinit(); 
  auxReshapeFunc(myReshape); 
  auxMainLoop(display); 
}
 RETOUR