Dela via


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.

illustration av de olika primitiva typerna för ett geometriskuggningsobjekt

I följande diagram visas anrop av geometriskuggning.

bild av geometriskuggningsanrop

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

Shader Model 4