如果说PC用户不会不认识Windows操作系统的话,那么游戏用户也不会不知道DirectX的大名。想必大家都还记得1996年时微软随红色警戒、FIFA96等经典游戏一起发行的DirectX 3.0吧,当时DirectX是以GameSDK的软件开发工具包形式出现的。但是谁也没有想到的时,经过几年的发展,DirectX竟然成为Windows操作系统极其重要的一部分,也是微软牵制众多硬件厂商的致命法宝。DirectX整合了Direct3D接口,使得3DFX苦心经营多年的Glide3D接口灰飞烟灭。微软在退出OpenGL组织之后,Direct3D也以迅雷不及掩耳之势成为3D接口的绝对主流。对于显示芯片厂商和游戏厂商而言,遵循DirectX API已经成为默认的一道死命令,而如今我们更是进入了DirectX 10时代。
第一代3D游戏采用的DirectX 3.0
一、DirectX——硬件厂商的竞技舞台
在DirectX普及之前,大多数的游戏都是在DOS下开发的,因为DOS可以直接访问硬件,开发人员几乎无需考虑各种硬件平台对游戏的兼容性。但是Windows将很多系统的底层访问权限都保护起来,一时间,很多开发人员都难以适应。微软清醒地意识到,如果不能全面打开Windows下的娱乐市场,那么Windows始终取代不了经典的DOS。为此,他们提出了HAL(Hardware Abstraction Layer,硬件提取)和HEL(Hardware Emulation Layer,硬件模拟)两项标准。
硬件提取可以让开发人员在编程时丝毫不用考虑硬件的特性,因为它实现了各种硬件的基本接口,真正做到了硬件平台无关性。这点是非常重要的,与目前很热门的JAVA语言有异曲同工之妙。其实在HAL之前,微软也曾提倡过GDI和MCI,但是相对而言HAL无疑更加先进,让人容易接受。HEL的硬件模拟功能让Windows下的游戏跨上了一个新台阶,因为即使我们没有3D加速卡,也可以用过模拟的方式来实现伪3D,这可比平淡无奇的2D画面要好看多了。
以目前的眼光来看,似乎HAL和DEL都没什么大不了,但是它们确确实实地帮助DirectX站稳脚跟,为以后的蓬勃发展打下坚实的基础。当然仅仅有这些还是远远不够的,随后的DirectX中,微软更是掌握了硬件厂商的命脉。3DFX的倒下固然有nVIDIA崛起的因素,但是另外一大因素应该是3DFX与微软的对立。众所周知,Glide3D是3DFX引以为傲的3D加速接口,当时的确比微软的Direct3D要先进不少。但是由于3DFX死抱着专利,不肯全面开放,因此引起了微软强烈的不满。呵呵,想想Netscape吧,3DFX和他的下场一样。当时大家都说Lunix性能怎么怎么好,因为Voodoo2在这款操作系统下运行Quake3比Windows下快很多。但是大家有没有想过,这到底是为什么?难道是庞大的Windows还不如Lunix吗?绝对不是。从3DFX倒闭后状告Microsoft后,我们才知道,原来微软在DirectX中对3DFX动了手脚。其实我说这些无非是想让大家重视DirectX,因为任何游戏相关的硬件厂商要是被微软抛弃,那么其后果是不堪设想的。
被DirectX赶下神坛的3DFX
二、回顾历代DirectX API
DirectX经历了多个版本,从最早的DirectX到最新的DirectX 10,每一个版本的出现都会导致一大批支持该新版本DirectX的新游戏出现。但是真正让DirectX开始引人瞩目的版本是6.0,这也是3D游戏真正进入发展高峰的时期。
1.DirectX 6.0时代
当时主要代表显卡是nVIDIA的Riva TNT系列以及3DFX的Voodoo3系列。DirectX 6.0的特色在于可以渲染出高分辨率下的32位色的3D效果,这也是当时GPU所最为追求的功能。然而坚持采用16位色彩渲染并且排斥AGP总线技术的Voodoo3系列败下阵来,而nVIDIA一开始就使用先进的AGP总线结构与32位色彩渲染,高规格与新技术奠定新的王朝。
DirectX 6.0时代的Riva TNT2
除了高分辨率渲染,DirectX 6.0的另外一大特色便是支持标准纹理压缩算法,微软公司从S3公司(先已经被VIA收购)取得S3TC授权并将其加入DirectX 6.0。对于当时的3D游戏而言,如何提纹理效果是一件很头疼的事情,因为与之相配套的3D显卡在性能上无法满足大量纹理的需求,此时使用压缩技术自然是一条捷径
2.DirectX 7.0时代
DirectX 7.0的发布又一次把显卡市场进行重新整合,DirectX 7.0最大的特色就是支持T&L,中文名称是“坐标转换和光源”,这也成就了nVIDIA GeForce 256与ATI Radeon 256的辉煌,令3DFX彻底退出市场竞争。换句话说,拥有T&L的显卡,在配合使用DirectX 7.0之后,即使没有高速的CPU,同样获得相对流畅的速度表现。但是,直到今日,部分集成显卡还是没有硬件T&L单元,完全依靠CPU来模拟。
DirectX 7.0时代的T&L技术
3.DirectX 8.0时代
DirectX 8.0又一次引领了一场显卡革命,它首次引入了“像素渲染”概念,同时具备顶点渲染引擎Vertex Shader与顶点渲染引擎Pixel Shader,反映在特效上就是动态光影效果。通过Vertex Shader和Pixel Shader的渲染,可以很容易的营造出真实的水面动态波纹光影效果,从而令3D游戏画面质量得到史无前例的提高。然而DirectX 8.0的普及之路并不顺畅,这与巨大的成本压力有着很大关系。nVIDIA的Geforce3 Ti系列迟迟未能在主流市场普及,而后续升级到DirectX 8.1的Geforce4 Ti4200以及Radeon 8500系列也在成本上差强人意。从2001年年初发布DirectX 8.0开始,这项技术直到2003年年末才得到普及!
3Dmark2001所展现的Shader效果