2010-05-15 5 views
0

J'apprends XNA en faisant et, comme l'indique le titre, j'essaie de voir s'il y a un moyen de remplir une zone 2D qui est définie par une collection de sommets sur un avion. Je veux remplir avec une couleur, pas une texture basée sur des fichiers. Pour un exemple, prenez un rectangle arrondi dont les sommets sont définis par quatre ventilateurs triangulaires quart de cercle. Les sommets sont définis en construisant une collection de triangles, mais les triangles peuvent ne pas être adjacents.Remplir la zone 2D liée par des sommets dans XNA

En outre, je voudrais le remplir avec plus d'une seule couleur - c'est-à-dire diviser la zone liée en quatre bandes verticales et avoir chacune une couleur différente. Vous n'avez pas à me fournir le code, en me montrant vers les ressources qui vont aider beaucoup. Je peux être utile avec Google (que j'ai essayé d'abord, mais j'ai lamentablement échoué).

Ceci est autant une exploration de «ce qui est approprié pour XNA» que de sa mise en œuvre. Comme je suis assez nouveau à XNA, je veux aussi apprendre ce qui devrait et ne devrait pas être fait en plus de ce qui peut et ne peut pas être fait.

+1

Si je vous ai bien compris, vous devez commencer à rechercher des algorithmes de triangulation. Wikipedia devrait avoir quelques-uns d'entre eux énumérés. – SigTerm

Répondre

1

Pas trop, mais voici un début:

Le remplissage de couleur est réalisée en utilisant un shader. Reimer's XNA Tutorials on pixel shaders est une excellente ressource sur le sujet.

Vous devez calculer la géométrie et créer des tampons de vertex pour la contenir. Notez que toute la géométrie vectorielle dans XNA est en 3D, mais en utilisant une caméra fixée à un plan simulera 2D.

Pour ajouter différentes couleurs à différents triangles, vous devez essentiellement regrouper la géométrie dans des tampons de sommet distincts. Ensuite, en utilisant un shader avec un paramètre color, pour chaque tampon, définissez la couleur appropriée avant de passer le tampon au périphérique graphique. Alternativement, vous pouvez utiliser a vertex format containing color information, ce qui vous permet essentiellement d'assigner une couleur à chaque sommet.

+0

Très techniquement, tous les éléments graphiques liés à XNA sont en 3D, c'est juste que Spritebatch et ses amis vous permettent de faire un dessin 2D ... – RCIX