Sdílet prostřednictvím


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.

ilustrace různých primitivních typů objektu shaderu geometrie

Následující diagram znázorňuje vyvolání shaderu geometrie.

ilustrace 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

model shaderu 4