Freigeben über


Tessellieren von Polygonen

OpenGL kann nur einfache konvexe Polygone direkt anzeigen. Ein Polygon ist einfach, wenn:

  • Die Kanten schneiden sich nur an Scheitelpunkten.
  • Es gibt keine doppelten Scheitelpunkte.
  • An jedem Scheitelpunkt treffen genau zwei Kanten aufeinander.

Um einfache nicht konvexe Polygone oder einfache Polygone mit Löchern anzuzeigen, müssen Sie zuerst die Polygone triangulieren (in konvexe Polygone unterteilen). Eine solche Unterteilung wird als Tessellation bezeichnet. GLU stellt eine Sammlung von Funktionen bereit, die tessellation ausführen. Beachten Sie, dass die GLU-Tessellationsfunktionen keine nicht einfachen Polygone verarbeiten können. es gibt keine OpenGL-Standardmethode, um solche Polygone zu verarbeiten.

Da die Tessellation häufig erforderlich ist und ziemlich knifflig sein kann, werden in diesem Abschnitt die GLU-Tessellationsfunktionen ausführlich beschrieben. Diese Funktionen verwenden als Eingabe beliebige einfache Polygone, die Löcher enthalten können, und geben eine Kombination aus Dreiecken, Dreiecksgittern und Dreiecklümern zurück. Wenn Sie sich nicht mit Gittern oder Lüftern befassen möchten, können Sie angeben, dass die Tessellationsfunktionen nur Dreiecke zurückgeben. Netz- und Lüfterinformationen verbessern jedoch die Leistung. Die Polygon-Tessellationsfunktionen triangulieren ein konkaves Polygon mit einer oder mehreren Konturen.

So verwenden Sie Polygon-Tessellation

  1. Erstellen Sie ein Tessellationsobjekt mit gluNewTess.

  2. Verwenden Sie gluTessCallBack , um Rückruffunktionen zu definieren, die Sie zum Verarbeiten der vom Tessellator generierten Dreiecke verwenden.

  3. Geben Sie mit gluBeginPolygon, gluTessVertex, gluNextContour und gluEndPolygon das Polygon mit Löchern oder das konkave Polygon an, das tesselliert werden soll.

    Wenn die Polygonbeschreibung abgeschlossen ist, ruft die Tessellationsfunktion ihre Rückruffunktionen nach Bedarf auf.

    Sie können nicht benötigte Tessellationsobjekte mit gluDeleteTess zerstören.

Weitere Informationen zum Speichern der Tessellationsdaten finden Sie unter Verwenden von Rückruffunktionen.