Partager via


objet Geometry-Shader

Un objet de nuanceur geometry traite des primitives entières. Utilisez la syntaxe suivante pour déclarer un objet de nuanceur geometry.

[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é requis ; les crochets et parenthèses sont des caractères obligatoires 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 de type de données PrimitiveType [ NumElements ]

PrimitiveType - Type primitif, qui détermine l’ordre des données primitives.

Type primitif Description
point Liste des points
ligne Liste de lignes ou bande de lignes
triangle Liste de triangles ou bande de triangles
lineadj Liste de lignes avec adjacency ou bande de traits avec adjacency
triangleadj Liste de triangles avec adjacency ou bande de triangles avec adjacency

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.

NombreElements - Taille de tableau de l’entrée, qui dépend de la 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 triangles supplémentaires ; par conséquent, il nécessite six sommets.

StreamOutputObject

Déclaration de l’objet de sortie de flux .

Valeur de retour

Aucun

Remarques

Le diagramme suivant montre les différents types primitifs d’un objet nuanceur geometry.

illustration des différents types primitifs d’un objet nuanceur geometry

Le diagramme suivant montre les appels de nuanceur geometry.

illustration des appels de nuanceur géométriques

Exemples

Cet exemple provient 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 Supporté
modèle de nuanceur 4 et modèles de nuanceur supérieurs oui

modèle nuanceur 4