IDirectDrawSurface7::Flip 方法 (ddraw.h)

使与DDSCAPS_BACKBUFFER图面关联的图面内存与前缓冲区图面相关联。

语法

HRESULT Flip(
  [in] LPDIRECTDRAWSURFACE7 unnamedParam1,
  [in] DWORD                unnamedParam2
);

参数

[in] unnamedParam1

指向翻转链中任意图 面的 IDirectDrawSurface7 接口的指针。 此参数的默认值为 NULL,在这种情况下,DirectDraw 按照它们相互附加的顺序循环访问缓冲区。 如果此参数不为 NULL,则 DirectDraw 将翻转到指定的图面,而不是翻转链中的下一个图面。 如果指定的图面不是翻转链的成员,则翻转失败。

[in] unnamedParam2

指定翻转选项的标志的组合。 定义了以下标志:

DDFLIP_DONOTWAIT

IDirectDrawSurface7 接口上,默认值为 DDFLIP_WAIT。 如果要替代默认值并使用加速器正忙 (的时间(如DDERR_WASSTILLDRAWING返回值) 所示),请使用 DDFLIP_DONOTWAIT。

DDFLIP_EVEN

仅在覆盖图面中显示视频时使用。 新图面包含来自视频信号的偶数场的数据。 此标志不能与 DDFLIP_ODD 标志一起使用。

DDFLIP_STEREO

DirectDraw 翻转并显示main立体声图面。 设置此标志后,将启用立体声自动翻转。 每次屏幕刷新期间,硬件都会在左右缓冲区之间自动翻转。

DDFLIP_INTERVAL2

DDFLIP_INTERVAL3

DDFLIP_INTERVAL4

DDFLIP_INTERVAL2、DDFLIP_INTERVAL3和DDFLIP_INTERVAL4标志指示每次翻转之间要等待的垂直回溯数。 默认值为 1。 DirectDraw 返回翻转所涉及的每个图面的DERR_WASSTILLDRAWING,直到发生指定的垂直回溯数。 如果设置了DDFLIP_INTERVAL2,则 DirectDraw 每隔一秒垂直同步翻转一次;如果DDFLIP_INTERVAL3,则每隔第三次同步一次;如果DDFLIP_INTERVAL4,则每隔四次同步一次。

仅当在为显示硬件返回的 DDCAPS 结构的 dwCaps2 成员中设置了 DDCAPS2_FLIPINTERVAL 位时,这些标志才有效。

DDFLIP_NOVSYNC

使 DirectDraw 尽可能接近下一个扫描行执行物理翻转。 涉及两个翻转图面的后续操作不会检查物理翻转是否已完成,也就是说,它们不会出于该原因返回DDERR_WASSTILLDRAWING (但可能出于其他原因) 。 这允许应用程序以高于监视器刷新率的频率执行翻转,但可能会引入可见的项目。

如果未在为显示硬件返回的 DDCAPS 结构的 dwCaps2 成员中设置DDCAPS2_FLIPNOVSYNC,则DDFLIP_NOVSYNC无效。

DDFLIP_ODD

仅在覆盖图面中显示视频时使用。 新图面包含来自视频信号的奇数字段的数据。 此标志不能与 DDFLIP_EVEN 标志一起使用。

DDFLIP_WAIT

通常,如果由于显示硬件的状态不合适而无法设置翻转,则会立即返回DDERR_WASSTILLDRAWING错误,并且不会发生翻转。 设置此标志会导致 Flip 在收到来自 HAL) 的硬件抽象层 (DDERR_WASSTILLDRAWING错误时继续尝试翻转。 翻转 操作在成功设置或返回其他错误(如DDERR_SURFACEBUSY)之前不会返回。

返回值

如果该方法成功,则返回值DD_OK。

如果失败,该方法可能会返回以下错误值之一:

  • DDERR_GENERIC
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NOFLIPHW
  • DDERR_NOTFLIPPABLE
  • DDERR_SURFACEBUSY
  • DDERR_SURFACELOST
  • DDERR_UNSUPPORTED
  • DDERR_WASSTILLDRAWING

注解

使用 IDirectDrawSurface7 时, Flip 的默认行为是等待加速器完成。 因此,在默认条件下, Flip 永远不会返回DDERR_WASSTILLDRAWING。 如果想要查看错误代码,而不是等到翻转操作成功,请使用 DDFLIP_DONOTWAIT 标志。

只能对具有DDSCAPS_FLIP和DDSCAPS_FRONTBUFFER功能的图面调用翻转。 以前与前缓冲区关联的显示内存与后台缓冲区相关联。

在极少数情况下使用 lpDDSurfaceTargetOverride 参数,其中后台缓冲区不是应成为前端缓冲区的缓冲区。 通常,此参数为 NULL。

翻转 始终与垂直空白同步。 如果图面已分配给视频端口,此方法将更新视频端口的可见覆盖图面和目标图面。

要求

要求
目标平台 Windows
标头 ddraw.h
Library Ddraw.lib
DLL Ddraw.dll

另请参阅

IDirectDrawSurface7