Directx 使用引言...

时间:2008-05-14 09:20:08  类别:pocketpc游戏  作者:桂林电子科技大学07003501班

感谢

特别感谢Emi Smith和Karen Gill 能如此耐心的和我一起完成这本书,也感谢Joseph Hall对于本书的技术校订,他对代码所做的注解完整了我的书。

同样感谢PTR的教程给了我这样一个机会去阐述象DirectX 这么美妙的主题。

最后,最衷心的感谢 Albert James,我的良师益友,正是他教会了我去爱这个工作。

关于作者

那是Wendy Jones还在初中的时候,从她第一眼看到Apple II电脑起,她就沉醉于其中再也走不出来了。之后,她就把她的大部分时间花费在了学习 BASIC 和图形编程上面,并学着用语言将脑海中的图像呈现在纸张上。之后,她又研习了其他各种语言,Pascal ,C,Java,还有 C++.

在那之后,她已经远远不满足于在DOS系统下所得到的一切,开始转向了windows ,不久之后,又投奔了.COM。但是互联网公司的发展远远没有他们鼓吹的那么好,于是Wendy开始将她的热情投入到了游戏开发方面。

但是让她真正对此行业产生浓厚的兴趣的,是她在Atari Humongous Entertainment担任游戏开发工程师的经历。在那个时候,她兼任PC平台和控制台下的开发,那些工作给她带来了巨大的挑战。

目前,她正在从事着PocketPc以及手掌游戏机的开发工作。

如果你对这本书有着任何的建议或者疑问,可以给她发email :gadget2032@yahoo.com

序论

游戏开发无疑是计算机世界中最美妙的一项工作了。还有什么比创造一个完全虚拟的世界更令人感觉到刺激的?那里的一切都曾经仅仅是在你的梦里出现过。你可以给玩家们一个虚拟的社会让他们去扮演他们梦想中的角色,创造他们的新生活。

游戏产业正在飞速发展中,其相关的科技也在随之进步。仅仅是在几年以前,消费市场上还未曾出现支持3D的硬件设备。只有昂贵的SGI工作站可以有能力实时显示3D效果,OpenGl技术还在萌芽状态。随着PC设备的平民化 ,OpenGl也开始向公众展示了它的能力。

在Microsoft推出DirectX之前,Windows平台被认为是很不适合游戏的。DirectX的推出,以及微软的不断努力,终于使其超越了OpenGL,并取而代之,逐渐成为了Windows下进行图像处理的新标准。在今天,绝大部分的PC游戏都是基于DirectX技术的,这样,才能让玩家们感受最先进的技术,体会到最真实的游戏世界。

必备知识:

熟悉C++语言,以及少许的面向对象编程经验,会让你对本书所提供的例子有着更深层次的理解。虽然文中所出现的大部分数学概念都解释的很详细,但能有些基本的数学常识当然是最好的。如果你有在Visual Studio .Net 2003或者其他的Visual Studio平台工作的经验,那就更好了。在下一节,会告诉你如何开始的。

如何使用这本书

本书分为三个部分。第一部分简单的介绍了DirectX,告诉你如何去开始你的第一个DirectX 程序。第二部分从3D以及D3D的概念着手,告诉你去建造一个3D世界所需要的基本知识。最后一个部分将扩展你对于D3D的应用,告诉你如何使用DirectSound去处理游戏中的音效,以及使用DirectInput来进行人机交互。在最后一个实例中,我们将会把书中所提到的所有技术融合起来,告诉你如何去运用你所学到的知识。

如果你已经有了DirectX的经验,或者已经写过那么些个3D小程序,你可以跳过第一章,直接从第二章开始。对于那些刚刚准备投入游戏开发事业的人们 ――― 还是从头到尾的把这本书认真看一遍吧,它会告诉你DirectX可以做些什么的。

作者: 妖狐九尾 2005-7-5 15:41 回复此发言

妖狐九尾 2005-7-5 15:58 回复此发言

3回复:Direct9启蒙mava@2005.4.17

DirectX的构造模式

DirectX使windows下的游戏开发变的越来越简单,开发者可以从Microsoft得到大量的开发库。

这些年来,DirectX不断的升级以对更多的硬件提供更好的支持。Microsoft将DirectX设计为一种COM组件,以确保每个新版本的DirectX都能向下兼容,也就是说,那些在低版本下开发的游戏可以不经过任何修改就可以在新版本的DirectX正常运行。

组件对象模型

DirectX API是基于COM技术的。COM对象是一个接口集合,每个接口上都实现了各种方法并提供给开发者来使用。通常,COM对象的实体是以注册在系统中的dll的形式存在的。对于DirectX来说,它的注册过程已经在你安装它的时候完成了。对于COM组件来说,对方法的操作一定要通过接口来进行,这样的好处是你可以在COM组件中同时存在同一个接口的不同的版本,从而达到后向兼容。

也就是说,每个版本的DirectX都会添加新的DirectDraw接口,旧的接口依然保留,这样就不会破坏之前的代码的完整性。基于DirectX 7的游戏运行在Direct9环境下依然可以访问同样的接口。

COM技术的另外一个优点就是语言无关性。每个开发者都可以用他们所熟悉的语言来开发游戏,无论是C++ , Basic ,或是C#。

DirectX的结构

DirectX由两层构成,API层以及硬件抽象层(HAL),API对于硬件的操作都是通过HAL进行的。HAL对DirectX提供了一套标准的接口,使其可以通过硬件的驱动直接操作硬件。因为HAL需要对硬件的工作方式有着充分的了解,所以它一般是由硬件生产厂商来完成的。你永远都不需要直接对HAL做任何的操作,DirectX提供了函数可以让你间接的访问它。HAL层与硬件层以及DirectX的关系如图1.1所示。

游戏程序

Direct3D API

HAL

设备驱动接口

显卡

在早期的版本中,除了HAL以外,还有一个设备模仿层(HEL),它可以软件模仿3D硬件的效果。这样可以让高端的显卡和低端的显卡在DirectX API中实现同样的功能,虽然效果的优劣并不一样。因为HEL的任何效果都是软件运算所产生的,所以使用此技术的后果就是游戏的祯率远低于那些使用硬件加速的。

目前HEL技术已经基本被一些应用程序插件所替代。应用程序开发者会自己负责这部分以达到软显卡的效果。因为由于3D显卡的普及,基本上市面上所有的游戏都是采用3D硬件加速了。

//Direct3D 设备驱动工具(DDK)可以用来开发“软设备”以模拟硬件设备。

本章小节

你已经了解了DirectX的技术内幕以及它所能带来的优点。跟着下来,你将开始你的第一个DirectX 程序。


特别推荐

广而告之