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 |