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