Freigeben über


Einfacher OpenGL-Vorgang

Das folgende Diagramm veranschaulicht, wie OpenGL Daten verarbeitet. Wie gezeigt, geben Befehle von links ein und durchlaufen eine Verarbeitungspipeline. Einige Befehle geben geometrische Objekte an, die gezeichnet werden sollen, und andere steuern, wie die Objekte während verschiedener Verarbeitungsphasen behandelt werden.

Diagramm mit den OpenGL-Datenverarbeitungspipelinephasen.

Die Verarbeitungsphasen im grundlegenden OpenGL-Vorgang sind wie folgt:

  • Liste anzeigen Anstatt alle Befehle sofort über die Pipeline fortzusetzen, können Sie auswählen, dass einige davon in einer Anzeigeliste zur späteren Verarbeitung gesammelt werden sollen.

  • Evaluator- Die Auswertungsphase der Verarbeitung bietet eine effiziente Möglichkeit zur näherungsweise Kurven- und Oberflächengeometrie, indem polynomische Befehle von Eingabewerten ausgewertet werden.

  • Per-Vertex-Vorgänge und primitive Assembly OpenGL verarbeitet geometrische Grundtypen, Liniensegmente und Polygone, die durch Scheitelpunkte beschrieben werden. Scheitelpunkte werden transformiert und beleuchtet, und Grundtypen werden zur Vorbereitung auf die Rasterung an den Viewport abgeschnitten.

  • Rasterung Die Rasterungsphase erzeugt eine Reihe von Framepufferadressen und zugeordneten Werten mithilfe einer zweidimensionalen Beschreibung eines Punkts, Liniensegments oder Polygons. Jedes so erzeugte Fragment wird in die letzte Phase pro Fragment eingespeist.

  • Vorgänge pro Fragment Dies sind die endgültigen Vorgänge, die für die Daten ausgeführt werden, bevor sie als Pixel im Framebuffer gespeichert werden.

    Pro Fragment-Vorgänge umfassen bedingte Aktualisierungen des Framebuffers basierend auf eingehenden und zuvor gespeicherten Z-Werten (für z-Pufferung) und vermischungen eingehender Pixelfarben mit gespeicherten Farben sowie Maskierung und andere logische Vorgänge für Pixelwerte.

Daten können in Form von Pixeln und nicht in Scheitelpunkten eingegeben werden. Daten in Form von Pixeln, z. B. die Beschreibung eines Bilds für die Verwendung in der Texturzuordnung, überspringt die erste oben beschriebene Verarbeitungsphase und wird stattdessen in der Pixeloperationsphase als Pixel verarbeitet. Bei den folgenden Pixelvorgängen handelt es sich bei den Pixeldaten um eine der folgenden Pixeldaten:

  • Als Texturspeicher gespeichert, zur Verwendung in der Rasterungsphase.
  • Gerastert, mit den resultierenden Fragmenten, die in den Framebuffer zusammengeführt wurden, als ob sie aus geometrischen Daten generiert wurden.