我有太多的声音在OpenAL中播放,并且源的数量太多,有时我不得不停止一些源使用函数alSourceStop.but它经常产生断音(音爆),如何避免这种现象?
发布于 2017-11-22 03:35:18
注意:我不是一个iOS开发人员,只是展示了一个我会在任何其他平台上使用的解决方案。
你可以通过在你决定停止它之后的一段时间内逐渐改变源的增益来实现声音淡出。基本上,这就是你要做的
float t = now - stopTime;
float d = 10
if(t > d)
//Stop sound and delete source
else
alSourcef(source, AL_GAIN, originalGain * (1F - t / d)) 在这个伪代码中,originalGain是没有淡出的信源的增益
now - current time stopTime -决定停止信号源的时刻10 -淡出持续时间
通过使用这些值,您可以在完全增益和0之间线性插值,并防止破碎的声音效果。
https://stackoverflow.com/questions/47384635
复制相似问题