如果说到(开源/专业/商业级)游戏音效处理库,我想大多数人应该知晓FMOD
本系列将关注音效处理库FMOD,本文仅作为一个简单的开始。
可能的话,我会将FMOD与其他开源库如OpenAL/IrrKlang/SDL等进行比较。
FMOD官网戳这里http://www.fmod.org/
我们先下载用于Windows平台的API(准确的说应该是SDK)
下载的是一个安装包,安装完成之后将相应路径(inc和lib)添加到工程中,
可能会是如下这样子
D:\FMOD\api\lowlevel\inc;D:\FMOD\api\studio\inc;D:\FMOD\api\fsbank\inc;$(IncludePath)
D:\FMOD\api\lowlevel\lib;D:\FMOD\api\studio\lib;D:\FMOD\api\fsbank\lib;$(LibraryPath)
下面是一个极简的实例
#include
#include
using namespace FMOD;
#pragma comment(lib,"fmod_vc.lib")
#pragma warning(disable:4996)
int main(void)
{
System* sys = NULL;
Sound* snd1 = NULL;
Sound* snd2 = NULL;
//Channel* ch1 = NULL;
//Channel* ch2 = NULL;
System_Create(&sys);
sys->init(10, FMOD_INIT_NORMAL, NULL);
sys->createStream("F:\\1.mp3", FMOD_DEFAULT, NULL, &snd1);
sys->createStream("F:\\2.mp3", FMOD_DEFAULT, NULL, &snd2);
//snd1->setMusicSpeed(2.0);
sys->playSound(snd1, NULL, false, NULL/*&ch1*/);
sys->playSound(snd2, NULL, false, NULL/*&ch2*/);
printf("Press a key (press \'Q/q\' to quit):");
char key = 0;
while (key!='q'||key!='Q')
{
/*
这个循环是为了让主函数永不结束(除非输入'Q'键)
这样FMOD就有机会继续执行任务(播放声音)
否则主函数会继续执行下一语句,直接退出
实际情况不应该是这样,这里仅仅作为一个示例罢了
实际情况应该是有一个前台任务在执行,在后台播放声音
*/
key = getchar();
}
}
这个示例中,同时播放两个音频1.mp3和2.mp3
代码很简单而且基本上见名知意,因此不做过多解释。
本文原创,博文地址
http://blog.csdn.net/fengyhack/article/details/43318575