我可以在给定时间只播放一次缓冲区吗?

时间:2010-05-03 23:35:05

标签: iphone audio openal

来自OpenAL文档:

  

基本的OpenAL对象是一个   监听器,源和缓冲区。   可以有很多   缓冲区,包含音频数据。   每个缓冲区可以连接到一个或   更多来源

我的问题是,我有一个声音文件,我需要每秒多次播放,同时。声音长达2秒。所以它会重叠。

我是否需要多个填充缓冲区(=内存中声音的多倍)?

如果我将一个缓冲区附加到多个源,我是否可以播放声音10次,重叠自身,内存中只有一个副本?或者我还需要在内存中处理10个声音副本吗?

1 个答案:

答案 0 :(得分:4)

你可以,缓冲区独立于,你可以通过调用alSourcePlay()将多个指向同一个缓冲区您播放而不是缓冲区

他们如何管理缓冲区,同时播放指向同一缓冲区的多个是blackbox to programmer,由openAL驱动程序管理。

你应该注意到openAL 缓冲区与内存中的音频数据不一样(总是),openAL buffer 是由openAL驱动程序依赖的实现,数据是缓冲区可以位于系统内存或声卡内存中。因此,当您调用alBuferData时,您正在将内存中的音频数据复制到openAL托管内存,之后没有从openAL缓冲区到音频数据的引用或指针,您可以在不影响openAL缓冲区的情况下操作音频数据。 / p>