資源描述:
《游戲音樂與音效》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、Copyright2008ByNeusoftGroup.Allrightsreserved專題10游戲音樂與音效拋磚引玉如果您在玩一種以跳舞為主的游戲時,您只能看到屏幕上那些上下左右箭頭一直在往上跑,但是卻不能聽到任何的聲音,這時,你只能看著那些箭頭猛踩踏板,而不能跟著音樂的節(jié)拍起舞,那么游戲玩起來還會覺得有趣嗎?一個好的游戲,除了有真實而具有震撼力的游戲畫面之外,游戲的音樂與音效也是相當重要的部分。像仙劍奇?zhèn)b傳的中國古典音樂,暗黑破壞神的歐美風格的音樂,都給玩家留下了深刻的印象。另外,在很多3D射擊游戲中,音效的處理也是相當重要的一個工作,程序員往往需要設計一個真實的3D音效,讓玩家根據(jù)
2、音效來判斷所處的環(huán)境。Copyright2008ByNeusoftGroup.Allrightsreserved麻雀雖小,五臟俱全DirectSound簡介聲音的播放過程DirectSound的編程步驟3D音效的實現(xiàn)Copyright2008ByNeusoftGroup.AllrightsreservedDirectSound簡介DirectSound是DirectXAudio的一個較底層的部件,提供了豐富的接口函數(shù),實現(xiàn).wav格式的波形聲音數(shù)據(jù)的播放控制。與一般的WindowsAPI提供的聲音播放函數(shù)不同,DirectSound可實現(xiàn)多個聲音的混合播放,便于在游戲的背景聲音下實現(xiàn)各種角
3、色發(fā)出聲音。DirectSound可充分使用聲卡的內(nèi)存資源,同時也提供了3D聲效算法,模擬出真實的3D立體聲。Copyright2008ByNeusoftGroup.Allrightsreserved次緩沖區(qū)1次緩沖區(qū)2次緩沖區(qū)3混聲器(混頻器)主緩沖區(qū)主緩沖區(qū)和次緩沖區(qū)聲卡或系統(tǒng)內(nèi)存聲卡內(nèi)存聲音的播放過程:若干聲音文件數(shù)據(jù),裝入相應的次緩沖區(qū)中。次緩沖區(qū)位于聲卡或系統(tǒng)內(nèi)存中,需要事先進行申請。所申請的次緩沖區(qū)大小,一般為對應的聲音文件大小。將次緩沖區(qū)的聲音數(shù)據(jù)輸出到混聲器進行混頻處理,輸出數(shù)字化的聲音數(shù)據(jù)到主緩沖區(qū)。主緩沖區(qū)中的聲音數(shù)據(jù),轉換為模擬信號,送入揚聲器中進行播放。Copyri
4、ght2008ByNeusoftGroup.Allrightsreserved聲音的播放過程聲音的播放過程主緩沖區(qū):可以看做是一個DirectSound,是用來播放聲音、產(chǎn)生混音效果的區(qū)域,它有一個預設的播放格式(8bit、22kHz),而聲音文件在播放時便按照這種格式輸出。主緩沖區(qū)在建立DirectSound對象時自動生成,不過如果需要比默認值更好的播放品質,就必須建立主緩沖區(qū)并設定其播放的格式,并且在設定協(xié)調(diào)級別時,標志位必須設定為DSSCL_PRIORITY或DSSCL_EXCLUSIVE。次緩沖區(qū):存儲播放聲音的文件,可以建立多個次緩沖區(qū)來存放多個要播放的聲音文件。Copyrigh
5、t2008ByNeusoftGroup.AllrightsreservedDirectSound的編程步驟創(chuàng)建DirectSound對象設置設備的協(xié)調(diào)級別建立主緩沖區(qū)建立次緩沖區(qū)裝入聲音數(shù)據(jù)到次緩沖區(qū)聲音的播放與控制創(chuàng)建DirectSound對象創(chuàng)建一個代表聲卡的IDirectSound8對象:Copyright2008ByNeusoftGroup.AllrightsreservedHRESULTDirectSoundCreate8(//聲卡設備全局標志,一般為NULL,表示默認的聲卡LPCGUIDlpcGuidDevice,//返回的IDirectSound8接口對象指針LPDIRECT
6、SOUND8*ppDS8,LPUNKNOWNpUnkOuter//必須為NULL);if(FAILED(DirectSoundCreate8(NULL,&m_pDirectSound,NULL)))returnfalse;設置設備的協(xié)調(diào)級別在建立了IDirectSound8對象之后,需要設置聲卡設備的協(xié)調(diào)級別,告訴Windows使用硬件的權限,其他應用軟件與游戲如何共享聲卡設備。Copyright2008ByNeusoftGroup.AllrightsreservedHRESULTSetCooperativeLevel(HWNDhwnd,//窗口句柄DWORDdwLevel//協(xié)調(diào)級別);
7、if(FAILED(m_pDirectSound->SetCooperativeLevel(hwnd,dwCoopLevel)))returnfalse;dwLevel有如下幾個取值:DSSCL_EXCLUSIVE:對于DirectX8.0以上版本,此標志與DSSCL_PRIORITY具有相同的作用。對于以前的版本,此標志設置聲卡設備為當前程序獨占。DSSCL_NORMAL:正常模式,其他程序可共享設備。此標志下,主緩沖