voila le problème est que les textures sembles ne pas s'afficher comme il se doit, et je tourne en rond...
déclaration des tableaux :
Code le l'initialisation :
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 GLfloat CubeArray[] = { 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 0.0f, 3.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 0.0f, 3.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 2.0f, 0.0f, 2.0f, 2.0f, 0.0f, 3.0f, 2.0f, 0.0f, 0.0f, 3.0f, 0.0f, 1.0f, 3.0f, 0.0f, 2.0f, 3.0f, 0.0f, 3.0f, 3.0f, 0.0f, 0.0f, 4.0f, 0.0f, 1.0f, 4.0f, 0.0f, 2.0f, 4.0f, 0.0f, 3.0f, 4.0f, 0.0f }; GLuint IndiceArray[] = { 1,2,6, 2,3,7, 6,7,11, 4,8,9, 8,12,13, 9,13,14 }; GLfloat TextureArray[] = { 1.0,0.0, 0.0,0.0, 1.0,1.0, 1.0,0.0, 0.0,0.0, 1.0,1.0, 1.0,0.0, 0.0,0.0, 1.0,1.0, 1.0,0.0, 0.0,0.0, 1.0,1.0, 1.0,0.0, 0.0,0.0, 1.0,1.0, 1.0,0.0, 0.0,0.0, 1.0,1.0, }; enum { // buffer ou sont stoqué les différents point kVBO_POSITION_POINT = 0x00, // buffer ou sont stoqué les coordonnées des textures kVBO_TEXTURE_COORDONNEES, // indice liant les différents points kVBO_INDICES, // nombre de buffer kVBO_NB_BUFFER, }; GLuint CubeBuffers[kVBO_NB_BUFFER];
et le code d'affichage :
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 // Génération des buffers glGenBuffers( kVBO_NB_BUFFER, CubeBuffers ); // Buffer d'informations de vertex glBindBuffer(GL_ARRAY_BUFFER, CubeBuffers[kVBO_POSITION_POINT]); glBufferData(GL_ARRAY_BUFFER, sizeof(CubeArray), CubeArray, GL_STATIC_DRAW); // Buffer d'indices glBindBuffer(GL_ARRAY_BUFFER, CubeBuffers[kVBO_TEXTURE_COORDONNEES]); glBufferData(GL_ARRAY_BUFFER, sizeof(TextureArray), TextureArray, GL_STATIC_DRAW); // Buffer des coordonnées des textures : glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, CubeBuffers[kVBO_INDICES]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(IndiceArray), IndiceArray, GL_STATIC_DRAW);
le système de gestion des textures fonctionne correctement chez moi car j'arrive à afficher des textures avec les accès direct de oGL.
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 glTranslatef(-2.0,-2.0,-5.19); glEnable (GL_TEXTURE_2D); glBindTexture (GL_TEXTURE_2D, id_texture );; glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Bind des buffers glBindBuffer(GL_ARRAY_BUFFER , CubeBuffers[kVBO_POSITION_POINT]); glVertexPointer(3, GL_FLOAT , 0 , (float *) NULL); glBindBuffer(GL_ARRAY_BUFFER , CubeBuffers[kVBO_TEXTURE_COORDONNEES]); glTexCoordPointer(2 , GL_FLOAT , 0 , (float *) NULL); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, CubeBuffers[kVBO_INDICES]); glDrawElements(GL_TRIANGLES, 6*3, GL_UNSIGNED_INT, 0); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); glDisable (GL_TEXTURE_2D);
résultat en pièce jointe : capture-41.png
Partager