七月网

dx8.1a

七月网4120

DX8.1是DirecetX8.1的缩写

dx8.1a

DirectX 8.0简介

欢迎关注 Driving DirectX。在本月的栏目中,我们将开始探索 Microsoft® DirectX® 8.0。首先,我们将概括介绍这个新版本为开发人员提供的所有精彩特性。您可以在 DirectX开发人员中心(英文)找到 DirectX 8.0运行时和 SDK的下载链接。有些人说,在相当长一段时间内,这将是最强大的 DirectX版本。下面的新特性列表为这一说法提供了证明。

前言

DirectX 8.0的每个组件都包括了重要的新特性,它们极大地增强了 DirectX的功能。图形、音频和网络三个组件被彻底重写。DirectInput®包括了新的配置功能、操作映射和更好的国际化支持。DirectShow®第一次作为 DirectX的一部分出现在运行时和 SDK中。

简而言之,DirectX 8.0提供的新特性包括:

DirectX Graphics——集成 DirectDraw和 Direct3D

Microsoft DirectDraw®和 Microsoft Direct3D®并入了 DirectX Graphics组件。API已经进行了大幅度更新,现在更容易使用,并且支持最新的图形硬件。最引人注目的新特性是支持可编程着色器(着色器是用着色语言编写的一段代码,着色语言是专为在可编程顶点流水线或可编程像素流水线中使用而设计的)。

DirectX Audio——集成 DirectMusic和 DirectSound

Microsoft DirectMusic®和 Microsoft DirectSound®现在紧密集成到新的 DirectX Audio组件中。WAV文件或其他资源现在可以由 DirectMusic加载器加载,通过 DirectMusic演奏器进行播放,并用 MIDI音响进行同步。

DirectPlay可伸缩性和性能更佳

Microsoft DirectPlay®组件进行了大幅度更新,其易用性和功能均得到改进,在可伸缩性和性能方面尤为显著。此外,DirectPlay现在还支持玩家之间的语音通讯。

DirectInput中的操作映射

Microsoft DirectInput引入了一个重要的新特性:操作映射。通过操作映射能够在输入操作和输入设备之间建立连接。您只需输入设备处理,而不必再依赖特定的设备对象。

DirectX中包含 DirectShow

现在 Microsoft DirectShow是 DirectX的一个组成部分,在此版本中已经进行了更新。

下面按每个组件详细地介绍这些新特性。

DirectX 8.0 Graphics

DirectX 8.0 Microsoft Direct3D® API接口中加入了许多新特性,许多原有性能也得以增强。

DirectDraw和 Direct3D完整集成

可编程顶点处理语言

可编程像素处理语言

多重采样渲染支持

点对象

三维立体纹理

更高阶的图元支持

针对各种 D3D的三维内容创建工具支持

带索引的顶点混色

扩展的 Direct3DX工具库

DirectX Graphics的一个最显著的变化是将 DirectDraw(二维图形接口)和 Direct3D(三维图形接口)合并为一个公用接口。迄今为止的很长一段时间内,DirectDraw和 Direct3D一直相互交叉,因此,将它们划分为两个独立的接口越来越不适应发展。新的集成简化了 Direct3D核心的初始化和控制,使这些操作更加简单。这种变化不仅简化了应用程序的初始化,而且改进了数据分配和管理的性能,从而减少了内存的占用。合并接口的另一个原因是 DirectDraw的开发几乎完全停止了,在 DirectX 6.0和 DirectX 7.0中对它所作的修改仅仅是稍作美化。

图形 API的集成还启用了并行顶点输入流,使动态应用数据结构的映射更加灵活。

可编程着色器的加入可以说是 DirectX 8.0中 Direct3D更新的最显著特性。语言的扩充性非常好——考虑到未来几年内图形硬件方面将涌现大量新特性,我们对着色语言所进行的小小补充将会获得数倍的回报。着色语言是同时为顶点处理和像素处理提供的。

