共用方式為


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

phRenderTargetView 中所提供陣列中的元素數目, RTV 要設定。

[in] ClearSlots

要解除系結的 RTV 物件數目;也就是說,先前系結但不再需要系結的轉譯目標檢視物件。

[in] unnamedParam5

hDepthStencilView:要設定之深度樣板緩衝區的句柄。

[in] unnamedParam6

phUnorderedAccessView:要設定之未排序存取檢視 (UAV) 物件的句柄數位。

[in] unnamedParam7

pUAVInitialCounts:附加陣列並取用緩衝區位移。 此參數僅與建立UAV時,phUnorderedAccessView 陣列的UAV相關,這些陣列是在建立UAV時,在 旗標中 D3D11_DDI_BUFFER_UAV_FLAG_COUNTERD3D11_DDI_BUFFER_UAV_FLAG_APPEND 設定D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW 結構的成員;否則會忽略它。 如果這個陣列中的元素設定為 -1,則應該保留該附加和取用緩衝區的目前位移。 任何其他值都會讓驅動程式設定該 UAV 附加和取用緩衝區的隱藏計數器。

UAVStartSlot

要系結之第一個UAV的索引。 UAVStartSlot 至少必須和 NumRTV 參數一樣大。

注意

RTV 和 UAV 只有一組共用的系結點存在。 RTV 會先系結,後面接著 UAV。

[in] NumUAVs

要系結的 UAV 數目。

[in] UAVRangeStart

所有更新的UAV集合中的第一個UAV(包括 NULL 系結)。

[in] UAVRangeSize

所有更新的 UAV 集合中的 UAV 數目(包括 NULL 係結)。

傳回值

沒有

言論

RTV 和 UAV 等資源描述元必須系結(放入 輸入位置),著色器才能存取它們以進行讀取或寫入。

下圖顯示具有五個資源的範例。

RTV 和 UAV 範例。

在上述範例中:

  • NumRTVs = 2
  • UAVStartSlot = 2
  • NumUAV = 3

NumUAVUAVStartSlot 指定 UAV 陣列中的哪個範圍包含與先前系結狀態相關的變更。 請注意,範圍中的點可能會 不變,

UAVRangeStartUAVRangeSize 參數是一種便利性,可顯示實際 變更 範圍,因為 Direct3D DDI 一律會系結所有專案(包括未變更的專案)。 D3D11 運行時間會代表應用程式來制定它們,做為驅動程式寫入器的其他資訊,作為可能的優化提示。 一般而言,D3D11 運行時間會使用 UAVRangeStart 呼叫此函式,並 UAVRangeSize 值來表示整個範圍。 使用上述範例:

  • 若要選擇整個範圍(不相信會發生任何變更),UAVRangeStart = 2,UAVRangeSize = 3。
  • 若要指出第一個 UAV 可能已變更,UAVRangeStart = 2,UAVRangeSize = 1。

驅動程式可以使用 pfnSetErrorCb 回呼函式來設定錯誤碼。

除了D3DDDIERR_DEVICEREMOVED以外,驅動程式不應該發生任何錯誤。 因此,如果驅動程式通過D3DDDIERR_DEVICEREMOVED以外的任何錯誤,在呼叫 pfnSetErrorCb 函式時,Microsoft Direct3D 運行時間會判斷錯誤很重要。 即使移除裝置,驅動程式也不需要傳回D3DDDIERR_DEVICEREMOVED;不過,如果裝置移除干擾了 SetRenderTargets 的作業(通常不應該發生),驅動程式可以傳回D3DDDIERR_DEVICEREMOVED。

要求

要求 價值
最低支援的用戶端 從 Windows 7作系統開始,支援 SetRenderTargets(D3D11)。
目標平臺 桌面
標頭 d3d10umddi.h (包括 D3d10umddi.h)

另請參閱

D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb