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,则运行时将使用 D3DPRESENT_PARAMETERShDeviceWindow 成员进行演示。

注意 如果使用 D3DSWAPEFFECT_FLIPEX 创建交换链,则必须将 NULL 传递给 hDestWindowOverride
 

[in] pDirtyRegion

类型: const RGNDATA*

指向 RGNDATA 结构的指针,该结构指示需要传输的最小像素集。 除非使用 D3DSWAPEFFECT_COPY 标志创建交换链,否则此值必须为 NULL。 有关交换链的详细信息,请参阅 将 Surface 翻转 (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,则对此 Present 调用强制实施D3DPRESENT_INTERVAL_IMMEDIATE。 仅当使用 D3DSWAPEFFECT_FLIPEX 时,才能指定此标志。 对于窗口模式和全屏模式,此行为是相同的。
  • 如果 dwFlags = D3DPRESENT_LINEAR_CONTENT,则对窗口交换链执行从线性空间到 sRGB 的伽马校正。 仅当驱动程序公开 D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (看到 Gamma (Direct3D 9) ) 时,此标志才会生效。

返回值

类型: HRESULT

可能的返回值包括:S_OK、D3DERR_DEVICELOST、D3DERR_DEVICEHUNG、D3DERR_DEVICEREMOVED或D3DERR_OUTOFVIDEOMEMORY (请参阅 D3DERR) 。 有关 丢失、 挂起和已删除的设备的详细信息,请参阅丢失的设备行为更改。

Direct3D 9 和 Direct3D 9Ex 之间的差异:

D3DSWAPEFFECT_FLIPEX 仅适用于在 Windows 7 上运行的 Direct3D9Ex (或更多当前操作系统) 。

注解

IDirect3DDevice9::P resent 方法类似,PresentEx 添加 dwflags 参数。

使用 D3DSWAPEFFECT_FLIPEX 标志创建交换链时, 必须将 pSourceRectpDestRectpDirtyRegion 值设置为 NULL

要求

要求
目标平台 Windows
标头 d3d9.h
Library D3D9.lib

另请参阅

IDirect3DDevice9Ex