Bonsoir,
Je cherche à plaquer une texture sur un cube, donc j'ai le tableau des sommets, le tableaux des coordonnées de texture, les indices de sommets et.. les indices de texture
Bon, un petit code :
Mais avec tout ça, je fais comment pour rendre mon cube avec sa texture, en utilisant les fonctions du style glDrawElements() glArrayElements() etc... ?
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 static GLfloat coord[] = { 1.000000, 1.000000, -1.000000, 1.000000, -1.000000, -1.000000, -1.000000, -1.000000, -1.000000, -1.000000, 1.000000, -1.000000, 1.000000, 0.999999, 1.000000, 0.999999, -1.000001, 1.000000, -1.000000, -1.000000, 1.000000, -1.000000, 1.000000, 1.000000 }; static GLfloat texcoord[] = { 0.000000, 0.666667, 0.000000, 0.333333, 0.250000, 0.333333, 0.250000, 0.666667, 0.500000, 0.666667, 0.500000, 0.333333, 0.750000, 0.333333, 0.750000, 0.666667, 0.750000, 0.666667, 0.750000, 0.333333, 1.000000, 0.333333, 1.000000, 0.666667, 0.500000, 0.333333, 0.500000, 0.000000, 0.750000, 0.000000, 0.750000, 0.333333, 0.250000, 0.666667, 0.250000, 0.333333, 0.500000, 0.333333, 0.500000, 0.666667, 0.500000, 1.000000, 0.500000, 0.666667, 0.750000, 0.666667, 0.750000, 1.000000 }; static GLubyte index[] = { 0, 1, 2, 3, 4, 7, 6, 5, 0, 4, 5, 1, 1, 5, 6, 2, 2, 6, 7, 3, 4, 0, 3, 7 }; static GLubyte texindex[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
J'ai un livre sur OpenGL qui aborde le sujet, mais sans parler des textures...
En fait si j'ai bien compris le principe, en appelant les indices index[] dans glDrawElements(), après des glEnableClientState(...), OpenGL va faire (approximativement) :
Le problème, c'est que comme il utilise les indices de mes faces, il ne parcourera jamais tout mon tableau texcoord, et donc j'aurai une texture mal placée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 glBegin(GL_QUADS); for(i=0; i<count; i++) { glTexCoord2f(texcoord[indice[i*2]], texcoord[indice[i*2+1]]); glVertex3f(coord[indice[i*3]], coord[indice[i*3+1]], coord[indice[i*3+2]]); } glEnd();
Bref, je ne sais pas comment faire, à part passer en mode "manuel" et dessiner chaque sommet etc...
Merci de bien vouloir m'aider
EDIT:
Un ptit lien vers l'image en question, des fois que ça puisse servir :
http://img226.imageshack.us/img226/8420/caisseyo6.jpg
Partager