DirectX8.0完全接触

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所提供的接口,软件开发者可以尽情的利用硬件所可能带来的高性能,而不用烦恼于那些复杂而又多变的硬件执行细节。

回眸??DirectX的历史发展

   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的最新版本。它具有多项令人兴奋的功能特性。下面本文将对它的新增特性进行全面详细的介绍。

关注??DirectX 8.0的功能特性

   DirectX 8.0是Windows操作系统下的最新的多媒体系统链接库。透过DirectX 8.0,其它软件能够尽情发挥系统的效能,并且带给我们最棒的多媒体体验和震撼效果。早在DirectX 8.0正式发布以前,就有很多关于它的传闻了。有人甚至预言说DirectX 8.0极有可能再次改写游戏业界的许多标准。随着时间的推移,并且经过多个测试版的考验之后,Microsoft微软公司终于正式推出了这款具有多项令人兴奋功能特征的最新的DirectX 8.0(2000年11月9日发布)。

       新的DirectX 8.0可以获得更好的图像显示质量,以及更棒的音频效果,使多人游戏具备可伸缩性。它强化了针对DirectDraw和Direct3D的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的3-D角色和环境;点光源式光影和像素式光影使图象更逼真;强化了Direct Sound和Direct Music,简化了其应用扩展;DLS2音频合成功能提高了乐器音频的真实感;Direct Input的设备影射功能令对设备的支持更简单;Direct Play使多人游戏的性能和可扩展性得到了提高;Direct Play提供了IP声音通讯;Direct Show的应用编程接口提供了音频/视频的实时合成和即时编辑,支持Windows媒体音频和视频(WMA和WMV)的读写;Microsoft TV技术可以支持数字电视节目。

      大家都知道,图形图像是DirectX中最为重要的一个部分。这一部分的工作是由两个函数集来完成的—-DirectDraw主管2D图形,Direct3D则用来生成3D场景。在最新的DirectX 8.0版本中微软把这两个函数集合成为一个实体。并且在实际的应用中,DirectX 8.0可以提供最新的3D技术、更快的画面更新率、并且支持市面上大多数的联机游戏。它也能够在同时执行和显示充满多媒体元素的软件时提供极生动的音效,这些元素包括:全彩画面、影像、3D动画、以及环绕音效。

       关于这种改变,微软自己的说法是为了尽可能的让全屏的3D游戏有更好的表现。当然这并不是说窗口模式下的3D游戏不在考虑,而是微软认为在这方面它们已经做的足够好,用不着花更多的力气来改进了。对于3D API的改进,我们认为是微软感受到巨大压力之后的举动。的确,虽然依靠其开放的开发环境以及不断的升级换代才在3D API的大战中勉强没有被抛在后面,但总是给人低人一头的感觉。不断的有使用Quake系列引擎的游戏不支持D3D的消息传出,这的确是对微软的巨大打击。偏偏这又是未来游戏发展的方向所在,所以此次微软对DirectX 8.0下一番大力气是可以理解的。

    
  在新的DirectX 8.0身上应该注意一个非常重要的概念,这就是“可编程光影”概念的引进。它有两种方式:点光源式光影和像素式光影。点光源式光影可以用在非常复杂环境下的贴图、程序实现的几何变换(就是我们在电影中常看到的那种网眼一样的3D模型的骨架)和矩阵式调色版皮肤贴图(这可以创造出更加逼真的角色造型)中。像素式的可编程光影则可以实现很多有趣的效果,比如说非常真实的带光线反射的凸凹贴图等等。虽然可编程光影不是什么新的概念,但是是微软第一个提出来要把这一步放在硬件中实现。这是微软帮助显卡的硬件厂商定出的一个新标准,同时也使得程序员可以在不需要知道太多硬件细节的情况下进行光影特效的编写,和T&L有着异曲同工的效果。理论上可以实现由程序实时计算的贴图,而不是像现有游戏那样先把贴图效果计算好,以BMP的方式放在内存或显存中。

      DirectX 8.0被划分为覆盖不同技术的API(Application Programming Interface 应用编程接口),这些技术对游戏和视听多媒体相当重要。与以前版本不同的又一个地方是,新的DirectX 8.0中有专门的API实现反锯齿的功能。它通过支持现有的API来实现,比如3dfx的T-buffer系统,会由软件来控制这些效果的开和关。同样的,还有其他一些多采样的API,能实现像运动模糊和软件光反射一类的效果。此外还有按份量贴图的支持,这可以非常真实的再现光亮随着距离而衰减的情况,以及更真实的雾化效果。

      DirectX 8.0的诸多强大功能和特性可以带来游戏与视听多媒体方面更为强大的功能,它可以让游戏在3D真彩模式下运行的更为流畅,在电脑上看VCD或者是欣赏音乐的时候能够看见更为绚丽的画面,也能够体验到环绕音乐的魅力。而且它依然保证了很好的向下兼容性,也就是说以前版本的DirectX已有的特性在新的版本中都可以找到。在DirectX 8.0中,主要包含五大方面内容:DirectX 8.0 Graphics、DirectX Audio、DirectX 8.0 DirectPlay、DirectX 8.0 DirectInput以及DirectX 8.0 DirectShow。现在就让我们来好好看看:

