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