可编程顶点处理语言使程序员可为下列情况编写硬件着色器:

变形/过渡动画

定义矩阵调色板外观

用户定义的光照模型

一般的环境贴图

过程性几何图形

任何其他开发人员定义的算法

可编程像素处理语言使程序员可为下列情况编写自定义的硬件着色器:

一般的纹理合并表达式

按像素光照(凹凸贴图)

按像素环境贴图(用于照片级真实效果)

其他开发人员定义的算法

请注意,为顶点和像素操作而添加的着色语言与用在顶点流水线中的变换和光照以及用在像素流水线中的多重纹理等“旧”方法同时存在。图 2说明了 DirectX 8.0图形流水线。

图 2:DirectX 8.0图形流水线对新旧方法的支持

另外一些精彩特性使得实现各种特殊效果更加简单。多重采样渲染支持可以实现全方位的反走样和多重采样效果,例如动态柔化和景深。点对象支持可以实现闪烁、爆炸、下雨、下雪等微粒系统的高性能渲染。立体纹理可在按像素光照和立体模糊效果中实现区域衰减,并可以应用到更复杂的几何图形中。

更高阶的图元支持改善了三维内容的外观,用主流三维创作工具创建的内容的映射也更为简单。另外,DirectX 8.0 Graphics还包括三维内容创建工具插件,可将外观网格导出到.X文件,以便以后在 Direct3D(使用各种 Direct3D技术)、多重精度级别细节(LOD)几何图形和更高阶曲面数据中使用。带索引的顶点混色扩展了几何图形混色支持,这样,用于顶点混色的矩阵就能够通过矩阵索引来引用。

Direct3DX(D3DX)工具库中添加了大量功能,在 Direct3D之上构造的帮助器层简化了三维图形开发人员所遇到的常见任务。D3DX现在包括“定义外观”库(支持使用网格)以及用于装配顶点和像素着色器的功能。请注意,原来由 D3D_OVERLOADS提供的功能现在已经移到 D3DX工具库中。(D3D_OVERLOADS在 Microsoft DirectX 5.0中首次引入。)

DirectX Audio

Microsoft DirectX 8.0 Audio为播放集成的音乐和声音效果提供了新的体系结构。尽管仍然使用名称 Microsoft DirectSound和 Microsoft DirectMusic,但在它们之间已经没有明显的区别。希望将来 DirectMusic API能够成为创建交互式声音效果的首选 API。

DirectX 8.0 Audio的部分新特性包括:

.wav文件和基于消息的声音集成在一个播放机制中

音频通道模型更加灵活、强大,其中包括对段落状态进行个别控制

DLS2合成,包括特殊效果

音频脚本编写

容器对象,用于在单个文件中保存 DirectMusic Producer工程的所有组件

对演奏、段落和声道的更强大的控制

新的音频体系结构将 DirectMusic合成器作为主要的 DirectX 8.0 Audio声音生成器。这一高度优化的可下载声音级别 2(DLS2)合成器可以创建所有的声音,对它们进行混音,并将结果发送到 DirectSound缓存,以便进行进一步的处理。DirectMusic合成器也可以在输出之前将多个独立的声音进行混音。这样,多个独立的声音可以通过同一种音频效果进行处理,并分配到三维空间中的同一个位置。它们只使用一个 DirectSound3D缓存,将 CPU的使用和对三维硬件的要求降至最低。请参阅图 3,以了解新的音频体系结构。

图 3:DirectX 8.0 Audio体系结构

.wav文件和资源现在可以通过 DirectMusic加载器加载,并通过 DirectMusic演奏器播放。应用程序不再需要分析.wav文件,并将其复制或流入 DirectSound缓存。.wav文件播放的定时基于 DirectMusic主时钟,.wav文件可以在音乐事件发生的同时播放,并可以象其他段落一样通过工具处理。DirectSound API仍然会得到支持,您仍然可以通过 DirectSound缓存直接播放.wav文件。DirectSound仍将是用于.wav文件捕获和全双工的 API。

