在不需要呈现时等待事件

当不需要呈现到屏幕时,应用可以等待事件, (即,当它们被遮挡) 时。 当桌面窗口管理器 (DWM) 或应用被遮挡时,无需渲染,并且操作系统可以长时间处于低功耗状态。 这可以节省电量并延长电池使用时间。

在以下情况下,应用可以等待事件:

  • 所有监视器都已关闭。
  • 运行应用的会话已断开连接。
  • 应用在单个监视器配置上以全屏方式运行。
  • 应用在与活动桌面不同的桌面上运行,并且无权在活动桌面上呈现。

当应用能够再次呈现时,操作系统将触发 事件。 在驱动程序升级或超时检测和恢复 (TDR) 过程中不会清除该事件,但在新的适配器和监视器处于活动状态时会清除该事件。

如果希望应用收到有关遮挡状态更改的通知,应用必须注册这些更改。 应用可以通过向窗口发送消息或通过事件信号进行注册,以接收有关遮挡状态更改的通知。 为了注册以接收有关遮挡状态更改的窗口的通知消息,应用调用 IDXGIFactory2::RegisterOcclusionStatusWindow 方法。 为了注册以通过事件信号接收遮挡状态更改的通知,应用调用 IDXGIFactory2::RegisterOcclusionStatusEvent 方法。 这两种方法都返回指向键值的指针,应用可以使用该键值取消注册通知。 若要取消注册通知,应用会将此键值传递给 IDXGIFactory2::UnregisterOcclusionStatus 方法。

DXGI 1.2 改进