Geometry-Shader-Objekt

Ein Geometry-Shader-Objekt verarbeitet ganze Grundtypen. Verwenden Sie die folgende Syntax, um ein Geometry-Shader-Objekt zu deklarieren.

[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );

Parameter

[maxvertexcount(NumVerts)]

[in] Deklaration für die maximale Anzahl der zu erstellenden Scheitelpunkte.

  • [maxvertexcount()] – erforderlicher Schlüsselwort (keyword). Klammern und Klammern sind erforderliche Zeichen für die richtige Syntax.
  • NumVerts : Eine ganze Zahl, die die Anzahl der Scheitelpunkte darstellt.

ShaderName

[in] Eine ASCII-Zeichenfolge, die einen eindeutigen Namen für die geometry-shader-Funktion enthält.

PrimitiveType DataType Name [ NumElements ]

PrimitiveType : Primitiver Typ, der die Reihenfolge der primitiven Daten bestimmt.

Primitiver Typ Beschreibung
Punkt Punktliste
Linie Zeilenliste oder Zeilenstreifen
Dreieck Dreiecksliste oder Dreiecksstreifen
lineadj Zeilenliste mit Adjacency oder Zeilenstreifen mit Adjacency
triangleadj Dreiecksliste mit Adjacency oder Dreiecksstreifen mit Adjacency

DataType : [in] Ein Eingabedatentyp; kann ein beliebiger HLSL-Datentyp sein.

Name : Argumentname; Dies ist eine ASCII-Zeichenfolge.

NumElements : Die Arraygröße der Eingabe hängt vom PrimitiveType ab, wie in der folgenden Tabelle gezeigt.

Primitiver Typ NumElements
Punkt [1]
Sie arbeiten jeweils nur an einem Punkt.
Linie [2]
Eine Zeile erfordert zwei Scheitelpunkte.
Dreieck [3]
Ein Dreieck erfordert drei Scheitelpunkte.
lineadj [4]
Ein Lineadj hat zwei Enden; Daher sind vier Scheitelpunkte erforderlich.
triangleadj [6]
Ein Dreieckadj rändert drei weitere Dreiecke; Daher sind sechs Scheitelpunkte erforderlich.

StreamOutputObject

Die Deklaration des stream-output-Objekts.

Rückgabewert

Keine

Bemerkungen

Das folgende Diagramm zeigt die verschiedenen primitiven Typen für ein Geometry-Shaderobjekt.

Abbildung der verschiedenen primitiven Typen für ein Geometry-Shaderobjekt

Das folgende Diagramm zeigt Geometry-Shaderaufrufe.

Abbildung von Geometry-Shaderaufrufen

Beispiele

Dieses Beispiel stammt aus Übung 1 aus dem Direct3D 10 Shader Model 4.0 Workshop.

[maxvertexcount(3)]
void GSScene( triangleadj GSSceneIn input[6], inout TriangleStream<PSSceneIn> OutputStream )
{   
    PSSceneIn output = (PSSceneIn)0;

    for( uint i=0; i<6; i+=2 )
    {
        output.Pos = input[i].Pos;
        output.Norm = input[i].Norm;
        output.Tex = input[i].Tex;
        
        OutputStream.Append( output );
    }
    
    OutputStream.RestartStrip();
}

Minimales Shadermodell

Dieses Objekt wird in den folgenden Shadermodellen unterstützt.

Shadermodell Unterstützt
Shadermodell 4 und höhere Shadermodelle ja

Shadermodell 4