Bonjour,
Je viens de faire l'ombrage plat sur un cube et je souhaiterais faire un ombrage de Gouraud en openGL.

code de l'ombrage plat :

Code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#define ESCAPE 27
 
GLfloat light_position[] = { 1.0F,0.0F,1.0F,0.0F };
GLfloat lightambiant[] = { 1.0f,1.0f,1.0f,0.0};
int window; 
 
void InitGL(int Width, int Height)	        
{
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);		
	glClearDepth(1.0);
	glDepthFunc(GL_LESS);	
	glEnable(GL_DEPTH_TEST);	
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0); 	
	glLightfv(GL_LIGHT0,GL_POSITION,light_position);	
	glLightfv(GL_LIGHT0,GL_AMBIENT,lightambiant);
 
 
	/* model d'ombrage */
	glShadeModel(GL_SMOOTH);		//GL_FLAT = ombrage plat; GL_SMOOTH = ombrage de Gouraud (degradé)
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();				
	gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);	
	glMatrixMode(GL_MODELVIEW);
}
 
 
void ReSizeGLScene(int Width, int Height)
{
	// ...
}
 
void DrawGLScene()
{  	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		
  	glLoadIdentity();		
	glLoadIdentity();
	gluLookAt(8.0,6.0,4.0,0.0,0.0,0.0,0.0,1.0,0.0); 
 
 
             /*************************
             * Cube avec ombrage plat *
             *************************/
             //dessin cube en donner les 4 sommets et la normale des 6 faces
  	     glBegin (GL_QUADS);
		// face 1
		glNormal3f (0.0f,0.0f,1.0f);      
		glVertex3i(1,1,1);                  
		glVertex3i(1,-1,1);                  
		glVertex3i(-1,-1,1);                 
		glVertex3i(-1,1,1);                  
                //face2
		glNormal3f (0.0f,0.0f,-1.0f);     
		glVertex3i(1,1,-1);                 
		glVertex3i(1,-1,-1);                 
		glVertex3i(-1,-1,-1);              
		glVertex3i(-1,1,-1);                  
	             // face3
	             glNormal3f (1.0f,0.0f,0.0f);      
		glVertex3i(1,1,1);                   
		glVertex3i(1,-1,1);                  
		glVertex3i(1,-1,-1);                  
		glVertex3i(1,1,-1);                  
	             // face4
		glNormal3f (-1.0f,0.0f,0.0f);     
		glVertex3i(-1,1,1);                
		glVertex3i(-1,-1,1);                
		glVertex3i(-1,-1,-1);               
		glVertex3i(-1,1,-1);                  
	   // face5
		glNormal3f (0.0f,1.0f,0.0f);     
		glVertex3i(-1,1,-1);                
		glVertex3i(-1,1,1);                  
		glVertex3i(1,1,1);                   
		glVertex3i(1,1,-1);                  
	   // face6
		glNormal3f (0.0f,-1.0f,0.0f);     
	    	glVertex3i(-1,-1,1);                 
		glVertex3i(1,-1,1);                  
		glVertex3i(1,-1,-1);                 
	glEnd ();
	glutSwapBuffers();
}
 
void keyPressed(unsigned char key, int x, int y) 
{
	// ...
}
 
int main(int argc, char **argv) 
{
	// ...
}
Donc si quelqu'un pouvait m'aider pour l'ombrage de Gouraud ce serait sympa.
Merci