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


функция обратного вызова PFND3D11_1DDI_CLEARVIEW (d3d10umddi.h)

PFND3D11_1DDI_CLEARVIEW присваивает всем элементам в представлении ресурсов одно значение. Представление ресурсов — это дескриптор поверхности, указывающий формат и, возможно, подмножество ресурса.

Синтаксис

PFND3D11_1DDI_CLEARVIEW Pfnd3d111DdiClearview;

void Pfnd3d111DdiClearview(
  D3D10DDI_HDEVICE hDevice,
  D3D11DDI_HANDLETYPE viewType,
  VOID *hView,
  const FLOAT Color[4],
  const D3D10_DDI_RECT *pRect,
  UINT NumRects
)
{...}

Параметры

hDevice

Дескриптор устройства отображения (графический контекст).

viewType

Значение типа D3D11DDI_HANDLETYPE , определяющее тип дескриптора представления, поддерживающего эту операцию очистки. Возможные типы:

  • D3D10DDI_HT_RENDERTARGETVIEW
  • D3D11DDI_HT_UNORDEREDACCESSVIEW
  • Любой тип D3D11_1DDI_HT_VIDEOXXX

hView

Указатель на представление ресурсов для очистки.

Color[4]

pRect

Массив структур RECT для прямоугольников в представлении ресурсов для очистки. Если значение РАВНО NULL, ClearView очищает всю поверхность.

NumRects

Количество прямоугольников в массиве, указанное параметром pRect .

Возвращаемое значение

None

Remarks

ClearView работает только с целевыми представлениями отрисовки (RTV), представлениями без упорядоченного доступа (UAV) или любым видеообзором поверхности Texture2D . Пустые прямоугольники в массиве pRect являются пустыми. Прямоугольник пуст, если верхнее значение равно нижнему или левое значение равно правому.

ClearView не поддерживает трехмерные текстуры.

ClearView применяет одно и то же значение цвета ко всем срезам массива в представлении; все прямоугольники в массиве pRect соответствуют каждому срезу массива. Массив прямоугольников pRect — это набор областей для очистки на одной поверхности. Если представление является массивом, ClearView очищает все прямоугольники на каждом срезе массива по отдельности.

Когда драйвер пользовательского режима применяет прямоугольники к буферам, он должен установить для верхнего значения значение 0, а нижнее значение — 1, а также задать левое и правое значение для описания экстента в буфере. Если верхнее значение равно нижнему или левое значение равно правому значению, прямоугольник пуст и достигается отсутствие операции.

Драйвер должен преобразовать и зажать значения цвета в целевой формат в соответствии с правилами преобразования Direct3D. Например, если формат представления DXGI_FORMAT_R8G8B8A8_UNORM, зафиксируйте входные данные с 0,0f до 1,0f (+INF -> 1,0f (0XFF)/NaN -> 0,0f).

Если формат является целым числом, например DXGI_FORMAT_R8G8B8A8_UINT, примите входные данные как целочисленные числа с плавающей точкой. Таким образом, 235.0f сопоставляется с 235 (округляется до нуля, значения вне диапазона/INF заклинываются в целевом диапазоне, а NaN — к нулю).

Ниже приведены сопоставления цветов:

  • Color[0]: R (или Y для видео)
  • Color[1]: G (или U/Cb для видео)
  • Color[2]: B (или V/Cr для видео)
  • Цвет[3]: A

Для представлений видео в форматах YUV или YCbBr ClearView не преобразует значения цвета. В ситуациях, когда имя формата не указывает на _UNORM, _UINT и т. д., ClearView предполагает _UINT. Таким образом, 235.0f сопоставляется с 235 (округляется до нуля, значения вне диапазона/INF заклинываются в целевом диапазоне, а NaN — к нулю).

Обратите внимание, что для представлений Microsoft Direct3D для подвыбранных поверхностей видеоданных RTV или UAV размеры представления зависят от количества пикселей в формате представления, а не на базовом логическом числе пикселей видео. Например, предположим, что поверхность имеет формат YUY2 с размером 1920 на 1080 пикселей, а RTV использует формат DXGI_FORMAT_R8G8B8A8_UINT. В представлении Direct3D отображается значение 1920/2 = 960 R8G8B8A8 пикселей в горизонтальном направлении. Таким образом, все прямоугольники, передаваемые в ClearView , интерпретируются в этом пространстве. Кроме того, четкое значение принимается для всех 4 компонентов , R8G8B8A8, как будто оно ничем не отличается от истинной поверхности R8G8B8A8 . В этом случае R, G, B и A не означают стандартные значения цвета RGBA. Вместо этого они определяют расположение в памяти, и вызывающий объект отвечает за понимание того, что означает размещение данных в этом расположении в контексте видеообращения.

Однако представления видео на поверхности видео (например, представления, предоставляемые для функции CreateVideoDecoderOutputView и других функций XxxInputView и XxxOutputView ) отображаются во всех логических измерениях. В этом случае горизонтальное измерение имеет ширину 1920 пикселей, поэтому структуры RECT , переданные в ClearView , учитывают это. Такие элементы RECTдолжны быть выровнены таким образом, чтобы они не перекрывали блоки с подвыбранными, в противном случае среда выполнения отключит вызов этой функции. Для представлений видео цвета YUV должны быть соответствующим образом реплицированы для подвыбранных форматов. Например, yuv в вызове ClearView имеет значение Y дублируется для каждого блока в области YUY2.

Структура D3D10_DDI_RECT определяется как структура RECT .

typedef RECT D3D10_DDI_RECT;

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Целевая платформа Персональный компьютер
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

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

CreateVideoDecoderOutputView

D3D11DDI_HANDLETYPE

RECT