DirectX应用程序中Alt-Tab支持的最佳实践?

cha*_*aos 38 windows directx alt-tab task-switching

在编写DirectX应用程序时,显然需要支持用户暂停应用程序Alt- Tab以一种快速且无错误的方式.确保这一点的最佳做法是什么?需要解决的问题包括:

  1. 检测应用程序何时被退出选项以及何时返回的最佳方法.
  2. 用户alt-tabs时会丢失哪些DirectX资源,以及应对此问题的最佳方法.
  3. 应用程序体系结构中要执行的主要操作和要避免的事项,以支持alt-tab.
  4. 主要DirectX版本之间的任何显着差异,因为它们适用于上述.

有趣的技巧和陷阱也很好听.

jjx*_*tra 43

我将假设您使用C++来达到我的答案目的,但如果您能够负担得起C#,XNA(http://creators.xna.com/)是一个出色的游戏平台,可以为您处理所有这些问题.

1]

本文有助于窗口过程中的窗口事件检测窗口何时丢失或获得焦点,您可以在主窗口上处理:http://www.functionx.com/win32/Lesson05.htm.此外,请在此处查看WM_ACTIVATEAPP消息:http://msdn.microsoft.com/en-us/library/ms632614( VS.85).aspx

2]

3]

我会确保永远不会禁用Alt-Tab.当应用程序处于非活动状态时,您可能希望获得最小的CPU负载,因为用户可能是Alt-Tabbed,因为他们想要执行其他操作,因此您可以完全暂停应用程序,或减少每秒渲染的帧数.如果应用程序被最小化,您当然也不需要渲染任何东西.在考虑网络游戏之后,我最好的解决方案是你仍然应该减少每秒渲染的帧数以及处理的网络数据包的数量,甚至可能丢掉许多进入的数据包,直到重新激活游戏.

4]

老实说,如果你想将目标操作系统限制在Vista和更新版本,我会坚持使用DirectX 9.0c(或者DirectX 10),如果可能的话:)

最后,DirectX sdk有许多教程和示例:http://www.microsoft.com/downloads/details.aspx? FamilyID = 24a541d6-0486-4453-8641-1eee9e21b282&displaylang = en