FMOD 用完了频道,FMOD_CHANNEL_FREE 似乎不起作用

Posted

技术标签:

【中文标题】FMOD 用完了频道,FMOD_CHANNEL_FREE 似乎不起作用【英文标题】:FMOD runs out of channels, FMOD_CHANNEL_FREE seems to not to work 【发布时间】:2011-06-02 11:47:31 【问题描述】:

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

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 时,它会停留在那里,在它仍在播放时停止最后一个声音以播放新的声音。

当声音停止播放时,我是否必须删除它们?如何?我觉得我缺少一些基本的东西

谢谢!

马克

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。结果我忘了每帧都给system->update()打电话。一旦我把它放进去,它就很好用了。

【讨论】:

【参考方案2】:

听起来频道仍在播放(但无声),你能检查一下 Channel::isPlaying 看看它们是否还在播放吗?

如果没有帮助,也许可以发布更多代码。

【讨论】:

【参考方案3】:

你能验证你初始化 fmod 系统有超过一个最大通道吗? 尝试使用以下代码来初始化您的 fmod 系统:

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

或者你忘记打电话了

    System->Update();

【讨论】:

以上是关于FMOD 用完了频道,FMOD_CHANNEL_FREE 似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 中使用 FMOD 为音频添加效果并保存新音频

Sound.readData 和 Sound.lock 之间 FMOD 的区别?

fmod:如何使用 FMOD_OUTPUTTYPE_WAVWRITER_NRT?

Codeforces Round #237 (Div. 2) / 404B Marathon (fmod或long long表示浮点)

FMOD - 同时播放多个声音?

不能在 iOS 上包含 FMOD