Método ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews (d3d11.h)
Associa recursos ao estágio de fusão de saída.
Sintaxe
void OMSetRenderTargetsAndUnorderedAccessViews(
[in] UINT NumRTVs,
[in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
[in, optional] ID3D11DepthStencilView *pDepthStencilView,
[in] UINT UAVStartSlot,
[in] UINT NumUAVs,
[in, optional] ID3D11UnorderedAccessView * const *ppUnorderedAccessViews,
[in, optional] const UINT *pUAVInitialCounts
);
Parâmetros
[in] NumRTVs
Tipo: UINT
Número de destinos de renderização a serem associados (intervalos entre 0 e D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Se esse parâmetro for diferente de zero, o número de entradas na matriz para a qual os pontos ppRenderTargetViews deverão ser iguais ao número nesse parâmetro. Se você definir NumRTVs como D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), esse método não modificará as RTVs (exibições de destino de renderização) vinculadas no momento e também não modificará a DSV (exibição de estêncil de profundidade).
[in, optional] ppRenderTargetViews
Tipo: ID3D11RenderTargetView*
Ponteiro para uma matriz de ID3D11RenderTargetViews que representam os destinos de renderização a serem associados ao dispositivo. Se esse parâmetro for NULL e NumRTVs for 0, nenhum destino de renderização será associado.
[in, optional] pDepthStencilView
Tipo: ID3D11DepthStencilView*
Ponteiro para um ID3D11DepthStencilView que representa a exibição de estêncil de profundidade a ser associada ao dispositivo. Se esse parâmetro for NULL, a exibição de estêncil de profundidade não será associada.
[in] UAVStartSlot
Tipo: UINT
Indexe em uma matriz baseada em zero para começar a definir exibições de acesso não ordenado (intervalos de 0 a D3D11_PS_CS_UAV_REGISTER_COUNT - 1).
Para o runtime do Direct3D 11.1, que está disponível a partir do Windows 8, esse valor pode variar de 0 a D3D11_1_UAV_SLOT_COUNT a 1. D3D11_1_UAV_SLOT_COUNT é definido como 64.
Para sombreadores de pixel, UAVStartSlot deve ser igual ao número de exibições de destino de renderização associadas.
[in] NumUAVs
Tipo: UINT
Número de UAVs (exibições de acesso não ordenado) em ppUnorderedAccessViews. Se você definir NumUAVs como D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), esse método não modificará as exibições de acesso não ordenado associadas no momento.
Para o runtime do Direct3D 11.1, que está disponível a partir do Windows 8, esse valor pode variar de 0 a D3D11_1_UAV_SLOT_COUNT – UAVStartSlot.
[in, optional] ppUnorderedAccessViews
Tipo: ID3D11UnorderedAccessView*
Ponteiro para uma matriz de ID3D11UnorderedAccessViews que representam as exibições de acesso não ordenado a serem associadas ao dispositivo. Se esse parâmetro for NULL e NumUAVs for 0, nenhuma exibição de acesso não ordenado será associada.
[in, optional] pUAVInitialCounts
Tipo: const UINT*
Uma matriz de deslocamentos de buffer de acréscimo e consumo. Um valor de -1 indica manter o deslocamento atual. Quaisquer outros valores definem o contador oculto para esse UAV anexável e consumível. pUAVInitialCounts é relevante apenas para UAVs que foram criados com D3D11_BUFFER_UAV_FLAG_APPEND ou D3D11_BUFFER_UAV_FLAG_COUNTER especificados quando o UAV foi criado; caso contrário, o argumento será ignorado.
Retornar valor
Nenhum
Comentários
Para sombreadores de pixel, os destinos de renderização e as exibições de acesso não ordenado compartilham os mesmos slots de recurso ao serem gravados. Isso significa que os UAVs devem receber um deslocamento para que sejam colocados nos slots após as exibições de destino de renderização que estão sendo associadas.
Dois UAVs entram em conflito se compartilham um sub-recurso (e, portanto, compartilham o mesmo recurso).
Um RTV entrará em conflito com um UAV se eles compartilharem um sub-recurso ou compartilharem um ponto de associação.
OMSetRenderTargetsAndUnorderedAccessViews opera corretamente nas seguintes situações:
-
NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL e NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS
As seguintes condições devem ser verdadeiras para que OMSetRenderTargetsAndUnorderedAccessViews seja bem-sucedido e para que o runtime passe as informações de associação para o driver:
- NumRTVs<= 8
- UAVStartSlot>= NumRTVs
- UAVStartSlot + NumUAVs<= 8
- Não deve haver conflitos no conjunto de todos os ppRenderTargetViews e ppUnorderedAccessViews.
- ppDepthStencilView deve corresponder às exibições de destino de renderização. Para obter mais informações sobre exibições de recursos, consulte Introdução a um recurso no Direct3D 11.
- Desassocia todos os recursos conflitantes atualmente associados (SOTargets (recursos de destino de saída de fluxo), UAVs de sombreador de computação (CS), SRVs (exibições de recurso de sombreador)).
- Associa ppRenderTargetViews, ppDepthStencilView e ppUnorderedAccessViews.
-
NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL
Nessa situação, OMSetRenderTargetsAndUnorderedAccessViews associa apenas UAVs.
As seguintes condições devem ser verdadeiras para que OMSetRenderTargetsAndUnorderedAccessViews seja bem-sucedido e para que o runtime passe as informações de associação para o driver:
- UAVStartSlot + NumUAVs<= 8
- Não deve haver conflitos em ppUnorderedAccessViews.
- Todas as RTVs em slots >= UAVStartSlot
- Todas as RTVs que entram em conflito com quaisquer UAVs em ppUnorderedAccessViews
- Todos os recursos associados no momento (SOTargets, CS UAVs, SRVs) que entram em conflito com ppUnorderedAccessViews
OMSetRenderTargetsAndUnorderedAccessViews ignora ppDepthStencilView e a exibição de estêncil de profundidade atual permanece associada.
-
NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS
Nessa situação, OMSetRenderTargetsAndUnorderedAccessViews associa apenas RTVs e DSV.
As seguintes condições devem ser verdadeiras para que OMSetRenderTargetsAndUnorderedAccessViews seja bem-sucedido e para que o runtime passe as informações de associação para o driver:
- NumRTVs<= 8
- Não deve haver conflitos em ppRenderTargetViews.
- ppDepthStencilView deve corresponder às exibições de destino de renderização. Para obter mais informações sobre exibições de recursos, consulte Introdução a um recurso no Direct3D 11.
- Todos os UAVs em slots <NumRTVs
- Todos os UAVs que entram em conflito com qualquer RTVs em ppRenderTargetViews
- Todos os recursos associados no momento (SOTargets, UAVs CS, SRVs) que entram em conflito com ppRenderTargetViews
OMSetRenderTargetsAndUnorderedAccessViews ignora UAVStartSlot.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d11.h |
Biblioteca | D3D11.lib |