ID3D11DeviceContext::OMSetRenderTargets メソッド (d3d11.h)

1 つ以上のレンダー ターゲットをアトミックにバインドし、深度ステンシル バッファーを 出力合併ステージにバインドします。

構文

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

パラメーター

[in] NumViews

型: UINT

バインドするレンダー ターゲットの数 (0 ~ D3D11_SIMULTANEOUS_RENDER_TARGET_COUNTの範囲)。 このパラメーターが 0 以外の場合、 ppRenderTargetViews がポイントする配列内のエントリの数は、このパラメーターの数値と等しい必要があります。

[in, optional] ppRenderTargetViews

種類: ID3D11RenderTargetView*

デバイスにバインドするレンダー ターゲットを表す ID3D11RenderTargetView の配列へのポインター。 このパラメーターが NULL、NumViews が 0 の場合、レンダー ターゲットはバインドされません。

[in, optional] pDepthStencilView

種類: ID3D11DepthStencilView*

デバイスにバインドする深度ステンシル ビューを表す ID3D11DepthStencilView へのポインター。 このパラメーターが NULL の場合、深度ステンシル ビューはバインドされません。

戻り値

なし

解説

デバイスが任意の時点でアクティブにできるアクティブなレンダー ターゲットの最大数は、D3D11.h の #define によって D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT と呼ばれます。 同じサブリソースを複数のレンダー ターゲット スロットに設定しようとすると無効です。 この呼び出しで定義されていないレンダー ターゲットはすべて NULL に設定されます。

サブリソースが現在、別のステージまたは書き込み (おそらくパイプラインの別の部分にある) で読み取り用にバインドされている場合、それらのバインド ポイントは NULL に設定され、同じサブリソースが 1 回のレンダリング操作で同時に読み書きされないようにします。

メソッドは、渡されたインターフェイスへの参照を保持します。 これは、Direct3D 10 のデバイス状態の動作とは異なります。

レンダー ターゲット ビューが配列リソースの種類から作成された場合、すべてのレンダー ターゲット ビューの配列サイズが同じである必要があります。
この制限は深度ステンシル ビューにも適用されます。配列のサイズは、バインドされているレンダー ターゲット ビューのサイズと一致している必要があります。

ピクセル シェーダーは、少なくとも 8 つの個別のレンダー ターゲットに同時にレンダリングできる必要があります。 これらのレンダー ターゲットはすべて、同じ種類のリソース (BufferTexture1DTexture1DArrayTexture2D、Texture2DArrayTexture3Dまたは TextureCube) にアクセスする必要があります。 すべてのレンダー ターゲットは、すべての次元 (幅、高さ、3D の場合は奥行、*Array 型の場合は配列サイズ) でサイズが同じでなければなりません。 レンダー ターゲットでマルチサンプルアンチエイリアシングを使用する場合、バインドされているすべてのレンダー ターゲットと深度バッファーは、マルチサンプル リソースの同じ形式である必要があります (つまり、サンプル数は同じである必要があります)。 各レンダー ターゲットは、異なるデータ形式を持つことができます。 これらのレンダー ターゲット形式は、同じビット/要素数を持つ必要はありません。

レンダー ターゲットの 8 つのスロットの任意の組み合わせで、レンダー ターゲットを設定することも設定することもできません。

同じリソース ビューを複数のレンダー ターゲット スロットに同時にバインドすることはできません。 ただし、1 つのリソースの重複しない複数のリソース ビューを、同時に複数のレンダー ターゲットとして設定できます。

Direct3D の他のリソース メソッドとは異なり、 を呼び出 OMSetRenderTargets(0, nullptr, nullptr);すことで、現在バインドされているすべてのレンダー ターゲットがバインド解除されることに注意してください。

要件

要件
対象プラットフォーム Windows
ヘッダー d3d11.h
Library D3D11.lib

こちらもご覧ください

ID3D11DeviceContext