PFND3D11DDI_SETRENDERTARGETS コールバック関数 (d3d10umddi.h)
SetRenderTargets(D3D11) 関数は、レンダー ターゲット サーフェスを設定します。
構文
PFND3D11DDI_SETRENDERTARGETS Pfnd3d11ddiSetrendertargets;
void Pfnd3d11ddiSetrendertargets(
[in] D3D10DDI_HDEVICE unnamedParam1,
[in] const D3D10DDI_HRENDERTARGETVIEW *unnamedParam2,
[in] UINT NumRTVs,
[in] UINT ClearSlots,
[in] D3D10DDI_HDEPTHSTENCILVIEW unnamedParam5,
[in] const D3D11DDI_HUNORDEREDACCESSVIEW *unnamedParam6,
[in] const UINT *unnamedParam7,
UINT UAVStartSlot,
[in] UINT NumUAVs,
[in] UINT UAVRangeStart,
[in] UINT UAVRangeSize
)
{...}
パラメーター
[in] unnamedParam1
hDevice: ディスプレイ デバイス (グラフィックス コンテキスト) へのハンドル。
[in] unnamedParam2
phRenderTargetView: 設定するレンダー ターゲット ビュー (RTV) オブジェクトへのハンドルの配列。 一部のハンドル値には NULL を指定できます。
[in] NumRTVs
RTV が設定する phRenderTargetView で提供される配列内の要素の数。
[in] ClearSlots
バインド解除する RTV オブジェクトの数。つまり、以前はバインドされていたが、バインドする必要がなくなったターゲット ビュー オブジェクトをレンダリングします。
[in] unnamedParam5
hDepthStencilView: 設定する深度ステンシル バッファーへのハンドル。
[in] unnamedParam6
phUnorderedAccessView: 設定する順序なしアクセス ビュー (UAV) オブジェクトへのハンドルの配列。
[in] unnamedParam7
pUAVInitialCounts: append と consume バッファー オフセットの配列。 このパラメーターは、UAV の作成時に D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW 構造体のFlags メンバーに D3D11_DDI_BUFFER_UAV_FLAG_APPEND または D3D11_DDI_BUFFER_UAV_FLAG_COUNTER を設定して作成された phUnorderedAccessView 配列の UAV にのみ関連します。それ以外の場合は無視されます。 この配列の要素が -1 に設定されている場合は、その追加バッファーと消費バッファーの現在のオフセットを保持する必要があります。 その他の値を指定すると、ドライバーはその UAV 追加の非表示カウンターを設定し、バッファーを使用します。
UAVStartSlot
バインドする最初の UAV のインデックス。 UAVStartSlot は、 少なくとも NumRTVs パラメーターと同じくらい優れた値である必要があります。
注意
RTV と UAV に対して存在するバインド ポイントの共有セットは 1 つだけです。 RTV は最初にバインドされ、その後に UAV が続きます。
[in] NumUAVs
バインドする UAV の数。
[in] UAVRangeStart
更新されたすべての UAV のセット内の最初の UAV ( NULL バインディングを含む)。
[in] UAVRangeSize
更新されたすべての UAV のセット内の UAV の数 ( NULL バインディングを含む)。
戻り値
なし
解説
シェーダーが読み取りまたは書き込みのためにアクセスするには、RTV や UAV などのリソース記述子をバインド ( 入力スロットに配置) する必要があります。
次の図は、5 つのリソースを含む例を示しています。
上の例について説明します。
- NumRTV = 2
- UAVStartSlot = 2
- NumUAV = 3
NumUAV と UAVStartSlot では、以前にバインドされた状態に対する変更を含む UAVs 配列内の範囲を指定します。 範囲内のポイントは 変更されない可能性があることに注意してください。
UAVRangeStart パラメーターと UAVRangeSize パラメーターは、Direct3D DDI が常に (変更されていないものも含めて) すべてを常にバインドすることを考えると、実際に変更された内容のスパンを明らかにする便利です。 D3D11 ランタイムは、最適化の可能性を示すヒントとして、ドライバー ライターの追加情報として、アプリケーションに代わってそれらを作成します。 通常、D3D11 ランタイムは UAVRangeStart 値と UAVRangeSize 値を使用してこの関数を呼び出して、範囲全体を示します。 上記の例を使用した場合:
- 範囲全体を選択するには (変更が発生すると思われる)、 UAVRangeStart = 2、 UAVRangeSize = 3 です。
- 最初の UAV だけが変更された可能性があることを示すには、 UAVRangeStart = 2、 UAVRangeSize = 1 です。
ドライバーは、 pfnSetErrorCb コールバック関数を使用してエラー コードを設定できます。
ドライバーは、D3DDDIERR_DEVICEREMOVEDを除き、エラーが発生しないようにする必要があります。 したがって、ドライバーが pfnSetErrorCb 関数の呼び出しで、D3DDDIERR_DEVICEREMOVEDを除くエラーを渡した場合、Microsoft Direct3D ランタイムはエラーが重大であると判断します。 デバイスが削除された場合でも、ドライバーはD3DDDIERR_DEVICEREMOVEDを返す必要はありません。ただし、デバイスの削除が SetRenderTargets の操作に干渉した場合 (通常は発生しないはずです)、ドライバーはD3DDDIERR_DEVICEREMOVEDを返すことができます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | SetRenderTargets(D3D11) は、Windows 7 オペレーティング システム以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | d3d10umddi.h (D3d10umddi.h を含む) |