編程知識彙總--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)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章