



文档简介
音频引擎现代游戏已经不能没有声音,所以音频引擎成为游戏引擎中不可缺少的一部分。下面介绍现代音频引擎-FMOD音频引擎是一个非常不错的音频引擎,其使用也比较简单,下面做一些简单介绍:在FMOD 中主要有三种对象:System、Sound 以及Channel。 System 管理与系统相关的工作,比如说从文件系统中读取声音檨本、设定输出的声卡(FMOD 可以同时控制多张声卡)、设定DSP buffer 大小、或是加载其它的plug-in 等。 Sound 则是一段声音的样本(sample),已经准备好送往声卡播出。 Sound 的内部格式可能有三种:无压缩、压缩或串流: o 无压缩 :最单纯的格式,直接把所有信息存在内存中,播放时几乎不需要CPU 资源,但也很吃内存。适合长度短、会重复播放许多次的音效。 o 压缩 :如果使用mp3 或ogg 之类的格式储存声音,可以把数据以尚未解压缩的方式先读进内存中,播放时再实时解压缩。这会需要多一点CPU资源,但可以减少记忆体用量,适合中等长度的声音。 o 串流 :在串流模式下,读取和播放是同时进行的,而内存中只会保留一小部分的样本,因此几乎不吃内存,但缺点是无法重复播放,必需重开档案或重新联机才能再播放一次。合很长的背景音乐或是由网路传输的声音。 Channel 代表正在播放声音的实体。对于Channel,你可以设定它的音量、播放的时间点、或是它在3D空间中的位置与速度。一个Channel只能播放一个Sound,但同一个Sound可以让由不同的Channel共享并同时播放。 FMOD 在使用上还满简单的,复杂的解压缩、混音、硬件控制等全部都被包装起来,因此游戏制作人员不需要再花额外的功夫处理。唯一不满的地方就是它的C+ interface实在设计不良,完全没有用到C+威力(连OOP都沾不上边),这也是为什么我都使用C interface的原因:两者并没有明显的不同。 一基本准备FMOD音频引擎作为个人非商业用途它是免费的,你可以从它们的主站上下载API等文件之后,你需要添加头文件和库文件,如下(C/C+): fmod.hfmodvc.lib fmod.dll 用于 Microsoft Visual C+,之后,只要添加fmod.h头文件后就可以使用了二开始使用初始化开始播放声音前,需要进行初始化,很简单:FSOUND_Init (44100, 32, 0);第一个参数为音乐输出的rate,单位为赫兹,在这里我们设置为44100.第二个参数为设置最大的通道数量第三个参数,可以指定一些标识,这里暂时置它为0基本常识FMOD到底支持什么样的音乐格式呢?歌曲,采样或是文件流(song,sample and stream)? FMOD将它细分在两个API中.他们分别是FSOUND和FMUSIC,所有的MUSIC如:mod、s3m、xm、it、mid、rmi、sgt、fsb 都通过FMUSIC 这个API来播放。FSOUND API是提供给压缩格式使用的,文件一般如:wav,mp3,ogg,raw等这些格式,你都可以通过别的软件进行互相转换。如果你要播放的音乐是像炮弹发射一样的短小的声音,那么你可以将这些声音转换成Sample,Samples将在播放前先解压到内存,而且可以多次播放;如果你要播放的是像背景音乐一样的较长的音乐,你可以得到这个音乐并转化为流,这将导致使用一些CPU和内存,因为文件从磁盘读取然后转成流需要一个过程。同时需要注意一点,在同一时间不能多次播放FMUSIC。不过小文件一般通过采样方式,它可以多次播放但占用内存大文件通过流方式,减少内存消耗播放音乐首先定义一个FMUSIC_MODULE类型变量来作为文件句柄然后就可以通过FMUSIC API来实现,如:FMUSIC_MODULE * handle;装入文件:handle =FMUSIC_LoadSong(data/canyon.mid);FMUSIC_PlaySong(handle);音量控制:FMUSIC_SetMasterVolume (handle, 255);后面的参数在0255之间,值越大声音越大暂停播放:FMUSIC_SetPaused (handle, true);重开始:FMUSIC_SetPaused (handle, false);循环播放:FMUSIC_SetLooping (handle, true); /暂时有点问题,待定FSOUND_SetLoopMode(0,FSOUND_LOOP_NORMAL);停止播放:FMUSIC_StopSong (handle);释放音频内存:FMUSIC_FreeSong (handle);举例:在example.cpp中增加#include Fmod.h#pragma comment(lib,fmodvc.lib)FMUSIC_MODULE *sound_9;void InitFmod(void)if(FSOUND_Init(44100,32,0)sound_9=FMUSIC_LoadSong(data/canyon.mid);void FreeFmod(void)if(sound_9!=NULL)FMUSIC_FreeSong(sound_9);在Example:Init()中增加:InitFmod();FMUSIC_SetMasterVolume (sound_9, 100);FMUSIC_PlaySong(sound_9);播放声音4.1 采样(Sample)方式先定义FSOUND_SAMPLE类型变量,然后就可以使用FSOUND系列函数来实现,如:装如文件:handle=FSOUND_Sample_Load (0,YourFileName,0,0,0);/除文件名外的参数用于多采样或其它等FSOUND_PlaySound (0,handle);设置音量:FSOUND_SetVolume (int channel, 255);暂听:FSOUND_SetPaused (handle, true);继续开始:FSOUND_SetPaused (handle, false);停止:FSOUND_StopSound (handle);释放:FSOUND_Sample_Free (handle);4.2 流(stream)方式先定义一个FSOUND_STREAM 类型变量,然后:装入文件:FSOUND_STREAM * F_API FSOUND_Stream_Open(const char *name_or_data,unsigned int mode,int offset,int length);handle= FSOUND_Stream_OpenFile (YourFil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人不吃饭的危害
- 电梯维保公司年终总结会
- 公司组织安全风险培训课件
- 青春社区运营工作总结
- 公司级安全教育培训课件
- 事故警示教育和安全培训课件
- 《蝶恋花答李淑一》课件
- 《蜘蛛开店》课件
- 事故安全培训建议课件
- 《艾滋病小斗士》课件
- 2025邮储银行校招笔试真题及答案
- 2025年甘肃省天水市甘谷县选聘大学生村文书55人考试参考题库及答案解析
- 2025年国家公务员考试法律基础知识复习讲义
- 农村产业融合发展示范园项目可行性研究报告
- d证科目一考试完整题库及答案
- 铝灰知识培训课件
- 旧窗户拆除安全合同7篇
- 学堂在线 运动与健康 章节测试答案
- 无人机作业安全知识培训课件
- 愿友谊地久天长课件
- 脾功能亢进诊疗规范内科学诊疗规范诊疗指南2023版
评论
0/150
提交评论