Partager via


Polygones tessellating

OpenGL ne peut afficher directement que des polygones convex simples. Un polygone est simple si :

  • Les bords se croisent uniquement aux sommets.
  • Il n’y a pas de sommets en double.
  • Exactement deux bords se rencontrent à n’importe quel sommet.

Pour afficher des polygones nonconvex simples ou des polygones simples contenant des trous, vous devez d’abord trianguler les polygones (les subdiviser en polygones convex). Cette sous-division est appelée pavage. GLU fournit une collection de fonctions qui effectuent une pavage. Notez que les fonctions de pavage GLU ne peuvent pas gérer les polygones non simples ; Il n’existe aucune méthode OpenGL standard pour gérer ces polygones.

Étant donné que la pavage est souvent nécessaire et peut être plutôt délicate, cette section décrit en détail les fonctions de pavage GLU. Ces fonctions prennent comme entrée des polygones simples d’entrée qui peuvent inclure des trous, et ils retournent une combinaison de triangles, de maillages de triangles et de ventilateurs de triangle. Si vous ne souhaitez pas traiter les maillages ou les ventilateurs, vous pouvez spécifier que les fonctions de pavage retournent uniquement des triangles. Toutefois, les informations de maillage et de ventilateur améliorent les performances. Les fonctions de pavage de polygones triangulent un polygone concave avec un ou plusieurs contours.

Pour utiliser le de pavage de polygones

  1. Créez un objet de pavage avec gluNewTess.

  2. Utilisez gluTessCallBack pour définir des fonctions de rappel que vous utiliserez pour traiter les triangles générés par le tessellator.

  3. Avec gluBeginPolygon, gluTessVertex, gluNextContour, et gluEndPolygon, spécifiez le polygone avec des trous ou le polygone concave à tesseller.

    Une fois la description du polygone terminée, la fonctionnalité de pavage appelle vos fonctions de rappel si nécessaire.

    Vous pouvez détruire des objets de pavage inutiles avec gluDeleteTess.

Pour plus d’informations sur l’enregistrement des données de pavage, consultez Utilisation des fonctions de rappel.