2

我对 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 论坛上询问,但还没有解决方案。

4

2 回答 2

2

我快速检查了 SoundManager 代码,似乎“PlaySound”函数调用了 FMOD 的“playSound”函数。在 FMOD 中“playSound”不是阻塞操作,它会在另一个线程中开始播放声音,然后返回。因此,由于您要立即删除声音管理器,它还没有机会播放任何内容。

于 2011-03-27T22:56:16.803 回答
0

我相信 SoundManager 需要更新,这是由frameStarted(). 这意味着你的声音开始播放你必须开始运行你的 Ogre 应用程序使用root->startRendering();. 你试过吗?上面的代码要么不完整(在这种情况下你确实有问题),要么你只需要通过启动要渲染的图形来启动 SoundManager 的更新,然后调用 SoundManager 的 frameStarted。

于 2011-03-27T22:40:41.810 回答