Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un nuanceur geometry avec flux sortant est déclaré avec une syntaxe particulière. Cette rubrique décrit la syntaxe. Dans le runtime d’effet, cette syntaxe est convertie en appel à ID3D11Device ::CreateGeometryShaderWithStreamOutput.
Syntaxe de construction
[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0" )
| Nom | Description |
|---|---|
| StreamingShaderVar | Optionnel. Chaîne ASCI qui identifie de manière unique le nom d’une variable de nuanceur géométrique avec un flux sortant. Cela est facultatif, car ConstructGSWithSO peut être placé directement dans un appel SetGeometryShader ou BindInterfaces. |
| shaderVar | Variable de nuanceur de géométrie ou nuanceur de vertex. |
| OutputDecl0 | Chaîne définissant les sorties du nuanceur dans le flux 0 qui sont diffusées en continu. Consultez la syntaxe ci-dessous. |
Il s’agit de la syntaxe définie dans fx_4_0 fichiers. Notez que dans gs_4_0 et vs_x nuanceurs, il n’existe qu’un seul flux de données. Le nuanceur résultant génère un flux à la fois vers l’unité de sortie de flux et l’unité de rastériseur.
[ StreamingShaderVar = ] ConstructGSWithSO( ShaderVar, "OutputDecl0", "OutputDecl1", "OutputDecl2",
"OutputDecl3", RasterizedStream )
| Nom | Description |
|---|---|
| StreamingShaderVar | Optionnel. Chaîne ASCI qui identifie de manière unique le nom d’une variable de nuanceur géométrique avec un flux sortant. Cela est facultatif, car ConstructGSWithSO peut être placé directement dans un appel SetGeometryShader ou BindInterfaces. |
| shaderVar | Variable de nuanceur de géométrie ou nuanceur de vertex. |
| OutputDecl0 | Chaîne définissant les sorties du nuanceur dans le flux 0 qui sont diffusées en continu. Consultez la syntaxe ci-dessous. |
| OutputDecl1 | Chaîne définissant les sorties du nuanceur dans le flux 1 sont diffusées en continu. Consultez la syntaxe ci-dessous. |
| OutputDecl2 | Chaîne définissant les sorties du nuanceur dans le flux 2 sont diffusées en continu. Consultez la syntaxe ci-dessous. |
| OutputDecl3 | Chaîne définissant les sorties du nuanceur dans le flux 3 sont diffusées en continu. Consultez la syntaxe ci-dessous. |
| RasterizedStream | Entier spécifiant le flux qui sera envoyé au rastériseur. |
Notez que gs_5_0 nuanceurs peuvent définir jusqu’à quatre flux de données. Le nuanceur résultant génère un flux vers l’unité de sortie de flux pour chaque déclaration de sortie nullnon NULL et un flux de l’unité de rastériseur.
Syntaxe de déclaration Stream Out
" [ Buffer: ] Semantic[ SemanticIndex ] [ .Mask ]; [ ... ; ] ... [ ... ;]"
| Nom | Description |
|---|---|
| de mémoire tampon | Optionnel. Entier, 0 <= Mémoire tampon < 4, en spécifiant le flux sortant de la mémoire tampon vers laquelle la valeur va aller. |
| sémantique | Chaîne, ainsi que SemanticIndex, spécifiant la valeur à générer. |
| SemanticIndex | Optionnel. Index associé à la sémantique. |
| Masque | Optionnel. Masque de composant, indiquant les composants de la valeur à générer. |
Il existe une sémantique spéciale intitulée « $SKIP » qui indique une sémantique vide, laissant la mémoire correspondante dans la mémoire tampon sortante du flux non touché. La sémantique $SKIP ne peut pas avoir de SemanticIndex, mais peut avoir un masque.
La déclaration complète de flux sortant peut être NULL.
Exemple
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);
}
}
Rubriques connexes
-
effets (Direct3D 11)