Compartilhar via


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.

Nota RTVs, DSV e UAVs não podem ser definidos independentemente; todos eles precisam ser definidos ao mesmo tempo.
 
Duas RTVs entram em conflito se compartilham um sub-recurso (e, portanto, compartilham o mesmo recurso).

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:

  1. 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.
    OMSetRenderTargetsAndUnorderedAccessViews executa as seguintes tarefas:
    • 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.
  2. 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.
    OMSetRenderTargetsAndUnorderedAccessViews desassocia os seguintes itens:
    • 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 associa ppUnorderedAccessViews.

    OMSetRenderTargetsAndUnorderedAccessViews ignora ppDepthStencilView e a exibição de estêncil de profundidade atual permanece associada.

  3. 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.
    OMSetRenderTargetsAndUnorderedAccessViews desassocia os seguintes itens:
    • 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 associa ppRenderTargetViews e ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignora UAVStartSlot.

Windows Phone 8: há suporte para essa API.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d11.h
Biblioteca D3D11.lib

Confira também

ID3D11DeviceContext