Ogre中使用FMOD作为声音引擎(一)

来源:互联网 发布:广电网络十大股东 编辑:程序博客网 时间:2024/04/27 17:25

准备工作:

1.写一个能正确运行的OGRE程序,越简单越好。我采用的是BaseApplication。

2.下载FMOD声音引擎并安装,下载版本为FMOD Ex Programmers API,当前稳定版为4.38.01。

3.下载官网上讲OGRE和FMOD相结合的SoundManager例子。

4.给程序添加相应的文件,在FMOD安装路径下,如D:\Program Files\FMOD SoundSystem\FMOD Programmers API Windows\api,inc文件夹下有所需要的fmod.h,fmod.hpp,fmod_codec.h,fmod_dsp.h,fmod_erros.h,fmod_memoryinfo.h,fmod_output.h。还有例子的文件SoundManager.h和SoundManager.cpp。可以将这些文件放到一个指定的文件夹中,如FMOD,然后包含该文件夹路径。

5. 在项目lib文件夹中放入fmodex_vc.lib,在FMOD安装路径下的lib文件夹中。添加完之后在项目属性→配置→链接器→输入一栏,添加该文件。

6. 添加相应的链接库fmodex.dll和fmodexL.dll到Ogre目标文件生成文件夹release。

7. 打开resource.cfg文件,添加声音文件所在文件夹,如FileSystem=../media/Sound。

8. 由于SoundManager这个例子写的比较早,函数有更新,如

result = system->setFileSystem(&fmodFileOpenCallback, &fmodFileCloseCallback, &fmodFileReadCallback, &fmodFileSeekCallback, 2048);
旧的版本接收5个参数,编译提示错误,可按照fmod.hpp中新的函数定义将其修改为:

result = system->setFileSystem(&fmodFileOpenCallback, &fmodFileCloseCallback, &fmodFileReadCallback,                        &fmodFileSeekCallback, &fmodFileAsyncReadCallback, &fmodFileAsyncCancelCallback, 2048);
并参照fmod.h文件中函数声明,在SoundManager.cpp添加函数定义,如下所示:

FMOD_RESULT SoundManager::fmodFileAsyncReadCallback(FMOD_ASYNCREADINFO *info, void *userdata){   return FMOD_OK;}FMOD_RESULT SoundManager::fmodFileAsyncCancelCallback(void *handle, void *userdata){   return FMOD_OK;}
例子中节点获取位置函数为

node->getWorldPosition();
而OGRE 1.7版中函数定义为

node->getPosition();
以上就是所需要的准备工作,编译时应该不会再出现错误,下一篇文章将介绍一个使用的例子。

本文参考的是归海攸的新浪博客。


2011-12-18 Update:

在第7步修改资源文件夹的时候,要注意资源组的名称,默认的是General。所以要将FileSystem=../media/Sound添加到[General]下,添加到[Popular]名下也会出现找不到文件的错误。

如果还是没有声音,请查看Ogre.log文件,一般会有相应的出错提示。


原创粉丝点击