Freigeben über


Primitive Topologien

Direct3D unterstützt mehrere primitive Topologien, die definieren, wie Scheitelpunkte von der Pipeline interpretiert und gerendert werden, z. B. Punktlisten, Linienlisten und Dreiecksstreifen.

Grundlegende grundtyptopologien

Die folgenden grundlegenden Grundtyptopologien (oder Grundtypen) werden unterstützt:

Eine Visualisierung der einzelnen Grundtypen finden Sie im Diagramm weiter unten in diesem Thema in Wicklungsrichtung und führenden Vertexpositionen.For a visualization of each primitive type, see the diagram later in this topic in Winding direction and leading vertex positions.

Die Eingabeassemblerphase (IA) liest Daten aus Vertex- und Indexpuffern, fasst die Daten in diese Grundtypen zusammen und sendet die Daten dann an die verbleibenden Pipelinephasen.

Primitive Nähe

Alle Direct3D-Grundtypen (mit Ausnahme der Punktliste) sind in zwei Versionen verfügbar: ein Grundtyp mit Adjacency und ein Grundtyp ohne Angrenzende. Grundtypen mit Angrenzenden enthalten einige der umgebenden Scheitelpunkte, während Grundtypen ohne Angrenzende nur die Scheitelpunkte des Zielgrundtyps enthalten. Der Grundtyp für die Zeilenliste weist beispielsweise einen entsprechenden Zeilenlistengrundtyp auf, der die Nähe enthält.

Angrenzende Grundtypen sollen weitere Informationen zu Ihrer Geometrie bereitstellen und nur über einen Geometrie-Shader sichtbar sein. Adjacency ist nützlich für Geometrieshader, die Silhouettenerkennung, Schattenvolumenextrusion usw. verwenden.

Angenommen, Sie möchten eine Dreiecksliste mit Angrenzenden zeichnen. Eine Dreiecksliste mit 36 Scheitelpunkten (mit Angrenzenden) liefert 6 abgeschlossene Grundtypen. Grundtypen mit Angrenzenden (mit Ausnahme von Linienstreifen) enthalten genau doppelt so viele Scheitelpunkte wie der entsprechende Grundtyp ohne Angrenzende, wobei jeder zusätzliche Scheitelpunkt ein angrenzender Scheitelpunkt ist.

Wicklungsrichtung und führende Vertexpositionen

Wie in der folgenden Abbildung dargestellt, ist ein führender Scheitelpunkt der erste nicht angrenzende Scheitelpunkt in einem Grundtyp. Ein Grundtyp kann mehrere führende Scheitelpunkte definiert haben, solange jeder für einen anderen Grundtyp verwendet wird.

  • Bei einem Dreiecksstreifen mit Angrenzenden sind die führenden Scheitelpunkte 0, 2, 4, 6 usw.
  • Bei einem Linienstreifen mit Angrenzenden sind die führenden Scheitelpunkte 1, 2, 3 usw.
  • Ein angrenzender Grundtyp dagegen hat keinen führenden Scheitelpunkt.

Die folgende Abbildung zeigt die Vertex-Sortierung für alle Grundtypen, die vom Eingabeassembler erzeugt werden können.

Diagramm der Vertex-Sortierung für primitive Typen

Die Symbole in der vorherigen Abbildung werden in der folgenden Tabelle beschrieben.

Symbol Name Beschreibung
Symbol für einen Scheitelpunkt Scheitelpunkt Ein Punkt im 3D-Raum.
Symbol für Wicklungsrichtung Wicklungsrichtung Die Scheitelpunktreihenfolge beim Zusammenstellen eines Grundtyps. Kann im Uhrzeigersinn oder gegen den Uhrzeigersinn sein.
Symbol für führenden Scheitelpunkt Führender Scheitelpunkt Der erste nicht angrenzende Scheitelpunkt in einem Grundtyp, der daten pro Konstante enthält.

 

Generieren mehrerer Streifen

Sie können mehrere Streifen durch Streifenschnitt generieren. Sie können einen Strip cut ausführen, indem Sie explizit die RestartStrip HLSL-Funktion aufrufen oder einen speziellen Indexwert in den Indexpuffer einfügen. Dieser Wert ist -1, der für 32-Bit-Indizes oder 0xffff für 16-Bit-Indizes 0xffffffff ist.

Ein Index von –1 gibt einen expliziten "Ausschneiden" oder "Neustart" des aktuellen Strips an. Der vorherige Index schließt den vorherigen Grundtyp oder den vorherigen Streifen ab, und der nächste Index startet einen neuen Grundtyp oder einen neuen Strip.

Weitere Informationen zum Generieren mehrerer Streifen finden Sie in der Geometry-Shaderphase (GS).

Eingabeassemblerphase (IA)

Grafikpipeline