Direct X 6.0浮出水面 于建原 1998年 第15期 09版   只要你是Win 95的用户,对于DirectX就不会陌生。作为微软公司为Win 95提供的一套支持多媒体运行的程序库与应用程序接口的总称,DirectX很像是挂在Win 95脖子上的一块“通灵宝玉”,须臾不可离。用户现在普遍使用的是DirectX 5.0。最近,到微软网站,已可看到有关DirectX 6.0的相关信息。DirectX 6.0是微软公司为Windows NT 5.0这个迄今为止的Windows“超集”而准备的,据称开发完成后,还同时为Windows 9x用户提供单独安装版本,以便这些用户没有升级到NT时,也能享受到DirectX提供的功能。那么,与DirectX 5.0相比,DirectX 6.0有了哪些引人注意的变化呢:   首先,在DirectX 6.0中,全新增加了DirectMusic部件。它由三个模块组成:DirectMusicCore为核心模块,以HAL层形式提供了对DLS软件合成器的支持(注:DLS是MMA公司所拥有的一项工业标准,是通过硬件回放数字音频,允许用户创建自己的乐器和声音效果的定义,该定义没有MIDI的128种乐器数量的限制,也没有MIDI所固有的输出效果与系统相关的弱点)。即在DirectX6.0中,为MIDI和DLS提供专门的API函数,使之能支持带时间标记的输入输出缓冲,也可实现对DLS类的乐器波形数据的高效压缩,同时,使用了一个独立主时钟来同步控制所有的音乐回放,因为可不再受不稳定的系统时钟控制,将大大改善PC多媒体声音的回放质量与稳定性;第二个模块是DirectMuiscInteractive,该模块能根据用户交互使用的要求,产生实时改变的乐拍、乐调、音量、音色等音乐数据结果,在播放MIDI文件时,DirectMusicInteractive能根据需要,为它们加入交互控制,用户还可利用DirectMusicInteractive所提供的事件通知功能,使应用程序能实现“可视化”的音乐播放。同时,此模块还提供诸如贝多芬、莫扎特等多种预设的音乐风格,用户或程序开发者以这些风格为基础,可生成新乐谱,大大减轻了如作曲、音乐生成等的工作量;第三个模块是DirectMusicProducer,集成了用于生成交互式音乐的编辑器,它所提供的API函数还支持集成第三方的编辑器。   其次,提供了对DVD高性能支持。在未来几年,DVD淘汰目前PC上广泛使用的 CD-ROM与VCD已是不争之事实。因此,DirectX 6.0的DirectShow将对DVD应用提供最好的支持。目前,有许多对现有的Windows 95中使用DirectX 5.0对DVD的软解压回放的测试中,得到的效果之所以都不理想(还记得《电脑报》公布的DVD软解压测试吗),就是因为现在使用的DirectX 5.0中没有对DVD的支持功能。当DirectX 6.0出炉后,据说既便是使用奔腾MMX200,也可达到较好的DVD回放效果,而使用奔腾Ⅱ的系统,对DVD的回放效果将完全可以替代硬件方式。除了支持对DVD视频信号的解压回放(即对MPEGⅡ解码)以外,DirectX 6.0还提供了对DVD浏览程序、杜比音频解码、版权保护和UDF文件系统等多项特性。同时,DirectX 6.0还在它的DirectShow预留有进一步提供支持DVD-R、DVD-RAM、DVD-2/HD-DVD等扩展功能的接口。   第三,增强的3D图像功能。在DirectX 5.0中,已经提供了对3D图像显示支持功能。但因为是基于原来较慢的PCI图形接口设计的,因此在要求较高的场合还是很不尽人意的,游戏用户对这点的体会应很深。即便现在换用新的AGP图像总线,也没有更为明显的改善。当DirectX 6.0就位后,PC机的3D图像处理与显示能力,将达到前所未有的高度。首先,DirectX 6.0支持FlexibleVertex格式,在与旧的顶点格式兼容的基础上,新顶点格式数据中还可以包含光线和材质信息;DirectX 6.0还支持多重材质技术。多重材质将是新一代图形加速硬件“重中之重”的一项发展技术,利用它可以组合多个比较简单材质来获得更加复杂和真实感更强的3D图像。通过采用支持对材质颜色值和Alpha值的分对象控制,以达到特殊质感。DirectX 6.0使Direct3D在光栅化程序中实现了对多重材质的支持,并提供了一个统一编程模型;DirectX 6.0在Direct3D中还增加了对OpenGL中所有关于模板平面(StencilPlanes)的操作,使PC的图像显示与处理能力进一步符合SGI公司开发的3D图形库的OpenGL标准;另外,DirectX 6.0一个新特点是对图像程序的优化,作为比较,在DirectX5.0中,我们可以看到Direct3D是由18个DLL组成的,总的字节量约3.8M,而在DirectX 6.0中,Direct3D的功能虽然增加了,它只有一个名为d3dim的DLL动态连接库,字节量现在公布约为600K左右,如此优化的程序,运行的速度与效果将使DirectX 5.0不可与之同日而语。   第四,支持人工界面设备驱动特性HID(HumanInterface Device)。在Windows NT5.0和Windows 98中将引入的这个概念是指设备能够报告自己所能支持的各种功能与特性,应用程序只要具有支持HID功能,就可由操作系统来协调,这比现在在Windows 95中使用的不太成熟的PnP技术,能使用户在操作上更方便,并且能将PC中历来让人头痛的“设备冲突”减少到最低限度。预计以后开发出的各种新输入设备都将支持HID;对老设备,也可由操作系统进行HID仿真来实现这个功能。在DirectX 6.0中的DirectInput将能充分利用HID带来的好处,方便灵活控制任何一款输入设备。   另外,在DirectX 6.0中的DirectDraw,将新增两类API函数:AlphaBlt支持对ARGB数据块的控制;这样使在文件装载API后,就能从文件中装入平面图,所能支持的图像文件格式有BMP、EMF、JPG、GIF和PNG等多种;DirectPlay在用于如连网游戏、工作组的远程协同工作软件开发上,提供了简便的编程方式。DirectX 6.0中的DirectLpay新增了可靠消息传输机制、异步消息、动态控制消息机制,还提供了对防火墙技术的良好支持。