Stream-Output Palco
O objetivo do estágio de saída de fluxo é a saída contínua (ou fluxo) de 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 aode estágio de 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 imediatamente antes do estágio de rasterização, conforme mostrado no diagrama a seguir.
Os dados transmitidos para a memória podem ser lidos de volta para o pipeline em um passo 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 ID3D11DeviceContext::D rawAuto API 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 tira de linha é vinculado ao estágio de montagem de entrada, cada tira é convertida em uma lista antes de ser transmitida. Os 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. 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 fluxo-saída podem ser alimentados de volta para o estágio de montagem 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 stream-output suporta 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 uma passada 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 entrada em estágios de sombreador). Além disso, se os buffers tiverem tamanhos diferentes, a gravação para 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 passada de vértice pode ser de até 2048 bytes.
Nesta secção
Tópico | Descrição |
---|---|
Introdução ao Stream-Output Stage |
Esta seção descreve como usar um sombreador de geometria com o estágio de saída de fluxo. |