objet Geometry-Shader
Un objet geometry-shader traite des primitives entières. Utilisez la syntaxe suivante pour déclarer un objet geometry-shader.
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
Paramètres
-
[maxvertexcount(NumVerts)]
-
[in] Déclaration pour le nombre maximal de sommets à créer.
- [maxvertexcount()] : mot clé obligatoire ; les crochets et les parenthèses sont des caractères requis pour une syntaxe correcte.
- NumVerts : nombre entier représentant le nombre de sommets.
-
ShaderName
-
[in] Chaîne ASCII qui contient un nom unique pour la fonction geometry-shader.
-
Nom du type de données PrimitiveType [ NumElements ]
-
PrimitiveType : type primitif, qui détermine l’ordre des données primitives.
Type primitif Description Point Liste de points Ligne Liste de lignes ou bande de lignes triangle Liste de triangles ou bande de triangles lineadj Liste de lignes avec adjacence ou bande de trait avec adjacence triangleadj Liste de triangles avec adjacence ou bande de triangles avec adjacence DataType : [in] Type de données d’entrée ; peut être n’importe quel type de données HLSL.
Nom - Nom de l’argument ; il s’agit d’une chaîne ASCII.
NumElements : taille de tableau de l’entrée, qui dépend du PrimitiveType , comme indiqué dans le tableau suivant.
Type primitif NumElements Point [1]
Vous n’utilisez qu’un seul point à la fois.Ligne [2]
Une ligne nécessite deux sommets.triangle [3]
Un triangle nécessite trois sommets.lineadj [4]
Un lineadj a deux extrémités ; par conséquent, il nécessite quatre sommets.triangleadj [6]
Un triangleadj borde trois autres triangles ; par conséquent, il nécessite six sommets. -
StreamOutputObject
-
Déclaration de l’objet stream-output.
Valeur de retour
None
Notes
Le diagramme suivant montre les différents types primitifs d’un objet de nuanceur geometry.
Le diagramme suivant montre les appels de nuanceur geometry.
Exemples
Cet exemple est tiré de l’exercice 1 de l’atelier 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();
}
Modèle de nuanceur minimal
Cet objet est pris en charge dans les modèles de nuanceur suivants.
Modèle de nuanceur | Pris en charge |
---|---|
Nuanceur modèle 4 et modèles de nuanceur supérieur | Oui |