每當我播放聲音效果我使用:使用OpenAL,設置AL_PITCH和AL_GAIN是否昂貴?
alSourcei(sources[index], AL_BUFFER, 0); alSourcei(sources[index], AL_BUFFER, bufferID); alSourcef(sources[index], AL_PITCH, 1.0); alSourcef(sources[index], AL_GAIN, 1.0);
會是刪除設置每一個音效播放時間AL_PITCH和AL_GAIN一個顯著的優化?顯然,因爲它們是1.0,所以每次我初始化聲音時都可以設置一次。如果AL_PITCH和AL_GAIN未設置,那麼默認值是什麼?
謝謝。這是爲了遊戲音效。正如您可以看到任何隨機聲音效果需要播放時清除源緩衝區然後設置源緩衝區。爲每個特定的聲音效果設置單獨的源組是更常見的,這樣我就不必清除和重置緩衝區內容了? – Ryan 2012-03-08 23:40:36
這取決於很多因素。大多數人會需要很多來源,但是又有更多的緩衝區來源。一般來說,每個需要播放的聲音都需要一個來源_concurrently_。一個來源可以由一百萬個緩衝區提供,但一次只能播放一個。不播放的來源不會(不應該)消耗任何CPU資源,但仍會消耗內存。因此,有一些額外的東西不會受到傷害,因爲每個聲音都可能有一個。啓用一個源是一個原子隊列操作,並且排隊一個緩衝區是一個原子隊列操作,所以它們同樣很昂貴。 – Damon 2012-03-09 08:55:45