Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发一个 iOS 游戏,我们在启动时创建一个 OpenAL 上下文,该上下文在应用程序的整个生命周期中都存在。我们分配了一个 OpenAL 资源池。每次加载地图时,声音效果 (.wav) 都会加载到 OpenAL 缓冲区中,然后我们在播放它们时寻找可用的源。唯一被加载/卸载的是缓冲区本身。
运行一段时间后,一些声音在调用 alPlaySource() 时停止工作。调用 alGetError() 返回 -1?在 alPlaySource() 调用之前,alGetError() 返回 0。
这可能是由于 iOS 将并发播放源的数量限制为 32 个。
另请参阅:iPhone 上 OpenAL 声音缓冲区的最大数量
我认为这是一个非常微妙的内存泄漏,导致了类似上面的一些奇怪的效果。该代码基于一些示例代码,即已知存在错误且不应使用的 SoundEngine。
我们最终切换到 FMOD。