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:
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 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); }
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.
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(); }![]()
Partager