Petits problèmes... [C# et DirextX] - C#/.NET managed - Programmation
MarshPosté le 23-11-2005 à 21:49:50
Je suis en train de m'amuser à faire un petit prog utilisant D3D.
Et j'ai quelques soucis...
Après avoir modifié un truc entre hier et aujourd'hui (mais quoi ?) me objets 3D de type "Carre" s'affichent bien, mais pas ceux de type "triangle" (ils ne s'affichent plus du tout, à moins de passer en rendu de type "pointlist" pour les vertices, et à ce moment, que ce soit les carrés ou les triangles, y'a la moitié des points qui giclent)
En gros, mon architecture :
3 classes "fonctionnelles" : Ground, Building, Unit, qui permettent de définir dans le programme le sol, les bâtiments et les unités. Chaque classe est dérivée autant de fois que j'ai de types d'éléments (Grass, SmallHouse, BigHouse, etc.)
Ces classes sont similaire, et contiennent toutes une propriété public "Model3D" contenant un type "Object" (j'étais à cours d'idée ) qui représente l'objet 3D correspondant.
Cette classe 3D a quelques propriétés (texture, verticesColor, verticesTexture, indices, primitiveCount) ainsi qu'une méthode "Draw()" qui permet de coller dans mon Device D3D l'objet. Elle est héritée autant de voir que j'ai de type d'objet 3D. Pour le moment, "Carre" et "Triangle", possédant chacun deux constructeurs, un avec Texture et l'autre sans.
Déjà, est-ce que cette architecture vous semble "clean" ? Niveau performances, je ne sais pas trop ce que ça donne, mais ça me semblait pas mal comme façon de conserver les objets "3D" associés aux objets fonctionnels.
En tout cas, avantage, c'est toujours la même méthode "Draw" de la classe générique "Object" qui est utilisée pour le rendu, donc niveau maintenance, je ne m'éparpille pas trop, et c'est pas le moteur qui regroupe le chargement des vertices et autres.
Voici le code de ma classe Object ainsi que ses enfants hérités. Je pense que c'est là-dedans que ça débloque...
Autre truc étrange : si j'appelle un objet texturé, alors mes objets colorés n'ont plus les bonnes couleur !
On continue : mon array "grounds" représente 49 (7x7) carrés texturés, centrés sur le point (0, 0, 0), qui est aussi le centre de ma vue 3D. Et pourtant, je ne vois qu'une large bande verticale de 3x7 carrés à l'écran (correctement texturés par contre). C'est quoi aussi ce délire ?
Et enfin, de temps à autre, lorsque j'arrête mon appli, ça met plus d'une minute à s'arrêter, et parfois ça met une demi-seconde
Franchement, là, je ne comprends pas ce qu'il se passe !
Marsh Posté le 23-11-2005 à 21:49:50
Je suis en train de m'amuser à faire un petit prog utilisant D3D.
Et j'ai quelques soucis...
Après avoir modifié un truc entre hier et aujourd'hui (mais quoi ?) me objets 3D de type "Carre" s'affichent bien, mais pas ceux de type "triangle" (ils ne s'affichent plus du tout, à moins de passer en rendu de type "pointlist" pour les vertices, et à ce moment, que ce soit les carrés ou les triangles, y'a la moitié des points qui giclent)
En gros, mon architecture :
3 classes "fonctionnelles" : Ground, Building, Unit, qui permettent de définir dans le programme le sol, les bâtiments et les unités.
Chaque classe est dérivée autant de fois que j'ai de types d'éléments (Grass, SmallHouse, BigHouse, etc.)
Ces classes sont similaire, et contiennent toutes une propriété public "Model3D" contenant un type "Object" (j'étais à cours d'idée ) qui représente l'objet 3D correspondant.
Cette classe 3D a quelques propriétés (texture, verticesColor, verticesTexture, indices, primitiveCount) ainsi qu'une méthode "Draw()" qui permet de coller dans mon Device D3D l'objet.
Elle est héritée autant de voir que j'ai de type d'objet 3D. Pour le moment, "Carre" et "Triangle", possédant chacun deux constructeurs, un avec Texture et l'autre sans.
Déjà, est-ce que cette architecture vous semble "clean" ? Niveau performances, je ne sais pas trop ce que ça donne, mais ça me semblait pas mal comme façon de conserver les objets "3D" associés aux objets fonctionnels.
En tout cas, avantage, c'est toujours la même méthode "Draw" de la classe générique "Object" qui est utilisée pour le rendu, donc niveau maintenance, je ne m'éparpille pas trop, et c'est pas le moteur qui regroupe le chargement des vertices et autres.
Voici le code de ma classe Object ainsi que ses enfants hérités. Je pense que c'est là-dedans que ça débloque...
Et là, chose bizarre, mes triangles ne s'affichent plus lorsque je crée un objet dont le modèle 3D est un triangle
Ma Class "Building" et ses filles, qui est un exemple de création d'un Triangle, et d'un Carré (qui marche) :
Vois pas trop la différence...
Et pour le rendu :
Franchement, je ne vois pas ce qui cloche...
Autre truc étrange : si j'appelle un objet texturé, alors mes objets colorés n'ont plus les bonnes couleur !
On continue : mon array "grounds" représente 49 (7x7) carrés texturés, centrés sur le point (0, 0, 0), qui est aussi le centre de ma vue 3D.
Et pourtant, je ne vois qu'une large bande verticale de 3x7 carrés à l'écran (correctement texturés par contre). C'est quoi aussi ce délire ?
Et enfin, de temps à autre, lorsque j'arrête mon appli, ça met plus d'une minute à s'arrêter, et parfois ça met une demi-seconde
Franchement, là, je ne comprends pas ce qu'il se passe !