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表示浮点)