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) ,此方法不会修改当前绑定的无序访问视图。

对于 Direct3D 11.1 运行时(从 Windows 8 开始可用),此值的范围可以是 0 到 D3D11_1_UAV_SLOT_COUNT - UAVStartSlot

[in, optional] ppUnorderedAccessViews

类型: ID3D11UnorderedAccessView*

指向 ID3D11UnorderedAccessView的数组的指针,该数组表示要绑定到设备的无序访问视图。 如果此参数为 NULLNumUAV 为 0,则不会绑定无序访问视图。

[in, optional] pUAVInitialCounts

类型: const UINT*

追加和使用缓冲区偏移量的数组。 值 -1 指示保留当前偏移量。 任何其他值为该可追加的易耗型 UAV 设置隐藏计数器。 pUAVInitialCounts 仅适用于使用创建 UAV 时指定的 D3D11_BUFFER_UAV_FLAG_APPENDD3D11_BUFFER_UAV_FLAG_COUNTER 创建的 UAV;否则,将忽略 参数。

返回值

备注

对于像素着色器,呈现目标和无序访问视图在写出时共享相同的资源槽。这意味着必须为 UAV 提供偏移量,以便将其放置在绑定的呈现目标视图之后的槽中。

注意 不能单独设置 RTV、DSV 和 UAV;它们都需要同时进行设置。
 
如果两个 RTV 共享一个子资源 (因此共享同一资源) ,则它们会冲突。

如果两个 UAV 共享一个子资源 (因此共享同一资源) ,则它们会冲突。

如果 RTV 共享子资源或共享绑定点,则 RTV 与 UAV 冲突。

OMSetRenderTargetsAndUnorderedAccessViews 在以下情况下正常运行:

  1. NumRTV != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL 和 NumUAV != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    以下条件必须为 true,OMSetRenderTargetsAndUnorderedAccessViews 才能成功,运行时才能将绑定信息传递给驱动程序:

    • NumRTV<= 8
    • UAVStartSlot>= NumRTV
    • UAVStartSlot + NumUAV<= 8
    • 所有 ppRenderTargetViewsppUnorderedAccessViews 的集中不得发生冲突。
    • ppDepthStencilView 必须与呈现目标视图匹配。 有关资源视图的详细信息,请参阅 Direct3D 11 中的资源简介
    OMSetRenderTargetsAndUnorderedAccessViews 执行以下任务:
    • 取消绑定所有当前绑定的冲突资源 (流输出目标资源 (SOTargets) 、计算着色器 (CS) UAV、着色器资源视图 (SRV) ) 。
    • 绑定 ppRenderTargetViewsppDepthStencilViewppUnorderedAccessViews
  2. NumRTV == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    在这种情况下, OMSetRenderTargetsAndUnorderedAccessViews 仅绑定 UAV。

    以下条件必须为 true,OMSetRenderTargetsAndUnorderedAccessViews 才能成功,运行时才能将绑定信息传递给驱动程序:

    • UAVStartSlot + NumUAV<= 8
    • ppUnorderedAccessViews 中不得发生冲突。
    OMSetRenderTargetsAndUnorderedAccessViews 取消绑定以下项:
    • 槽 >中的所有 RTV = UAVStartSlot
    • ppUnorderedAccessViews 中的任何 UAV 冲突的所有 RTV
    • ppUnorderedAccessViews 冲突的所有当前绑定资源 (SOTargets、CS UAV、SRV)
    OMSetRenderTargetsAndUnorderedAccessViews 绑定 ppUnorderedAccessViews

    OMSetRenderTargetsAndUnorderedAccessViews 忽略 ppDepthStencilView,并且当前深度模具视图保持绑定状态。

  3. NumUAV == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    在这种情况下, OMSetRenderTargetsAndUnorderedAccessViews 仅绑定 RTV 和 DSV。

    以下条件必须为 true,OMSetRenderTargetsAndUnorderedAccessViews 才能成功,运行时才能将绑定信息传递给驱动程序:

    • NumRTV<= 8
    • ppRenderTargetViews 中不得有冲突。
    • ppDepthStencilView 必须与呈现目标视图匹配。 有关资源视图的详细信息,请参阅 Direct3D 11 中的资源简介
    OMSetRenderTargetsAndUnorderedAccessViews 取消绑定以下项:
    • 槽<中的所有 UAV NumRTV
    • ppRenderTargetViews 中的任何 RTV 冲突的所有 UAV
    • ppRenderTargetViews 冲突的所有当前绑定资源 (SOTargets、CS UAV、SRV)
    OMSetRenderTargetsAndUnorderedAccessViews 绑定 ppRenderTargetViewsppDepthStencilView

    OMSetRenderTargetsAndUnorderedAccessViews 忽略 UAVStartSlot

Windows Phone 8:支持此 API。

要求

要求
目标平台 Windows
标头 d3d11.h
Library D3D11.lib

另请参阅

ID3D11DeviceContext