在以前版本的 DirectMusic中,演奏通道被映射到端口,同时每个端口将其输出发送到一个 DirectSound缓存。在新的模型下,段落中的声道被映射到音频通道,控制数据从演奏器流向最终输出。合成器的输出可以发送到多个播放缓存,而每个播放缓存有自己的三维位置和效果。音频通道由应用程序动态创建,或者设计在段落中。段落的每个播放实例都有自己的音频通道,因此可以单独修改每个段落状态的音量、音质和音调等参数。

DirectMusic合成器现在基于 DLS2标准,能够提供更高质量的声音合成。DLS2合成器的新特性包括六级封装、语音分层、释放波形和额外的低频振荡器(LFO)。每个语音都有一个可选的低通谐振过滤器。作为新的音频体系结构的一部分,DLS2合成器可用于简单的声音效果播放,包括:

任意循环点

每个声音的过滤器

混音

自动流播放

用于播放的 ACM编解码集成

效果处理总线

轻松加载.wav文件

通过使用脚本,作曲家和音效设计师可以对演奏器进行更自如的控制。应用程序不需要处理播放的细节,而代之以调用脚本。例如,一个游戏事件可能触发一个脚本函数。通过修改函数,脚本作者可以轻松地修改声道对游戏事件的响应。

DirectMusic Producer工程的所有组件都可以保留在一个文件中,查找和加载所有对象非常容易。容器也可以嵌在段落中,因此播放一个段落所需要的所有内容都可以保存在这个段落中。

DirectX Audio对演奏、段落和声道的控制更加强大。演奏通知事件现在有一个新的通知类型 DMUS_NOTIFICATION_MUSICALMOSTEND,它表示队列中的最后一个主段落即将结束。这样,应用程序就有机会来计划播放新的段落。

段落的新特性包括:作曲家可以在段落中设置点,指定从何处开始播放段落,从而维护段落与时间签名之间的关系。主段落可以包含联接其他段落的任意点。这些点不仅可以联接最近的小节、节拍或网格,还可以进行更多的控制。在当前主段落完成播放时,可以播放新的段落联接标志 DMUS_SEGF_SEGMENTEND指定的段落。新的 DMUS_SEG_REPEAT_INFINITE标志使得一个段落可以播放无限多次。

对于声道,新的配置和播放标记使得每次播放或循环播放某个段落时,都可以对声道进行改写。例如,可以配置和弦声道,使得每次播放该段落时,都建立新的和声进行。应用程序可以单独设置各个声道的配置,禁用播放和参数控制。声道可以配置为根据时钟时间而不是音乐时间进行操作。通过配置自控段落中的声道,可以用它来替代主段落或控制中的参数声道。最后,包含歌词声道的段落可以将时间戳记文字发送到演奏器。

限于篇幅,其他的新音频特性在这里不再赘述。如果您正在深入研究音频,研究 DirectX 8的音频特性可能要花费您的大量时间。请参阅 SDK中的新文档和范例。

DirectX 8.0 DirectPlay

DirectPlay是应用程序和通讯服务之间的高级软件接口。有了 DirectPlay,通过 Internet、调制解调器链接或网络来连接游戏将非常简单。DirectPlay既提供了高级的传输层服务(例如,有保证或无保证的传递,慢速链接上的通讯扼杀,以及放弃连接检测等),也提供了会话层服务(包括玩家名称表管理和点对点主机转移)。图 4显示了 DirectPlay体系结构,以及它如何提供与通讯服务提供程序无关的独立性。

图 4:DirectPlay体系结构

下面是 Microsoft DirectPlay API for DirectX 8.0的新特性列表:

接口已经完全重写。

前端操作现在与 DirectPlay的其他部分无关。

已经加入了语音传输。

寻址信息已经从基于 GUID的数据格式变为基于 URL的数据格式。

可伸缩性更强大,内存管理更完善。

