• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 94, comments - 250, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            現(xiàn)代游戲已經(jīng)不能沒(méi)有聲音,所以音頻引擎成為游戲引擎中不可缺少的一部分.這是一篇介紹現(xiàn)代音頻引擎的文章(http://hard.zol.com.cn/labs/2003/0520/60986.shtml).FMOD音頻引擎(http://www.fmod.org)是一個(gè)非常不錯(cuò)的音頻引擎,其使用也比較簡(jiǎn)單,下面做一些簡(jiǎn)單介紹:
            一.基本準(zhǔn)備
            它是免費(fèi)的,你可以從它們的主站上下載API等文件.之后,你需要添加頭文件和庫(kù)文件,如下(C/C++):

          1. fmodvc.lib 用于 Microsoft Visual C++ 和 Codewarrior
          2. fmodbc.lib 用于 Borland
          3. fmodwc.lib 用于 Watcom
          4. fmodcc.lib 用于 LCC-Win32
          5. libfmod.a 用于 MingW and CygWin
          6. fmod-3-7.lib 用于 GCC
            (參考:http://www.gamedev.net/reference/articles/article2098.asp
            之后,只要添加fmod.h頭文件后就可以使用了.
            二.開(kāi)始使用
            1.初始化
            開(kāi)始播放聲音前,需要進(jìn)行初始化,很簡(jiǎn)單:
            FSOUND_Init (44100, 32, 0);
            第一個(gè)參數(shù)是輸出HZ,第二是最大軟件信道數(shù)可以不管也不會(huì)增加CPU負(fù)擔(dān),第三個(gè)參數(shù)可以設(shè)置一些標(biāo)志可以不設(shè)置則賦值為0.
            2.基本常識(shí)
            FMOD將音頻分為聲音(sound)和音樂(lè)(music)兩種.前者如:.MOD, .S3M, .XM, .IT, .MID, .RMI, .SGT or .FSB
            等,后者如: .WAV, .MP2, .MP3, .OGG or .RAW等.二者使用不同的函數(shù)處理.都可以通過(guò)采樣后流的方式來(lái)處理.不過(guò)小文件一般通過(guò)采樣方式,它可以多次播放但占用內(nèi)存.大文件通過(guò)流方式,減少內(nèi)存消耗.
            3.播放音樂(lè)
            首先定義一個(gè)FMUSIC_MODULE類(lèi)型變量來(lái)作為文件句柄.然后就可以通過(guò)FMUSIC API來(lái)實(shí)現(xiàn),如:
            裝入文件:
            handle=FMUSIC_LoadSong("YourFileName");
            FMUSIC_PlaySong(handle);
            音量控制:FMUSIC_SetMasterVolume (handle, 255);后面的參數(shù)在0~255之間,值越大聲音越大.
            暫停播放:FMUSIC_SetPaused (handle, true);
            重開(kāi)始:FMUSIC_SetPaused (handle, false);
            循環(huán)播放:FMUSIC_SetLooping (handle, true);
            停止播放:FMUSIC_StopSong (handle);
            釋放音頻內(nèi)存:FMUSIC_FreeSong (handle);
            下面是一個(gè)命令模式下的例子:
            #include <conio.h>
            #include "inc/fmod.h"
            FMUSIC_MODULE* handle;
            int main ()
            {
               // 初始化
               FSOUND_Init (44100, 32, 0);
               // 裝如
               handle=FMUSIC_LoadSong ("canyon.mid");
               // 只播放一次
               // 播放midi文件時(shí)請(qǐng)關(guān)閉循環(huán)播放
                FMUSIC_SetLooping (handle, false);
               //播放
               FMUSIC_PlaySong (handle);
              // 按任一鍵結(jié)束
               while (!_kbhit())
               {
               }
               //釋放
               FMUSIC_FreeSong (handle);
               FSOUND_Close();
            }
            4.播放聲音
            4.1 采樣(Sample)方式
            先定義FSOUND_SAMPLE類(lèi)型變量,然后就可以使用FSOUND系列函數(shù)來(lái)實(shí)現(xiàn),如:
            裝如文件:
            handle=FSOUND_Sample_Load (0,"YourFileName",0,0,0);  //除文件名外的參數(shù)用于多采樣或其它等
            FSOUND_PlaySound (0,handle);
            設(shè)置音量:FSOUND_SetVolume (handle, 255);
            暫聽(tīng):FSOUND_SetPaused (handle, true);
            重新開(kāi)始:FSOUND_SetPaused (handle, false);
            停止:FSOUND_StopSound (handle);
            釋放:FSOUND_Sample_Free (handle);
            下面是一個(gè)簡(jiǎn)單的例子:
            #include <conio.h>
            #include "inc/fmod.h"
            FSOUND_SAMPLE* handle;
            int main ()
            {
               // 初始化
               FSOUND_Init (44100, 32, 0);
               // 裝載和播放
               handle=FSOUND_Sample_Load (0,"sample.mp3",0, 0, 0);
               FSOUND_PlaySound (0,handle);
               // 按任一鍵結(jié)束
               while (!_kbhit())
               {
               }
               // 釋放
               FSOUND_Sample_Free (handle);
               FSOUND_Close();
            }
            4.2 流(stream)方式
            先定義一個(gè)FSOUND_STREAM 類(lèi)型變量,然后:
            裝入文件:
            handle=FSOUND_Stream_Open("YourFileName",0, 0, 0);
            FSOUND_Stream_Play (0,handle);
               提示:3.7版本之前的方式是不一樣的.
            停止:FSOUND_Stream_Stop (handle);
            釋放:FSOUND_Stream_Close(handle);
            其它和前面是一樣的.下面是一個(gè)簡(jiǎn)單的例子:
            #include <conio.h>
            #include "inc/fmod.h"
            FSOUND_STREAM* handle;
            void main ()
            {
               //init FMOD sound system
               FSOUND_Init (44100, 32, 0);
               //load and play sample
               handle=FSOUND_Stream_Open("sample.mp3",0, 0, 0);
               FSOUND_Stream_Play (0,handle);
               //wait until the users hits a key to end the app
               while (!_kbhit())
               {
               }
               //clean up
               FSOUND_Stream_Close(handle);
               FSOUND_Close();
            }
            5.關(guān)閉
            FSOUND_Close ();
            參考:
            A Quick Guide to FMOD by Joachim Rohdehttp://www.gamedev.net/reference/articles/article2098.asp
            FMOD wiki(http://www.devmaster.net/wiki/FMod

          7. 只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            99久久婷婷国产综合精品草原| 久久精品国产99国产精品| 老司机午夜网站国内精品久久久久久久久 | 精品熟女少妇av免费久久| 亚洲女久久久噜噜噜熟女| 亚洲AⅤ优女AV综合久久久| 久久伊人五月丁香狠狠色| 18岁日韩内射颜射午夜久久成人 | 国产69精品久久久久777| 国产精品99久久久久久宅男| 一本综合久久国产二区| 国产一区二区三区久久| 久久久久久久波多野结衣高潮| 看久久久久久a级毛片| 久久99精品国产麻豆蜜芽| 亚洲va中文字幕无码久久| 国产精品伊人久久伊人电影| 亚洲中文字幕无码久久2020| 久久国产福利免费| 久久se精品一区二区| 久久99精品国产麻豆宅宅| 久久一本综合| 国产成人精品久久亚洲高清不卡 | 影音先锋女人AV鲁色资源网久久| 久久久久久久尹人综合网亚洲| 亚洲精品无码久久久久久| 久久亚洲国产成人影院网站| 青草影院天堂男人久久| 性高湖久久久久久久久| 2021国产精品午夜久久| 亚洲欧洲精品成人久久奇米网| 亚洲国产成人久久综合一| 99久久免费国产特黄| 日韩av无码久久精品免费| 久久亚洲国产精品成人AV秋霞| 久久久久18| 久久久久亚洲AV综合波多野结衣 | 久久福利资源国产精品999| 久久精品成人| 人人狠狠综合88综合久久| 久久亚洲国产精品五月天婷|