Geometry-Shader-Objekt

Ein geometry-shader-Objekt verarbeitet ganze Primitive. 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 Scheitelzeichen.

  • [maxvertexcount() ] – erforderliches Schlüsselwort; Klammern und Klammern sind erforderliche Zeichen für die richtige Syntax.
  • NumVerts: Eine ganzzahlige Zahl, die die Anzahl der Scheitelzeichen 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 Linienstreifen
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: Arraygröße der Eingabe, die vom PrimitiveType abhängt, wie in der folgenden Tabelle gezeigt.

Primitiver Typ NumElements
Punkt [1]
Sie arbeiten nur an einem Punkt nach dem anderen.
Linie [2]
Eine Zeile erfordert zwei Scheitellinien.
Dreieck [3]
Ein Dreieck erfordert drei Scheitelungen.
lineadj [4]
Ein lineadj hat zwei Enden; daher sind vier Scheitelungen erforderlich.
triangleadj [6]
Ein Dreieckadj grenzt an drei weitere Dreiecke; daher sind sechs Scheiteltices erforderlich.

StreamOutputObject

Die Deklaration des Streamausgabeobjekts.

Rückgabewert

Keine

Bemerkungen

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

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

Das folgende Diagramm zeigt Geometry-Shaderaufrufe.

Abbildung von Geometrie-Shaderaufrufen

Beispiele

Dieses Beispiel ist aus Übung 1 des 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öher – Shadermodelle Ja

Shadermodell 4