Método ID3D11DeviceContext::OMSetRenderTargets (d3d11.h)

Associe um ou mais destinos de renderização atomicamente e o buffer de estêncil de profundidade ao estágio de fusão de saída.

Sintaxe

void OMSetRenderTargets(
  [in]           UINT                   NumViews,
  [in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
  [in, optional] ID3D11DepthStencilView *pDepthStencilView
);

Parâmetros

[in] NumViews

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 não for zero, o número de entradas na matriz à qual os pontos ppRenderTargetViews deverão ser iguais ao número neste parâmetro.

[in, optional] ppRenderTargetViews

Tipo: ID3D11RenderTargetView*

Ponteiro para uma matriz de ID3D11RenderTargetView que representam os destinos de renderização a serem associados ao dispositivo. Se esse parâmetro for NULL e NumViews 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.

Retornar valor

Nenhum

Comentários

O número máximo de destinos de renderização ativos que um dispositivo pode ter ativo a qualquer momento é definido por um #define em D3D11.h chamado D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. É inválido tentar definir o mesmo sub-recurso para vários slots de destino de renderização. Todos os destinos de renderização não definidos por essa chamada são definidos como NULL.

Se algum sub-recursos também estiver vinculado à leitura em um estágio ou gravação diferente (talvez em uma parte diferente do pipeline), esses pontos de associação serão definidos como NULL, a fim de impedir que a mesma sub-fonte seja lida e gravada simultaneamente em uma única operação de renderização.

O método conterá uma referência às interfaces passadas. Isso difere do comportamento do estado do dispositivo no Direct3D 10.

Se as exibições de destino de renderização foram criadas a partir de um tipo de recurso de matriz, todas as exibições de destino de renderização devem ter o mesmo tamanho de matriz.
Essa restrição também se aplica à exibição de estêncil de profundidade, seu tamanho de matriz deve corresponder ao das exibições de destino de renderização associadas.

O sombreador de pixel deve ser capaz de renderizar simultaneamente para pelo menos oito destinos de renderização separados. Todos esses destinos de renderização devem acessar o mesmo tipo de recurso: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D ou TextureCube. Todos os destinos de renderização devem ter o mesmo tamanho em todas as dimensões (largura e altura e profundidade para 3D ou tamanho da matriz para *Tipos de matriz). Se os destinos de renderização usarem o anti-aliasing de várias amostras, todos os destinos de renderização associados e o buffer de profundidade deverão ser a mesma forma de recurso de várias amostras (ou seja, as contagens de exemplo devem ser as mesmas). Cada destino de renderização pode ter um formato de dados diferente. Esses formatos de destino de renderização não são necessários para ter contagens idênticas de bit por elemento.

Qualquer combinação dos oito slots para destinos de renderização pode ter um conjunto de destino de renderização ou não definido.

A mesma exibição de recurso não pode ser associada a vários slots de destino de renderização simultaneamente. No entanto, você pode definir várias exibições de recursos não sobrepostas de um único recurso como destinos simultâneos de renderização múltipla.

Observe que, ao contrário de alguns outros métodos de recurso no Direct3D, todos os destinos de renderização associados no momento serão desvinculados chamando OMSetRenderTargets(0, nullptr, nullptr);.

Requisitos

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

Confira também

ID3D11DeviceContext