Compartir a través de


Geometry-Shader (objeto)

Un objeto geometry-shader procesa primitivos completos. Utilice la siguiente sintaxis para declarar un objeto geometry-shader.

[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );

Parámetros

[maxvertexcount(NumVerts)]

[in] Declaración del número máximo de vértices que se van a crear.

  • [maxvertexcount()] - palabra clave requerida; Los corchetes y paréntesis son caracteres necesarios para la sintaxis correcta.
  • NumVerts : número entero que representa el número de vértices.

ShaderName

[in] Cadena ASCII que contiene un nombre único para la función geometry-shader.

PrimitiveType DataType Name [ NumElements ]

PrimitiveType : tipo primitivo, que determina el orden de los datos primitivos.

Tipo primitivo Descripción
point Lista de puntos
Línea Lista de líneas o franja de líneas
triangle Lista de triángulos o franja de triángulos
lineadj Lista de líneas con adyacencia o franja de líneas con adyacencia
triangleadj Lista de triángulos con adyacencia o franja de triángulos con adyacencia

DataType - [in] Un tipo de datos de entrada; puede ser cualquier tipo de datos HLSL.

Name - Nombre del argumento; se trata de una cadena ASCII.

NumElements : tamaño de matriz de la entrada, que depende de PrimitiveType , como se muestra en la tabla siguiente.

Tipo primitivo NumElements
point [1]
Solo opera en un momento dado.
Línea [2]
Una línea requiere dos vértices.
triangle [3]
Un triángulo requiere tres vértices.
lineadj [4]
Una líneadj tiene dos extremos; por lo tanto, requiere cuatro vértices.
triangleadj [6]
Un triánguloagregar bordea tres triángulos más; por lo tanto, requiere seis vértices.

StreamOutputObject

Declaración del objeto stream-output.

Valor devuelto

None

Observaciones

En el diagrama siguiente se muestran los distintos tipos primitivos de un objeto de sombreador de geometría.

Ilustración de los distintos tipos primitivos de un objeto de sombreador de geometría

En el diagrama siguiente se muestran las invocaciones del sombreador de geometría.

Ilustración de invocaciones del sombreador de geometría

Ejemplos

Este ejemplo procede del ejercicio 1 del taller 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();
}

Modelo de sombreador mínimo

Este objeto se admite en los siguientes modelos de sombreador.

Modelo de sombreador Compatible
Modelo de sombreador 4 y modelos de sombreador superiores

Modelo de sombreador 4