IDXGISwapChain1::P resent1 方法 (dxgi1_2.h)
在显示屏幕上显示一个框架。
语法
HRESULT Present1(
UINT SyncInterval,
UINT PresentFlags,
[in] const DXGI_PRESENT_PARAMETERS *pPresentParameters
);
参数
SyncInterval
一个整数,指定如何将框架的呈现与垂直空白同步。
对于位块传输 (bitblt) 模型 (DXGI_SWAP_EFFECT_DISCARD 或 DXGI_SWAP_EFFECT_SEQUENTIAL) ,值为:
- 0 - 演示文稿立即发生,没有同步。
- 1 到 4 - 同步 n个垂直空白之后的演示文稿。
- 0 - 取消之前显示的帧上的剩余时间,如果较新的帧排队,则放弃此帧。
- 1 到 4 - 同步至少 n 个 垂直空白的演示文稿。
如果更新区域跨多个输出 (每个输出由 IDXGIOutput1) 表示, 则 Present1 将执行与包含目标窗口工作区最大子矩形的输出的同步。
PresentFlags
包含交换链表示选项的整数值。 这些选项由 DXGI_PRESENT 常量定义。
[in] pPresentParameters
指向 DXGI_PRESENT_PARAMETERS 结构的指针,该结构描述要呈现的帧的更新矩形和滚动信息。
返回值
可能的返回值包括:S_OK、 DXGI_ERROR_DEVICE_REMOVED 、 DXGI_STATUS_OCCLUDED、 DXGI_ERROR_INVALID_CALL或E_OUTOFMEMORY。
注解
应用可以使用 Present1 通过指定滚动和脏矩形来优化演示文稿。 当运行时具有有关这些矩形的信息时,运行时可以在演示期间更高效地执行必要的比特,并将此元数据传递到桌面窗口管理器 (DWM) 。 然后,DWM 可以使用元数据来优化呈现,并将元数据传递给间接显示器和终端服务器,以优化通过线路的流量。 应用必须将其修改限制为仅传递到 Present1 的脏区域,并修改整个脏区域,以避免公开未定义的资源内容。
对于使用设置DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL值创建的翻转演示文稿模型交换链,成功的演示文稿会导致从图形管道取消绑定后退缓冲区 0,但在 Flags 参数中传递DXGI_PRESENT_DO_NOT_SEQUENCE标志时除外。
有关向屏幕呈现内容时数据值如何变化的信息,请参阅 转换颜色空间的数据。
有关在应用使用多个线程时调用 Present1 的信息,请参阅 多线程注意事项 和 多线程和 DXGI。
翻转演示文稿模型队列
假设在调用 Present1 之前,以下具有同步间隔值的帧已从最早 (的 A) 排队到最新的 (E) 。A:3、B:0、C:0、D:1、E:0
调用 Present1 时,运行时仅显示 1 个垂直空白间隔的帧 A。 运行时会提前终止帧 A,因为帧 B 中的同步间隔为 0。然后,运行时显示 1 个垂直空白间隔的帧 D,然后显示 E 帧,直到提交新演示文稿。 运行时放弃帧 B 和 C。
可变刷新率显示
启用撕裂是可变刷新率显示器的要求。 CheckFeatureSupport 方法可用于确定此功能是否可用,设置所需标志时,请参阅DXGI_PRESENT_ALLOW_TEARING和DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING的说明,以及 DXGI 1.5 改进的变量刷新率显示/Vsync off 部分。要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | dxgi1_2.h |
Library | Dxgi.lib |
另请参阅
Present