ID3D11DeviceContext::OMSetRenderTargets 方法 (d3d11.h)
以原子方式将一个或多个呈现目标以及深度模具缓冲区绑定到 输出合并阶段。
语法
void OMSetRenderTargets(
[in] UINT NumViews,
[in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
[in, optional] ID3D11DepthStencilView *pDepthStencilView
);
参数
[in] NumViews
类型: UINT
要绑定 (范围介于 0 到 D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT) 之间的呈现目标数。 如果此参数不为零,则 数组中 ppRenderTargetViews 点的条目数必须等于此参数中的数目。
[in, optional] ppRenderTargetViews
指向 ID3D11RenderTargetView 数组的指针,该数组表示要绑定到设备的呈现目标。 如果此参数为 NULL 且 NumViews 为 0,则不绑定呈现器目标。
[in, optional] pDepthStencilView
指向 ID3D11DepthStencilView 的指针,该视图表示要绑定到设备的深度模具视图。 如果此参数为 NULL,则不绑定深度模具视图。
返回值
无
备注
设备在任何给定时间处于活动状态的活动呈现目标的最大数目由 D3D11.h 中名为 D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT 的 #define 设置。 尝试将同一子资源设置为多个呈现目标槽无效。 此调用未定义的任何呈现目标都设置为 NULL。
如果任何子资源当前也绑定在不同阶段中读取或写入 (可能位于管道) 的不同部分,则这些绑定点将设置为 NULL,以防止在单个呈现操作中同时读取和写入同一子资源。
方法将保存对传入的接口的引用。 这与 Direct3D 10 中的设备状态行为不同。
如果呈现器目标视图是从数组资源类型创建的,则所有呈现目标视图必须具有相同的数组大小。
此限制也适用于深度模具视图,其数组大小必须与所绑定的呈现器目标视图的大小相匹配。
像素着色器必须能够同时呈现到至少八个单独的呈现目标。 所有这些呈现目标都必须访问同一类型的资源: Buffer、 Texture1D、 Texture1DArray、 Texture2D、 Texture2DArray、 Texture3D 或 TextureCube。 所有呈现器目标在所有维度上的尺寸必须相同(宽度和高度,3D 深度或 *Array 类型的数组大小)。 如果呈现目标使用多重采样抗锯齿,则所有绑定的呈现目标和深度缓冲区必须是相同形式的多重采样资源 (即,样本计数必须相同) 。 每个呈现目标可以有不同的数据格式。 这些呈现目标格式不需要具有相同的每个元素的位计数。
呈现器目标的 8 个槽的任意组合都可以设置或未设置呈现目标。
同一资源视图不能同时绑定到多个呈现目标槽。 但是,可以将单个资源的多个非重叠资源视图设置为同时多个呈现目标。
请注意,与 Direct3D 中的其他一些资源方法不同,所有当前绑定的呈现目标都将通过调用 OMSetRenderTargets(0, nullptr, nullptr);
取消绑定。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d11.h |
Library | D3D11.lib |