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 :

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
};
Mais avec tout ça, je fais comment pour rendre mon cube avec sa texture, en utilisant les fonctions du style glDrawElements() glArrayElements() etc... ?
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) :

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();
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.

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