1.5.2 多媒体API--DirectX(1)
微软公司于1990年5月推出的Windows 3.0大获成功,它是一种与设备无关的具有图形用户界面(GUI)的操作系统。后来又于1992年3月推出了Windows 3.1,提供了对多媒体的支持。不过Windows的与设备无关的设计思想,虽然使得Windows向程序员提供了一个独立于硬件的软件开发优秀平台,但它不让应用程序直接操作显卡和声卡等多媒体硬件,这样就降低了多媒体应用程序(特别是计算机游戏)的运行效率(如限制了动画的帧率、不提供混音功能等)。所以当时的Windows并不是一个可以开发和运行高效多媒体程序(如3D游戏)的理想环境,迫使PC游戏开发商只好绕开Windows,仍旧开发DOS下的游戏。
为了改变这种难堪的局面,促使游戏界放弃DOS而使用Windows,微软需要在设备无关性与高性能之间取得某种平衡,决定为Windows添加一种高性能的动画机制(以及后来的输入与音响等),因此于1995年推出了Game SDK,后来改名为DirectX。其中的"Direct"指可以直接访问多媒体硬件;"X"指它的不同组成部分,如Direct3D、DirectSound、DirectInput和DirectPlay等。
DirectX是Windows的一种多媒体API,它在保持设备无关性的同时,可以让应用程序直接控制多媒体设备,从而能充分利用硬件的功能,因此可获得最高的性能。DirectX自从推出以来,就始终处在快速发展的过程之中。它已经经历了多个版本,其模块和功能也一直在不断地增加和完善。
DirectX是一种基于COM的系统,主要由硬件抽象层HAL和硬件模拟层HEL构成。DirectX被分成若干个组件模块,涵盖了多媒体应用的方方面面。而且这些组件的数目、名称和功能,也是随着其版本的演化而有所改变和加强。
1.版本
因为DirectX必须支持多媒体设备的最新技术和功能,而多媒体硬件(尤其是显卡的3D性能)和技术始终处在高速发展过程中,所以DirectX的技术和版本也同样在不断地发展和演变,其中发展最快的是3D接口部分。
下面列出DirectX的主要版本的发布时间、引入的新模块和特性。
(1) 1.0--1995年9月30日:此版本包含DirectDraw、DirectSound、DirectInput、DirectPlay、DirectSetup模块。
(2) 2.0--1996年6月5日:引入了Direct3D(次版本有2.0a)。
(3) 3.0--1996年9月15日:支持MMX、为DirectSound补充了DirectSound3D API(次版本有3.0a)。
(4) 4.0--无此版本号。
(5) 5.0--1997年7月16日:有许多改进,如受力反馈控制器、多显示器支持、新的游戏控制面板、用户界面的全面改进等(次版本有5.1和5.2)。
(6) 6.0--1998年8月7日:添加新的3D特性(如添加DXUT框架)、支持AMD公司的3DNow!技术、性能较5.0有提高。在1999年2月3日推出的6.1版中,添加了DirectMusic模块。
(7) 7.0--1999年9月22日:改进了3D图形和声音,使其运行更快,为Direct3D API引入了硬件传送、光照和纹理压缩以及硬件加速,引入了D3DX工具库,使用Creative公司的EAX技术改进了3D声音的算法(次版本有7.0a和7.1)。
(8) 8.0--2000年9月30日:将DirectDraw与Direct3D完全集成在一起,其中Direct3D的性能有了本质上的飞跃(引入了顶点/像素shader[着色引擎/光照模型]、支持硬件点精灵和三维体纹理),将DirectMusic与DirectSound更紧密地集成在一起构成DirectX Audio,更新了DirectInput与DirectPlay,添加了DirectShow、抛弃了其余的DirectX Media模块。2001年11月11日推出的8.1版被集成在Windows XP中销售,该版本添加了从DirectShow分离出的DMO(DirectX Media Objects,DirectX媒体对象)组件模块。它还支持许多新的图形特性,如像素着色引擎的1.2~1.4版、动态/高分辨率纹理、新3D扩展方法等(次版本有8.0a、8.1、8.1a和8.1b)。
(9) 9.0--2002年12月24日:添加许多新特性到DirectX Graphics和DirectShow中,例如将DirectDraw的功能并入到Direct3D之中,支持顶点和像素着色引擎的新版本2.0和3.0,引入裁剪测试、位移贴图和多元纹理,支持128位浮点着色精度和根据显示器自动调整 值等。同时也添加了若干新特性到DirectInput、DirectPlay、DirectSound和DirectMusic中(次版本有9.0a、9.0b和9.0c)。
DirectX的最后一个以数字和字母命名的版本是2004年8月9日推出的9.0c。后来每两到四个月就推出了它的一个升级版,当前的最新版本为2009年3月17日推出的March 2009 DirectX SDK。它们都包含了于2002年推出的专为.NET框架设计的托管(Managed) DirectX,将原来DirectX多个分离的COM模块集成到容易使用的单一CLR文件中。
(10) 10--注意DirectX不会有独立的第10版了,因为微软公司已将DirectX的功能集成进其操作系统Windows Vista中,而不再将其作为一个额外的模块了。DirectX 10(其主要部件为Direct3D 10)已于2006年11月30日随Windows Vista一起发布(被嵌入到该操作系统之中)。