DirectX 8.0 Graphics

   图形是DirectX中最重要的一个方面,我们在DirectX 8.0中看到了一个令人非常兴奋的新增功能:将DirectDraw和Direct3D完整的结合在一起。一直以来DirectX中的图形都被分为两个部分:用于2D图形处理的DirectDraw 和用于3D图形处理的Direct3D。这两个部分一直以来都在发挥着十分积极的作用。以前DirectDraw曾是Directx中非常重要的部分。它担任着图形处理的关键。以往在实地址的dos下设计游戏时,为了游戏速度的考虑,都让程序直接操作硬件。而在windows98及更高平台的保护模式下,所有图形的访问动作都必须GDI这个图形处理中心来处理,不能直接对硬件下命令。可是GDI对连续的画面处理效果并不是很好,游戏一旦通过GDI来处理的话,效果有时甚至不堪设想。

    

       DirectDraw就是来解决这个问题的。在它的帮助下,windows程序也能直接进行硬件操作,更进一步还能加速显卡的速度,使游戏更为流畅。另外DirectDraw还支持Mmx、3dNow、AGP等技术,还能处理多屏幕显示,让窗口环境的游戏更加多姿多采。以前版本的Directx中还有另一个也十分重要的部分就是Direct3D了。Direct3D是一个低级的3D应用程序接口,但是其它的硬件开发人员可以在这个基础上很方便的编写出具有高性能的显卡驱动程序。对现在的游戏来说,Direct3D的地位实在是太重要了!

       由于3d游戏的兴起,各大厂商纷纷推出3d加速卡为了避免重蹈声卡的覆辙,微软从Directx3.0后加入了Direct3D这个API,让3d游戏有了一个共同的开发标准。这样当游戏再执行时若需要绘图时就会通过D3D向显卡驱动程序提出要求从而完成绘图。(上面的这副图片就是DirectX 8.0中新Direct3D的结构示意图。)

    
   在DirectX 8.0推出以前DirectDraw和Direct3D都是相互独立分开的两部分,这种情况有一个不足之处就是增加了内存的数据交换时间。在微软DirectX 8.0中,这种情况得到完全的改变,微软将DirectDraw 和Direct3D合并为一个单一的整体。它的改变大大减少了内存数据交换的时间,提升了游戏和程序的性能,并且对全屏3D游戏提供了更好的支持。

    
  硬件功能方面新的DirectX 8.0支持许多新增的3D特性,包括shader光影等。我们做了一个简单的测试,在Quake3测试中,DirectX 8.0比起DirctX 7.0在优化游戏运行方面效果比较明显,提升了系统中3D图形的性能。此次测试的硬件配置为:

      CPU – Celeron 466MHz
  主板- MSI BxMaster
  内存- 128mb Apacer PC100
  显卡- ASUS v7700 GF2 32mb DDR

    


[3DMark 得分]

    


[Q3A 得分]

其他抽样技术

  在DirectX 8.0中还有一些诸如多抽样技术、微点技术等新增功能。多抽样技术能够在全屏模式下利用模糊技术和色深处理达到更好的显示效果;微点技术能够将闪电、爆炸、下雨、下雪等场景显示的栩栩如生。原来在DirectX 7.0下已经很好地解决了的窗口化3D问题,在新的DirectX 8.0中窗口内的3D仍然得到了保持。此外“可编程光影”概念的引进在DirectX 8.0上是一个非常重要的变化。“可编程光影”的两种方式??点光源式光影和像素式光影??虽然并不是什么新的概念,但是却是微软首次提出把它放在硬件中实现。

       微软帮助显卡厂商定出了这么一个新的标准,使得程序员可以在不需要知道太多硬件细节的情况下进行光影特效的编写,和T&L有着异曲同工的效果。它可以实现由程序实时计算贴图,而不是像现有游戏那样先把贴图效果计算好,以BMP的方式放在内存或显存中。点光源式光影可以用在非常复杂环境下的贴图、程序实现的几何变换和矩阵式调色版皮肤贴图中。像素式的可编程光影则可以实现很多有趣的效果。(下图为DirectX 8.0的图形传递途径。)

     

 

      DirectX 8.0中还有一些不能不提的其他新增图形特性。像容量纹理、多样本渲染、多重数据流、粒子系统、镶嵌装置模型等很多以前DirectX中很少见的特性这次在DirectX 8.0中都出现了。DirectX 8.0凭借这些功能,已经可以和OpenGL并驾齐驱并成为电脑游戏设计的两大API之一。

