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 com o estágio Stream-Output).

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

diagrama da localização do estágio de saída de fluxo no pipeline

Os dados transmitidos para a memória podem ser lidos de volta no pipeline em uma passagem 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 um triângulo ou faixa de linha é associado ao estágio de assembler de entrada, cada faixa é convertida em uma lista antes de serem transmitidas para fora. Os vértices são sempre escritos como primitivos completos (por exemplo, 3 vértices por 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 para fora.

Há duas maneiras de fornecer dados de saída de fluxo para o 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 Carregar).

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 pode capturar apenas um único elemento (até 4 componentes) de dados por vértice, com uma distância de dados implícita igual à largura do elemento em cada buffer (compatível com a maneira como os buffers de elemento único podem ser vinculados para a entrada em estágios de sombreador). Além disso, se os buffers tiverem tamanhos diferentes, a escrita é interrompida assim que qualquer um dos buffers estiver cheio.
  • Se você estiver transmitindo dados em um único buffer, o buffer pode capturar até 64 componentes escalares de dados por vértice (256 bytes ou menos) ou a distância de vértice pode ser de até 2048 bytes.

Nesta seção

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

Pipeline gráfico

Estágios de pipeline (Direct3D 10)