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.
Das folgende Diagramm zeigt Geometry-Shaderaufrufe.
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 |