VertexArray, indices et texCoords
salut à tous,
Après d'intenses moments de réflexion qui ne m'ont pas vraiment aidé, je m'en remet à vous:
Imaginons:
J'ai un tableau de vertex (par exemple, dans le cas d'un cube, j'ai donc 8 vertices)
J'ai également un tableau d'indices de ces vertices, qui contient 12 "faces" (ou plutot 12 triangles) avec une structure face comportant 3 int.
Bref dans ce cas pas de pb, j'utilise les fonction glEnableClientState, glVertexPointer et glDrawElements pour dessiner la geometrie à l'aide des indices.
Maintenant, je veux utiliser les coordonnées de textures que contient le modèle de cube:
Le problème et qu'il n'y a plus 8 coordonnées de texture, mais 24, et que la liste des indices de texture n'est plus dutout la même (ce qui est assez logique puisqu'il n'y a plus 8 vertices)
Dans ce cas, comment faire pour utiliser les arrays, sachant que je dispose de deux tableaux d'indices ne contenant pas les même infos et deux tableaux de vertices dont un est 4 fois plus grand que l'autre.
Pour ceux qui n'aurait pas compris, je vous donne la partie du fichier ase du cube texturée qui nous interresse:
Code:
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
|
*MESH_NUMVERTEX 8
*MESH_NUMFACES 12
*MESH_VERTEX_LIST {
*MESH_VERTEX 0 -5.0000 0.0000 -5.0000
*MESH_VERTEX 1 5.0000 0.0000 -5.0000
*MESH_VERTEX 2 -5.0000 -0.0000 5.0000
*MESH_VERTEX 3 5.0000 -0.0000 5.0000
*MESH_VERTEX 4 -5.0000 -10.0000 -5.0000
*MESH_VERTEX 5 5.0000 -10.0000 -5.0000
*MESH_VERTEX 6 -5.0000 -10.0000 5.0000
*MESH_VERTEX 7 5.0000 -10.0000 5.0000
}
*MESH_FACE_LIST {
*MESH_FACE 0: A: 0 B: 2 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 1
*MESH_FACE 1: A: 3 B: 1 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 2 *MESH_MTLID 1
*MESH_FACE 2: A: 4 B: 5 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 0
*MESH_FACE 3: A: 7 B: 6 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 3 *MESH_MTLID 0
*MESH_FACE 4: A: 0 B: 1 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 4
*MESH_FACE 5: A: 5 B: 4 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 4
*MESH_FACE 6: A: 1 B: 3 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 3
*MESH_FACE 7: A: 7 B: 5 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 5 *MESH_MTLID 3
*MESH_FACE 8: A: 3 B: 2 C: 6 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 6 *MESH_MTLID 5
*MESH_FACE 9: A: 6 B: 7 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 6 *MESH_MTLID 5
*MESH_FACE 10: A: 2 B: 0 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 7 *MESH_MTLID 2
*MESH_FACE 11: A: 4 B: 6 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 7 *MESH_MTLID 2
}
*MESH_NUMTVERTEX 24
*MESH_TVERTLIST {
*MESH_TVERT 0 0.6227 0.3438 0.0000
*MESH_TVERT 1 0.3400 0.3438 0.0000
*MESH_TVERT 2 0.6227 0.6264 0.0000
*MESH_TVERT 3 0.3400 0.6264 0.0000
*MESH_TVERT 4 0.3400 0.3438 0.0000
*MESH_TVERT 5 0.6227 0.3438 0.0000
*MESH_TVERT 6 0.3400 0.6264 0.0000
*MESH_TVERT 7 0.6227 0.6264 0.0000
*MESH_TVERT 8 0.3645 0.0587 0.0000
*MESH_TVERT 9 0.5982 0.0587 0.0000
*MESH_TVERT 10 0.3645 0.2925 0.0000
*MESH_TVERT 11 0.5982 0.2925 0.0000
*MESH_TVERT 12 0.3400 0.3438 0.0000
*MESH_TVERT 13 0.6227 0.3438 0.0000
*MESH_TVERT 14 0.3400 0.6264 0.0000
*MESH_TVERT 15 0.6227 0.6264 0.0000
*MESH_TVERT 16 0.3747 0.6861 0.0000
*MESH_TVERT 17 0.5880 0.6861 0.0000
*MESH_TVERT 18 0.3747 0.8993 0.0000
*MESH_TVERT 19 0.5880 0.8993 0.0000
*MESH_TVERT 20 0.3400 0.3438 0.0000
*MESH_TVERT 21 0.6227 0.3438 0.0000
*MESH_TVERT 22 0.3400 0.6264 0.0000
*MESH_TVERT 23 0.6227 0.6264 0.0000
}
*MESH_NUMTVFACES 12
*MESH_TFACELIST {
*MESH_TFACE 0 0 2 3
*MESH_TFACE 1 3 1 0
*MESH_TFACE 2 4 5 7
*MESH_TFACE 3 7 6 4
*MESH_TFACE 4 8 9 11
*MESH_TFACE 5 11 10 8
*MESH_TFACE 6 12 13 15
*MESH_TFACE 7 15 14 12
*MESH_TFACE 8 16 17 19
*MESH_TFACE 9 19 18 16
*MESH_TFACE 10 20 21 23
*MESH_TFACE 11 23 22 20
} |
Comment utiliser les arrays dans ce cas là ?