Share via


Como indexar vários fluxos de saída

No modelo de sombreador 5, um sombreador de geometria pode dar suporte a até 4 fluxos separados. Isso significa que um único sombreador pode gerar entre um e quatro fluxos de saída, dependendo do número de fluxos declarados.

Para indexar vários fluxos de saída

  1. Defina um fluxo de dados usando um tipo de modelo de fluxo.

        inout PointStream<OutVertex1> myStream1, 
    
  2. Defina um segundo fluxo de dados usando um tipo de modelo de fluxo.

        inout PointStream<OutVertex2> myStream2 )
    
  3. Gerar dados para fluxos (ou ambos) usando as funções intrínsecas do objeto de saída de fluxo (como Append ou RestartStrip).

    void MyGS( 
        InVertex verts[2], 
        inout PointStream<OutVertex1> myStream1, 
        inout PointStream<OutVertex2> myStream2 )
    {
        OutVertex1 myVert1 = TransformVertex1( verts[0] );
        OutVertex2 myVert2 = TransformVertex2( verts[1] );
        myStream1.Append( myVert1 );
        myStream2.Append( myVert2 );
    }
    

Ao usar um único fluxo de saída, você pode emitir faixas de triângulo, faixas de linha ou listas de pontos. Quando você armazena faixas de triângulo e linha no buffer de fluxo, elas são expandidas para listas de triângulos e linhas, respectivamente. Você também pode rasterizar um fluxo e não enviá-lo para um buffer de memória.

Ao usar vários fluxos de saída, todos os fluxos devem conter pontos e até um fluxo de saída pode ser enviado para o rasterizador. Mais comumente, um aplicativo não rasterizará nenhum fluxo.

Depois de transmitir dados para um buffer, você pode usar esses dados para renderizar qualquer tipo primitivo, não apenas o tipo primitivo que você usou para preencher o buffer.

A saída total do sombreador de geometria é limitada a 1024 escalares. Quando existem vários fluxos, o número de escalares é calculado do maior tipo de fluxo multiplicado pela contagem máxima de vértice.

Diferenças entre o modelo de sombreador 4 e o modelo de sombreador 5:
Modelo de sombreador 4:

  • O número máximo de escalares para saída de fluxo é 64.
  • A máscara de registro por componente deve corresponder ao intervalo de índice.
Modelo de sombreador 5:
  • O número máximo de escalares para saída de fluxo é 128.
  • A máscara de registro por componente não precisa corresponder ao intervalo de índice.
  • A indexação dinâmica de saídas deve ser legal em todos os fluxos.
  • Os modos de interpolação não precisam corresponder aos fluxos.

Recursos do sombreador de geometria