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