IDirect3DDevice9Ex::P resentEx 方法 (d3d9.h)

将交换链的下一个缓冲区与前缓冲区交换。

Syntax

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。 有关交换链的详细信息,请参阅翻转图面(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)或S_PRESENT_OCCLUDED,或S_PRESENT_MODE_CHANGED(请参阅 S_PRESENT)。 有关丢失、挂起和已删除设备的详细信息,请参阅“丢失 的设备行为更改 ”。

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

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

注解

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

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

要求

Requirement 价值
目标平台 Windows操作系统
Header d3d9.h
Library D3D9.lib

另请参阅

IDirect3DDevice9Ex