ogg格式的音樂容量會小很多,為了做資源瘦身,我們的游戲使用了ogg的格式尚骄,但是windows下面不支持ogg的播放,為了能夠讓ogg在windows下面播放侵续,找了一些方法倔丈,有的說修改windows默認的播放器,使其支持ogg状蜗。但是這個不靠譜乃沙。在網(wǎng)上找了很久找了一個方法,使用OpenAL來播放诗舰,有個老外寫了一個庫OpenAE對OpenAL做了一層封裝警儒,現(xiàn)在已經(jīng)找到不到那個老外的網(wǎng)站了。現(xiàn)在分享給大家。
引擎版本3.15
1:下載OpenAE.dll OpenAL.dll稍后我會放到百度云中
2:放到cocos2d\external\win32-specific\OpenalSoft\prebuilt目錄下蜀铲,這樣每次生成就會拷貝到程序目錄下
3:修改cocos2d\cocos\audio\win32下面的代碼
a:添加oae.h頭文件边琉,里面有一些結構體定義
b:修改MciPlayer.h和MciPlayer.cpp文件,后面會放到百度云中給大家下載
c:修改SimpleAudioEngine.cpp中的代碼记劝,在構造函數(shù)中添加如下代碼
SimpleAudioEngine::SimpleAudioEngine()
{
HINSTANCE lib = LoadLibrary(L"OpenAE.dll"); /// load library
/// get entry-function pointer for render device
oae::Renderer* (*driver)(const char*, const unsigned&) = nullptr;
driver = (oae::Renderer*(*)(const char*, const unsigned&)) GetProcAddress(lib, "GetRenderDevice");
unsigned choice = 0;
/// get entry-function pointer for enum device
const char* (*available)(unsigned int&) = nullptr;
available = (const char*(*)(unsigned int&)) GetProcAddress(lib, "GetDeviceName");
/// enumerate and display device
for (unsigned j = 0; available(j) != nullptr; j++)
{
CCLOG(available(j));
}
MciPlayer::dev = driver(available(choice), 48000);
oae::Listener* lis = MciPlayer::dev->GetListener();
MciPlayer::lib = lib;
}
這樣就完成了windows下對ogg的支持变姨。
缺點
只支持ogg格式,不支持其它格式的音樂T_T
下載地址:
鏈接: https://pan.baidu.com/s/1skRLppF 密碼: tnf1