функция обратного вызова 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 для очистки. Если число прямоугольников равно нулю, очистка должна очистить весь целевой объект отрисовки, буфер глубины и буфер трафарета. В этом случае содержимое массива в pRect не определено, и драйвер не должен пытаться считывать их.

unnamedParam4

pRect [in]

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

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

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

Комментарии

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

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

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

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3dumddi.h)

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

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT