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.

Das folgende Diagramm zeigt Geometry-Shaderaufrufe.

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 |