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.
En el diagrama siguiente se muestran las 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 | sí |