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


Метод IDirect3DDevice9Ex::P resentEx (d3d9.h)

Замените следующий буфер цепочки буферов передним буфером.

Синтаксис

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

Параметры

[in] pSourceRect

Тип: const RECT*

Указатель на структуру RECT , указывающую область на исходной поверхности для копирования в координатах клиента окна. Применяется только при создании цепочки буферов с флагом D3DSWAPEFFECT_COPY . Если значение РАВНО NULL, отображается вся исходная поверхность. Если прямоугольник выходит за пределы исходной поверхности, он обрезается к исходной поверхности.

[in] pDestRect

Тип: const RECT*

Указатель на структуру RECT , указывающую целевую область на целевой поверхности в координатах клиента окна. Применяется только при создании цепочки буферов с флагом D3DSWAPEFFECT_COPY . Если значение РАВНО NULL, заполняется вся клиентская область. Если прямоугольник превышает целевую клиентную область, он обрезается в целевую клиентную область.

[in] hDestWindowOverride

Тип: HWND

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

Примечание При создании цепочки буферов с D3DSWAPEFFECT_FLIPEX необходимо передать значение NULLв hDestWindowOverride.
 

[in] pDirtyRegion

Тип: const RGNDATA*

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

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

[in] dwFlags

Тип: DWORD

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

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

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

Тип: HRESULT

Возможные возвращаемые значения: S_OK, D3DERR_DEVICELOST, D3DERR_DEVICEHUNG, D3DERR_DEVICEREMOVED или D3DERR_OUTOFVIDEOMEMORY (см. раздел D3DERR). Дополнительные сведения об утерянных, зависавших и удаленных устройствах см. в статье Изменения поведения потерянных устройств.

Различия между Direct3D 9 и Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX доступна только в Direct3D9Ex, работающей в Windows 7 (или более текущей операционной системе).

Комментарии

Аналогично методу IDirect3DDevice9::P resent , PresentEx добавляет параметр dwflags.

При создании цепочки буферов с флагом D3DSWAPEFFECT_FLIPEX значения pSourceRect, pDestRect и pDirtyRegion должны иметь значение NULL.

Требования

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

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

IDirect3DDevice9Ex