ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews メソッド (d3d11.h)
出力合併ステージにリソースをバインドします。
構文
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
);
パラメーター
[in] NumRTVs
型: UINT
バインドするレンダー ターゲットの数 (0 ~ D3D11_SIMULTANEOUS_RENDER_TARGET_COUNTの範囲)。 このパラメーターが 0 以外の場合、 ppRenderTargetViews がポイントする配列内のエントリの数は、このパラメーターの数値と等しい必要があります。 NumRTV を D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff) に設定した場合、このメソッドは現在バインドされているレンダー ターゲット ビュー (RTV) を変更せず、深度ステンシル ビュー (DSV) も変更しません。
[in, optional] ppRenderTargetViews
デバイスにバインドするレンダー ターゲットを表す ID3D11RenderTargetViewの配列へのポインター。 このパラメーターが NULL で 、NumRTV が 0 の場合、レンダー ターゲットはバインドされません。
[in, optional] pDepthStencilView
デバイスにバインドする深度ステンシル ビューを表す ID3D11DepthStencilView へのポインター。 このパラメーターが NULL の場合、深度ステンシル ビューはバインドされません。
[in] UAVStartSlot
型: UINT
0 から始まる配列にインデックスを付けて、順序付けされていないアクセス ビューの設定を開始します (0 ~ D3D11_PS_CS_UAV_REGISTER_COUNT - 1 の範囲)。
Windows 8 以降で使用できる Direct3D 11.1 ランタイムの場合、この値の範囲は 0 ~ D3D11_1_UAV_SLOT_COUNT - 1 です。 D3D11_1_UAV_SLOT_COUNTは 64 と定義されます。
ピクセル シェーダーの場合、 UAVStartSlot はバインドされているレンダー ターゲット ビューの数と等しい必要があります。
[in] NumUAVs
型: UINT
ppUnorderedAccessViews 内の順序なしアクセス ビュー (UAV) の数。 NumUAV を D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff) に設定した場合、このメソッドは現在バインドされている順序付けされていないアクセス ビューを変更しません。
Windows 8 以降で使用できる Direct3D 11.1 ランタイムの場合、この値の範囲は 0 から D3D11_1_UAV_SLOT_COUNT - UAVStartSlot です。
[in, optional] ppUnorderedAccessViews
種類: ID3D11UnorderedAccessView*
デバイスにバインドする順序なしアクセス ビューを表す ID3D11UnorderedAccessViewの配列へのポインター。 このパラメーターが NULL で 、NumUAV が 0 の場合、順序なしのアクセス ビューはバインドされません。
[in, optional] pUAVInitialCounts
型: const UINT*
append と consume バッファー オフセットの配列。 値 -1 は、現在のオフセットを維持することを示します。 その他の値は、その追加可能および使用可能な UAV の非表示カウンターを設定します。 pUAVInitialCounts は、 D3D11_BUFFER_UAV_FLAG_APPEND または UAV の作成時に指定された D3D11_BUFFER_UAV_FLAG_COUNTER で作成された UAV にのみ関連します。それ以外の場合、引数は無視されます。
戻り値
なし
解説
ピクセル シェーダーの場合、レンダー ターゲットと順序付けされていないアクセス ビューは、書き込み時に同じリソース スロットを共有します。つまり、UAV は、バインドされているレンダー ターゲット ビューの後のスロットに配置されるようにオフセットを指定する必要があります。
サブリソースを共有する (したがって同じリソースを共有する) 場合、2 つの UAV が競合します。
RTV がサブリソースを共有している場合、またはバインド ポイントを共有している場合、RTV は UAV と競合します。
OMSetRenderTargetsAndUnorderedAccessViews は 、次の状況で正しく動作します。
-
NumRTV != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL と NumUAV != D3D11_KEEP_UNORDERED_ACCESS_VIEWS
OMSetRenderTargetsAndUnorderedAccessViews が成功し、ランタイムがバインド情報をドライバーに渡すには、次の条件が満たされている必要があります。
- NumRTV<= 8
- UAVStartSlot>= NumRTV
- UAVStartSlot + NumUAV<= 8
- すべての ppRenderTargetViews と ppUnorderedAccessViews のセットに競合があってはなりません。
- ppDepthStencilView はレンダー ターゲット ビューと一致する必要があります。 リソース ビューの詳細については、「 Direct3D 11 のリソースの概要」を参照してください。
- 現在バインドされているすべての競合するリソース (ストリーム出力ターゲット リソース (SOTargets)、コンピューティング シェーダー (CS) UAV、シェーダー リソース ビュー (SRV)) のバインドを解除します。
- ppRenderTargetViews、ppDepthStencilView、および ppUnorderedAccessViews をバインドします。
-
NumRTV == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL
このような状況では、 OMSetRenderTargetsAndUnorderedAccessViews は UAV のみをバインドします。
OMSetRenderTargetsAndUnorderedAccessViews が成功し、ランタイムがバインド情報をドライバーに渡すには、次の条件が満たされている必要があります。
- UAVStartSlot + NumUAV<= 8
- ppUnorderedAccessViews に競合は存在しない必要があります。
- スロット >内のすべての RTV = UAVStartSlot
- ppUnorderedAccessViews 内のすべての UAV と競合するすべての RTV
- ppUnorderedAccessViews と競合するすべての現在バインドされているリソース (SOTargets、CS UAV、SRV)
OMSetRenderTargetsAndUnorderedAccessViews は ppDepthStencilView を無視し、現在の深度ステンシル ビューはバインドされたままです。
-
NumUAV == D3D11_KEEP_UNORDERED_ACCESS_VIEWS
このような状況では、 OMSetRenderTargetsAndUnorderedAccessViews は、RTV と DSV のみをバインドします。
OMSetRenderTargetsAndUnorderedAccessViews が成功し、ランタイムがバインド情報をドライバーに渡すには、次の条件が満たされている必要があります。
- NumRTV<= 8
- ppRenderTargetViews に競合があってはなりません。
- ppDepthStencilView はレンダー ターゲット ビューと一致する必要があります。 リソース ビューの詳細については、「 Direct3D 11 のリソースの概要」を参照してください。
- スロット < NumRTV 内のすべての UAV
- ppRenderTargetViews 内のすべての RTV と競合するすべての UAV
- ppRenderTargetViews と競合するすべての現在バインドされているリソース (SOTargets、CS UAV、SRV)
OMSetRenderTargetsAndUnorderedAccessViews はUAVStartSlot を無視します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d11.h |
Library | D3D11.lib |