网站大量收购闲置独家精品文档,联系QQ:2885784924

专题10游戏音乐与音效.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
抛砖引玉 如果您在玩一种以跳舞为主的游戏时,您只能看到屏幕上那些上下左右箭头一直在往上跑,但是却不能听到任何的声音,这时,你只能看着那些箭头猛踩踏板,而不能跟着音乐的节拍起舞,那么游戏玩起来还会觉得有趣吗? 一个好的游戏,除了有真实而具有震撼力的游戏画面之外,游戏的音乐与音效也是相当重要的部分。像仙剑奇侠传的中国古典音乐,暗黑破坏神的欧美风格的音乐,都给玩家留下了深刻的印象。另外,在很多3D射击游戏中,音效的处理也是相当重要的一个工作,程序员往往需要设计一个真实的3D音效,让玩家根据音效来判断所处的环境。 麻雀虽小,五脏俱全 DirectSound简介 声音的播放过程 DirectSound的编程步骤 3D音效的实现 DirectSound简介 DirectSound是DirectX Audio的一个较底层的部件,提供了丰富的接口函数,实现.wav格式的波形声音数据的播放控制。 与一般的Windows API提供的声音播放函数不同, DirectSound可实现多个声音的混合播放,便于在游戏的背景声音下实现各种角色发出声音。 DirectSound可充分使用声卡的内存资源,同时也提供了3D声效算法,模拟出真实的3D立体声。 声音的播放过程 声音的播放过程 主缓冲区:可以看做是一个DirectSound,是用来播放声音、产生混音效果的区域,它有一个预设的播放格式(8bit、22kHz),而声音文件在播放时便按照这种格式输出。主缓冲区在建立DirectSound对象时自动生成,不过如果需要比默认值更好的播放品质,就必须建立主缓冲区并设定其播放的格式,并且在设定协调级别时,标志位必须设定为DSSCL_PRIORITY或 DSSCL_EXCLUSIVE。 次缓冲区:存储播放声音的文件,可以建立多个次缓冲区来存放多个要播放的声音文件。 DirectSound的编程步骤 创建DirectSound对象 设置设备的协调级别 建立主缓冲区 建立次缓冲区 装入声音数据到次缓冲区 声音的播放与控制 创建DirectSound对象 创建一个代表声卡的IDirectSound8对象: 设置设备的协调级别 在建立了IDirectSound8对象之后,需要设置声卡设备的协调级别,告诉Windows使用硬件的权限,其他应用软件与游戏如何共享声卡设备。 dwLevel有如下几个取值: DSSCL_EXCLUSIVE :对于DirectX8.0以上版本,此标志与DSSCL_PRIORITY 具有相同的作用。对于以前的版本,此标志设置声卡设备为当前程序独占。 DSSCL_NORMAL :正常模式,其他程序可共享设备。此标志下,主缓冲区的播放格式不允许修改。 DSSCL_PRIORITY :具有优先设置DirectSound设备的权限。如:可调用SetFormat 函数设置主次缓冲区的播放格式。 DSSCL_WRITEPRIMARY :可写主缓冲区,此时次缓冲区就不可进行播放处理,即不能将次缓冲区的数据送进混声器,再输出到主缓冲区上。 建立主缓冲区 CreateSoundBuffer函数原型: 建立次缓冲区 次缓冲区用来装入实际的声音数据,因此,必须根据实际的声音文件大小,创建一个相应大小的次缓冲区。 .wav文件依据称为RIFF的资源互换文件格式来存放声音数据。文件头包括3个块,分别是RIFF块、fmt块和data块。 每个块由块名称、块的大小以及块的数据构成。 为了读取.wav文件的声音格式数据,并将实际声音数据装入次缓冲区,定义如下的一个对应于.wav文件头的结构体sWaveHeader。 读取.wav文件的声音格式数据: 取得文件的声音属性信息后,就可以进行次缓冲区的创建。方法大体上与主缓冲区的创建差不多,只是一些参数的设置需要做出修改。 首先,次缓冲区需要根据.wav文件头的数据,填写一个WAVEFORMATEX结构体的信息,以反映声音数据的基本属性,如下所示: 接下来,填充缓冲区描述结构体信息,提供音量控制、声音数据大小和格式等说明,并将前面的waveFormat声音格式变量设置进去。 最后,调用IDirectSound8接口的CreateSoundBuffer函数,创建一个IDirectSoundBuffer对象,这个对象已被IDirectSoundBuffer8扩充,并提供了一些新的函数。一般需要转换为IDirectSoundBuffer8对象,再加以使用。 为此,利用IDirectSoundBuffer接口的QueryInterface函数,查找返回IDirectSoundBuffer8接口对象, 装入声音数据到次缓冲区 取得次缓冲区后,就可以将.wav文件中的实际声音数据加载到次缓冲区进行播放。为此,先

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档