ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint 方法 (d3d12.h)
将无序访问视图中的所有元素 (UAV) 设置为指定的整数值。
重要
这与计算操作类似,因为它不相对于周边工作(如 调度 调用)进行排序。 为确保排序,必须在 ClearUnorderedAccessViewXxx 调用之前和/或之后根据需要发出屏障调用。 在某些司机上,可能会发现这些障碍是没有必要的。 但隐式屏障不是规范保证;所以不能依赖它们。 这与 ClearDepthStencilView 和 ClearRenderTargetView 不同,后者 (如 DrawXxx 命令) 遵循命令列表排序。
语法
void ClearUnorderedAccessViewUint(
D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
ID3D12Resource *pResource,
const UINT [4] Values,
UINT NumRects,
const D3D12_RECT *pRects
);
参数
ViewGPUHandleInCurrentHeap
类型:[in] D3D12_GPU_DESCRIPTOR_HANDLE
一个 D3D12_GPU_DESCRIPTOR_HANDLE ,引用要清除的无序访问视图 (UAV) 的初始化描述符。 此描述符必须位于着色器可见的描述符堆中,必须通过 SetDescriptorHeaps 在命令列表中设置。
ViewCPUHandle
类型:[in] D3D12_CPU_DESCRIPTOR_HANDLE
非着色器可见描述符堆中的 D3D12_CPU_DESCRIPTOR_HANDLE ,该堆引用要清除的无序访问视图 (UAV) 的初始化描述符。
重要
此描述符不得位于着色器可见的描述符堆中。 这是为了让实现 clear 的驱动程序 (固定功能硬件操作而不是调度) 有效地从描述符读取,因为着色器可见堆可能在 WRITE_BACK 内存中创建, (类似于) D3D12_HEAP_TYPE_UPLOAD 堆类型,而从此类内存中读取的 CPU 速度非常慢。
pResource
类型:[in] ID3D12Resource*
指向 ID3D12Resource 接口的指针,该接口表示要清除的无序访问视图 (UAV) 资源。
Values
类型:[in] const UINT[4]
一个由 4 个组件构成的数组,其中包含用于填充无序访问视图资源的值。
NumRects
类型:[in] UINT
pRects 参数指定的数组中的矩形数。
pRects
类型:[in] const D3D12_RECT*
要清除的资源视图中矩形的 D3D12_RECT 结构的数组。 如果 为 NULL, 则 ClearUnorderedAccessViewUint 清除 整个资源视图。
返回值
无
备注
运行时验证
验证失败会导致调用 ID3D12GraphicsCommandList::Close 返回 E_INVALIDARG。
调试层
如果输入值超出规范化范围,则调试层会发出错误。
如果视图引用的子资源未处于适当的状态,则调试层将发出错误。 对于 ClearUnorderedAccessViewUint,状态必须为 D3D12_RESOURCE_STATE_UNORDERED_ACCESS。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d12.h |
Library | D3d12.lib |
DLL | D3d12.dll |