Метод IDirect3DSwapChain9::P resent (d3d9helper.h)

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

Синтаксис

HRESULT Present(
  [in] const RECT    *pSourceRect,
  [in] const RECT    *pDestRect,
  [in] HWND          hDestWindowOverride,
  [in] const RGNDATA *pDirtyRegion,
  [in] DWORD         dwFlags
);

Параметры

[in] pSourceRect

Тип: const RECT*

Указатель на исходный прямоугольник (см. раздел RECT). Используйте ЗНАЧЕНИЕ NULL для представления всей поверхности. Это значение должно иметь значение NULL , если только цепочка буферов не была создана с помощью D3DSWAPEFFECT_COPY. Если прямоугольник выходит за пределы исходной поверхности, прямоугольник обрезается к исходной поверхности.

[in] pDestRect

Тип: const RECT*

Указатель на прямоугольник назначения в координатах клиента (см. раздел RECT). Это значение должно иметь значение NULL , если только цепочка буферов не была создана с помощью D3DSWAPEFFECT_COPY. Используйте ЗНАЧЕНИЕ NULL для заполнения всей клиентской области. Если прямоугольник превышает целевую клиентную область, прямоугольник обрезается к целевой клиентской области.

[in] hDestWindowOverride

Тип: HWND

Целевое окно, клиентская область которого принимается в качестве целевого объекта для этой презентации. Если это значение равно NULL, среда выполнения использует элемент hDeviceWindowD3DPRESENT_PARAMETERS для презентации.

[in] pDirtyRegion

Тип: const RGNDATA*

Это значение должно иметь значение NULL , если только цепочка буферов не была создана с помощью D3DSWAPEFFECT_COPY. См . статью Flipping Surfaces (Direct3D 9)).

Если это значение не равно NULL, автономная область выражается в координатах обратного буфера. Прямоугольники в области — это минимальный набор пикселей, которые необходимо обновить. Этот метод учитывает эти прямоугольники при оптимизации представления путем копирования только пикселей в области или некоторых подходящих развернутых наборов прямоугольников. Это помогает только для оптимизации, и приложение не должно полагаться на точно копируемый регион. Реализация может выбрать копирование всего исходного прямоугольника.

[in] dwFlags

Тип: DWORD

Позволяет приложению запрашивать возврат метода немедленно, когда драйвер сообщает, что он не может запланировать презентацию. Допустимые значения: 0 или любое сочетание D3DPRESENT_DONOTWAIT или D3DPRESENT_LINEAR_CONTENT.

  • Если dwFlags = 0, этот метод ведет себя так же, как и до Direct3D 9. Презентация будет вращаться до тех пор, пока оборудование не станет свободным, без возврата ошибки.
  • Если dwFlags = D3DPRESENT_DONOTWAIT, а оборудование занято обработкой или ожиданием интервала вертикальной синхронизации, метод вернет D3DERR_WASSTILLDRAWING.
  • Если dwFlags = D3DPRESENT_LINEAR_CONTENT, гамма-коррекция выполняется из линейного пространства в sRGB для оконных цепочек буферов. Этот флаг вступит в силу, только если драйвер предоставляет D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (см. раздел Гамма (Direct3D 9)). Приложения должны указывать этот флаг, если формат backbuffer является 16-разрядным форматом с плавающей запятой, чтобы соответствовать окну режиму полноэкранного гамма-поведения.

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

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет D3D_OK. Если метод завершается ошибкой, возвращаемое значение может быть одним из следующих: D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY.

Комментарии

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

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

При вызове между парами BeginScene и EndScene не произойдет сбой, если целевой объект отрисовки не является текущим целевым объектом отрисовки (например, задний буфер, полученный при создании дополнительной цепочки буферов). Это новое поведение для Direct3D 9.

Требования

Требование Значение
Целевая платформа Windows
Header d3d9helper.h (включая D3D9.h)
Библиотека D3D9.lib

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

IDirect3DSwapChain9

Сброс