Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un geometry shader con stream out viene dichiarato con una sintassi specifica. In questo argomento viene descritta la sintassi. Nel runtime dell'effetto questa sintassi verrà convertita in una chiamata a ID3D11Device::CreateGeometryShaderWithStreamOutput.
Sintassi costrutti
[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0" )
Nome | Descrizione |
---|---|
StreamingShaderVar | Opzionale. Stringa ASCI che identifica in modo univoco il nome di una variabile geometry shader con flusso out. Questo è facoltativo perché ConstructGSWithSO può essere inserito direttamente in una chiamata SetGeometryShader o BindInterfaces. |
shaderVar | Variabile geometry shader o vertex shader. |
OutputDecl0 | Stringa che definisce quali output dello shader nel flusso 0 vengono trasmessi in streaming. Vedere di seguito per la sintassi. |
Questa è la sintassi definita nei file fx_4_0. Si noti che in gs_4_0 e vs_x shader è presente un solo flusso di dati. Lo shader risultante restituirà un flusso sia all'unità di uscita del flusso che all'unità rasterizer.
[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0", "OutputDecl1", "OutputDecl2",
"OutputDecl3", RasterizedStream )
Nome | Descrizione |
---|---|
StreamingShaderVar | Opzionale. Stringa ASCI che identifica in modo univoco il nome di una variabile geometry shader con flusso out. Questo è facoltativo perché ConstructGSWithSO può essere inserito direttamente in una chiamata SetGeometryShader o BindInterfaces. |
shaderVar | Variabile geometry shader o vertex shader. |
OutputDecl0 | Stringa che definisce quali output dello shader nel flusso 0 vengono trasmessi in streaming. Vedere di seguito per la sintassi. |
OutputDecl1 | Stringa che definisce quali output dello shader nel flusso 1 vengono trasmessi in streaming. Vedere di seguito per la sintassi. |
OutputDecl2 | Stringa che definisce quali output dello shader nel flusso 2 vengono trasmessi in streaming. Vedere di seguito per la sintassi. |
OutputDecl3 | Stringa che definisce gli output dello shader nel flusso 3. Vedere di seguito per la sintassi. |
RasterizedStream | Intero che specifica il flusso che verrà inviato al rasterizzatore. |
Si noti che gs_5_0 shader può definire fino a quattro flussi di dati. Lo shader risultante restituirà un flusso all'unità di uscita del flusso per ogniNULL dichiarazione di output e un flusso dell'unità di rasterizzazione.
Sintassi della dichiarazione stream-out
" [ Buffer: ] Semantic[ SemanticIndex ] [ .Mask ]; [ ... ; ] ... [ ... ;]"
Nome | Descrizione |
---|---|
buffer | Opzionale. Numero intero, 0 <= Buffer < 4, specificando il buffer di uscita del flusso a cui verrà aggiunto il valore. |
semantica | Stringa, insieme a SemanticIndex, che specifica il valore da restituire. |
SemanticIndex | Opzionale. Indice associato a Semantic. |
Maschera | Opzionale. Maschera del componente che indica quali componenti del valore restituire. |
Esiste una semantica speciale, etichettata "$SKIP" che indica una semantica vuota, lasciando invariata la memoria corrispondente nel buffer di uscita del flusso. La semantica $SKIP non può avere un oggetto SemanticIndex, ma può avere una maschera.
L'intera dichiarazione di uscita del flusso può essere NULL.
Esempio
struct GSOutput
{
int4 Pos : Position;
int4 Color : Color;
int4 Texcoord : Texcoord;
};
[maxvertexcount(1)]
void gsBase (inout PointStream<GSOutput> OutputStream, inout PointStream<GSOutput> OutputStream1)
{
GSOutput output;
output.Pos = int4(1,2,3,4);
output.Color = int4(5,6,7,8);
output.Texcoord = int4(9,10,11,12);
OutputStream.Append(output);
output.Pos = int4(1,2,3,4);
output.Color = int4(5,6,7,8);
output.Texcoord = int4(9,10,11,12);
OutputStream1.Append(output);
};
GeometryShader pGSComp = CompileShader(gs_5_0, gsBase());
GeometryShader pGSwSO = ConstructGSWithSO(pGSComp, "0:Position.xy; 1:Position.zw; 2:Color.xy",
"3:Texcoord.xyzw; 3:$SKIP.x;", NULL, NULL, 1);
// The following two passes perform the same operation
technique11 SOPoints
{
pass
{
SetGeometryShader(ConstructGSWithSO(pGSComp, "0:Position.xy; 1:Position.zw; 2:Color.xy",
"3:Texcoord.xyzw; 3:$SKIP.x;", NULL, NULL, 1));
}
pass
{
SetGeometryShader(pGSwSO);
}
}
Argomenti correlati
-
effetti (Direct3D 11)