2011-06-06 105 views
4

在我的iOS應用程序中,我不想使用OpenAL播放聲音。我有AudioManager類,負責聲音管理(單身人士)。所有聲源&緩衝區在創建時被初始化(在第一個呼叫instance上)。從後臺線程播放OpenAL聲音

所以要播放所有我需要的聲音 - 就是停止以前的聲音,清除舊的緩衝區(必要的源),附加新的緩衝區,設置音高&,最後播放聲音。所有這些操作都在playSound:(AMSound)sound方法(AMSound是一個簡單枚舉)。

對於UI效果,我從主線程調用此方法。但是我的應用程序有很多背景工作,有時還會伴有音效。

我可以直接從後臺線程調用playSound:,還是隻在主線程上執行? 那麼同步聲音怎麼樣:一個是從主線程創建的,另一個是從背景創建的?

回答

6

無論你在哪個線程上調用playsound,openAL實際上都會在自己的線程上播放它。至於同步聲音,這取決於你想如何混合它們,無論如何,openAL將始終管理自己的播放線程,所以從線程角度來看,它並不重要,你打電話給哪裏playsound

+0

非常感謝! – kpower 2011-06-07 02:56:13

+2

Plus,與例如OpenGL,你可以實際播放任意線程中的聲音,因爲上下文是每個進程的。 – Damon 2011-06-10 21:13:57