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) 之間的 (範圍的轉譯目標數目。 如果此參數為非零, 則 ppRenderTargetViews 點在數位中的項目數目必須等於此參數中的數位。 如果您將 NumRTV 設定為 D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff) ,則此方法不會修改目前系結的轉譯目標檢視 (RTV) ,也不會修改 DSV) (深度樣板檢視。

[in, optional] ppRenderTargetViews

類型: ID3D11RenderTargetView*

ID3D11RenderTargetView陣列的指標,代表要系結至裝置的轉譯目標。 如果此參數為 NULLNumRTV 為 0,則不會繫結任何轉譯目標。

[in, optional] pDepthStencilView

類型: ID3D11DepthStencilView*

ID3D11DepthStencilView 的指標,代表要系結至裝置的深度樣板檢視。 如果此參數為 NULL,深度樣板檢視不會繫結。

[in] UAVStartSlot

類型: UINT

在以零起始的陣列中編制索引,以開始設定未排序存取檢視, (範圍從 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陣列的指標,代表要系結至裝置的未排序存取檢視。 如果此參數為 NULLNumUAV 為 0,則不會繫結未排序的存取檢視。

[in, optional] pUAVInitialCounts

類型: const UINT*

附加和取用緩衝區位移的陣列。 值 -1 表示要保留目前的位移。 任何其他值都設定該可附加和消費性 UAV 的隱藏計數器。 pUAVInitialCounts 僅與建立 UAV 時所建立 UAV 相關D3D11_BUFFER_UAV_FLAG_APPEND或 D3D11_BUFFER_UAV_FLAG_COUNTER ;否則,會忽略 自變數。

傳回值

備註

針對圖元著色器,轉譯目標和未排序存取檢視會在寫出時共用相同的資源位置。這表示必須指定 UAV 的位移,以便將它們放在所系結的轉譯目標檢視之後的位置。

注意 RTV、DSV 和 UAV 無法獨立設定;它們全都需要同時設定。
 
如果兩個 RTV 共用子資源 (,因此共用相同的資源) ,就會發生衝突。

如果兩個 UAV 共用子資源 (,因此共用相同的資源) ,就會發生衝突。

如果 RTV 與 UAV 共用子資源或共用系結點,則會與 UAV 衝突。

OMSetRenderTargetsAndUnorderedAccessViews 會在下列情況下正常運作:

  1. NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL 和 NumUAV != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    OMSetRenderTargetsAndUnorderedAccessViews 必須符合下列條件,運行時間才能將系結資訊傳遞至驅動程式:

    • NumRTV<= 8
    • UAVStartSlot>= NumRTV
    • UAVStartSlot + NumUAV<= 8
    • 所有 ppRenderTargetViewsppUnorderedAccessViews 集合中都不得發生衝突。
    • ppDepthStencilView 必須符合轉譯目標檢視。 如需資源檢視的詳細資訊,請參閱 Direct3D 11 中的資源簡介
    OMSetRenderTargetsAndUnorderedAccessViews 會執行下列工作:
    • (SOTargets) 、計算著色器 (CS) UAV、著色器資源檢視 (SRV) ) (數據流輸出目標資源,將所有目前系結的衝突資源解除系結。
    • Binds ppRenderTargetViewsppDepthStencilViewppUnorderedAccessViews
  2. NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    在此情況下, OMSetRenderTargetsAndUnorderedAccessViews 只會系結 UAV。

    OMSetRenderTargetsAndUnorderedAccessViews 必須符合下列條件,運行時間才能將系結資訊傳遞至驅動程式:

    • UAVStartSlot + NumUAV<= 8
    • ppUnorderedAccessViews 中不得發生衝突。
    OMSetRenderTargetsAndUnorderedAccessViews 取消系結下列專案:
    • 位置 >中的所有 RTV = UAVStartSlot
    • 所有與ppUnorderedAccessViews中任何UAV衝突的 RTV
    • 所有目前系結的資源 (SOTargets、CS UAV、SRV) 與 ppUnorderedAccessViews 衝突
    OMSetRenderTargetsAndUnorderedAccessViews 系結 ppUnorderedAccessViews

    OMSetRenderTargetsAndUnorderedAccessViews 會忽略 ppDepthStencilView,而目前的深度樣板檢視仍會保持系結。

  3. NumUAV == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    在此情況下, OMSetRenderTargetsAndUnorderedAccessViews 只會系結 RTV 和 DSV。

    OMSetRenderTargetsAndUnorderedAccessViews 必須符合下列條件,運行時間才能將系結資訊傳遞至驅動程式:

    • NumRTV<= 8
    • ppRenderTargetViews 中不得發生衝突。
    • ppDepthStencilView 必須符合轉譯目標檢視。 如需資源檢視的詳細資訊,請參閱 Direct3D 11 中的資源簡介
    OMSetRenderTargetsAndUnorderedAccessViews 取消系結下列專案:
    • 位置 <NumRTV 中的所有 UAV
    • 所有與 ppRenderTargetViews 中任何 RTV 衝突的 UAV
    • 所有目前系結的資源 (SOTargets、CS UAV、SRV) 與 ppRenderTargetViews 衝突
    OMSetRenderTargetsAndUnorderedAccessViews 系結 ppRenderTargetViewsppDepthStencilView

    OMSetRenderTargetsAndUnorderedAccessViews 會忽略 UAVStartSlot

Windows Phone 8:支援此 API。

規格需求

需求
目標平台 Windows
標頭 d3d11.h
程式庫 D3D11.lib

另請參閱

ID3D11DeviceContext