windows声音应用程序开发指南 张新宇 第1章 DirectX Audio之DirectSound

上传人:E**** 文档编号:89374744 上传时间:2019-05-24 格式:PPT 页数:164 大小:716KB
返回 下载 相关 举报
windows声音应用程序开发指南 张新宇 第1章  DirectX Audio之DirectSound_第1页
第1页 / 共164页
windows声音应用程序开发指南 张新宇 第1章  DirectX Audio之DirectSound_第2页
第2页 / 共164页
windows声音应用程序开发指南 张新宇 第1章  DirectX Audio之DirectSound_第3页
第3页 / 共164页
windows声音应用程序开发指南 张新宇 第1章  DirectX Audio之DirectSound_第4页
第4页 / 共164页
windows声音应用程序开发指南 张新宇 第1章  DirectX Audio之DirectSound_第5页
第5页 / 共164页
点击查看更多>>
资源描述

《windows声音应用程序开发指南 张新宇 第1章 DirectX Audio之DirectSound》由会员分享,可在线阅读,更多相关《windows声音应用程序开发指南 张新宇 第1章 DirectX Audio之DirectSound(164页珍藏版)》请在金锄头文库上搜索。

1、第1章 DirectX Audio之DirectSound,1.1 DirectX Audio介绍1,2,3,4 1.2 DirectSound介绍 1,5,6,7,8 1.3 DirectSound应用程序开发 5,6,7,8,9 1.4 本 章 小 结1,5,6,7,8,1.1 DirectX Audio介绍1,2,3,4,1.1.1 DirectX发展历程 现在从事DirectX开发的程序员恐怕对DirectX的历史并没有太多了解。也许程序员可能也并不关心其历史,因为这并不会影响程序员现在的工作。但是我仍想在这里用一点篇幅介绍一下DirectX的发展历程,让那些无论是正在进行或是准备进行

2、DirectX开发的朋友们知道DirectX是在什么样的背景下诞生的,它经历了什么,现在正处于什么阶段,以及其它相关背景知识。,1DirectX的诞生 众所周知,Windows 95是Microsoft在操作系统上的一个最重要的里程碑。DirectX有幸搭上了这趟列车,它是和Windows 95同时推出的,当时还不叫DirectX,而是称为Game SDK。我们可以认为Game SDK就是现在DirectX的前身。 从Game SDK的字面意思我们就能大概理解它的内容,说白了,Game SDK就是在Windows 95下运行的、提供给游戏软件开发商使用的“游戏软件开发包”(Games Soft

3、ware Development Kit)。,正是这种局面引起的困惑,才使Microsoft着手开发Game SDK。当时Game SDK的设计思想是: (1) Game SDK由许多速度很快、低层的库和API组成,这些库和API为游戏开发者提供最大限度的自由和对硬件的操作。 (2) Game SDK对硬件开发的支持,由原来游戏开发商转移到硬件制造商,即由对硬件最为熟悉的硬件制造商来完成对自己硬件的支持软件,并且将最先进的硬件技术为游戏开发商所知。,(3) 让游戏也成为真正的Windows应用程序,即支持多任务。你可以从一个游戏切换到同时运行的另一个应用程序,然后还可以返回该游戏。 (4) 要

4、有能超过或者达到DOS环境下所能达到的性能。在使用Game SDK的情况下,游戏开发者不必关心游戏要运行在哪个制造商的硬件上,因为Microsoft把这些特性都封装在了硬件驱动程序和一系列API中,当然很多是由硬件制造商完成的,达到了开发时的硬件独立性。,2DirectX的发展 DirectX的发展历程如图1-1所示。,图1-1 DirectX 的发展历程,1) DirectX 1.0 DirectX 1.0是Windows下第一个可以直接对硬件信息进行读取的程序接口,与早期的Game SDK相比有本质性的区别,可以令Windows下的图形处理速度与DOS媲美。 2) DirectX 2.0

