编程知识汇总--OpenAL

1,OpenAL源码编译 (http://blog.csdn.net/oilcode/article/details/50748568)

2,声音衰减,以及alDistanceModel函数使用详解 (http://blog.csdn.net/jianingshow/article/details/50609365)

3,OpenAL同时播放的声音数目,有一个上限。(换而言之,最大的source数目)。在iPhone上能够通过某句代码获得最大的source数目为32。

alGenSources(1, &sourceID);
当已经达到最大数目时,上面的语句将失败,但它并不产生错误。因此,不要超过最大source数目。

所以,这意味着什么?这意味着任何时候都不要同时播放超过32个音效。但是游戏中经常遇到大量音效同时播放的情况。之所以会有这种情况发生,是由于你必须在适当的时候关闭声音。是的,播放声音非常容易,但要关闭,就有相当的学问。如果你在声音播放的中途直接关闭,那么我可以保证,你将听到爆音。我在App Store下载了许多乐器软件,有几个会产生明显的爆音,就是由于这个原因。要解决这个问题,可能有许多方法。经过我的实验,我的方法是在停止一个声音前,采用定时器逐渐减小音量或将souce移动到很远的地方,确保听不见,但不要停止声音。哪怕声音的音量只有0.00001,如果你关闭它,你仍然会听到爆音。你必须让声音采样自然结束,所以你采用的音效一定不能过长。这就是为什么有许多source会同时存在的原因。为减小source的同时使用的数量,造成source不够用的情况,还必须采用一些其他的技术,比如在将音量减小到接近0(注意不能为0,如果直接设置成0就等同于关闭音量,会产生破音)时,将buffer中的指针指向buffer的结尾处,或采用streaming的方法,另外还可以采用source重用的技术。

4,OpenAL编程入门 (http://blog.csdn.net/devday/article/details/5271357)

5,OpenAL:3D定位音效的API (http://blog.sina.com.cn/s/blog_685b5b220100ukbp.html)



你可能感兴趣的:(编程知识汇总--OpenAL)