Bonjour,

J'ai un problème concernant la rotation d'un QUAD (2 triangles en fait).

MON PROBLEME:
Dans la fonction de rendu je souhaite faire tourner le quad à l'aide de glRotate() mais rien ne se passe ????!!!!

J'utilise Cg pour faire un effet de Reflexion Mapping (EnvironMental Bump-Mapping)

Voici des extraits de mon 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
 
static void RenderQuad(void){
 
	static float x = 0.0f;
	static float y = 0.0f;
        static float a = 0.0f;
 
	// ***** FAIRE TOURNER LE QUAD
	glRotatef( a++, 1.0f, 0.0f, 1.0f );
 
 
	// ***** FAIRE TOURNER LA LUMIERE
    LightPosition.x = 6.0f * sin(x+=0.02f);
    LightPosition.y = 2.0f * cos(y+=0.04f);
	LightPosition.z = 2.5f;
    glLightfv( GL_LIGHT0, GL_POSITION, &(LightPosition.x) );
	if( x > (2*3.14) ) x = 0.0f;
	if( y > (2*3.14) ) y = 0.0f;
 
 
	// ***** RENDER ICI
 
	glBegin( GL_TRIANGLES );
 
		m_fonc_MultiTexCoord2f( GL_TEXTURE0_ARB, quad.tab4pts[1][0].x, quad.tab4pts[1][0].y );
		m_fonc_MultiTexCoord3f( GL_TEXTURE1_ARB, quad.TBN_Matrice[0][0].x, quad.TBN_Matrice[0][0].y, quad.TBN_Matrice[0][0].z );
		 glNormal3f( 0.0f, 0.0f, 1.0f );
		 glVertex3f( quad.tab4pts[0][0].x, quad.tab4pts[0][0].y, quad.tab4pts[0][0].z );
 
		m_fonc_MultiTexCoord2f( GL_TEXTURE0_ARB, quad.tab4pts[1][1].x, quad.tab4pts[1][1].y );
		m_fonc_MultiTexCoord3f( GL_TEXTURE2_ARB, quad.TBN_Matrice[0][1].x, quad.TBN_Matrice[0][1].y, quad.TBN_Matrice[0][1].z );
		 glNormal3f( 0.0f, 0.0f, 1.0f );
		 glVertex3f( quad.tab4pts[0][1].x, quad.tab4pts[0][1].y, quad.tab4pts[0][1].z );
 
		m_fonc_MultiTexCoord2f( GL_TEXTURE0_ARB, quad.tab4pts[1][2].x, quad.tab4pts[1][2].y );
		m_fonc_MultiTexCoord3f( GL_TEXTURE3_ARB, quad.TBN_Matrice[0][2].x, quad.TBN_Matrice[0][2].y, quad.TBN_Matrice[0][2].z );
		 glNormal3f( 0.0f, 0.0f, 1.0f );
		 glVertex3f( quad.tab4pts[0][2].x, quad.tab4pts[0][2].y, quad.tab4pts[0][2].z );
 
	glEnd();
 
	glBegin( GL_TRIANGLES );
 
		m_fonc_MultiTexCoord2f( GL_TEXTURE0_ARB, quad.tab4pts[1][0].x, quad.tab4pts[1][0].y );
		m_fonc_MultiTexCoord3f( GL_TEXTURE1_ARB, quad.TBN_Matrice[1][0].x, quad.TBN_Matrice[1][0].y, quad.TBN_Matrice[1][0].z );
		 glVertex3f( quad.tab4pts[0][0].x, quad.tab4pts[0][0].y, quad.tab4pts[0][0].z );
 
		m_fonc_MultiTexCoord2f( GL_TEXTURE0_ARB, quad.tab4pts[1][2].x, quad.tab4pts[1][2].y );
		m_fonc_MultiTexCoord3f( GL_TEXTURE2_ARB, quad.TBN_Matrice[1][1].x, quad.TBN_Matrice[1][1].y, quad.TBN_Matrice[1][1].z );
		 glVertex3f( quad.tab4pts[0][2].x, quad.tab4pts[0][2].y, quad.tab4pts[0][2].z );
 
		m_fonc_MultiTexCoord2f( GL_TEXTURE0_ARB, quad.tab4pts[1][3].x, quad.tab4pts[1][3].y );
		m_fonc_MultiTexCoord3f( GL_TEXTURE3_ARB, quad.TBN_Matrice[1][2].x, quad.TBN_Matrice[1][2].y, quad.TBN_Matrice[1][2].z );
		 glVertex3f( quad.tab4pts[0][3].x, quad.tab4pts[0][3].y, quad.tab4pts[0][3].z );
 
	glEnd();
}

et les fonction d'init
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
 
static void Reshape(int width, int height);
static void InitializeGlut(int *argc, char *argv[])
 {
	glutInit(argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_ALPHA | GLUT_DEPTH);
	glutInitWindowSize(512, 512);
	glutCreateWindow("Reflect Mapping avec Cg");
	glutDisplayFunc(Display);
	glutReshapeFunc(Reshape);
 
	glEnable(GL_TEXTURE_2D);							// Enable Texture Mapping
	glShadeModel(GL_SMOOTH);							// Enable Smooth Shading
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);				// Black Background
	glClearDepth(1.0f);									// Depth Buffer Setup
	glEnable(GL_DEPTH_TEST);							// Enables Depth Testing
	glDepthFunc(GL_LEQUAL);								// The Type Of Depth Testing To Do
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	// Really Nice Perspective Calculations
 
	// lumières
	glLightfv( GL_LIGHT0, GL_DIFFUSE,  (float*)&LightDiffuse.x );
	glLightfv( GL_LIGHT0, GL_POSITION, (float*)&LightPosition.x );
	glEnable( GL_LIGHT0 );
	glEnable( GL_LIGHTING );
}
 
 
 
int main(int argc, char *argv[])
 {
	// initialisation ici
	InitializeGlut(&argc, argv);
	ChargerTextures();
	ChargerMultiTex();
	ChargerCg();
	InitWorld();
 
	// rendering ici (ET bouclage infini)
	glutMainLoop();
 
	// fin de programme ici
	DetruireCg();
 
	// et return de fin....
	return 0;
 }
 
 
void Reshape(int width, int height){
	// eviter une division par zero
	if (height == 0){ height = 1; }
 
	glViewport(0, 0, width, height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(45, (float)width/(float)height, 0.1f, 100);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}
merci encore.