2D游戏编程笔记-2

来源:互联网 发布:js的tostring方法 编辑:程序博客网 时间:2024/05/21 10:05

本人同意他人对我的文章引用,但请在引用时注明出处,谢谢.作者:蒋志强

要进行DirectX的程序开发,必须要安装DirectX的SDK(Software Develop Kit),因为我们使用DirectDraw7,所以我们可以选择安装DirectX7,DirectX8或DirectX9.由于COM组件的规范规定,新的COM组件必须实现其对应老版本组件的所有接口,所以安装DirectX9是很明智的选择.但是DirectX9的SDK没有带DirectDraw的演示程序,DirectX8则带了DirectDraw的演示程序,通过阅读别人的程序是提高自己水平和自学的最重要最有效的方法,所以我选择安装DirectX8版本的SDK.

DirectX的SDK可以在微软的官方网站上找到下载,完整的DirectX SDK开发包有几百兆的大小,包括了以DLL文件存在的COM组件,LIB库文件,相应的C++头文件,说明文档,工具软件和演示程序,完整的SDK开发包非常有用.但如果你觉得太大,你可以只下载LIB库文件和相应的C++头文件,你可以在游戏开发资源网http://resource.gameres.com/找到下载,只有几兆的大小.

下图是安装向导,你要指定安装目录我选择C:/Program Files/DXSDK8作为安装目录.

 

然后在下一步你需要选择需要安装的内容,因为我们使用VC进行开发,所以可以取消安装VB的文档和VB演示程序选项,如下图所展示.



点击Next,你可以选择Debug或者Retail类型的DirectX运行环境.Debug类型会比Retail类型的运行环境慢,但它提供了在开发过程中更多的调试信息,而Retail类型则没有这些信息.为了方便我们在写程序时进行调试,我们应当选择Debug类型的运行环境.然后点击Next,安装程序则自动完成安装.



安装完成后,我们可以在开始菜单中找到DX8的选项,其中包括了帮助文档,辅助工具软件和VC的演示程序,如下图所展示.



我们使用VC来进行DirectX的编程,当然你也可以使用其它的开发工具(比如VB).我们现在可以使用的VC有多个版本,包括VC6,VC.NET2002,VC.NET2003或VC.NET2005,我们是进行DX编程,写非托管的程序,所以使用老的VC6和最新的VC.NET2005没有区别,但是VC6在效率和稳定性上经受了时间的考验,广受程序员的喜爱,出于可靠性的考虑我们使用VC6.VC6的安装我就不介绍了,一路点Next就OK,在VC6安装完成后,还需要进行几个设置.运行VC6,点击"工具"菜单->"选项",会弹出下面的"选项"对话框.



点中"目录"标签,然后将右上方的下拉选项选中"Include files",然后在下面"路径"列表中添加DX安装目录中的C++头文件include目录.设置Include files目录,是给VC指明在遇到"#include <d3d8.h>"这样的预编译指令时,在什么地方查找该文件.然后将右上方的下拉选项选中"Library files",然后在下面"路径"列表中添加DX安装目录中的导文件Lib目录.设置Library files目录,是因为在VC链接程序链接DirectX组件时,需要库文件的信息,设置该目录后,VC链接程序会到该目录下查找使用DirectX所需要的Lib库文件.

设置完Include目录和Lib目录后,就可以使用VC新建工程了,在工程如果要使用DirectDraw组件则需要进行最后一项设置.创建一个工程后,VC6的菜单栏会多一个"工程"菜单,选择该菜单中的"设置",会弹出以下的对话框窗口.



选择"连接"标签,在"对象/库模块"文本框中添加dxguid.lib ddraw.lib两个lib库文件,因为使用DirectDraw组件将使用这两个库文件,VC链接器将在前面设置的"Library files"的那些目录中查找这里指定的库文件.完成这里的设置以后,我们就真正完成了所有的环境设置了.

现在我们来写个DirectDraw的程序.首先,我们新建一个win32工程,产生一个Hello,world!的工程,然后按上面的方法设置所需要的dxguid.lib ddraw.lib库文件.然后在cpp文件中添加加以下两句:

#include <ddraw.h>

LPDIRECTDRAW7 p_Ddraw = NULL;

然后按下F7生成exe文件,生成成功证明环境设置正确.然后按F5运行程序,一个典型的Hello,world!的win32程序正常运行.其实加入以上两句后,就可以说它是一个DirectDraw程序了,因为程序中定义了一个DirectDraw接口的全局变量,尽管它的值现在为空,尽管没有产生DirectDraw对象,但谁又能否认它是一个DirectDraw程序呢?

OK,这次的内容到此结束.今天知道公司里许多同事被炒了,而且欠的工资也没有发,心里很是难受,不过明天也该轮到我了.哎,人生八九不如意.下次我们将真正的使用DirectDraw在程序里做点事情,ByeBye.



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gamer_gerald/archive/2006/08/14/1062681.aspx