1

我正在开发一个 iOS 游戏,我们在启动时创建一个 OpenAL 上下文,该上下文在应用程序的整个生命周期中都存在。我们分配了一个 OpenAL 资源池。每次加载地图时,声音效果 (.wav) 都会加载到 OpenAL 缓冲区中,然后我们在播放它们时寻找可用的源。唯一被加载/卸载的是缓冲区本身。

运行一段时间后,一些声音在调用 alPlaySource() 时停止工作。调用 alGetError() 返回 -1?在 alPlaySource() 调用之前,alGetError() 返回 0。

4

2 回答 2

2

这可能是由于 iOS 将并发播放源的数量限制为 32 个。

另请参阅:iPhone 上 OpenAL 声音缓冲区的最大数量

于 2012-07-06T15:48:52.617 回答
0

我认为这是一个非常微妙的内存泄漏,导致了类似上面的一些奇怪的效果。该代码基于一些示例代码,即已知存在错误且不应使用的 SoundEngine。

我们最终切换到 FMOD。

于 2012-12-12T07:01:20.637 回答