Bonjour à tous.
J'ai un petit problème bizarre. J'utilise Managed DX9 et ça se passe dans Direct3D.
J'affiche l'un à côté de l'autre 2 cubes en 3D, le premier étant fait de vertices CustomVertex.PositionColored (c'est-à-dire en couleurs), le deuxième étant fait de vertices CustomVertex.PositionTextured (c'est-à-dire avec texture mais sans couleur supplémentaire).
Ces deux cubes sont identiques, les 8 points ayant les mêmes coordonnées dans les 2 VertexBuffers que j'utilise. La différence est que le 1er contient les couleurs (4 en tout pour les 8 points), et le 2ème des coordonnées u,v de texture. De plus, bien sûr, j'en translate l'un à gauche et l'autre à droite, histoire de voir les 2
J'utilise 2 IndexBuffers, dont le contenu est exactement identique.
La texture est un bmp de 64x128 tout à fait classique.
La portion de code qui coince est la suivante (en rouge ci-dessous):
Lorsque la ligne en rouge est commentée, le cube en couleur s'affiche correctement, avec les 4 couleurs visibles (et le cube texturé est tout en blanc).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 //Cube coloré D.Transform.World=Matrix.Translation(-2, 0, 0) D.VertexFormat=CustomVertex.PositionColored.Format D.SetStreamSource(0,VB[0],0) D.Indices=IB[0] D.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 8, 0, 12) //Cube texturé D.Transform.World=Matrix.Translation(2, 0, 0) D.VertexFormat=CustomVertex.PositionTextured.Format D.SetStreamSource(0, VBT, 0) D.SetTexture(0, texture) D.Indices=IB[1] D.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 8, 0, 12)
Lorsque la ligne rouge est décommentée, le cube texturé fait apparaitre des morceaux de mon bmp (c'est Ok), mais le cube en couleur n'a plus que 2 couleurs différentes au lieu des 4!
Mon problème: quelle peut être l'influence d'un SetTexture sur un objet dessiné avant et bâti avec des points sans texture?
(J'ai remarqué aussi qu'utiliser un IndexBuffer pour dessiner des objets avec Texture n'est pas l'idéal... Mais en remplaçant DrawIndexedPrimitive par DrawPrimitive (et en bricolant un peu les paramètres pour que ça fonctionne), le problème persiste!)
Partager