(这条文章已经被阅读了 148 次) 时间:2001-02-08 21:15:45 来源:鲁晓明 (木木) 原创-IT
DirectX(8.0)完全接触
作者:鲁晓明
一、回眸——DirectX的历史发展
使用Windows的朋友肯定都知道,DirectX是Microsoft公司为Windows 95及其以上版本平台所提供的一套支持多媒体运行的程序库与应用程序接口的总称。通俗一点说,DirectX就是一种让多媒体设备之间互动的应用编程接口。大多数朋友对于DirectX的第一次接触可能都是通过游戏。大家或许还记得1995年随Windows
95一起推出的供游戏软件开发商使用的GameSDK吧,其实那即是DirectX的一个软件开发工具包。实际上DirectX的主要应用范围就是电脑游戏设计领域,并且它已经逐渐成为电脑游戏玩家必备的工具之一。在一般的游戏光盘里面我们经常会发现一个名为“DirectX”的目录,由此可见它的广泛影响了。
在DirectX出现之前,硬件制造厂商设计出一个全新的多媒体产品之后,必须要考虑到它可以搭配其它的硬件设备一起使用,所以在编写驱动程序的时候就要对市面上林林总总的各式硬件产品进行全面的汇总调查,然后再将这些硬件特性与自己的产品融合到一起,因此编写一个驱动程序非常的麻烦,而且没准在使用的时候还是会出现硬件不兼容的情况。但是DirectX的出现就彻底改变了这一局面,因为它拥有一个HAL(Hardware
Abstraction Layer,硬件提取)功能,简单的说就是可以直接让游戏、软件程序和硬件来进行数据传输,从而改变了硬件之间兼容性的问题。DirectX技术直接对HAL的操作,实现视频、声音的输出、网络通信及对游戏杆的控制。与传统的Windows上的GDI或MCI相比,它加快了速度,提高了便利性。用它作为开发游戏软件的工具,不仅可以达到与DOS平台游戏所能达到的效果,而且其结合WINDOWS平台的硬件无关、多任务等优越性,则更是DOS游戏无法比拟的。实际上,DirectX系列技术不只是游戏软件开发的一个强大工具,同时在其它如软件开发以及多媒体领域也是极其有用的。此外当你安装了DirectX之后,将会发现计算机的性能得到了极大的提升。在DirectX中还有一个HEL
(Hardware Emulation Layer,硬件模拟)功能,在它的帮助下可以用你机器中现成的硬件设备模拟成为其它的部件,比如你的显卡没有3D硬件加速功能,但是通过DirectX就可以将其模拟成为带有3D加速功能的显卡,这样在运行游戏的时候就能够获得额外的效果。
总的说来,使用DirectX的主要有两个好处,一个是为软件开发者提供硬件无关性,另一个是为硬件开发提供策略。
1>为软件开发者提供硬件无关性:
微软开发DirectX最主要的目的之一就是促进在Windows操作系统上的游戏和多媒体应用程序的发展。在DirectX出现以前,主要的游戏开发平台是MS-DOS,游戏开发者们为了使他们的程序能够适应各种各样的硬件设备而绞尽脑汁。自从有了DirectX,游戏开发者们便可以获益于Windows平台的设备无关性,而又不失去直接访问硬件的特性。DirectX主要的目的就是提供象MS-DOS一样简洁的访问硬件的能力,来实现并且提高基于MS-DOS平台应用软件的运行效果,并且为个人电脑硬件的革新扫除障碍。另一方面,微软公司开发DirectX是为了在当前或今后的计算机操作系统上提供给基于Windows平台的应用程序以高表现力、实时的访问硬件的能力。DirectX在硬件设备和应用程序之间提供了一套完整一致的接口,以减小在安装和配置时的复杂程度,并且可以最大限度的利用硬件的优秀特性。通过使用DirectX所提供的接口,软件开发者可以尽情的利用硬件所可能带来的高性能,而不用烦恼于那些复杂而又多变的硬件执行细节。
2>为硬件开发提供策略
DirectX的另外一个重要的目的是给硬件厂商提供开发策略,他们可以从高性能程序的开发者和独立的硬件供应商(independent
hardware vendors IHVs)那里得到反馈。所以,在DirectX 程序员参考书中有时可能会提供那些还不存在的硬件加速设备的技术细节。在很多时候,软件可以模拟这些特性,在另外一些情况下,软件根据硬件的指标判断出其特性,并且可以忽略那些硬件并不支持的性能。
随着DirectX 8.0版本的推出,DirectX已经走过了一段不算短的演化历程了。在过去的时间里, DirectX相继推出了1.0、2.0、3.0、3.0a、5.0、6.0、7.0(注意:并不存在4.0版)等多个实用版本。现在就让我们做一个简要的回顾:
1)DirectX l.0
它是Windows下第一个可以直接对硬件信息进行读取的程序接口,和早期的WinG相比有本质性的区别,可以令Windows下的图形处理速度媲美DOS。除了直接读取图形硬件的操作指令,DirectX
l.0还为声音设备和输入设备提供了类似的处理方式,可以使程序开发人同硬件之间建立更直接的联系,显著提高程序运行效率。DirectX l.0中还不包括DirectPlay和D6rect3D,因此只能对2D处理进行加速,不支持3D功能。
2)DirectX 2.0
DirectX 2.0提供了更好的用户设置程度并更正了上一个版本中许多问题,特别是开始引入D3D程序接口,和DirectX l.0相比,可谓一个大的飞跃。这个版本的D3D虽然仅支持“平滑模拟和RGB模拟”两种工作方式,但凭借其内部简洁实用的特效函数。已经达到不错的3D图形加速效果,包括Voodoo在内的很多3D卡都对它提供了支持,不过和各种图形芯片专署的API相比还显稚嫩。因此,这个阶段支持D3D的游戏软件还非常少。
3)DirectX 3.0
DirectX 3.0着重对DirectSound3D和DirectPlay进行了修正和升级,在图形处理方面的性能提升反不如Directx
2.0显著。但随着DirectX影响力的逐步提高,它的应用价值要远远超过前者,支持它游戏数量也与日俱增。
4)DirectX 3.0a
DirectX 3.0a是DirectX 3.0的升级版,主要目标是修正前者在安装程度中存在的问题,对一些显示卡的设置进行后台调整,以得到最优化性能。
5)DirectX 5.0
从5.0版开始,DirectX的多个部件按照应用目的被分为两大层次:DirectX Foundation层和DirectXMedia层。DirectX
Foundation层为开发者提供一套“低级”API函数,以便应用程序能够充分利用3D图形加速芯片和声卡的各种高级特性,这些API函数的功能包括2D和3D图形加速、混音与输出、控制游戏杆、键盘和鼠标等输入设备。DirectX5.0中组成DirectX
Foundation层的有四个部件:DirectDraw、Direct3D、DirectInput、DirectSound,这也是DirectX早期版本所提供的主要内容。DirectX
Foundation实现了硬件提取层(HAL),并支持应用程序尽可能地利用硬件的特殊功能以达到最好的运行效果。在某些情况下,如果应用程序要求使用系统中硬件不提供的一些特殊功能,DirectX
Foundation还会通过硬件模拟层(HEL)用软件来模拟硬件功能。DirectXMedia层则建立在DirectX Foundation层的基础之上,提供播放动画、播放多媒体数据流和交互控制等高级服务。它也由四个部件组成:DiectShow、DirectAnimation、Direct3DRetainedMode和DirectPlay。DirectXMedia使得应用程序只需使用一套API函数就能处理多种媒体数据,而不像以前那样,声音和图像要分别使用不同软件厂商开发的API函数。另外,DirectXMedia提供一种统一的定时机制来处理多媒体事件,使得开发者可以灵活地控制动画、视频和音频等数据的生成与同步播放。
6)DirectX 6.0
1998年推出的DirectX 6.0版本相对于5.0新增了DirectMusic部件。DirectMusic由三个子部件组成:DirectMusicCore,DirectMuiscInteractive和DirectMusicProducer。在这个新版本中Direct3D功能更强大,运行速度更快,并支持FlexibleVertex、多重材质、模板平面,程序得到大大优化。此外6.0版中DirectShow对DVD提供了高级支持,包括DVD浏览程序、MPEGⅡ解码、杜比音频解码、版权保护和UDF文件系统等多项特性。DirectX
6.0还在原有的Direct Draw技术上新增加了两类API函数,对防火墙技术提供良好的支持。其他部件的功能亦有所增强。
7)DirectX 7.0
Windows Me中内置了DirectX 7.0。DirectX 7.0在图形功能方面创建的图形多边形数目比以前版本都要多,这使得计算机生成的数字世界的人物和物体的表面更加平滑。DirectX
7.0提供高级3D加速支持,使得多边形的变化更快,它所产生的动画效果非常逼真。DirectX 7.0加强了对力量反馈的功能支持,这一特性可以让游戏通过游戏控制器和附件来发送震动波,反馈非常敏锐。此外DirectX
7.0也支持多种音乐,能够制造出一个现实的听觉环境。DirectX 7.0的推出使得在3D API的争夺中,D3D和OpenGL将当年名噪一时的3dfx
Glide远远的抛在了后面。
8)DirectX 8.0
DirectX 8.0是微软公司最近才刚刚正式推出的一款DirectX的最新版本。它具有多项令人兴奋的功能特性。下面本文将对它的新增特性进行全面详细的介绍: