функция обратного вызова 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.

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

Никакой

Замечания

ClearView работает только на представлениях, предназначенных для отрисовки (RTVs), неупорядоченных представлениях (UAV) или любом представлении видео Текстура2D поверхности. Пустые прямоугольники в массиве pRect являются no-op. Прямоугольник пуст, если верхнее значение равно нижнему значению или левому значению равно правому значению.

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

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

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

Драйвер должен преобразовывать и зажимать значения цветов в целевом формате в соответствии с правилами преобразования 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 до нуля).

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

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

Для представлений видео с форматами YUV или YCbBr Clear View не преобразует значения цветов. В ситуациях, когда имя формата не указывает _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 (include D3d10umddi.h)

См. также

CreateVideoDecoderOutputView

D3D11DDI_HANDLETYPE

RECT