会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
游戏开发 > 程序设计 > 优化调试
如何调试全屏模式的DirectX程序
发表日期:2006-08-28 21:37:25作者: 出处:  

只要调试过full screen模式DirectX程序的人都会对它心存恐惧,因为一旦运行到你预先设置的断点或是碰到异常错误,在大多数情况下,都会让你的电脑死得很难看,除了重启,你没有别的办法。
Imagic也是full screen模式的长期受害者,反复的重启让我的电脑也深受其害,以至于一碰到full screen模式的程序都会先弹一个对话框“Are you sure?”(just a joke)。

后来,Imagic终于摸索出一个土方法来解决这个问题,效果很好,终于可以使我坦然面对full screen程序。不敢独享,特放上来供大家参考。

原理:将full screen模式程序改成window模式(借用了孙子兵法中的偷梁换柱法,呵呵)

方法:修改程序中的几个重要地方,如SetCooperativeLevel,SetDisplayMode,CreateSurface,Flip等,使程序能够以窗口模式运行。一个很好的方法是用一个预编译的宏定义(如FULLSCREEN_DEBUG)来控制编译器,使程序能够很方便的在全屏模式与窗口模式下切换,下为一例:

#ifdef FULLSCREEN_DEBUG
    lpDD->SetCooperativeLevel( hwnd, DDSCL_NORMAL);
#else
    lpDD->SetCooperativeLevel( hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
    lpDD->SetDisplayMode( 640, 480, 16);
#endif

 

一切完成并且确定没有错误之后,那么,在需要调试的时候,只需要:

1、#define FULLSCREEN_DEBUG

2、将显示器的分辨率设置成程序运行所需要的环境

你就可以在窗口模式下很方便的调试你的DirectX full screen模式程序了(但是,这个方法只是针对DDraw程序,对于D3D程序没有测试过)。

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.0026