Partager via


Spécification du polygone à tessellated

Vous spécifiez un polygone (éventuellement contenant des trous) à envoyer à l’aide de :

Pour les polygones sans trous, le processus de spécification est exactement comme dans OpenGL :

  1. Commencez par gluBeginPolygon.
  2. Appelez gluTessVertex pour chaque sommet dans la limite.
  3. Terminez le polygone par un appel à gluEndPolygon.

Si un polygone se compose de plusieurs contours, y compris des trous et des trous à l’intérieur des trous, vous spécifiez les contours l’un après l’autre, avant chacun par gluNextContour. Lorsque vous appelez gluEndPolygon, il signale la fin du contour final et commence la pavage. Vous pouvez omettre l’appel à gluNextContour avant le premier contour. La fonction gluBeginPolygon commence la spécification d’un polygone à tesseller et y associe un objet de pavage, tessobj. Les fonctions de rappel à utiliser sont celles que vous liez à l’objet tessellation avec gluTessCallback.

La fonction gluTessVertex spécifie un sommet dans le polygone à envoyer. Appelez gluTessVertex pour chaque sommet du polygone. Le paramètre tessobj de la fonction est l’objet de pavage à utiliser, v contient les coordonnées de vertex tridimensionnelles et les données sont un pointeur arbitraire envoyé au rappel associé à GLU_VERTEX. En règle générale, les données contiennent des données de vertex, des coordonnées de texture, des informations de couleur ou tout autre élément dont l’application peut avoir besoin.

La fonction gluNextContour marque le début du contour suivant lorsque plusieurs contours constituent la limite du polygone à tesseller. Le paramètre de type de la fonction peut être GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CW ou GLU_UNKNOWN. Ces constantes ne servent que d’indices à la pavage. Si vous les obtenez bien, la pavage pourrait aller plus vite. Si vous vous trompez, ils sont ignorés, et le pavage fonctionne toujours.

Pour un polygone avec des trous, un contour est le contour extérieur, et les autres sont intérieurs. Si vous n’appelez pas gluNextContour immédiatement après gluBeginPolygon, le premier contour est supposé être de type GLU_EXTERIOR.

GLU_CW et GLU_CCW indiquent des polygones orientés dans le sens des aiguilles d’une montre et dans le sens inverse des aiguilles d’une montre. Le choix de ceux qui sont dans le sens des aiguilles d’une montre et ceux qui sont dans le sens inverse des aiguilles d’une montre est arbitraire dans trois dimensions, mais dans n’importe quel plan, il y a deux orientations différentes; utiliser les types GLU_CW et GLU_CCW de manière cohérente. Utilisez GLU_UNKNOWN si vous ne savez pas laquelle utiliser.

La fonction gluEndPolygon indique la fin de la spécification du polygone. Il indique également que la pavage peut commencer à utiliser l’objet tessellation tessobj.