原文作者: 龙芯X 

现在游戏的种类与数量几乎呈爆炸式增长,游戏的制作水平也不断提高,那么玩家在欣赏游戏中那绚丽的效果时,有没有想过是什么造就了这一切呢?这就是DirectX!DirectX这个词对玩家来说似乎并不陌生,现在的很多游戏说明里都有“该游戏需要DirectX….以上版本支持”此类的话,甚至3DS Max启动时的加速模式选项中也有DirectX身影。那么DirectX究竟是什么呢?现在就让我们揭开它面上这层神秘的面纱,一探究竟吧。 

一、初识DirectX 
DirectX是Microsoft开发的基于Windows平台的一组API,它是为高速的实时动画渲染、交互式音乐和环境音效等高要求应用开发服务的。从Windows 95开始,人们就开始接触DirectX2.0,WindowsNT4.0里面则是DirectX3.0a,但是没有DirectX4的版本。到了Windows98,它就是Windows家族操作系统中不可缺少的核心成员之一。Windows 98中集成了DirectX5,Windows2000中集成了DirectX 6,Windows Me中集成了DirectX 7,而Windows XP天生就带了DirectX 8.1。 

微软开发了DirectX标准平台,并且根据硬件制造厂商和游戏厂商合作共同更新升级DirectX的标准。硬件制造商按照此标准研发制造更好的产品,游戏开发者根据这套标准开发游戏。也就是说,无论硬件是否支持某种特效,只要DirectX标准中有,游戏开发者就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出结果,用户就可以欣赏到此效果。这就是“硬件设备无关性”,是DirectX真正意义所在。 

通常,Windows对硬件访问的管制非常严格,用通常的办法不易访问,但DirectX通过“硬件抽象层(HAL)”给予了开发人员直接访问硬件的能力,HAL不仅解决了硬件及兼容性问题,而且开发人员可以利用它直接访问计算机的某些硬件设备,例如显示设备的直接显存控制和渲染,键盘、鼠标和游戏杆的控制的直接访问控制,音频设备的直接音频混合与输出能力等等,因此开发人员可以充分利用硬件加速将程序的性能优化到一个新的高度,如果目标机器不支持相应的硬件加速,DirectX还可以仿真加速器以提供强大的多媒体环境。DirectX家族包含的成员有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound和DirectShow。 

二、DirectX全家福 

通过上面的介绍,相信读者对DirectX已经有一个大概的了解。下面就让我们逐一认识它们吧。 

1、Direct3D、DirectDraw和DirectGraphics 
DirectDraw是DirectX家族中的元老,它为高速的2D渲染提供了良好的支持,由于其具备直接显存访问和位快传送的能力,使得2D图形的绘制速度相对GDI有了一个质的飞跃,其渲染速度甚至有上百倍的差距。在现在回忆当初玩“红色警戒”和“Diablo”的时候,大家可不要忘了DirectDraw的功劳。 

DirectDraw在DirectX3.0时就已经接近极致,但是随着PC图形技术的飞速发展,人们逐渐不再满足于2D的图形效果,而通过2D技术实现伪3D模拟又非常损失效率,这种需求直接导致了Direct3D的诞生,早期的Direct3D技术不甚完善,相对于2D技术还有一定的差距,直到图形加速卡支持硬件3D特效后,Direct3D才逐渐步入正轨,慢慢显示出它的性能优势来。下面让我们来回顾一下历史,看看 

Direct3D的“成长过程”: 
DirectX6中的Direct3D添加了如下新特性: 
* 几何形体的灵活顶点格式定义 
* 几何形体的顶点缓冲存储 
* 支持多纹理渲染 
* 自动纹理管理 
* 可选深度缓冲(使用Z Buffer或W Buffer) 
* 通过凹凸环境贴图(BUMPENVMAP)为反光面和水波特效提供逐像素的渲染和贴图能力 

DirectX7中的Direct3D添加了以下新特性: 
* 硬件坐标转换和灯光(T&L)支持 
* 立方体表面的环境贴图 
* 几何渲染 
* 改进的纹理渲染 
* 自动纹理坐标生成、纹理转换、投影纹理和任意面裁剪 
* D3DX实用库 
* 支持Intel MMX架构、Intel单指令多数据流(SIMD)、SSE?和 AMD? 3DNow?架构。