Objeto Geometry-Shader

Um objeto de sombreador de geometria processa primitivos inteiros. Use a sintaxe a seguir para declarar um objeto geometry-shader.

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

Parâmetros

[maxvertexcount(NumVerts)]

[in] Declaração para o número máximo de vértices a serem criados.

  • [maxvertexcount()] – palavra-chave obrigatório; colchetes e parênteses são caracteres necessários para a sintaxe correta.
  • NumVerts – um número inteiro que representa o número de vértices.

ShaderName

[in] Uma cadeia de caracteres ASCII que contém um nome exclusivo para a função de sombreador de geometria.

PrimitiveType DataType Name [ NumElements ]

PrimitiveType - Tipo primitivo, que determina a ordem dos dados primitivos.

Tipo primitivo Descrição
point Lista de pontos
Linha Lista de linhas ou faixa de linhas
triangle Lista de triângulos ou faixa de triângulo
lineadj Lista de linhas com adjacência ou faixa de linha com adjacência
triangleadj Lista de triângulos com adjacência ou faixa de triângulo com adjacência

DataType - [in] Um tipo de dados de entrada; pode ser qualquer tipo de dados HLSL.

Nome – Nome do argumento; essa é uma cadeia de caracteres ASCII.

NumElements - Tamanho da matriz da entrada, que depende do PrimitiveType , conforme mostrado na tabela a seguir.

Tipo primitivo NumElements
point  [1]
Você opera em apenas um ponto de cada vez.
Linha [2]
Uma linha requer dois vértices.
triangle [3]
Um triângulo requer três vértices.
lineadj [4]
Um lineadj tem duas extremidades; portanto, requer quatro vértices.
triangleadj [6]
Um triangleadj borda mais três triângulos; portanto, requer seis vértices.

StreamOutputObject

A declaração do objeto stream-output.

Valor Retornado

Nenhum

Comentários

O diagrama a seguir mostra os vários tipos primitivos para um objeto de sombreador de geometria.

ilustração dos vários tipos primitivos para um objeto de sombreador geometry

O diagrama a seguir mostra invocações de sombreador de geometria.

ilustração de invocações de sombreador de geometria

Exemplos

Este exemplo é do exercício 1 do Workshop do Modelo de Sombreador Direct3D 10 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

Esse objeto tem suporte nos seguintes modelos de sombreador.

Modelo de Sombreador Com suporte
Modelo de sombreador 4 e modelos de sombreador superior sim

Modelo de sombreador 4