ID3D10Device::OMSetRenderTargets メソッド (d3d10.h)
1 つ以上のレンダー ターゲットと深度ステンシル バッファーを 出力マージャー ステージにバインドします。
構文
void OMSetRenderTargets(
[in] UINT NumViews,
[in] ID3D10RenderTargetView * const *ppRenderTargetViews,
[in] ID3D10DepthStencilView *pDepthStencilView
);
パラメーター
[in] NumViews
型: UINT
バインドするレンダー ターゲットの数。
[in] ppRenderTargetViews
デバイスにバインドするレンダー ターゲットの配列へのポインター ( ID3D10RenderTargetView を参照)。 このパラメーターが NULL の場合、レンダー ターゲットはバインドされません。 「解説」を参照してください。
[in] pDepthStencilView
デバイスにバインドする深度ステンシル ビューへのポインター ( ID3D10DepthStencilView を参照)。 このパラメーターが NULL の場合、深度ステンシルの状態はバインドされません。
戻り値
なし
解説
OMSetRenderTargets を呼び出すと、ppRenderTargetViews 内のレンダー ターゲットの数に関係なく、すべての境界付きレンダー ターゲットと深度ステンシル ターゲットがオーバーライドされます。
デバイスがアクティブにできるレンダー ターゲットの最大数は、D3D10.h の #define (D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT) によって設定されます。 同じ サブリソース を複数のレンダー ターゲット スロットに設定しようとすると無効です。
現在、サブリソースが読み取りまたは書き込みのためにバインドされている場合 ( おそらくパイプラインの別の部分にある場合)、これらのバインド ポイントは NULL で出力され、同じサブリソースが 1 回のレンダリング操作で同時に読み取りと書き込みを行うのを防ぎます。
メソッドは、渡されたインターフェイスへの参照を保持しません。 そのため、アプリケーションは、デバイスで現在使用されているインターフェイスを解放しないように注意する必要があります。
バインディング リソースの詳細については、「 リソースのバインド」と「パイプライン ステージ 」を参照してください。
ピクセル シェーダーは、少なくとも 8 つの個別のレンダー ターゲットに同時にレンダリングできる必要があります。 これらのレンダー ターゲットはすべて、同じ種類のリソース (Buffer、Texture1D、Texture1DArray、Texture2D、Texture2DArray、Texture3D、TextureCube) にアクセスする必要があります。 すべてのレンダー ターゲットは、すべての次元 (幅、高さ、3D の場合は奥行、*Array 型の場合は配列サイズ) でサイズが同じでなければなりません。 レンダー ターゲットでマルチサンプルアンチエイリアシングが使用されている場合、バインドされているすべてのレンダー ターゲットと深度バッファーは、同じ形式のマルチサンプル リソースである必要があります (つまり、サンプル数は同じである必要があります)。 各レンダー ターゲットは、異なるデータ形式を持つことができます。 これらのレンダー ターゲット形式は、要素ごとのビット数が同じである必要はありません。
レンダー ターゲットの 8 つのスロットの任意の組み合わせで、レンダー ターゲットを設定することも設定することもできません。
同じリソース ビューを複数のレンダー ターゲット スロットに同時にバインドすることはできません。 ただし、1 つのリソースの重複しない複数のリソース ビューを、同時に複数のレンダー ターゲットとして設定できます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d10.h |
Library | D3D10.lib |