对防火墙和网络地址翻译器(NAT)的支持更佳。

分离创建点对点会话和客户端/服务器会话的接口,使创建网络应用程序的复杂度得到了奇迹般的简化。用于创建 DirectPlay传输会话的接口包括:

IDirectPlay8Peer,提供创建点对点会话的方法

IDirectPlay8Client,提供创建客户端/服务器应用程序的客户端部分的方法

IDirectPlay8Server,提供创建客户端/服务器应用程序的服务器端部分的方法

DirectPlay不再要求前端客户端只能与 DirectPlay应用程序配合使用。这样,前端服务提供程序和应用程序都可以实现 DirectPlay,而无须相互匹配。前端实施现在分为两个简化的接口:

IDirectPlay8LobbyClient,用于管理前端客户端,以及计算和启动前端识别应用程序。

IDirectPlay8LobbiedApplication,用于在系统中注册可由前端启动的应用程序,使它真正能由前端启动。它也用于从前端获取连接信息,使游戏启动时无需查询用户。

DirectPlay Voice提供了一组接口,用于给应用程序添加实时语音通讯。下列新接口提供了语音支持:

IDirectPlayVoiceClient提供了在 DirectPlay Voice会话中创建和管理客户端的方法。

IDirectPlayVoiceServer提供了承载和管理 DirectPlay Voice会话的方法。

IDirectPlayVoiceTest用于测试客户端计算机上的音频设置。

图 5显示了使用 DirectPlay Voice时可用的组件。

图 5:DirectPlay Voice组件

以前版本的 DirectPlay通过 GUID地址使用二进制数据块,难以实现和读取。在 DirectX 8.0中,DirectPlay引入了 URL格式的地址表示方法,并使用一组新的接口来创建和操作新的寻址格式:

IDirectPlay8Address提供用于创建和操作 DirectPlay地址的基本寻址方法。

IDirectPlay8AddressIP提供 IP提供程序专用的寻址服务。

就 DirectX 8.0而言,DirectPlay已经被彻底重写,以便提供卓越的性能和强大的可伸缩性。用户带宽的增长给网络游戏设计和实施带来了天翻地覆的影响。改进的 DirectPlay线程缓冲池管理使开发人员更容易设计可变化而且更可靠的应用程序,能够同时支持大量联机玩家。

编写跨越 NAT、防火墙和其他 Internet连接共享(ICS)方法的网络游戏可能会非常困难,针对无保证(UDP)通讯编写网络游戏尤其困难。在 DirectX 8.0中,DirectPlay开发时已经注意了这些问题,它将支持可能的 NAT解决方案。DirectPlay TCP/IP服务提供程序对游戏数据使用单一的、开发人员可选的 UDP端口,从而可以适当地配置防火墙和 NAT。另外,DirectPlay使用了 UDP,因此对于客户端/服务器体系结构的游戏来说,某些 NAT后的客户端可以直接连接到游戏,而无须进行额外的配置。

DirectX 8.0 DirectInput

DirectInput为游戏杆、头盔、多键鼠标以及力回馈设备等各种输入设备提供了最先进的接口。通过直接与设备驱动程序配合,DirectInput绕过了 Windows消息系统,提供了最佳性能。

Microsoft DirectInput API for DirectX版本 8.0中新特性的列表如下:

操作映射

对国际化应用程序的支持更佳

新的接口创建支持

对游戏杆滑块数据的更改

操作映射是支持输入设备方面的一个重大进步。操作映射简化了输入循环,降低了游戏中对自定义游戏驱动程序、自定义设备分析器和自定义配置用户接口的需要。操作映射也包括了默认的用户接口,使用户可以快速简便地配置设备。这种标准 API通过低级用户接口 API来实现,使应用程序可以在其自定义用户接口中直接访问设备映像。

DirectX 8.0中的 DirectInput设备支持新的属性,这些属性可以处理从国际化键盘上输入的本地化的键名。共添加了两个键盘属性:DIPROP_KEYNAME,用于检索本地化的键名;DIPROP_SCANCODE,用于检索扫描码。这些特性对于大多数在全世界发布的基于 DirectInput的应用程序非常有用。

