Salut a tous,

Voila depuis peux je suis passer sous VBO pour créer une maison,
mais lorsque je compile j'ai un affichage bien plus exécrable à l’écran alors qu'avec les glVertex c’était parfait.

Question:
Comment faire pour utiliser glTranslatef sur du VBO apparemment cela ne fonctionne pas [Pour bien placer mon toit sur la maison]?

Voici le visuel:


Voici 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
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
94
95
96
97
98
99
100
101
102
103
104
105
106
 
void init()
         ////////////////////////////////////////////////////////////////////////
	//Mur droite - mur face - mur gauche  = 220;
	////////////////////////////////////////////////////////////////////////
	GLfloat coordVerTexMur[] = 
	{ 
		-5, 6, 0, -5, -5, 0, -5, -5, 5, -5, 6, 5,   // Mur Droite
		-5, 10, 0, -5, 9, 0, -5, 9, 5, -5, 10, 5,  // Mur Droite
		-5, 9, 5, -5, 6, 5, -5, 6, 4.5, -5, 9, 4.5, // Mur Droite
		-5, 9, 1.5, -5, 6, 1.5, -5, 6, 0, -5, 9, 0,   // Mur Droite
 
		-5, -5, 0, -5, -5, 5, -3, -5, 5, -3, -5, 0,  // Mur face
		-1, -5, 0, -1, -5, 5, 5, -5, 5, 5, -5, 0,  // Mur face
		-3, -5, 4, -3, -5, 5, -1, -5, 5, -1, -5, 4,  // Mur face
 
		5, -5, 0, 5, -1.5, 0, 5, -1.5, 5, 5, -5, 5,     // Mur Gauche
		5, -1.5, 5, 5, 1.5, 5, 5, 1.5, 4.5, 5, -1.5, 4.5, // Mur Gauche
		5, -1.5, 0, 5, 1.5, 0, 5, 1.5, 1.5, 5, -1.5, 1.5, // Mur Gauche
		5, 1.5, 0, 5, 10, 0, 5, 10, 5, 5, 1.5, 5,	  // Mur Gauche
 
		//------------------------------------------------------------
 
		11, 0, 0, 0, 0, 5, 11, 5,    // Mur Droite
		1, 0, 0, 0, 0, 5, 1, 5,    // Mur Droite
		3, 0, 0, 0, 0, 0.5, 3, 0.5,  // Mur Droite
		3, 0, 0, 0, 0, 1.5, 3, 1.5,  // Mur Droite
 
		0, 5, 0, 0, 2, 0, 2, 5,    // Mur face
		0, 5, 0, 0, 6, 0, 6, 5,    // Mur face
		0, 1, 0, 0, 2, 0, 2, 1,	 // Mur face									   
 
		0, 0, 3.5, 0, 3.5, 5, 0, 5,    // Mur Gauche
		3, 0, 0, 0, 0, 0.5, 3, 0.5,  // Mur Gauche
		3, 1.5, 0, 1.5, 0, 0, 3, 0,    // Mur Gauche
		0, 0, 8.5, 0, 8.5, 5, 0, 5  // Mur Gauche
	};  
	//Mur
	glGenBuffers(1, &VBOMur);
	glBindBuffer(GL_ARRAY_BUFFER, VBOMur);
	glBufferData(GL_ARRAY_BUFFER, 220 * sizeof(GLfloat), coordVerTexMur, GL_STATIC_DRAW);
 
        ////////////////////////////////////////////////////////////////////////
	//  Toit 
	////////////////////////////////////////////////////////////////////////
	GLfloat coordVertexToitHaut[] = 
	{
		-5, 0, 4.55, 1.5, 0, 6.5, 1.5, 15, 6.5, -5, 15, 4.55,
		8, 0, 4.55, 1.5, 0, 6.5, 1.5, 15, 6.5, 8, 15, 4.55,
 
		10, 0, 10, 3, 0, 3, 0, 0,
		10, 0, 10, 3, 0, 3, 0, 0
	};
	//Toit
	glGenBuffers(1, &VBOToit);
	glBindBuffer(GL_ARRAY_BUFFER, VBOToit);
	glBufferData(GL_ARRAY_BUFFER, 40 * sizeof(GLfloat), coordVertexToitHaut, GL_STATIC_DRAW);
}
 
 
void MurMaisonVBO()
{
	////////////////////////////////////////////////////////////
	//					     Maison							  //
	////////////////////////////////////////////////////////////
	glEnable(GL_TEXTURE_2D);
	glEnable(GL_DEPTH_TEST);
 
	glBindBuffer(GL_ARRAY_BUFFER, VBOMur);
 
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 
	glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0));
	glTexCoordPointer(2, GL_FLOAT, 0, BUFFER_OFFSET(12 * sizeof(GL_FLOAT)));
	glBindTexture(GL_TEXTURE_2D, mur->textureID);
	glDrawArrays(GL_QUADS, 0, 44);
 
	glDisableClientState(GL_VERTEX_ARRAY);
	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
	glBindBuffer(GL_ARRAY_BUFFER, 0);
}
 
