Поделиться через


Метод ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat (d3d12.h)

Задает для всех элементов в представлении неупорядоченного доступа (UAV) указанные значения с плавающей точкой.

Важно!

Эта операция ведет себя как вычислительная операция, так как она не упорядочена относительно окружающих операций, таких как вызовы dispatch . Чтобы обеспечить упорядочение, вызовы барьеров должны выполняться до и (или) после вызова ClearUnorderedAccessViewXxx по мере необходимости. Это может показаться на некоторых водителей, что такие барьеры не являются обязательными. Но неявные барьеры не являются гарантией спецификации; так что на них нельзя полагаться. Это отличается от ClearDepthStencilView и ClearRenderTargetView , которые (как и команды 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

D3D12_GPU_DESCRIPTOR_HANDLE, ссылающийся на инициализированный дескриптор для удаленного представления неупорядоченного доступа. Этот дескриптор должен находиться в куче дескрипторов, видимой шейдером, которая должна быть задана в списке команд с помощью SetDescriptorHeaps.

ViewCPUHandle

Тип: [in] D3D12_CPU_DESCRIPTOR_HANDLE

D3D12_CPU_DESCRIPTOR_HANDLE в куче видимых дескрипторов, не являющихся шейдерами, которая ссылается на инициализированный дескриптор для очищенного представления неупорядоченного доступа.

Важно!

Этот дескриптор не должен находиться в куче дескрипторов, видимой для шейдера. Это позволяет драйверам, реализующим очистку в виде аппаратной операции с фиксированной функцией (а не в виде диспетчера), эффективно считывать данные из дескриптора, так как видимые шейдером кучи могут создаваться в памяти WRITE_BACK (аналогично D3D12_HEAP_TYPE_UPLOAD типам кучи), а операции чтения ЦП из этого типа памяти выполняются слишком медленно.

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

Remarks

Проверка среды выполнения

Для входных данных с плавающей запятой среда выполнения присваивает денормализованным значениям значение 0 (с сохранением nan).

Если вы хотите очистить UAV до определенного битового шаблона, рассмотрите возможность использования ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint.

Сбой проверки приводит к вызову ID3D12GraphicsCommandList::Close , возвращающего E_INVALIDARG.

Уровень отладки

Уровень отладки выдает ошибки, если входные значения находятся за пределами нормализованного диапазона.

Уровень отладки выдает ошибку, если подресурсы, на которые ссылается представление, не в соответствующем состоянии. Для ClearUnorderedAccessViewFloat состояние должно быть D3D12_RESOURCE_STATE_UNORDERED_ACCESS.

Требования

Требование Значение
Целевая платформа Windows
Header d3d12.h
Библиотека D3d12.lib
DLL D3d12.dll

См. также раздел

Интерфейс ID3D12GraphicsCommandList