DirectInput对象现在通过 IDirectInput8接口来表示。新的帮助器函数 DirectInput8Create可创建对象并检索此接口。IDirectInput8具有一个新 CLSID,并且不能通过对 CLSID_DirectInput类对象的接口调用 QueryInterface来获取,这一点与以前的 DirectX版本有所不同。

游戏杆滑块数据在以前的 DirectX版本中分配到 DIJOYSTATE或 DIJOYSTATE2结构的 Z轴,现在则位于这些结构的 rglSlider数组中。尽管这种变化会导致对现有代码的必要调整,但它终究更容易理解。

DirectX 8.0 DirectShow

此版本中的 DirectShow也进行了大幅度修改。DirectX 8.0中添加的部分新特性包括:

新的过滤图形特性

Windows Media™格式支持

视频编辑支持

新的 DVD支持

新的 MPEG-2传输和程序流支持

对广播驱动程序体系结构的支持

DirectX媒体对象

过滤图形管理器支持一些新的特性,包括动态图形生成和实时来源合成。使用动态图形生成,您现在可以在图形运行过程中对过滤图形进行修改。而以前,要添加或删除过滤器,应用程序必须停止该图形,因而打断数据流。DirectShow现在还支持实时来源合成——例如,可以将实时音频流与实时视频流合成。

两个新的过滤器使 DirectShow应用程序可以读取或写入 Microsoft Windows Media格式的文件。ASF Reader过滤器用于读取和分析 Windows Media格式的文件;ASF File Writer过滤器用于写入 Windows Media格式的文件,并能够执行必要的复合和压缩操作。DirectShow和 Windows Media SDK现在提供了完整的解决方案,用于编写应用程序来创建和播放 Windows Media格式流。

新的 DirectShow编辑服务(DES) API支持视频编辑。DES建立在核心的 DirectShow体系结构之上,提供了一组专门为操作视频编辑工程而设计的接口。DirectShow的框架更适合于创建视频编辑应用程序,作为应用程序开发人员,您将从中获益匪浅。DES取代了剪切表,同时剪切表将不再受到支持。

两个新的接口 IDVDControl2和 IDVDInfo2极大地扩展了 DVD导航器的功能。DVD导航器现在实现了完整的 DVD Annex-J命令集,既可以播放卡拉 OK,也可以播放影碟。新的 MSWebDVD ActiveX®控件使这项功能可在基于脚本的应用程序中使用。

新的过滤器 MPEG-2 Demultiplexer提供了在推模式下(从实时来源接收数据)对 MPEG-2传输流和程序流的支持。该过滤器与过滤图形中的新实时来源合成支持配合,可以提供优异的 MPEG-2增强支持。

Microsoft广播驱动程序体系结构(BDA)是新一代数/模电视调制设备的规范。在 DirectX 8.0中,DirectShow通过一组新的内核模式设备过滤器和“BDA调制模型”来支持 BDA兼容设备。“BDA调制模型”是一组对象的集合,提供了对各种类型的数字和模拟网络进行调制的方法。

DirectX媒体对象(DMO)提供了编写数据流组件的新方法。与 DirectShow过滤器相似,DMO接受输入数据,并将其用于生成输出数据。但是,DMO API比相应的 DirectShow API简单得多。因此,DMO比 DirectShow过滤器更容易创建、测试和使用。DMO与 DirectShow完全兼容。只要您需要使用 DirectShow提供的服务,例如图形同步、智能连接、数据流的自动处理和线程管理,您都可以使用 DMO。但是,DMO不需要使用过滤图形,因此应用程序无需 DirectShow就可以使用 DMO。

DirectX 8.0版本的 DirectShow包含更多的功能,但限于篇幅,这里就不再多说。请记着试用新增和改进的 DirectShow。

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!