我刚刚开始使用OpenAL,到目前为止一切似乎都很好,我已经尝试了一些教程,设法加载并播放一些声音,但在我开始实现更复杂的东西之前,我想确保我理解如何OpenAL工作。
基本上我的目标是建立一个简单的系统,在这里我可以发出命令,例如“玩这个和这个,停止播放”,而不必关心任何事情。假设程序必须处理150个声音,当解压缩到PCM时总共250 MB,并且所有声音在开始时都可用。
在OpenAL中,有源和缓冲区。我知道我应该有一个源池并重用它们。我不理解,无法找到任何地方,是缓冲区实际代表什么。它们是有限的资源还是只是常规存储,可能转换为可以轻松播放但仍在常规存储器中的格式?
在我描述的情况下,我应该:
如果A,将数据流式传输到小缓冲区然后排队的目的是什么?
如果B,有多少缓冲区和多少数据是安全的?我还应该制作一个缓冲池并重用它们吗?
另外,我还有一个关于缓冲区排队的问题。我知道我可以设置源的缓冲区(作为属性)或排队(两者都是错误的吗?)。我很惊讶,显然我也必须将它们排成一列。为什么一旦播放缓冲区就不会自动发生这种情况?我是否必须按照他们排队的顺序对它们进行排队?
感谢您帮助我理解这一点。