关于XNA

在这里大概讲述一下什么是XNA,让大家对它有个初步的了解。好了,废话不多说,先来看看吧。
让我们先回来DOS时代。那个时候写一些游戏、图形演示、和类似的东西,程序员必须写一些底层和低级的代码来直接与显卡、声卡和输入设备打交道。用喜剧明星宋丹丹同志的话讲,“那是‘相当’的枯燥。”而且不同的硬件厂商的生产出的产品,BIOS中断、IO端口和内存条都不一样,所以写出来的程序在你的机器上能跑不一定在别人的机器上也能跑。要想写出在所有机器上都能正常运行的程序,得为每个厂商都写一个程序,累死不偿命。
在这之后,Microsoft发布了Win95操作系统。许多程序员开始怀疑Windows下编写游戏的的可行性。这样的怀疑是对的,因为在Windows系统下,没有办法直接操作硬件,而速度又是游戏的生命。Windows的内存保护模式防止开发者直接操作低级的硬件中断。
在这样的情况下,Microsoft发布了一种叫DirectX的东东。刚开始的时候它叫Windows Game SDK,包括DirectDraw、DirectSound和DirectPlay。但是被取笑了之后很快就改名为DirectX。在Win95发布几个月后,DirectX1.0就发布了。
使用DirectX,开发者只用编写一次代码就可以在所有的机器上运行,而不管他们的硬件是否相同。硬件生产商和Microsoft积极配合,统一标准化了他们的硬件接口。硬件的驱动使DirectX能正确映射硬件的API,这样游戏开发者就不用再把心思花在解决游戏对于不同硬件的兼容问题,而只用关心游戏的细节。硬件厂商称这叫“硬件抽象层(HAL)”。同时也开发了一个“硬件模拟层(HEL)”,也便使用软件来模拟一些显卡不支持的硬件特性。使用HEL是非常慢的,但它也允许游戏在没有某种特性设备的机器上运行。不过从目前来看,不管是对开发者还是玩家,HEL基本上没什么用,谁能容忍一秒钟一帧的画面而不把电脑给砸了?要开发游戏和玩游戏还是弄块好的显卡吧。
两年后Microsoft发布了DirectX 3.0,它能在Windows NT 4下运行。之后介绍了Direct3D,它允许开发者创建三维程序。Direct 4没有发布,Direct 5在1997年发布,之后升级版本能在Win98下运行。
到2000年,发布了Direct 8,一些新的显卡特性被加了进来,那就是VertexShader(顶点着色器)和PixelShader(像素着色器)。它使得开发者可以把自己写的程序(GPU运行的)传到显卡上。通过汇编代码,游戏开发者可以操作游戏传给显卡的数据。这些汇编代码直接被显卡运行。
然而使用汇编代码来写显卡运行的程序也是相当麻烦的。之后Microsoft发布了Direct 9引入了高级着色语言HLSL(High Level Shader Language),它使用类c的风格开发着色程序,使显卡程序的开发不再是少数人的专利。
为了迎合微软自己的.net战略,之后又加入了Managed DirectX。它是使用.net技术对DirectX进行的一个.net 包装(Wrap)。终于,.net的技术人员也加入了游戏开发的大军中来。使用Managed DirectX开发游戏的一个好处就是使用比较方便,开发效率比较高。对于刚入门的朋友学习DirectX很有帮助,而不会一开始就被一堆COM接口打得晕头转向。Managed DirectX出到1.1之后就走到了它的终点,原本准备出2.0,后来就没有了消息,后来微软宣布放弃Managed DirectX,取而代之的就是XNA。可以认为XNA是Managed DirectX2.0,也可以认为不是,随你便。认为是是因为微软把开发Managed DirectX2.0的精力全都投在了XNA上,两者都使用.net技术来开发,而且使用上区别不大,从Managed Direct转到XNA非常容易;认为不是那是因为两者还是有本质的区别的。前面提到Managed DirectX是对DirectX的一个.net Wrap,实质是调用的DirectX的API,而XNA是基于Direct 9,但是没有像Managed DirectX那样直接调用DirectX的API。XNA从头到尾是一个新的工程,和Managed DirectX没有关系。
XNA允许我们做很多事情,让我们处理游戏的图形、声音、鼠标键盘输入和其他数据都非常简单。在2.0中还将加入网络部分。

posted on 2007-10-26 18:33  玩家小象  阅读(898)  评论(1编辑  收藏  举报

导航