• <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>
            Cpper
            C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
            這是蓋莫游戲引擎的音頻測(cè)試代碼具體如下:
             1#include <cstdlib>
             2#include <iostream>
             3#include <GEngine/Main.hpp>
             4using namespace std;
             5
             6const Rectf    rect(0,0,640,480);
             7#define AUDIO_FILE "..\\audio//because i love you.mp3"
             8
             9int main(int argc, char *argv[])
            10{   
            11    char text_info[255];
            12    strcpy(text_info,"play audio: ");
            13    strcat(text_info,AUDIO_FILE);
            14    
            15    core::Device* device = core::InitDevice("蓋莫引擎音頻測(cè)試");
            16    //! 設(shè)置設(shè)備背景色 
            17    device->SetClearColor(core::Color(120,80,250));
            18    //! 啟用2d渲染模式 
            19    device->Ortho2D();  
            20    //! 獲取文本指針 
            21    core::RefPtr<core::Text> defont= device->GetResourceManager()->GetText("font"); 
            22    
            23    //! 獲取音頻設(shè)備指針
            24    core::AudioDevice* audiodevice = device->GetAudioDevice(core::AUDIO_DISTANCE_MODEL);
            25    //! 獲取一個(gè)音源
            26    core::AudioSource* source = audiodevice->GetAudioSource();
            27    
            28    source->Play(AUDIO_FILE,true); 
            29    
            30    BEGIN_LOOP(device)
            31
            32        defont->Render(rect,text_info);
            33
            34    END_LOOP(device)
            35    
            36    device->Close();
            37    device->Drop();
            38    
            39    system("PAUSE");
            40    return EXIT_SUCCESS;
            41}

            42
            43

            下面是貼圖


            目前音頻底層使用的是openal(以后也會(huì)加入對(duì)dxsound的支持)
            現(xiàn)在支持3種最基本的音頻格式:ogg,wav,mp3(以后也會(huì)加入對(duì)aiff,au,midi,ape的支持)
            使用多線(xiàn)程,流式播放音頻,這樣可以避免載入大音頻文件所花的時(shí)間延遲
            當(dāng)然3d音效師最基本的了O(∩_∩)O~
            相關(guān)的api如下:
              1 ////////////////////////////////////////////////////////////
              2 /// 頭文件包含
              3 ////////////////////////////////////////////////////////////
              4 #include <GEngine/Config.hpp>
              5 #include <GEngine/Define.hpp>
              6 
              7 namespace core 
              8 {
              9 
             10 /////////////////////////////////////////////////////////
             11 //! 枚舉音頻文件格式
             12 /////////////////////////////////////////////////////////
             13 enum AudioFileType
             14 {
             15     AUDIOFILE_TYPE_WAV = 0,
             16     AUDIOFILE_TYPE_OGG,
             17     AUDIOFILE_TYPE_MP3,
             18     AUDIOFILE_TYPE_AU,
             19     AUDIOFILE_TYPE_AIFF,
             20     AUDIOFILE_TYPE_WMA,
             21     AUDIOFILE_TYPE_AAC,
             22     AUDIOFILE_TYPE_APE,
             23     AUDIOFILE_TYPE_MIDI
             24 };
             25 
             26 /////////////////////////////////////////////////////////
             27 //! 枚舉音頻物理模型
             28 /////////////////////////////////////////////////////////
             29 enum AudioModel
             30 {
             31     //! 音頻物理空模型
             32     AUDIO_MODEL_NULL = -1,
             33     //! 音頻物理空模型
             34     AUDIO_DISTANCE_MODEL,
             35     //! 音頻逆距離模型
             36     AUDIO_INVERSE_DISTANCE,
             37     //! 音頻逆距離箝位模型
             38     AUDIO_INVERSE_DISTANCE_CLAMPED,
             39     //! 音頻線(xiàn)性距離模型
             40     AUDIO_LINEAR_DISTANCE,
             41     //! 音頻線(xiàn)性距離箝位模型
             42     AUDIO_LINEAR_DISTANCE_CLAMPED,
             43     //! 音頻指數(shù)距離模型
             44     AUDIO_EXPONENT_DISTANCE,
             45     //! 音頻指數(shù)距離箝位模型
             46     AUDIO_EXPONENT_DISTANCE_CLAMPED
             47 };
             48 
             49 
             50 //! 定義默認(rèn)空間音速
             51 const float AUDIO_SPACE_VELOCITY = 343.0f;
             52 
             53 //! 定義默認(rèn)多普勒因子
             54 const float AUDIO_DOPPLER_FACTOR = 1.0f;
             55 
             56 /////////////////////////////////////////////////////////
             57 //! 定義蓋莫音頻引擎音源類(lèi)
             58 /////////////////////////////////////////////////////////
             59 class AudioSource
             60 {
             61 public:
             62     /////////////////////////////////////////////////////////
             63     //! 播放指定音頻文件
             64     /////////////////////////////////////////////////////////
             65     virtual bool Play(const char* audiofile, bool loop) = 0;
             66 
             67     /////////////////////////////////////////////////////////
             68     //! 停止播放音頻
             69     /////////////////////////////////////////////////////////
             70     virtual bool Stop() = 0;
             71 
             72     /////////////////////////////////////////////////////////
             73     //! 暫停音頻播放
             74     /////////////////////////////////////////////////////////
             75     virtual bool Pause() = 0;
             76 
             77     /////////////////////////////////////////////////////////
             78     //! 設(shè)置音頻增益[0.0f,1.0f]
             79     /////////////////////////////////////////////////////////
             80     virtual void SetSourceGain(float gain) = 0;
             81 
             82     /////////////////////////////////////////////////////////
             83     //! 獲取音頻增益
             84     /////////////////////////////////////////////////////////
             85     virtual void GetSourceGain(float &gain) = 0;
             86 
             87     /////////////////////////////////////////////////////////
             88     /// 獲取,設(shè)置音源位置(x,y,z)
             89     /////////////////////////////////////////////////////////
             90     virtual void GetSourcePosition(float &x,float &y,float &z) = 0;
             91     virtual void SetSourcePosition(float x, float y, float z) = 0;
             92 
             93     /////////////////////////////////////////////////////////
             94     /// 獲取,設(shè)置音源速度
             95     /////////////////////////////////////////////////////////
             96     virtual void GetSourceVelocity(float &x, float &y, float &z) = 0;
             97     virtual void SetSourceVelocity(float x, float y, float z) = 0;
             98 
             99     /////////////////////////////////////////////////////////
            100     /// 獲取,設(shè)置音源方向(x,y,z,v1,v2,v3)
            101     /////////////////////////////////////////////////////////
            102     virtual void GetSourceDirection(float &x,float &y,float &z,float &a,float &b,float &c) = 0 ;
            103     virtual void SetSourceDirection(float x,float y,float z,float a = 0,float b = 1,float c = 0= 0;
            104 
            105     /////////////////////////////////////////////////////////
            106     /// 設(shè)置Reverb值([0,1.0])
            107     /////////////////////////////////////////////////////////
            108     virtual bool SetReverbScale(float scale) = 0;
            109     /////////////////////////////////////////////////////////
            110     /// 設(shè)置Reverb值([0,1.0])
            111     /////////////////////////////////////////////////////////
            112     virtual bool SetReverbDelay(float delay) = 0;
            113 
            114     /////////////////////////////////////////////////////////
            115     /// 設(shè)置音源錐
            116     /////////////////////////////////////////////////////////
            117     virtual void SetAudioCone(float innerangle, float outerangle, float outergain) = 0;
            118 
            119     /////////////////////////////////////////////////////////
            120     /// 設(shè)置為環(huán)境音,檢測(cè)是否為環(huán)境音
            121     /////////////////////////////////////////////////////////
            122     virtual void SetAmbient(bool ambient) = 0;
            123     virtual bool IsAmbient() = 0;
            124 
            125     /////////////////////////////////////////////////////////
            126     /// 設(shè)置音源位置是否相對(duì)于聽(tīng)者,檢測(cè)是否相對(duì)于聽(tīng)者
            127     /////////////////////////////////////////////////////////
            128     virtual void SetRelative(bool relative) = 0;
            129     virtual bool IsRelative() = 0;
            130 
            131     /////////////////////////////////////////////////////////
            132     /// 設(shè)置,獲取音源最大傳播距離(僅音頻物理模型為AUDIO_INVERSE_DISTANCE_CLAMPED有效)
            133     /////////////////////////////////////////////////////////
            134     virtual void SetMaxDistance(float distance) = 0;
            135     virtual void GetMaxDistance(float &distance)= 0;
            136 
            137     /////////////////////////////////////////////////////////
            138     /// 設(shè)置,獲取音頻扇出值[0.0,1.0]
            139     /////////////////////////////////////////////////////////
            140     virtual void  SetRolloffFactor(float factor) = 0;
            141     virtual void  GetRolloffFactor(float &factor)=0;
            142 
            143     /////////////////////////////////////////////////////////
            144     /// 設(shè)置,獲取音頻音節(jié)值(pitch值每減少50%則音階降低1個(gè)八度音階) [0,1]
            145     /////////////////////////////////////////////////////////
            146     virtual void  SetPitch(float pitch) = 0;
            147     virtual void  GetPitch(float &pitch) = 0;
            148 };
            149 
            150 /////////////////////////////////////////////////////////
            151 //! 定義音頻設(shè)備基類(lèi)
            152 /////////////////////////////////////////////////////////
            153 class AudioDevice
            154 {
            155 public:
            156     /////////////////////////////////////////////////////////
            157     //! 獲取音頻引擎版本號(hào)
            158     /////////////////////////////////////////////////////////
            159     virtual const char* GetVerson() const = 0;
            160 
            161     /////////////////////////////////////////////////////////
            162     //! 獲取音頻引擎作者
            163     /////////////////////////////////////////////////////////
            164     virtual const char* GetMaker() const = 0;
            165 
            166     /////////////////////////////////////////////////////////
            167     //! 查詢(xún)音頻設(shè)備是否支持指定格式的音頻文件
            168     /////////////////////////////////////////////////////////
            169     virtual bool IsSupport(const AudioFileType& type) = 0;
            170 
            171     /////////////////////////////////////////////////////////
            172     //! 抓取音頻音源指針(最大可獲取255個(gè)音源)
            173     /////////////////////////////////////////////////////////
            174     virtual AudioSource*  GetAudioSource() = 0;
            175 
            176     /////////////////////////////////////////////////////////
            177     /// 獲取,設(shè)置音頻聽(tīng)者位置(x,y,z)
            178     /////////////////////////////////////////////////////////
            179     virtual void GetListenerPosition(float &x,float &y,float &z) = 0;
            180     virtual void SetListenerPosition(float x, float y, float z) = 0;
            181 
            182     /////////////////////////////////////////////////////////
            183     /// 獲取,設(shè)置音頻聽(tīng)者方向(x,y,z,v1,v2,v3)
            184     /////////////////////////////////////////////////////////
            185     virtual void GetListenerDirection(float &x,float &y,float &z,float &a,float &b,float &c) = 0 ;
            186     virtual void SetListenerDirection(float x,float y,float z,float a = 0,float b = 1,float c = 0= 0;
            187 
            188     /////////////////////////////////////////////////////////
            189     /// 獲取,設(shè)置音頻聽(tīng)者速度
            190     /////////////////////////////////////////////////////////
            191     virtual void GetListenerVelocity(float &x, float &y, float &z) = 0;
            192     virtual void SetListenerVelocity(float x, float y, float z) = 0;
            193 };
            194 
            195 /////////////////////////////////////////////////////////
            196 //! 初始化音頻引擎(返回為音頻設(shè)備指針)
            197 /////////////////////////////////////////////////////////
            198 //G_FUNC(AudioDevice*) InitAudioDevice(AudioModel model, float audiovel, float dopplerfactor);
            199 
            200 /////////////////////////////////////////////////////////
            201 //! 卸載音頻引擎(寫(xiě)在成功返回真)
            202 /////////////////////////////////////////////////////////
            203 //G_FUNC(bool)         DeinitAudioDevice(void);
            如何,夠簡(jiǎn)單明了吧(所需要的是對(duì)音頻模型的詳細(xì)解釋)
            posted on 2010-02-08 13:25 ccsdu2009 閱讀(1155) 評(píng)論(2)  編輯 收藏 引用
            Comments

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


             
            久久有码中文字幕| 亚洲AV成人无码久久精品老人 | 99久久免费只有精品国产| 精品国产热久久久福利| 亚洲色大成网站www久久九| 7777久久亚洲中文字幕| 无码人妻久久一区二区三区蜜桃| 精品综合久久久久久97超人 | 久久久久久久人妻无码中文字幕爆 | 精品国产乱码久久久久久呢| 久久精品毛片免费观看| 99久久国产亚洲综合精品| 青青国产成人久久91网| 久久综合给合久久国产免费| 亚洲精品成人网久久久久久| 国产成人无码精品久久久免费| 国产精品久久久久一区二区三区| 狠狠干狠狠久久| 久久综合亚洲色HEZYO社区| 久久久久国产| 国产午夜福利精品久久| 久久久国产精品福利免费 | 国产精品久久国产精品99盘| 久久精品免费全国观看国产| 久久亚洲国产成人影院网站 | 久久这里只有精品首页| 99久久久久| 日本久久久久久中文字幕| 久久国产精品-久久精品| 精品国际久久久久999波多野| 91久久婷婷国产综合精品青草| 99re久久精品国产首页2020| 亚洲中文字幕无码久久2017| 亚洲精品无码久久毛片| 亚洲国产日韩欧美综合久久| 青青青青久久精品国产h久久精品五福影院1421| 色综合久久综合网观看| 99久久精品国产综合一区| 久久93精品国产91久久综合| 国产精品久久久久久久久久免费| 亚洲国产一成久久精品国产成人综合|