Compartilhar via


Estágio Stream-Output

A finalidade do estágio de saída de fluxo é gerar continuamente (ou transmitir) dados de vértice do estágio de sombreador de geometria (ou o estágio de sombreador de vértice se o estágio de sombreador de geometria estiver inativo) para um ou mais buffers na memória (consulte Introdução ao Stream-Output Stage).

O estágio de saída de fluxo (SO) está localizado no pipeline logo após o estágio de sombreador de geometria e pouco antes do estágio de rasterização, conforme mostrado no diagrama a seguir.

diagrama do local do estágio de saída de fluxo no pipeline

Os dados transmitidos para a memória podem ser lidos novamente no pipeline em um passe de renderização subsequente ou podem ser copiados para um recurso de preparo (para que possam ser lidos pela CPU). A quantidade de dados transmitidos pode variar; a API ID3D11DeviceContext::D rawAuto foi projetada para lidar com os dados sem a necessidade de consultar (a GPU) sobre a quantidade de dados gravados.

Quando uma faixa de triângulo ou linha é associada ao estágio de assembler de entrada, cada faixa é convertida em uma lista antes de serem transmitidas. Vértices são sempre escritos como primitivos completos (por exemplo, 3 vértices de cada vez para triângulos); primitivos incompletos nunca são transmitidos para fora. Tipos primitivos com adjacência descartam os dados de adjacência antes de transmitir dados.

Há duas maneiras de alimentar dados de saída de fluxo no pipeline:

  • Os dados de saída de fluxo podem ser alimentados novamente no estágio do assembler de entrada.
  • Os dados de saída de fluxo podem ser lidos por sombreadores programáveis usando funções de carga (como Load).

Para usar um buffer como um recurso de saída de fluxo, crie o buffer com o sinalizador D3D11_BIND_STREAM_OUTPUT. O estágio de saída de fluxo dá suporte a até 4 buffers simultaneamente.

  • Se você estiver transmitindo dados em vários buffers, cada buffer só poderá capturar um único elemento (até 4 componentes) de dados por vértice, com um passo de dados implícito igual à largura do elemento em cada buffer (compatível com a maneira como buffers de elemento único podem ser associados à entrada em estágios de sombreador). Além disso, se os buffers tiverem tamanhos diferentes, a gravação será interrompida assim que qualquer um dos buffers estiver cheio.
  • Se você estiver transmitindo dados para um único buffer, o buffer poderá capturar até 64 componentes escalares de dados por vértice (256 bytes ou menos) ou o passo de vértice pode ser de até 2048 bytes.

Nesta seção

Tópico Descrição
introdução ao de estágio de Stream-Output
Esta seção descreve como usar um sombreador de geometria com o estágio de saída do fluxo.

de Pipeline de Gráficos

de estágios de pipeline (Direct3D 10)