2009-11-11 11 views

Répondre

4

Les cartes graphiques modernes ne peuvent pas dessiner des polygones 3D, ils ne dessinent que des triangles.Alors lorsque vous utilisez GL_POLYGON, le conducteur doit le diviser en triangles.Il est possible que ce processus casse dans votre cas. Dans ce cas, ajoutez un point central et utilisez GL_TRIANGLE_FAN pour créer un maillage continu

2

Pour le cas spécifique d'une étoile à cinq branches, la suggestion d'Aaron d'utiliser un triangle avec un sommet de base Remarquez qu'une étoile est un polygone concave et que GL_POLYGON ne peut que rendre un polygone convexe

Un certain nombre de solutions polyvalentes exi m pour les polygones concaves. On est simplement en train de mélanger le poly en triangles sur le CPU; Vous pouvez utiliser la fonction gluTessBeginPolygon si vous utilisez GLU. Si vous souhaitez éviter les liens dans la bibliothèque GLU, vous pouvez trouver sa source sur le Web et extraire les morceaux pertinents.

Le livre rouge décrit également une astuce pour dessiner rapidement des polygones concaves à l'aide du tampon stencil et d'un vieux ventilateur en triangle. La technique du pochoir est vraiment douce, mais elle pourrait être plus fantaisiste que ce dont vous avez vraiment besoin.

1

Le rendu avec GL_POLYGON dans OpenGL nécessite que les points soient coplanaires et que le polygone résultant soit convexe. L'étoile que vous avez décrite ne serait pas convexe, donc un comportement indéfini.

Questions connexes