我对ogre3d引擎中的fmod的Soundmanager(类)(包装器)有问题。 以下是代码:
ISoundManager.h如果有人想要我上传它,但我现在无法上传超过2个超链接。
SoundManager.h http://codeviewer.org/view/code:18c9
SoundManager.cpp http://codeviewer.org/view/code:18ca
我有一个简单的代码片来播放声音:
` SoundManager *soundManagerPtr = new SoundManager;
soundManagerPtr->Initialize();
int mySound1 = soundManagerPtr->CreateStream(Ogre::String("boing.wav") );
int channel1 = 0;
soundManagerPtr->PlaySound(mySound1, headNode, &channel1);
delete soundManagerPtr;`
一切都很好,声音正在加载,但PlaySound()函数不会抛出任何错误,也不播放声音。我在ogre3d论坛上问过但还没有解决方案。
答案 0 :(得分:2)
我快速检查了SoundManager代码,看来“PlaySound”函数调用了FMODs“playSound”功能。在FMOD中“playSound”不是阻塞操作,它会在另一个线程中开始播放声音,然后返回。因此,由于您正在删除声音管理器,因此它还没有机会播放任何内容。
答案 1 :(得分:0)
我相信SoundManager需要更新,这由frameStarted()
完成。这意味着您的声音开始播放必须使用root->startRendering();
开始运行您的Ogre应用程序。你试过吗?上面的代码要么不完整(在这种情况下你确实遇到了问题),要么你只需通过启动图形渲染来启动SoundManager的更新,从而调用SoundManager的frameStarted。