DectX8 新增图形特性

  1. 容量纹理

      新版本的DirectX 8.0可以对游戏的图形纹理进行2维以上的地址定位。以前的Directx 7.0版本中已经引入类似的概念,只不过当时它是用来单一地渲染游戏中的立方体。而现在的DirectX 8.0可以对容量纹理中的三角形进行三维地址定位了,之后这些被定位的三角形可以继续用于游戏的纹理之中。这样经过三维处理的纹理可以被用来反映游戏中纹理的不同“容量”效果,例如三维空间的雾化和光照。

      2. 多样本渲染

      多样本渲染可以说是3dfx的T-buffer技术在DirectX 8.0中的体现,这种新特性可以让游戏设计人员通过DirectX 8.0实现T-buffer的全部效果,也就是说在所有非3dfx的显示卡上都可以实现全屏幕T-buffer效果,只是实现的方式不同罢了,但是在 T-buffer效果的流畅程度还是由显示芯片本身的硬件象素填充率来决定的,软件层面上是无法改变象素填充率的。多样本渲染通过对一副图象进行多帧渲染,在显示图象的最后关头,多样本渲染把这几幅帧画面合组合成最终画面并显示在屏幕上,下图就很好的解释了多样本渲染的整个过程。

    

      3. 多重数据流

      新版本的DirectX 8.0开始支持多重数据流了。例如,一个数据流包含了模型的顶点三维信息,一个数据流包含了模型的顶点颜色信息,而另一个数据流则包含了模型的顶点纹理信息。DirectX 8.0的多重数据流处理能力加速了游戏中动态模型的实时渲染工作。例如,如果游戏物体根据一定的算法在每一帧中不断变换自己的纹理位置,那么游戏设计者只要单独设定一个专门的数据流,来指定物体每帧中的纹理位置供DirectX 8.0处理。

    

      4.粒子系统

      新版本的DirectX 8.0加入了对粒子系统的支持。粒子系统可以渲染输出尺寸从1个象素开始固定的粒子,或者输出尺寸不定的粒子,这些粒子的数量可以逐渐变大或者逐渐减少,视它们离开产生粒子表面的距离远近和游戏的需要。粒子系统可以用来很好地描绘游戏中的爆炸、下雨、下雪等场景。

    

      5. 镶嵌装置模型

      对镶嵌装置模型的支持现在已经逐渐成为Directx发展的另一个方向了。它类似于Quake3 Arena在游戏中对弯曲表面的支持。镶嵌装置模型的实现方式可以是贝赛尔曲线、B样条函数、三角形测量或者是顶点插补。下图就阐明了标准物体前行时(即镶嵌装置模型后退时)纹理的局部改变,这样的改变不需要新的纹理加入。

    

