Bonjour,
Je suis en train de me détruire les neurones avec l'utilisation de cette fonction.
En effet, j'utilise un seul gros Vertex Buffer et un seul gros Index Buffer.
Je stocke toutes mes meshs les unes à la suite des autres et je garde la trace de chacune de ces mesh dans une structure relativement simple contenant les membres :
m_vertex_debut // Début dans le tableau des vertex
m_vertex_taille // Nombre de vertex
m_index_debut // Début dans le tableau des index
m_index_taille // Nombre de faces
Ensuite pour afficher tout ça je fais l'appel suivant :
A noter que les index de chaque mesh commencent à 0, c'est pourquoi j'ai utilisé le paramètre BaseVertexIndex.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 m_device->DrawIndexedPrimitive (D3DPT_TRIANGLELIST, // Type mesh.m_vertex_debut, // BaseVertexIndex 0, // MinIndex mesh.m_vertex_taille, // NumVertices mesh.m_index_debut, // StartIndex mesh.m_index_taille); // PrimitiveCount
Tout se passe bien pour le 1er mesh (position 0 dans le tableau de vertex et dans le tableau d'index), par contre les suivant présentent tous des anomalies : les vertex sont bien présents mais la plupart des faces sont dans les choux.
Voici un exemple avec 2 sphères, chacune à 8 faces et 6 vertex :
Exemple 2 sphères
La sphère de droite est normale, celle de gauche beaucoup moins. Pour s'en rendre mieux compte, on peut activer ou désactiver le culling avec les flèches gauche et droite.
Les flèches haut et bas permettent de changer le type de rendu.
Espace fait une pause de 3 secondes
Esc pour sortir.
Ah oui, j'ai bien vérifié que les données dans les tableaux soient bonnes
Pourtant j'ai bien lu la doc de DrawIndexedPrimitive et je pense que j'envoie les bons paramètres.
Si quelqu'un aurait une idée sur ce phénomène...
Merci pour votre aide
Atalmapi
Partager