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


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

Функция Clear выполняет аппаратное очистку целевого объекта отрисовки, буфера глубины или буфера наборов элементов.

Синтаксис

PFND3DDDI_CLEAR Pfnd3dddiClear;

HRESULT Pfnd3dddiClear(
  [in] HANDLE hDevice,
       const D3DDDIARG_CLEAR *unnamedParam2,
       UINT unnamedParam3,
       const RECT *unnamedParam4
)
{...}

Параметры

[in] hDevice

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

unnamedParam2

pData [in]

Указатель на структуру D3DDDIARG_CLEAR, описывающую параметры аппаратной операции очистки.

unnamedParam3

NumRect [in]

Число прямоугольников в массиве в pRect очистки. Если число прямоугольников равно нулю, Clear должен очистить весь целевой объект отрисовки, буфер глубины и буфер элементов. В этой ситуации содержимое массива в pRect не определено, и драйвер не должен пытаться считывать их.

unnamedParam4

pRect [in]

Массив структуры RECT, указывающие прямоугольные области буфера, которые драйвер должен очистить.

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

Clear возвращает S_OK или соответствующий результат ошибки, если операция очистки с помощью оборудования не выполнена.

Замечания

Как драйвер выполняет операцию очистки, зависит от количества прямоугольных областей, указанных в параметре NumRect, а также от значений, заданных в элементе D3DDDIARG_CLEARфлагов . Значения D3DCLEAR_TARGET, D3DCLEAR_STENCIL и D3DCLEAR_ZBUFFER (определенные в D3d8types.h) указывают тип буфера для очистки. Значение D3DCLEAR_COMPUTERECTS (определенное в D3dhal.h) указывает, как очистить буфер. Следующие параметры указывают, как драйвер должен очистить указанный тип буфера:

  • Если NumRect имеет значение 0 (NumRect== 0) и D3DCLEAR_COMPUTERECTS не заданы в Флаги, драйвер очищает 0 пикселей (то есть no-op).
  • Если NumRect задано значение 0 и D3DCLEAR_COMPUTERECTS задано в Flags, драйвер очищает весь порт просмотра (не всю поверхность).
  • Если NumRect задано значение больше 0 (NumRect!= 0) и D3DCLEAR_COMPUTERECTS задано в Флаги, драйвер обрезает прямоугольные области, pRect указывает для текущего окна просмотра.
Тестирование scissor также влияет на то, как драйвер выполняет четкую операцию. Приложение задает состояние D3DRS_SCISSORTESTENABLE отрисовки в вызове метода IDirect3Device9::SetRenderState для включения тестирования ножниц. Дополнительные сведения о тестировании ножницы см. в разделе Scissor Test. Если задано состояние D3DRS_SCISSORTESTENABLE отрисовки и установлен флаг D3DCLEAR_COMPUTERECTS, драйвер должен обрезать прямоугольные области, pRect указывает прямоугольную область ножницы.

Если NumRect задано значение больше 0 (NumRect> 0) и D3DCLEAR_COMPUTERECTS задано в Флаги, драйвер обрезает указанные прямоугольные области в текущем представлении и прямоугольник ножницы, если приложение ранее задало D3DRS_SCISSORTESTENABLE. Если NumRect> 0 и D3DCLEAR_COMPUTERECTS не задано, драйвер определяет, что среда выполнения Direct3D уже обрезала указанные прямоугольные области с текущим окном просмотра и прямоугольник ножницы, если приложение ранее задало D3DRS_SCISSORTESTENABLE.

Требования

Требование Ценность
целевая платформа Настольный
заголовка d3dumddi.h (include D3dumddi.h)

См. также

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT