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


Метод IDirect3Device9Ex::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. Пока оборудование не будет свободно, не возвращая ошибку.
  • Если dwFlags = D3DPRESENT_DONOTFLIP драйвер отображения вызывается с передним буфером в качестве исходной и целевой поверхности. Драйвер отвечает путем планирования синхронизации кадров, но не изменяет отображаемую поверхность. Этот флаг доступен только в полноэкранном режиме или при использовании D3DSWAPEFFECT_FLIPEX в окне.
  • Если dwFlags = D3DPRESENT_DONOTWAIT, а оборудование занято обработкой или ожидает вертикального интервала синхронизации, метод возвращает D3DERR_WASSTILLDRAWING.
  • Если dwFlags = D3DPRESENT_FORCEIMMEDIATE, D3DPRESENT_INTERVAL_IMMEDIATE применяется к этому вызову Present. Этот флаг можно указать только при использовании 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) или S_PRESENT_OCCLUDED или S_PRESENT_MODE_CHANGED (см. S_PRESENT). Дополнительные сведения об потерянных, зависавших и удаленных устройствах см. в разделе "Изменения поведения потерянных устройств".

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

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

Замечания

Как и метод IDirect3DDevice9::P resent , PresentEx добавляет параметр dwflags.

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

Требования

Требование Ценность
целевая платформа Виндоус
Header d3d9.h
Library D3D9.lib

См. также

IDirect3Device9Ex