Bonjour,
Debutant l'opengl et cherchant a comprendre et faire des choses "un peu" propre, je solicite votre aide car il existent de nombreux tuto dont une bonne
partie sont vieux/trés vieux et je ne sais pas trop ou chercher des infos.
Je m'attaque depuis peu au vertex Array (ma suite logique si j'ai bien compris sera d'aller vers les VBO).
Mon pb actuel se situe au niveau des textures. j'ai un cube qui ressemble a cela et je souhaite lui appliquer une texture (step1) puis 2 textures différentes (step2).
..s0----- s1
./|........./|
s2------s3|
| |........| |
| |s4---|-|s5
|/.........|/
s6------s7
Up Face : 0,2,3,1
Back face : 0,4,5,1
Left Face : 0,2,6,4
Front Face : 2,6,7,3
Down Face : 4,6,7,5
Right Face : 1,3,7,5
Voila mon code actuel simplifer au maximun :
Cela me produit un affichage bien moche mais si je ne dessine que la up/down face, la textures s'affiche 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 // Données std::vector<GLfloat> vertices; std::vector<GLubyte> indices; std::vector<GLfloat> textures; GLuint murTex, murTex2; // Initialisation : vertices = {0,0,1, 0,1,1, 1,0,1, 1,1,1, 0,0,0, 0,1,0, 1,0,0, 1,1,0}; indices = { 0,2,3,1, //Up Face 0,4,5,1, //Back face 0,2,6,4, //Left Face 2,6,7,3, //Front Face 4,6,7,5, //Down Face 1,3,7,5, //Right Face }; textures = { 0,0, 1,0, 1,1, 0,1 }; murTex = this->chargerTexture("textures/mur.jpg"); murTex2 = this->chargerTexture("textures/mur2.jpg"); glBindTexture(GL_TEXTURE_2D, murTex); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 0, textures.data()); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, vertices.data()); glPushMatrix(); glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, indices.data()); glPopMatrix(); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY);
Quelques question donc :
Pourquoi l'affichage des autres "face" (d'un point de vu texture) ne marche pas. L'odre me semble pourtant bon.
Comment faire pour afficher une texture différente sur la up et la down face par exemple?
Merci d'avance,
Bonne soirée
sye
Partager