5、在这一段时间内,刮起了强烈的3D加速旋风,然而当时的DirectX在这一领域还是空白的。当时市场上出现的高性能3D图形加速卡在当时的DirectX下只能发挥其性能的1/10。,3) DirectX 3.0 完整的Direct3D是随DirectX 3.0向公众发布的。当时的Direct3D被公布为“一个视频游戏开发平台,将成为进入视频游戏工业的驱动力”。 4) DirectX 5.0 从5.0版开始(没有DirectX 4.0),DirectX的多个部件按照应用目的被分为两大层次:DirectX Foundation层和DirectXMedia层。 DirectX Foundation层为开发

6、者提供一套“低级”API函数,以便应用程序能够充分利用3D图形加速芯片和声卡的各种高级特性。,DirectXMedia层则建立在DirectX Foundation层的基础之上,提供播放动画、播放多媒体数据流和交互控制等高级服务。它也由四个部件组成:DiectShow、DirectAnimation、Direct3DRetainedMode和DirectPlay。DirectXMedia使得应用程序只需使用一套API函数就能处理多种媒体数据,而不像以前那样,声音和图像要分别使用不同软件厂商开发的API函数。 另外,DirectXMedia提供一种统一的定时机制来处理多媒体事件,使得开发者可以灵

7、活地控制动画、视频和音频等数据的生成与同步播放。,5) DirectX 6.0 1998年推出的DirectX 6.0版本相对于5.0新增了DirectMusic部件。DirectMusic由三个子部件组成:DirectMusicCore、DirectMuiscInteractive和DirectMusicProducer。在这个新版本中Direct3D功能更强大,运行速度更快,并支持FlexibleVertex、多重材质及模板平面,程序得到大大优化。,6) DirectX 7.0 DirectX 7.0在图形功能方面创建的图形多边形数目比以前版本都要多,这使得计算机生成的数字世界的人物和物体

8、的表面更加平滑。DirectX 7.0提供高级3D加速支持,使得多边形的变化更快,它所产生的动画效果非常逼真。,7) DirectX 8.0 DirectX 8.0是Microsoft公司于2000年11月9日正式推出的一款DirectX的最新版本。它具有多项令人兴奋的功能特性。下面将对它的新增特性进行全面详细的介绍。 DirectX 8.0是Windows操作系统下的最新的多媒体系统链接库。通过DirectX 8.0,其它软件能够尽情发挥系统的效能,并且带给我们最棒的多媒体体验和震撼效果。,DirectX 8.0的诸多强大功能和特性可以带来游戏与视听多媒体方面更为强大的功能。它可以让游戏在3

9、D真彩模式下运行得更为流畅,在电脑上看VCD或者是欣赏音乐的时候能够看见更为绚丽的画面,也能够体验到环绕音乐的魅力。,1.1.2 DirectX Audio概述 从DirectX 6.1开始,DirectX Audio成为DirectMusic的一个扩展功能,而现在DirectX 8.0中把DirectSound和DirectMusic合并在一起统称为DirectX Audio,可谓意味深长。一方面,通过合并实现了更为统一的核心API,DirectSound API和DirectMusic API在某些方面可以互补,DirectMusic可以被当作一种高级音频API用于多种音频流。,在Dire

10、ctX 8.0中,DirectSound和DirectMusic这两个名字仍然会继续使用,但实际上DirectSound和DirectMusic之间的区别已经很小了。另一方面,通过加入大量的新特征和新机制,使控制更加灵活,功能更加完善和强大。,DirectX Audio的功能并不只是用于播放音乐,它能够充分调用硬件的加速功能、系统可下载功能以及3D特效环境来更好地营造出一个立体氛围的音乐环境。诸如在不同的游戏中会有各种各样的声音效果:脚步声从后面慢慢逼近,蜻蜓的嗡嗡声在你头边环绕,一辆火车从左边飞驰而来DirectX Audio能够让你感受到空间的声音效果,它能够制造出声音从你身边发出的幻觉效

11、果。,DirectX 8.0 Audio 为播放集成的音乐和声音效果提供了新的体系结构。尽管仍然使用名称DirectSound和DirectMusic,但在它们之间已经没有明显的区别。希望将来 DirectMusic API能够成为创建交互式声音效果的首选 API。,图1-2 DirectX 8.0 Audio体系结构,Creative公司的部分EAX混响技术也整合进了DirectX Audio体系中。很早Microsoft就已经得到了Creative公司的授权许可使用该公司EAX(环境音效扩展技术)声音技术中的一些声音特效。这些效果包括边缘处理、和声、环境回响等经由DirectSound和D

