DirectX—昨天 今天 明天[2]



2、DirectSound、DirectMusic和DirectX Audio

在DirectX中DirectSound和DirectMusic可以统称DirectX Audio个好游戏是不能没有声音DirectX Audio负责了游戏中音效控制不仅仅是游戏很多需要高质量音效地方都有它们影子我们经常在些播放软件Software设置面板中看见是否使用DirectSound支持选项

DirectX Audio做不仅仅只是简单地对声音回放它提供了个完整系统能够利用硬件加速功能动态地操纵控制音轨和声道(soundtrack)

如果你想在你中使用DirectMusic和DirectSound你就能够获得以下功能:
•读入且播放例如MIDI, WAVE, 以及DirectMusic Producer run time等格式声音文件
•同时对多个声音资源进行混音播放
•对播放声轨进行高精度时间控制
•可以动态地变更播放节拍和节奏甚至实时地动态控制些MIDI事件
•使用DLS合成器(DirectX Audio自带波表合成器)就可以确保在区别计算机上听到相同MIDI声音能够播放不受类别限制各试各样乐器声音使用DirectX Audio你甚至还能够创造出独无 2乐器声音类别并将它发布
•把声音做3D定位创造出3D环境声响
•可以非常容易地实现例如变调、回响以及别声音特效
•能使用数量超过16个MIDI音轨DirectX Audio突破了从前只能使用16个MIDI音轨限制它把同时回放大数量音轨变成为了可能而这个数量仅仅只是受到了你声音硬件合成器能力限制
•播放位于区别Audiopaths上声音段(segments)效果就可以各自实现在每段声音里
•实现在区别端口(port)的间捕捉MIDI数据及流(\"thru\")
•从话筒或者别输入设备中捕捉声音数据

如果使用DirectMusic Producer或类似源文件你还能够做到
•在声音回放期间能够做更多控制例如动态选择区别音效变化器(variations)或切换区别和旋级数
•精确地定时重放音乐
•利用变化器(variations)播放声音(wave)
•Audiopaths利用Map performance channels可以使相同声音段在channel区别部分产生完全区别播放效果
•动态地创造出全新音乐片段这不需要专门算法库仅仅需要你作曲能力而已
•动态地将存在音乐片段进行组合过渡
•在声音回放时端可以获得存在于特殊节拍点各类声音特效信息

这些功能适用于常常只使用主音频流(stream)如果只要实现些基本简单功能开发者将DirectX Audio设计得非常易用很适合初学者DirectX Audio也是可扩展可以利用虚(virtual)继承设计出新例如:

•支持新声音格式文件
•音轨可以包含各类数据
•处理信息工具 - 比方说可以截取记录实现变换或者将要显示歌词置入声音片段文件
•自定义音序器(sequencer)
•自定义合成器(synthesizer)
•效果过滤器(Effects filters)

值得在DirectX9中加入了DirectMP3和DirectCD两个功能模块它们使得主流音频播放也能够通过DirectX和其更好地结合在

3、 DirectInput

在DirectX这个大家族中DirectInput掌管着“行为控制权”和Winodows事件响应相比DirectInput可以直接访问硬件直接从输入缓冲区内检索数据从而获得比响应Windows消息更快速度此外DirectInput也对力反馈游戏杆(Force Feedback)提供了良好支持

4、 DirectPlay

网络底层开发向来是令开发者头痛件事而DirectPlay似乎兼顾了速度和易用性两个方面在网络游戏这样类对速度和效率要求较高软件Software来说针对游戏优化设计DirectPlay显然是个比较好选择DirectPlay提供了个额外使你游戏和网络底层相隔并且游戏可以非常简单地使用DirectPlay API并使用DirectPlay管理网络通讯DirectPlay提供特性使多人游戏在开发中得到了很多简化其中包括:
• 创建和管理点对点、客户/服务会话(Session)
• 在个会话中管理用户(User)和组(Group)
• 管理在区别网络平台上进行会话成员的间发送消息
• 使游戏在大厅(Lobby)中互动
• 使用户可以进行语音交互

5、 DirectShow

作为DirectX中重要成员DirectShow提供了Windows平台下高质量媒体捕获和回放能力支持很多格式:ASF、MPG、AVI、MP3和WAVDirectShow支持使用WDM设备或老式视频设备进行视频捕获当有硬件支持环境下它会在使用视频或音频时自动选择是否使用硬件加速

DirectShow简化了媒体回放、格式转换和捕获任务同时当应用需要自定义底层流媒体解决方案时它也提供直接流访问控制功能

你可以用DirectShow编写DVD播放器、视频编缉、AVI到 ASF转换器、MP3播放器和数字视频捕获等等

3、.NET架构挑战-----Managed DirectX

不知大家发现没有安装了DirectX9 SDK后它文档里似乎悄悄多了个不小板块那就是Managed DirectX那么这个神秘家伙究竟是干什么呢?

.NET Framework发表打响了Microsoft .NET战略ASP.NET、Web Service等词也伴随着.NET 技术普及几乎变得家喻户晓大家已经知道DirectX是基于COM技术而COM技术主要是为本地机服务在本地机上DirectX可以尽量把硬件性能发挥到极限但是它在.NET网络时代是不是就无法施展它原有威力呢?答案肯定是“否”现在DirectX已经成为Windows核心API部分而Microsoft表示不会再提供更多Win32API今后Windows API可能将全部集成到.NET Framework中去那么DirectX到哪里去了呢?原来它早就已经改头换面和.NET Framework达成了“默契”这也就是Managed DirectX由来

Managed DirectX 实质上是对DirectX进行了个轻量级封装Microsoft在2003年10月初发布了Microsoft DirectX 9.0 SDK Update (Summer 2003),其中就着重改进了Managed DirectX部分方面使它能和.NET Framework紧密集成可供.NET 平台下其他语言 (如C#);另方面对DirectX编写进行了进步简化使得DirectX向RAD开发方向又迈进了大步毕竟ASP.NET、WinForm这些东西是在网络上运行如此我们可以试想将来可以在网页上看到有硬件加速支持绚丽3D动画实时演示这将是多么令人激动事啊!



4、开发环境支持和配置

在进行DirectX开发的前我们需要下载并安装相应版本DirectX SDK这个可以从Microsoft官方站点上免费获得最新DirectX 9.0 SDK Update(Summer 2003)大约是185MB相关还有DirectX9 SDK for Pocket PC 、DirectX9 Meltdown、DirectX9 SDK Extras等下载相关页面是http://msdn.microsoft.com/directx

下载了相应SDK后我们就可以开始利用它进行DirectX开发了

1、Microsoft Visual Studio 6.0/.NET/.NET 2003中配置
DirectX是Microsoft产品所以在Visual Studio系列中DirectX开发所需配置显得格外简单下面以最新Microsoft Visual Studio .NET 2003为例介绍说明

步:配置Include和Library目录


设置包含文件(Include)


设置库文件(Lib)

第 2步:添加链接所需库文件
如下图所示菜单操作添加相应库文件如dxguid.lib、d3d9.lib、d3dx9.lib等区别需要区别库文件但是dxguid.lib是必须要包含

其他办法:在设置了Include和Library文件路径后我们还可以使用在首部加入以下语句变相实现相应库文件链接

#pragma comment (lib,\"dxguid.lib\")

#pragma comment (lib,\"d3d9.lib\")

........

2、Borland C Builder 5/6/X中配置
很不幸自DirectX8.0 SDK起Microsoft就不再提供Borland编译器支持库文件Borland C Builder是款非常优秀RAD开发工具它在开发桌面应用便捷性令人叹为观止那么是不是就无法在C Builder中进行DirectX开发了呢?这似乎有点可惜但是Borland自有它高招既然标准DirectX SDK中不提供Borland版库文件那我就自己做!思路方法如下:

首先在CBuilder安装目录下bin子目录中我们可以找到个名为implib.exe文件;其次打开 MSDOS命令行窗口输入:implib [库文件名] [源DLL文件名]即可成成相应链接所需库文件

例如:从d3d9.dll中导出编译所需d3d9.lib并将生成d3d9.lib保存到C盘根目录下

implib c:\\d3d9.lib c:\\windows\\system32\\d3d9.dll

这样我们就得到了所需lib文件然后将它和原来SDK中所提供.h文件混合使用就可以在C Builder中进行梦寐以求DirectX开发了此思路方法在C Builder X和DirectX9 SDK Update(Summer 2003)环境下测试通过(在上述环境下似乎不需要dxguid.lib编译也能通过)

5、DirectX未来

DirectX基本模型架构:


DirectX9 DirectX10

在现有DirectX 8和DirectX 9中可编程顶点着色和像素渲染是分开来两个单元也就是说GPU生产厂家需要在GPU中划分两个区域来存放Vertex Shader阵列和Pixel Shader贴图流水线那么能否把这两者整合在起呢?可以!那就是DirectX 10!如图所示预计DirectX10中Vertex Shader和Pixel Shader将会合并成个Integrated Shader单元

5、结束语

正如本文所展现历代DirectX发展史及其步步改进足迹DirectX确在媒体技术上占有至关重要地位它是代又代媒体技术发展催化剂可以预见未来DirectX将给我们带来前所未有、更加震撼视听冲击让我们拭目以待!

Tags: 

延伸阅读

最新评论

发表评论