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

Функция SetViewports задает окна просмотра.

Синтаксис

PFND3D10DDI_SETVIEWPORTS Pfnd3d10ddiSetviewports;

void Pfnd3d10ddiSetviewports(
       D3D10DDI_HDEVICE unnamedParam1,
  [in] UINT NumViewports,
  [in] UINT ClearViewports,
       const D3D10_DDI_VIEWPORT *unnamedParam4
)
{...}

Параметры

unnamedParam1

hDevice [in]

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

[in] NumViewports

Общее количество окна просмотра, указанное параметром pViewports .

[in] ClearViewports

Число окне просмотра после числа окне просмотра, заданное NumViewports для присвоения значения NULL. Это число представляет разницу между предыдущим количеством пространств просмотра (то есть, когда среда выполнения Microsoft Direct3D ранее называлась SetViewports) и новым числом пространств просмотра.

Обратите внимание, что число, указанное ClearViewports , является лишь помощником по оптимизации, так как драйвер отображения пользовательского режима может вычислить это число.

unnamedParam4

pViewports [in]

Массив D3D10_DDI_VIEWPORT структур для заданных параметров просмотра.

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

None

Remarks

Драйвер может использовать функцию обратного вызова pfnSetErrorCb , чтобы задать код ошибки.

Окна просмотра указывают постклип преобразования для выходных ресурсов целевого объекта отрисовки и трафарета глубины. Все окна просмотра, которые не определены в вызове SetViewports , имеют значение NULL. Окно просмотра NULL определяется следующим образом.

struct D3D10_DDI_VIEWPORT {
  FLOAT  TopLeftX = NaN;
  FLOAT  TopLeftY = NaN;
  FLOAT  Width = NaN;
  FLOAT  Height = NaN;
  FLOAT  MinDepth = NaN;
  FLOAT  MaxDepth = NaN;
} D3D10_DDI_VIEWPORT;</pre>

Это определение подразумевает, что окно просмотра отключено.

Драйвер отображения пользовательского режима должен задать все окна просмотра атомарно как одну операцию.

Хотя параметр NumViewports указывает количество окна просмотра в массиве, указанное параметром pViewports , некоторые значения в массиве могут иметь значение NULL.

Диапазон портов просмотра между числом, которое указывает NumViewports , и максимальным числом разрешенных портов просмотра должен содержать все значения NULL или несвязанные значения. Число, указанное параметром ClearViewports , сообщает драйверу о том, сколько портов просмотра драйвер должен очистить для текущей атомарной операции.

Если предыдущий вызов SetViewports передавал значение 2 в параметре NumViewports , а текущий вызов SetViewports передает значение 4 в NumViewports, текущий вызов SetViewports также передает значение 0 в параметре ClearViewports . Если следующий последовательный вызов SetViewports передает значение 1 в NumViewports, последующий вызов также передает значение 3 (4–1) в ClearViewports.

При запросе значения clear viewports во время операций запроса в пользовательском режиме значение представляет собой разницу между максимальным числом портов просмотра и значением окна просмотра.

SetViewports гарантирует, что окна просмотра являются допустимыми. То есть SetViewports гарантирует, что размеры окне просмотра находятся в пределах диапазона (D3D10_VIEWPORT_BOUNDS_MIN, D3D10_VIEWPORT_BOUNDS_MAX, D3D10_MIN_DEPTH и D3D10_MAX_DEPTH). SetViewports также гарантирует, что координаты не имеют значения NaN, и сбрасывает денормализованные значения с плавающей точкой до нуля.

Драйвер не должен столкнуться с какой-либо ошибкой, за исключением D3DDDIERR_DEVICEREMOVED. Таким образом, если драйвер передает любую ошибку, за исключением D3DDDIERR_DEVICEREMOVED, в вызове функции pfnSetErrorCb , среда выполнения Microsoft Direct3D определит, что ошибка является критической. Даже если устройство было удалено, драйвер не должен возвращать D3DDDIERR_DEVICEREMOVED; Однако если удаление устройства мешало работе SetViewports (что обычно не должно происходить), драйвер может вернуть D3DDDIERR_DEVICEREMOVED.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

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

D3D10DDI_DEVICEFUNCS

D3D10_DDI_VIEWPORT

pfnSetErrorCb