12、irectMusic被增加到了DirectX 8.0中。,1.1.3 DirectX Audio新特征 前面曾提到,在新的DirectX Audio体系结构中加入了不少新的特征,增加了控制的灵活性和功能的完善性。下面对这些新特征予以总结。 (1) WAV文件和基于消息的声音集成在一个播放机制中。WAV文件和资源现在可以通过 DirectMusic 加载器加载,并通过DirectMusic演奏器播放。应用程序不再需要分解WAV文件,并将其复制或流入 DirectSound 缓存。,DirectSound API并没有被丢弃,而仍然会得到支持,开发者仍然可以通过 DirectSound 缓存直接播

13、放WAV文件(见后面的DirectSound部分)。DirectSound 仍将是用于WAV文件捕获和全双工的API。 WAV文件和MIDI文件在处理的先后次序上享有同等的地位,并将采用同一机制对两者进行回放。由于DirectX Audio支持了DLS2标准,因此一些MIDI音乐中特有的音效处理也可以用在WAV文件上。,(2) “音轨”(Audio Track)模型更加灵活、强大。 在以前版本的 DirectMusic 中,演奏通道被映射到端口,同时每个端口将其输出发送到一个独自的 DirectSound 缓存。在新的模型下,段落中的声道被映射到音轨,控制声音数据从演奏器流向最终输出设备。,(

14、3) 可以对段落状态进行独立控制。 段落的每个播放实例都有自己的音轨,因此可以单独修改每个段落状态的音量、音质和音调等参数。 (4) DLS2合成。 DirectMusic合成器现在基于 DLS2标准,能够提供更高质量的声音合成。DLS2 合成器的新特性包括六级封装、语音分层、释放波形和额外的低频振荡器 (LFO,Low-Frequency Oscillators)。,(5) 特殊效果。 DirectX媒体对象(Media Objects)可与声音缓冲区连接在一起,以增加各种音效,诸如音乐回声、二级交互式3D音效(I3DL2,Interactive 3D Audio Level 2) 环境有关

15、的声音回声、扭曲等标准音效和由DirectX Audio提供的回声效果,以及第三方提供的音效等。 (6) 通过段落连接实现更强大的控制。 作曲家可以在段落中设置许多点,指定从何处开始播放段落,从而维护段落与时间标志之间的关系。主段落可以包含连接到其它段落的任意点。,(7) 实现了接近静音的通知类型。 演奏通知事件现在有一个新的通知类型,这个通知类型的常量标志为 DMUS_NOTIFICATION_MUSICALMOSTEND,它表示队列中的最后一个主段落即将结束。这样,就给应用程序一个机会来安排播放新的段落。 (8) 加强型MIDI控制器支持。 现在循环消息支持“已注册的参数数目”(RPN,R

16、egistered Parameter Number)和“未注册的参数数目”(NRPN,Nonregistered Parameter Number)控制器变化。,(9) 可实现段落无限次循环。 新的 DMUS_SEG_REPEAT_INFINITE 标志使得一个段落可以播放无限多次。 (10) 简化音乐波段的加载和卸载。 段落对象调用一个简单的方法加载和卸载音乐波段。 (11) 生成动态声轨数据。 对于声轨,新的配置和播放标记使得每次播放或循环播放某个段落时,都可以对声轨进行改写。例如,可以配置和弦声轨,使得每次播放该段落时,都建立新的和声进行。,(12) 音乐脚本。 先前版本中的音乐脚本(Audio Script)在DirectX 8.0中没有改动。音乐脚本使得设计者可以把游戏编程和事件音乐伴奏的插入分割开来,从而让设计者更好地进行游戏编程工作。 (13) 通过音轨实时控制。 应用程序可以单独设置各个音轨的配置,禁用播放和参数控制。音轨可以配置为根据时钟时间而不是音乐时间进行操作。,(14) 容器对象。 DirectMusic Producer使工程的所

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号