void ToitMaisonVBO()
{
	////////////////////////////////////////////////////////////
	//					     Toit							  //
	////////////////////////////////////////////////////////////
	glEnable(GL_TEXTURE_2D);
	glEnable(GL_DEPTH_TEST);
 
	glBindBuffer(GL_ARRAY_BUFFER, VBOToit);
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 
	glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0));
	glTexCoordPointer(2, GL_FLOAT, 0, BUFFER_OFFSET(9 * sizeof(GL_FLOAT)));
	//glTranslatef(-15, 20, 0); //x:deplacer cote y:avancer z: descendre
	glBindTexture(GL_TEXTURE_2D, toit2->textureID);
 
	glDrawArrays(GL_QUADS, 0, 8);
 
	glDisableClientState(GL_VERTEX_ARRAY);
	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
	glBindBuffer(GL_ARRAY_BUFFER, 0);
}
Voici le même code avec les glVertex parfaitement mais avec les VBO c'est la croix et la bannière:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
 
void Maison2(){
 
	glEnable(GL_TEXTURE_2D);
	glEnable(GL_DEPTH_TEST);
 
	// sol
	glBindTexture(GL_TEXTURE_2D, sol->textureID);
	glBegin(GL_QUADS);
	glTexCoord2d(-5, 10); glVertex3d(-5, 10, 0);
	glTexCoord2d(-5, -5); glVertex3d(-5, -5, 0);
	glTexCoord2d(5, -5); glVertex3d(5, -5, 0);
	glTexCoord2d(5, 10); glVertex3d(5, 10, 0);
	glEnd();
 
	//mur droite
	glBindTexture(GL_TEXTURE_2D, mur->textureID);
	glBegin(GL_QUADS);
	glTexCoord2d(11, 0); glVertex3d(-5, 6, 0);
	glTexCoord2d(0, 0); glVertex3d(-5, -5, 0);
	glTexCoord2d(0, 5); glVertex3d(-5, -5, 5);
	glTexCoord2d(11, 5); glVertex3d(-5, 6, 5);
 
	glTexCoord2d(1, 0); glVertex3d(-5, 10, 0);
	glTexCoord2d(0, 0); glVertex3d(-5, 9, 0);
	glTexCoord2d(0, 5); glVertex3d(-5, 9, 5);
	glTexCoord2d(1, 5); glVertex3d(-5, 10, 5);
 
	glTexCoord2d(3, 0); glVertex3d(-5, 9, 5);
	glTexCoord2d(0, 0); glVertex3d(-5, 6, 5);
	glTexCoord2d(0, 0.5); glVertex3d(-5, 6, 4.5);
	glTexCoord2d(3, 0.5); glVertex3d(-5, 9, 4.5);
 
	glTexCoord2d(3, 0); glVertex3d(-5, 9, 1.5);
	glTexCoord2d(0, 0); glVertex3d(-5, 6, 1.5);
	glTexCoord2d(0, 1.5); glVertex3d(-5, 6, 0);
	glTexCoord2d(3, 1.5); glVertex3d(-5, 9, 0);
	glEnd();
 
	//mur face (trou pour porte)
	glBindTexture(GL_TEXTURE_2D, mur->textureID);
	glBegin(GL_QUADS);
	glTexCoord2d(0, 5); glVertex3d(-5, -5, 0);
	glTexCoord2d(0, 0); glVertex3d(-5, -5, 5);
	glTexCoord2d(2, 0); glVertex3d(-3, -5, 5);
	glTexCoord2d(2, 5); glVertex3d(-3, -5, 0);
 
	glTexCoord2d(0, 5); glVertex3d(-1, -5, 0);
	glTexCoord2d(0, 0); glVertex3d(-1, -5, 5);
	glTexCoord2d(6, 0); glVertex3d(5, -5, 5);
	glTexCoord2d(6, 5); glVertex3d(5, -5, 0);
 
	glTexCoord2d(0, 1); glVertex3d(-3, -5, 4);
	glTexCoord2d(0, 0); glVertex3d(-3, -5, 5);
	glTexCoord2d(2, 0); glVertex3d(-1, -5, 5);
	glTexCoord2d(2, 1); glVertex3d(-1, -5, 4);
	glEnd();
 
	//mur gauche
	glBegin(GL_QUADS);
	glTexCoord2d(0, 0); glVertex3d(5, -5, 0);
	glTexCoord2d(3.5, 0); glVertex3d(5, -1.5, 0);
	glTexCoord2d(3.5, 5); glVertex3d(5, -1.5, 5);
	glTexCoord2d(0, 5); glVertex3d(5, -5, 5);
 
	glTexCoord2d(3, 0); glVertex3d(5, -1.5, 5);
	glTexCoord2d(0, 0); glVertex3d(5, 1.5, 5);
	glTexCoord2d(0, 0.5); glVertex3d(5, 1.5, 4.5);
	glTexCoord2d(3, 0.5); glVertex3d(5, -1.5, 4.5);
 
	glTexCoord2d(3, 1.5); glVertex3d(5, -1.5, 0);
	glTexCoord2d(0, 1.5); glVertex3d(5, 1.5, 0);
	glTexCoord2d(0, 0); glVertex3d(5, 1.5, 1.5);
	glTexCoord2d(3, 0); glVertex3d(5, -1.5, 1.5);
 
	glTexCoord2d(0, 0); glVertex3d(5, 1.5, 0);
	glTexCoord2d(8.5, 0); glVertex3d(5, 10, 0);
	glTexCoord2d(8.5, 5); glVertex3d(5, 10, 5);
	glTexCoord2d(0, 5); glVertex3d(5, 1.5, 5);
	glEnd();
 
	//pour boucher entre toit et mur
	glBegin(GL_TRIANGLES);
	glTexCoord2d(0, 2); glVertex3d(5, 5, 5);
	glTexCoord2d(5, 0.5); glVertex3d(0, 5, 6.5); //6.5 hauteur du toit
	glTexCoord2d(10, 2); glVertex3d(-5, 5, 5);
	glEnd();
 
	glBindTexture(GL_TEXTURE_2D, toit->textureID);
	glBegin(GL_TRIANGLES);
	glTexCoord2d(0, 2); glVertex3d(5, -5, 5);
	glTexCoord2d(5, 0.5); glVertex3d(0, -5, 6.5); //6.5 hauteur du toit
	glTexCoord2d(10, 2); glVertex3d(-5, -5, 5);
	glEnd();
 
	//toit
	glTranslatef(-1.5, -5, 0); //x:deplacer cote y:avancer z: descendre
	glBindTexture(GL_TEXTURE_2D, toit2->textureID);
	glBegin(GL_QUADS);
	glTexCoord2d(10, 0); glVertex3d(-5, 0, 4.55); //4.55 pour pas que ca coupe le mur
	glTexCoord2d(10, 3); glVertex3d(1.5, 0, 6.5);
	glTexCoord2d(0, 3);  glVertex3d(1.5, 15, 6.5);
	glTexCoord2d(0, 0);  glVertex3d(-5, 15, 4.55);
	glEnd();
 
	glBegin(GL_QUADS);
	glTexCoord2d(10, 0); glVertex3d(8, 0, 4.55);
	glTexCoord2d(10, 3); glVertex3d(1.5, 0, 6.5);
	glTexCoord2d(0, 3);  glVertex3d(1.5, 15, 6.5);
	glTexCoord2d(0, 0);  glVertex3d(8, 15, 4.55);
	glEnd();
}
Donc Si une personne a une idée pour m'aider a débloquer de cet impasse cela serais fort appréciable a toute âme charitable merci bien.