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 つのリソースを含む例を示しています。

RTV と UAV の例。

上の例について説明します。

  • NumRTV = 2
  • UAVStartSlot = 2
  • NumUAV = 3

NumUAVUAVStartSlot では、以前にバインドされた状態に対する変更を含む 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 を含む)

こちらもご覧ください

D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb