oggetto Geometry-Shader
Un oggetto geometry-shader elabora intere primitive. Utilizzare la sintassi seguente per dichiarare un oggetto geometry-shader.
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
Parametri
-
[maxvertexcount(NumVerts)]
-
[in] Dichiarazione per il numero massimo di vertici da creare.
- [maxvertexcount()] - parola chiave obbligatoria; parentesi quadre e parentesi sono necessari caratteri per la sintassi corretta.
- NumVerts : numero intero che rappresenta il numero di vertici.
-
ShaderName
-
[in] Stringa ASCII che contiene un nome univoco per la funzione geometry-shader.
-
PrimitiveType DataType Name [ NumElements ]
-
PrimitiveType : tipo primitivo, che determina l'ordine dei dati primitivi.
Tipo primitivo Descrizione Punto Elenco di punti Linea Elenco di righe o striscia di righe Triangolo Elenco triangolo o striscia triangolo lineadj Elenco di righe con ajacency o striscia linea con ajacency triangoloadj Elenco triangolo con ajacency o strip triangolo con ajacency DataType : [in] Tipo di dati di input; può essere qualsiasi tipo di dati HLSL.
Nome - Nome argomento; si tratta di una stringa ASCII.
NumElements : dimensioni della matrice dell'input, che dipende da PrimitiveType , come illustrato nella tabella seguente.
Tipo primitivo NumElements Punto [1]
Si opera su un solo punto alla volta.Linea [2]
Una riga richiede due vertici.Triangolo [3]
Un triangolo richiede tre vertici.lineadj [4]
Una lineadj ha due estremità; pertanto, richiede quattro vertici.triangoloadj [6]
Un triangolo delimita tre triangoli; pertanto, richiede sei vertici. -
StreamOutputObject
-
Dichiarazione dell'oggetto output di flusso.
Valore restituito
nessuno
Osservazioni
Il diagramma seguente illustra i vari tipi primitivi per un oggetto geometry shader.
Il diagramma seguente mostra le chiamate geometry shader.
Esempio
Questo esempio proviene dall'esercizio 1 dal workshop Direct3D 10 Shader Model 4.0.
[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();
}
Modello di shader minimo
Questo oggetto è supportato nei modelli shader seguenti.
Modello di shader | Supportato |
---|---|
Modelli shader 4 e uno shader superiore | sì |