C++ Ogre3d的Fmod包装器(soundManager)存在问题

C++ Ogre3d的Fmod包装器(soundManager)存在问题,c++,ogre3d,fmod,ogre,C++,Ogre3d,Fmod,Ogre,我对ogre3d引擎中fmod的Soundmanager(类)(包装器)有问题。 以下是代码,以防万一: 如果有人想要,我会上传它,但我现在不能上传超过2个超链接 音响经理 SoundManager.cpp 我有一个简单的代码来播放声音: ` SoundManager *soundManagerPtr = new SoundManager; soundManagerPtr->Initialize(); int mySound1 = soundManagerPtr-&

我对ogre3d引擎中fmod的Soundmanager(类)(包装器)有问题。 以下是代码,以防万一:

如果有人想要,我会上传它,但我现在不能上传超过2个超链接

音响经理

SoundManager.cpp

我有一个简单的代码来播放声音:

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

我认为SoundManager需要更新,这是通过
frameStarted()
完成的。这意味着您的声音要开始播放,您必须使用
root->startRendering()开始运行您的食人魔应用程序。你试过了吗?上面的代码要么不完整(在这种情况下,您确实有问题),要么您只需要启动要渲染的图形,从而调用SoundManager的frameStarted来启动SoundManager的更新。

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

Ogre似乎没有使用异常,而是使用错误代码。也许你可以看看是否记录了错误?@Polybos:Ogre确实使用异常。但可能是SoundManager没有。我还没有看过CPP文件。@ViteFalcon我看过SoundManager,但它没有。我投票结束这个问题,因为。没有这些链接,问题就不清楚了。谢谢你的回复,这是我的问题。我删除了删除soundManagerPtr;线路正常,一切正常。我只需要把它放在析构函数的其他地方。。。应该可以:)