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 等資源描述元必須系結(放入 輸入位置),著色器才能存取它們以進行讀取或寫入。
下圖顯示具有五個資源的範例。
在上述範例中:
- NumRTVs = 2
- UAVStartSlot = 2
- NumUAV = 3
NumUAV 和 UAVStartSlot 指定 UAV 陣列中的哪個範圍包含與先前系結狀態相關的變更。 請注意,範圍中的點可能會 不變,。
UAVRangeStart 和 UAVRangeSize 參數是一種便利性,可顯示實際 變更 範圍,因為 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) |