DirectX Audio

  DirectX Audio的功能并不只是用于播放音乐,它能够充分调用硬件的加速功能、系统可下载功能以及3D特效环境来更好的营造出一个立体氛围的音乐环境:脚步声从后面慢慢逼近,蜻蜓的嗡嗡声在您头边环绕,一辆火车从左边飞驰而来……DirectX Audio能够让您感受到空间的声音效果,它能够制造出声音从您身边发出的幻觉效果。声音也可以和动作相匹配,这样您就可以知道身后是不是正有人在爬行??或者追踪的车辆是否已放弃了行动。DirectX Audio也支持多种音乐,它能够制造出一个现实的听觉环境,当您翻越高山或是穿过恐怖的墓地时会有一种身临其境的感觉。   像我们平常播放MIDI、WAV或者是用麦克风来进行录音都是建立在DirectX Audio基础之上的。在DirectX 8.0中也对DirectX Audio也进行了一些功能方面的增强,其中可以实现合声、扭曲、均衡等一些声音方面的特效;使用16声道以上来播放MIDI文件,并增加了对于MIDI文件播放的控制;可以让音乐设计者便捷的控制和修改所制作的音乐片段。(下图为DirectX 8.0 Audio的结构图)

    

      和图形一样,微软在声音处理上也想采用合并的策略。由于主要的两个声音API(DirectSound和DirectMusic)在某些方面可以互补,合并很有意义。(例如,你可以对DLS2 MIDI样本进行3D音频处理。)这意味着 DirectMusic可以被当作一种高级音频API用于多种音频流。只不过在DirectX 8.0中,DirectSound和DirectMusic这两个名字仍然会继续使用,尽管实际上DirectSound和DirectMusic之间的区别已经很小了。

      在声音效果方面,一个新特性是通过DLS2可下载样本的音响效果。这使得游戏开发人员能够利用所有的硬件加速MIDI表现来加强声音效果。另外一个有趣的新特性是数字音轨(WAV文件)和MIDI样本的混合能力,它能够使数字音轨和MIDI同步合成,可以预见这将有可能提供引人入胜的效果。它还将能够执行音频原稿,这将使游戏开发组中的声音设计人员能够对声音的处理或声音将如何对交互式输入作出反应进行大量控制,而不再需要通过编程来实现声音设计者的意图。

      创新公司的部分EAX混响技术也整合进了DirectX音频体系中。很早微软就已经得到了Creative公司的授权许可使用该公司EAX(环境声音延伸扩充)声音技术中的一些声音特效。这些效果包括边缘处理、和声、环境回响等经由DirectSound和DirectMusic被增加到了DirectX 8.0中。环境混响声音特效的使用将使游戏开发人员能够开发出更为逼真的3D音场。从技术上来说,EAX只是对微软DirectSound3D API的增强。它可以根据产生声音的游戏环境的变化而产生不同的三维回响效果,例如,在野外或空仓库或金属管道内的枪声听起来将有所不同。由于增加了Creative公司杰出的EAX声音技术,DirectX将可以提供开发者更好的控制游戏中的环境声音参数从而增强游戏的娱乐感受。而对Creative公司来说,EAX技术和DirectX的结合将能巩固EAX作为目前流行的PC声音标准的地位并使之继续前进。

    

DirectPlay

  DirectPlay是为了满足近来流行的网络游戏而开发的API,它是一个用于连接传输协议和网络设备之间的接口程序。DirectPlay支持多通信协议,可以运行在采用TCP/IP或者是IPX协议的网络上,甚至也可以使用Modem进行连接,而且DirectPlay还为将来的协议预留了很好的扩展空间。在DirectX 8.0中对DirectPlay重新进行了编写,其中增加了点对点传输、服务器端到客户端等模式的支持,还有语音传输的功能。让玩家可以用各种连网方式来进行对战,此外也提供网络对话及保密措施。可以说DirectX发展到今天已经不再局限简单的影像优化功能,更是往网络方向进军,从中也可以看出微软的“野心”吧。(下图为DirectX 8.0 DirectPlay的结构图)

    

      下面是关于DirectX 8.0 DirectPlay 的一些特性:

      ?接口完全重新编写
  ?新增了对声音的传输
  ?地址的信息由GUID变为URL形式
  ?加上了更好的内存管理单元
  ?很好的支持防火墙并增加了对网址的编译
  
   ?升级更容易

    


(上图是在使用DirectPlay Voice时一些组成结构)

