Delen via


Tesseling Veelhoeken

OpenGL kan alleen eenvoudige convexe veelhoeken rechtstreeks weergeven. Een veelhoek is eenvoudig als:

  • De randen snijden alleen op hoekpunten.
  • Er zijn geen dubbele hoekpunten.
  • Precies twee randen ontmoeten elkaar op elk hoekpunt.

Als u eenvoudige niet-convenek veelhoeken of eenvoudige veelhoeken met gaten wilt weergeven, moet u eerst de veelhoeken trianguleren (deze onderverdelen in convexe polygonen). Een dergelijke onderverdeling wordt tessellationgenoemd. GLU biedt een verzameling functies die tessellation uitvoeren. Houd er rekening mee dat de GLU-tessellationfuncties niet kunnen omgaan met niet-simple veelhoeken; er is geen standaard OpenGL-methode voor het verwerken van dergelijke veelhoeken.

Omdat tessellation vaak vereist is en nogal lastig kan zijn, beschrijft deze sectie de functies van de GLU-tessellation in detail. Deze functies worden gebruikt als invoer willekeurige eenvoudige veelhoeken die gaten kunnen bevatten en ze retourneren een combinatie van driehoeken, driehoeken en driehoekventilators. Als u niet wilt omgaan met meshes of ventilatoren, kunt u opgeven dat de tessellationfuncties alleen driehoeken retourneren. Mesh- en ventilatorinformatie verbetert echter de prestaties. De veelhoekfunctie triangulateert een concave veelhoek met een of meer contouren.

Voor het gebruik van veelhoektesseling

  1. Maak een tessellationobject met gluNewTess.

  2. Gebruik gluTessCallBack- om callback-functies te definiƫren die u gaat gebruiken om de driehoeken te verwerken die door de tessellator worden gegenereerd.

  3. Met gluBeginPolygon, gluTessVertex, gluNextContouren gluEndPolygon, geeft u de veelhoek met gaten of de concave veelhoek op die moet worden tessellated.

    Wanneer de beschrijving van de veelhoek is voltooid, roept de tessellationfaciliteit indien nodig uw callback-functies aan.

    U kunt overbodige tesselatieobjecten vernietigen met gluDeleteTess.

Zie Callback-functies gebruikenvoor meer informatie over het opslaan van de tessellationgegevens.