Geometry-Shader objekt
Ett geometri-skuggningsobjekt bearbetar hela primitiver. Använd följande syntax för att deklarera ett geometri-skuggningsobjekt.
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
Parametrar
-
[maxvertexcount(NumVerts)]
-
[i] Deklaration för det maximala antalet hörn som ska skapas.
- [maxvertexcount()] – obligatoriskt nyckelord; hakparenteser och parenteser är obligatoriska tecken för rätt syntax.
- NumVerts – ett heltalsnummer som representerar antalet hörn.
-
ShaderName
-
[i] En ASCII-sträng som innehåller ett unikt namn för funktionen geometri-shader.
-
PrimitiveType DataType Name [ NumElements ]
-
PrimitiveType – primitiv typ, som bestämmer ordningen på primitiva data.
Primitiv typ Beskrivning punkt Punktlista rad Linjelista eller linjeremsa triangel Triangellista eller triangelremsa lineadj Linjelista med angränsande eller linjeremsa med angränsande triangleadj Triangellista med angränsande eller triangelband med angränsande DataType – [in] En indatatyp; kan vara valfri HLSL-datatyp.
Namn – Argumentnamn; det här är en ASCII-sträng.
NumElements – Matrisstorlek för indata, vilket beror på PrimitiveType- enligt följande tabell.
Primitiv typ NumElements punkt [1]
Du arbetar bara på en punkt i taget.rad [2]
En rad kräver två hörn.triangel [3]
En triangel kräver tre hörn.lineadj [4]
En lineadj har två ändar; Därför krävs det fyra hörn.triangleadj [6]
En triangleadj kanter tre trianglar till; Därför krävs det sex hörn. -
StreamOutputObject
-
Deklarationen av det stream-output-objektet.
Returvärde
Ingen
Anmärkningar
Följande diagram visar de olika primitiva typerna för ett geometriskt skuggningsobjekt.
I följande diagram visas anrop av geometriskuggning.
Exempel
Det här exemplet är från övning 1 från 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();
}
Lägsta skuggningsmodell
Det här objektet stöds i följande skuggningsmodeller.
Skuggningsmodell | Stödd |
---|---|
Shader Model 4 och högre skuggningsmodeller | Ja |