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

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

ID:57153467

大小:245.00 KB

页数:32页

时间:2020-08-02

专题10游戏音乐与音效.ppt_第1页
专题10游戏音乐与音效.ppt_第2页
专题10游戏音乐与音效.ppt_第3页
专题10游戏音乐与音效.ppt_第4页
专题10游戏音乐与音效.ppt_第5页
资源描述:

《专题10游戏音乐与音效.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、专题10游戏音乐与音效多媒体抛砖引玉如果您在玩一种以跳舞为主的游戏时,您只能看到屏幕上那些上下左右箭头一直在往上跑,但是却不能听到任何的声音,这时,你只能看着那些箭头猛踩踏板,而不能跟着音乐的节拍起舞,那么游戏玩起来还会觉得有趣吗?一个好的游戏,除了有真实而具有震撼力的游戏画面之外,游戏的音乐与音效也是相当重要的部分。像仙剑奇侠传的中国古典音乐,暗黑破坏神的欧美风格的音乐,都给玩家留下了深刻的印象。另外,在很多3D射击游戏中,音效的处理也是相当重要的一个工作,程序员往往需要设计一个真实的3D音效,让玩家根据音效来判断所处的

2、环境。DirectSound简介声音的播放过程DirectSound的编程步骤3D音效的实现DirectSound简介DirectSound是DirectXAudio的一个较底层的部件,提供了丰富的接口函数,实现.wav格式的波形声音数据的播放控制。与一般的WindowsAPI提供的声音播放函数不同,DirectSound可实现多个声音的混合播放,便于在游戏的背景声音下实现各种角色发出声音。DirectSound可充分使用声卡的内存资源,同时也提供了3D声效算法,模拟出真实的3D立体声。次缓冲区1次缓冲区2次缓冲区3混声器

3、(混频器)主缓冲区主缓冲区和次缓冲区声卡或系统内存声卡内存声音的播放过程:若干声音文件数据,装入相应的次缓冲区中。次缓冲区位于声卡或系统内存中,需要事先进行申请。所申请的次缓冲区大小,一般为对应的声音文件大小。将次缓冲区的声音数据输出到混声器进行混频处理,输出数字化的声音数据到主缓冲区。主缓冲区中的声音数据,转换为模拟信号,送入扬声器中进行播放。声音的播放过程声音的播放过程主缓冲区:可以看做是一个DirectSound,是用来播放声音、产生混音效果的区域,它有一个预设的播放格式(8bit、22kHz),而声音文件在播放时便

4、按照这种格式输出。主缓冲区在建立DirectSound对象时自动生成,不过如果需要比默认值更好的播放品质,就必须建立主缓冲区并设定其播放的格式,并且在设定协调级别时,标志位必须设定为DSSCL_PRIORITY或DSSCL_EXCLUSIVE。次缓冲区:存储播放声音的文件,可以建立多个次缓冲区来存放多个要播放的声音文件。DirectSound的编程步骤创建DirectSound对象设置设备的协调级别建立主缓冲区建立次缓冲区装入声音数据到次缓冲区声音的播放与控制创建DirectSound对象创建一个代表声卡的IDirectS

5、ound8对象:HRESULTDirectSoundCreate8(//声卡设备全局标志,一般为NULL,表示默认的声卡LPCGUIDlpcGuidDevice,//返回的IDirectSound8接口对象指针LPDIRECTSOUND8*ppDS8,LPUNKNOWNpUnkOuter//必须为NULL);if(FAILED(DirectSoundCreate8(NULL,&m_pDirectSound,NULL)))returnfalse;设置设备的协调级别在建立了IDirectSound8对象之后,需要设置声卡设备的

6、协调级别,告诉Windows使用硬件的权限,其他应用软件与游戏如何共享声卡设备。HRESULTSetCooperativeLevel(HWNDhwnd,//窗口句柄DWORDdwLevel//协调级别);if(FAILED(m_pDirectSound->SetCooperativeLevel(hwnd,dwCoopLevel)))returnfalse;dwLevel有如下几个取值:DSSCL_EXCLUSIVE:对于DirectX8.0以上版本,此标志与DSSCL_PRIORITY具有相同的作用。对于以前的版本,此标志

7、设置声卡设备为当前程序独占。DSSCL_NORMAL:正常模式,其他程序可共享设备。此标志下,主缓冲区的播放格式不允许修改。DSSCL_PRIORITY:具有优先设置DirectSound设备的权限。如:可调用SetFormat函数设置主次缓冲区的播放格式。DSSCL_WRITEPRIMARY:可写主缓冲区,此时次缓冲区就不可进行播放处理,即不能将次缓冲区的数据送进混声器,再输出到主缓冲区上。建立主缓冲区DSBUFFERDESCbufferDesc;ZeroMemory(&bufferDesc,sizeof(DSBUFFE

8、RDESC));bufferDesc.dwSize=sizeof(DSBUFFERDESC);//表示主缓冲区bufferDesc.dwFlags=DSBCAPS_PRIMARYBUFFER;bufferDesc.dwBufferBytes=0;//主缓冲区必须设置为0bufferDesc.lpwfxF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。