ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat 方法 (d3d12.h)

将无序访问视图中的所有元素 (UAV) 设置为指定的浮点值。

重要

这与计算操作类似,因为它不会针对周边工作(如 调度 调用)进行排序。 为了确保排序,必须在 ClearUnorderedAccessViewXxx 调用之前和/或之后根据需要发出屏障调用。 在某些驱动程序上,这些障碍可能没有必要。 但隐性障碍不是规格保证:所以它们不能被依赖。 这与 ClearDepthStencilViewClearRenderTargetView 形成鲜明对比,后者 (如 DrawXxx 命令) ,遵循命令列表排序。

语法

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_BACK 内存中创建 (类似于 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 将清除整个资源视图。

返回值

备注

运行时验证

对于浮点输入,运行时将非规范化值设置为 0 (,同时保留 NAN) 。

如果要将 UAV 清除为特定位模式,请考虑使用 ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint

验证失败导致调用 ID3D12GraphicsCommandList::Close 返回 E_INVALIDARG

调试层

如果输入值超出规范化范围,则调试层会发出错误。

如果视图引用的子资源未处于适当的状态,则调试层会发出错误。 对于 ClearUnorderedAccessViewFloat,状态必须为 D3D12_RESOURCE_STATE_UNORDERED_ACCESS

要求

要求
目标平台 Windows
标头 d3d12.h
Library D3d12.lib
DLL D3d12.dll

另请参阅

ID3D12GraphicsCommandList 接口