Cococs2dx Windows下播放ogg

2017-11-12  本文已影响0人  没有人能在我的BGM中打败我

ogg格式的音乐容量会小很多,为了做资源瘦身,我们的游戏使用了ogg的格式,但是windows下面不支持ogg的播放,为了能够让ogg在windows下面播放,找了一些方法,有的说修改windows默认的播放器,使其支持ogg。但是这个不靠谱。在网上找了很久找了一个方法,使用OpenAL来播放,有个老外写了一个库OpenAE对OpenAL做了一层封装,现在已经找到不到那个老外的网站了。现在分享给大家。

引擎版本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中的代码,在构造函数中添加如下代码
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

上一篇 下一篇

猜你喜欢

热点阅读