我正在开发一款iOS游戏,我们在启动时创建一个OpenAL上下文,它存在于应用程序的生命周期中。我们分配了一个OpenAL源池。每次加载地图时,声音效果(.wav)都会加载到OpenAL缓冲区中,然后我们会在播放它们时查找可用的来源。加载/卸载的唯一内容是缓冲区本身。
运行一段时间后,一些声音在调用alPlaySource()时停止工作。对alGetError()的调用返回-1?在alPlaySource()调用之前,alGetError()返回0。
答案 0 :(得分:2)
这可能是因为iOS将并发播放源的数量限制为32个。
答案 1 :(得分:0)
我认为这是一个极其微妙的内存泄漏,导致一些奇怪的效果,如上所述。代码基于一些示例代码,即SoundEngine,已知它是有缺陷的,不应该使用。
我们最终切换到FMOD。