我有一个性能密集型 iPhone 游戏,我想为其添加声音。似乎有大约三个主要选择:(1)AVAudioPlayer
,(2)音频队列和(3)OpenAL。我不想仅仅为了播放示例而编写几页低级代码,因此我想使用 AVAudioPlayer
。问题在于,它似乎会影响性能 - 我使用 CFAbsoluteTimeGetCurrent
进行了简单的测量,并且 play
消息似乎需要 9 到 30 毫秒才能完成。考虑到 25 ms == 40 fps,这真是太糟糕了。
当然,有 prepareToPlay
方法可以加快速度。这就是为什么我编写了一个简单的类,它保留了几个 AVAudioPlayer
供其使用,预先准备好它们,然后使用准备好的播放器播放示例。没有雪茄,仍然需要我上面提到的 ~20 毫秒。
这样的性能对于游戏来说是无法使用的,那么在iPhone上用什么来播放性能还不错的声音呢?我对 AVAudioPlayer
做错了什么吗?您使用音频队列播放声音吗? (在 2.2 发布之前,我已经写过一些类似于 AVAudioPlayer 的东西,我很乐意保留这种经历。)你使用 OpenAL 吗?如果是,是否有一种简单的方法来使用 OpenAL 播放声音,或者您必须编写几页代码?
更新:是的,使用 OpenAL 播放声音是 fairly simple .
<小时/>最佳答案
AVAudioPlayer 对于游戏音频来说非常边缘化。通过调整其中一个示例来解决 AudioQueue 或 OpenAL 绝对是一种可行的方法。这样延迟就更容易控制。
关于iphone - iPhone 游戏中用什么来播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986983/