objekt Geometry-Shader
Objekt geometry-shader zpracovává celá primitiva. Pomocí následující syntaxe deklarujte objekt geometry-shader.
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
Parametry
-
[maxvertexcount(NumVerts)]
-
[v] Deklarace maximálního počtu vrcholů, které se mají vytvořit.
- [maxvertexcount()] – povinné klíčové slovo; Pro správnou syntaxi jsou požadované znaky závorek a závorek.
- NumVerts – celočíselné číslo představující počet vrcholů.
-
shaderName
-
[v] Řetězec ASCII, který obsahuje jedinečný název funkce geometry-shader.
-
Název datového typu PrimitiveType [ NumElements ]
-
PrimitiveType – primitivní typ, který určuje pořadí primitivních dat.
Primitivní typ Popis bod Seznam bodů řádku Spojnicový seznam nebo pruh čáry trojúhelníku Trojúhelníkový seznam nebo pruh trojúhelníku lineadj Line list with adjacency or line strip with adjacency triangleadj Seznam trojúhelníků s sousedstvím nebo trojúhelníkovým pruhem s sousedstvím datový typ - [in] Vstupní datový typ; může být libovolný datový typ HLSL.
Název – název argumentu; toto je řetězec ASCII.
NumElements – velikost pole vstupu, která závisí na PrimitiveType, jak je znázorněno v následující tabulce.
Primitivní typ NumElements bod [1]
Pracujete pouze v jednom okamžiku.řádku [2]
Čára vyžaduje dva vrcholy.trojúhelníku [3]
Trojúhelník vyžaduje tři vrcholy.lineadj [4]
Lineadj má dva konce; proto vyžaduje čtyři vrcholy.triangleadj [6]
Trojúhelníkadj ohraničení tři další trojúhelníky; proto vyžaduje šest vrcholů. -
StreamOutputObject
-
Deklarace objektu stream-output.
Návratová hodnota
Žádný
Poznámky
Následující diagram znázorňuje různé primitivní typy objektu shaderu geometrie.
Následující diagram znázorňuje vyvolání shaderu geometrie.
Příklady
Tento příklad je z cvičení 1 z 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();
}
Minimální model shaderu
Tento objekt je podporován v následujících modelech shaderu.
Model shaderu | Podporovaný |
---|---|
model shaderu 4 a vyšší modely shaderu | Ano |
Související témata
-
model shaderu 4