FMOD通道不足,使用FMOD_CHANNEL_FREE无效。

4

我正在使用以下代码初始化FMOD并播放1秒钟的短音频(样本),其中使用32个通道:

result = system->init(32, FMOD_INIT_NORMAL , NULL);
// here I load the sounds //
result = system->playSound(FMOD_CHANNEL_FREE, grid[_sound], false, &channel);

它的工作方式符合预期,声音重叠,但现在我意识到当我播放32个样本(不是同时),只能播放一个声音。看起来FMOD_CHANNEL_FREE像是一个递增计数器,当它达到32时,它会停在那里,停止仍在播放的最后一个声音以播放新的声音。
我必须在声音停止播放时将其删除吗?如何删除?我觉得我缺少了一些基础知识。
谢谢!
Marc
3个回答

4

我曾经遇到同样的问题。原来是我忘记在每一帧调用system->update()。一旦加上这个,一切就正常了。


0

你能确认一下是否使用了多个最大通道来初始化fmod系统吗? 尝试使用以下代码来初始化你的fmod系统:

    System->init(32, FMOD_INIT_NORMAL, 0);

或者你忘记调用

    System->Update();

0

听起来好像频道还在播放(但没有声音),你可以检查一下Channel::isPlaying,看看它们是否仍在运行?

如果这不起作用,也许可以发一些更多的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接