• <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++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
            這是蓋莫游戲引擎的音頻測試代碼具體如下:
             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("蓋莫引擎音頻測試");
            16    //! 設置設備背景色 
            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    //! 獲取音頻設備指針
            24    core::AudioDevice* audiodevice = device->GetAudioDevice(core::AUDIO_DISTANCE_MODEL);
            25    //! 獲取一個音源
            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(以后也會加入對dxsound的支持)
            現在支持3種最基本的音頻格式:ogg,wav,mp3(以后也會加入對aiff,au,midi,ape的支持)
            使用多線程,流式播放音頻,這樣可以避免載入大音頻文件所花的時間延遲
            當然3d音效師最基本的了O(∩_∩)O~
            相關的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     //! 音頻線性距離模型
             40     AUDIO_LINEAR_DISTANCE,
             41     //! 音頻線性距離箝位模型
             42     AUDIO_LINEAR_DISTANCE_CLAMPED,
             43     //! 音頻指數距離模型
             44     AUDIO_EXPONENT_DISTANCE,
             45     //! 音頻指數距離箝位模型
             46     AUDIO_EXPONENT_DISTANCE_CLAMPED
             47 };
             48 
             49 
             50 //! 定義默認空間音速
             51 const float AUDIO_SPACE_VELOCITY = 343.0f;
             52 
             53 //! 定義默認多普勒因子
             54 const float AUDIO_DOPPLER_FACTOR = 1.0f;
             55 
             56 /////////////////////////////////////////////////////////
             57 //! 定義蓋莫音頻引擎音源類
             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     //! 設置音頻增益[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     /// 獲取,設置音源位置(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     /// 獲取,設置音源速度
             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     /// 獲取,設置音源方向(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     /// 設置Reverb值([0,1.0])
            107     /////////////////////////////////////////////////////////
            108     virtual bool SetReverbScale(float scale) = 0;
            109     /////////////////////////////////////////////////////////
            110     /// 設置Reverb值([0,1.0])
            111     /////////////////////////////////////////////////////////
            112     virtual bool SetReverbDelay(float delay) = 0;
            113 
            114     /////////////////////////////////////////////////////////
            115     /// 設置音源錐
            116     /////////////////////////////////////////////////////////
            117     virtual void SetAudioCone(float innerangle, float outerangle, float outergain) = 0;
            118 
            119     /////////////////////////////////////////////////////////
            120     /// 設置為環境音,檢測是否為環境音
            121     /////////////////////////////////////////////////////////
            122     virtual void SetAmbient(bool ambient) = 0;
            123     virtual bool IsAmbient() = 0;
            124 
            125     /////////////////////////////////////////////////////////
            126     /// 設置音源位置是否相對于聽者,檢測是否相對于聽者
            127     /////////////////////////////////////////////////////////
            128     virtual void SetRelative(bool relative) = 0;
            129     virtual bool IsRelative() = 0;
            130 
            131     /////////////////////////////////////////////////////////
            132     /// 設置,獲取音源最大傳播距離(僅音頻物理模型為AUDIO_INVERSE_DISTANCE_CLAMPED有效)
            133     /////////////////////////////////////////////////////////
            134     virtual void SetMaxDistance(float distance) = 0;
            135     virtual void GetMaxDistance(float &distance)= 0;
            136 
            137     /////////////////////////////////////////////////////////
            138     /// 設置,獲取音頻扇出值[0.0,1.0]
            139     /////////////////////////////////////////////////////////
            140     virtual void  SetRolloffFactor(float factor) = 0;
            141     virtual void  GetRolloffFactor(float &factor)=0;
            142 
            143     /////////////////////////////////////////////////////////
            144     /// 設置,獲取音頻音節值(pitch值每減少50%則音階降低1個八度音階) [0,1]
            145     /////////////////////////////////////////////////////////
            146     virtual void  SetPitch(float pitch) = 0;
            147     virtual void  GetPitch(float &pitch) = 0;
            148 };
            149 
            150 /////////////////////////////////////////////////////////
            151 //! 定義音頻設備基類
            152 /////////////////////////////////////////////////////////
            153 class AudioDevice
            154 {
            155 public:
            156     /////////////////////////////////////////////////////////
            157     //! 獲取音頻引擎版本號
            158     /////////////////////////////////////////////////////////
            159     virtual const char* GetVerson() const = 0;
            160 
            161     /////////////////////////////////////////////////////////
            162     //! 獲取音頻引擎作者
            163     /////////////////////////////////////////////////////////
            164     virtual const char* GetMaker() const = 0;
            165 
            166     /////////////////////////////////////////////////////////
            167     //! 查詢音頻設備是否支持指定格式的音頻文件
            168     /////////////////////////////////////////////////////////
            169     virtual bool IsSupport(const AudioFileType& type) = 0;
            170 
            171     /////////////////////////////////////////////////////////
            172     //! 抓取音頻音源指針(最大可獲取255個音源)
            173     /////////////////////////////////////////////////////////
            174     virtual AudioSource*  GetAudioSource() = 0;
            175 
            176     /////////////////////////////////////////////////////////
            177     /// 獲取,設置音頻聽者位置(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     /// 獲取,設置音頻聽者方向(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     /// 獲取,設置音頻聽者速度
            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 //! 初始化音頻引擎(返回為音頻設備指針)
            197 /////////////////////////////////////////////////////////
            198 //G_FUNC(AudioDevice*) InitAudioDevice(AudioModel model, float audiovel, float dopplerfactor);
            199 
            200 /////////////////////////////////////////////////////////
            201 //! 卸載音頻引擎(寫在成功返回真)
            202 /////////////////////////////////////////////////////////
            203 //G_FUNC(bool)         DeinitAudioDevice(void);
            如何,夠簡單明了吧(所需要的是對音頻模型的詳細解釋)
            posted on 2010-02-08 13:25 ccsdu2009 閱讀(1155) 評論(2)  編輯 收藏 引用
            Comments
             
            色综合久久无码中文字幕| 国产三级精品久久| 亚洲国产成人久久综合碰| 久久国产高清字幕中文| 99久久精品毛片免费播放| 久久国产免费观看精品3| 亚洲va久久久噜噜噜久久| 久久人人爽人人爽人人av东京热| 久久久久亚洲AV综合波多野结衣| 国内精品久久久久久久亚洲| 9999国产精品欧美久久久久久| 久久99精品国产一区二区三区| 精品乱码久久久久久久| 99久久人妻无码精品系列蜜桃| 麻豆精品久久久一区二区| 99久久99久久精品国产片果冻| 99久久精品免费看国产| 久久免费国产精品| 99精品国产99久久久久久97| 精品久久久久久亚洲精品| 国产精品久久国产精麻豆99网站| 国产69精品久久久久99尤物| 日本欧美国产精品第一页久久| 77777亚洲午夜久久多喷| 国产91色综合久久免费| 久久久精品国产Sm最大网站| 精品久久久久久无码不卡| 国产成人精品免费久久久久| 亚洲综合久久综合激情久久| 亚洲а∨天堂久久精品| 99久久免费国产精精品| 午夜福利91久久福利| 久久99精品久久久久婷婷| 久久精品亚洲男人的天堂| 99久久精品国产一区二区| 久久免费小视频| 亚洲午夜久久久久久久久电影网| 欧美亚洲国产精品久久蜜芽| 久久精品国产免费观看三人同眠| 狠狠色丁香婷婷久久综合不卡| 91麻豆国产精品91久久久|