游戏开发论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: 大树懒

音频引擎FMOD的使用(一)

[复制链接]

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2008-1-25 13:59:00 | 显示全部楼层

Re:音频引擎FMOD的使用(一)

准备做个播放器玩玩

16

主题

88

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2008-10-10 15:38:00 | 显示全部楼层

Re:音频引擎FMOD的使用(一)

class CMusic
{
public:
        CMusic(void);
        ~CMusic(void);
private:
        void ERRCHECK( FMOD_RESULT result )   // 错误检测
        {
                if (result != FMOD_OK)
                {
                        char sz[1000];
                        sprintf_s( sz,1000,"FMOD出错! [%d] %s",result,FMOD_ErrorString(result) );
                        MessageBoxA( NULL,sz,"音效模块错误",0 );
                        exit(-1);
                }
        }
private:  // FMOD的必要成员
        FMOD::System*   mSystem;
        FMOD::Sound*    mSound;
        FMOD::Channel*  mChannel;
public:
        bool initMusic();  // 初始化音乐
        void pause();  // 暂停
        void play();   // 播放
        void update(); // 更新
};


#include "Music.h"
#include "DBGlobalString.h"
using namespace FMOD;

// 包含库
#pragma comment( lib,"fmodex_vc.lib")

/**-----------------------------------------------------------------------------
*  为了安全起见必须要初始化指针为NULL
*------------------------------------------------------------------------------
*/
CMusic::CMusic(void):mSystem(NULL),mSound(NULL),mChannel(NULL)
{
}

/**-----------------------------------------------------------------------------
*  析构 释放对象
*------------------------------------------------------------------------------
*/
CMusic::~CMusic(void)
{
        if( mSound )
                mSound->release();
        if( mSystem )
        {
                mSystem->close();
                mSystem->release();
        }
}
/**-----------------------------------------------------------------------------
*  初始化
*------------------------------------------------------------------------------
*/
bool CMusic::initMusic()
{
        // 创建System对象并初始化
        FMOD_RESULT result;
        result = System_Create(&mSystem);
        ERRCHECK(result);

        unsigned version = 0;
        result = mSystem->getVersion(&version);
        ERRCHECK(result);

        if( version < FMOD_VERSION )  // 检测版本信息
        {
                char sz[100];
                sprintf_s(sz,100,"错误,您正在使用一个旧版本的FMOD %08x.这个版本需要 %08x\n",version,FMOD_VERSION);
                MessageBoxA( NULL,sz,"FMOD版本错误",0);
                return false;
        }

        // 初始化
        result = mSystem->init( 1,FMOD_INIT_NORMAL,0 );
        ERRCHECK(result);
        // 建立流
        result = mSystem->createStream( DBGlobalString::getStringValue("GAMEBACKGROUNDMUSICPATH").c_str(),FMOD_HARDWARE | FMOD_LOOP_NORMAL | FMOD_2D,0,&mSound );
        ERRCHECK(result);
        // come on ,let us go,every friend!!
        result = mSystem->playSound( FMOD_CHANNEL_FREE,mSound,false,&mChannel );
        ERRCHECK(result);

        return true;
}

/**-----------------------------------------------------------------------------
*  暂停
*------------------------------------------------------------------------------
*/
void CMusic::pause()
{
        bool paused;
        mChannel->getPaused(&paused);
        if( !paused )  // 如果paused == false,表示并未暂停
        {
                mChannel->setPaused(true);
        }
}
/**-----------------------------------------------------------------------------
*  播放
*------------------------------------------------------------------------------
*/
void CMusic::play()
{
        bool paused;
        mChannel->getPaused(&paused);
        if( paused )
        {
                mChannel->setPaused(false);
        }
}
/**-----------------------------------------------------------------------------
*  更新 直接调用就可以了
*------------------------------------------------------------------------------
*/
void CMusic::update()
{
        if( mSystem )
        {
                mSystem->update();
        }
}

13

主题

79

帖子

81

积分

注册会员

Rank: 2

积分
81
QQ
发表于 2010-1-20 16:27:00 | 显示全部楼层

Re:音频引擎FMOD的使用(一)

3d音效有声音音量的最大上限吗

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-2-21 19:27:00 | 显示全部楼层

Re:音频引擎FMOD的使用(一)

学习了,多谢

13

主题

79

帖子

81

积分

注册会员

Rank: 2

积分
81
QQ
发表于 2010-5-14 11:11:00 | 显示全部楼层

Re:音频引擎FMOD的使用(一)

这东西打从心底就想要了

13

主题

79

帖子

81

积分

注册会员

Rank: 2

积分
81
QQ
发表于 2010-5-14 14:57:00 | 显示全部楼层

Re:音频引擎FMOD的使用(一)

支持x86的机子不
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-22 21:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表