DirectInput 及 DirectShow、卸载

  DirectInput的功能可以支持很多种类的输入设备,用来处理游戏的一些外围装置。一般常见的键盘、鼠标就不用多说了,其他的如游戏摇杆、game pad、方向盘、vr手套、力回馈的游戏手柄等各种设备都能够得到DirectInput的支持。DirectInput新增一个自动映射功能,这个新功能允许在输入设备按下按键之后来实现相应的动作,而且能够将手柄上原有的一些特殊按键与操纵杆作用激发出来。这样游戏程序不仅可以根据键盘、鼠标的运动而做出变化,而且可以根据独立于输入设备之外的动作做出相应的变化。DirectX 8.0中的DirectInput预先设置了一套标准的游戏动作,涵盖了不同类型的游戏:第一视角设计、实时战略、赛车、角色扮演等等。这样DirectInput就不仅仅把角色的动作限制在游戏代码规定的范围之内,同时游戏设计者就可以专注于在游戏代码中加入DirectInput预设中没有的特殊动作,使得游戏更加引人入胜。因此,如果你有一只游戏手柄但是又苦于没有相应的驱动程序,那不妨试试DirectX 8.0,因为Direct Input可以使这类设备与游戏配合良好,不需要做特别配置。

      DirectX 8.0进一布加强了对力量反馈的功能支持,这一特性可以让游戏通过游戏控制器和附件来发送震动波。当您在游戏中遭受虚拟破坏时飞行操纵杆会发出卡塔卡塔声,并产生后坐力,而当您刹车时,方向盘和踏板也会产生震动。反馈也可以很敏锐。您的方向盘可以产生轻微震动以模拟在鹅卵石街道或沙地上驾车的效果。某些特定的飞行操纵杆可以补偿推力和引力效果,使效果更加逼真,而且增加了游戏的难度。当您用这种控制器玩过一个游戏后,您就会对他爱不释手了。

      DirectX 8.0 DirectInput的新增特性:

      ?自动映射功能
  ?更好的支持国际上流行的各种应用软件
  ?支持各种最新的接口
  ?可以方便实现对操纵杆功能的改变

      5、DirectShow

      DirectShow实际上是脱离DirectX而单独存在的,以前被微软自己称作“DirectX Media”,它和DirectX并列被微软推荐为多媒体和游戏设计介面。而在DirectX 8.0中,DirectX Media 被糅合进去,主管视频、音频流的捕捉和回放,同时也提供各种过滤功能对它们进行实时处理。DirectShow使得我们可以在Windows中能够欣赏高质量的影像文件,比如AVI、MP3 WAV文件等等。随着DVD的推出,DirectX 8.0也增强了这项功能的支持,其中有AC3解码、卡拉OK功能、MPEG2解码以及广播传输技术等。在它提供的DVD浏览程序、杜比音频解码、版权保护和UDF文件支持等功能下,使用DirectX 8.0可以使DVD的回放效果完全达到硬件的播放效果,并得到更为绚丽的画面效果。

      除去这五大主要内容之外,在DirectX 8.0中还增加了对于AMD最新的Athlon、Duron等新款CPU的特殊指令的支持,这就使得那些使用AMD最新CPU的朋友能够获得额外的效果。

       目前最新的DirectX 8.0版本号是4.08.00.400,它分为两个版本:支持Win NT和Windows 2000的英文版,以及适用于各种语言系统的Windows 95、Windows 98和Windows Me版本,其大小分别为11M和7.6M。安装大约需要 50 MB 的剩余磁盘空间。安装后,DirectX的下载还需要大约15MB的磁盘空间。安装DirectX 8.0并不难,可按照提示的步骤进行。对于目前已经在系统中安装了旧版DirectX的用户来说,在安装DirectX 8.0后将会发现硬盘的可用空间会有些许变化。安装好DirectX 8.0后,系统会自动直接覆盖掉任何旧版DirectX。需要注意的一点是,安装成功后,由于DirectX属于系统组件,所以无法再对DirectX 8.0 进行反安装。也就是说除非重新安装操作系统,否则无法反安装DirectX。安装了DirectX 8.0之后,系统需要重新启动一下并更新一些系统文件,这时可以在C盘“Program Files”文件夹中的“DirectX”目录下的“Setup”中找到一个DxDiag.exe文件,双击之后可以看见DirectX的诊断工具。

      
  2>DirectX 8.0的卸载

       由于一旦安装了DirectX 8.0,安装过程将更改核心组件及操作系统中大量的注册信息,所以Microsoft不支持再卸载运行中的DirectX 8.0。可是如果真的需要将DirectX 8.0从系统中卸载移走,那该怎么办呢?办法如下:

     

      首先,运行 regedit,找到以下目录
“Hkey_Local_MachineSoftwareMicrosoft”

      删除下面列出的项目及键值:

      Direct3D
  DirectDraw
  DirectInput
  DirectMusic
  DirectPlay
  DirectPlay8
  DirectX
  DirectX Diagnostic Tool
  
  然后,启动 Windows 资源管理器或MS-DOS,把以下文件备份到一个独立的目录之后,再把源文件删除:

      c:windowssystemd3d*.*
  c:windowssystemddhelp.exe
  c:windowssystemddraw*.*
  c:windowssystemdinput*.*
  c:windowssystemdirectx.cpl (有时找不到这个文件)
  c:windowssystemdsound*.*
  c:windowssystemdplay.dll
  c:windowssystemdplayx.dll
  c:windowssystemdpmodemx.dll
  c:windowssystemdpwsockx.dll
  c:windowssystemdplaysvr.exe
  c:windowssystemdpwsock.dll
  c:windowssystemdpserial.dll
  c:windowssystemjoy.cpl
  c:windowsvjoyd.vxd

      对于 win98,还要删除以下文件:

      c:windowssysbckupd3d*.*
  c:windowssysbckupddhelp.exe
  c:windowssysbckupddraw*.*
  c:windowssysbckupdinput*.*
  c:windowssysbckupdplayx.dll
  c:windowssysbckupdpmodemx.dll
  c:windowssysbckupdpwsockx.dll
  c:windowssysbckupdsound*.*

      最后,删除目录 c:program filesdirectx