游戏开发-声音篇(最简单的 FMOD 应用)

来源:互联网 发布:cad软件是什么 编辑:程序博客网 时间:2024/04/29 16:07

 

游戏开发-声音篇(最简单的 FMOD 应用)

 

          最近两天学校断网,呵呵,(杯具),自己把以前的文档拿出来翻了翻,FMOD是一

个游戏声音引擎,其实自己早就下载安装了FMOD,只是自己一直没用(说真的感谢

断网,呵呵),更别提怎么编码了,迟到今天才写了一个FMOD程序,感觉没那么难

(当然只是,很简单的运用FMOD加载一首歌曲而已),没别的功能,更别提3D效果

了,好了看看我搭建的开发平台吧!
 我的开发平台一直是 visual studio  2008 +  FMOD,其实FMOD只需下载

 

SDK 开发包安装好就可以了,有关Fmod的介绍请浏览   官网 
其实玩过的魔兽世界听说声音用的是 Fmod引擎。下载安装好后,里面已经有库文件


打开api 文件夹

在VS开发平台选择下,我选择的是fmodex.dll 此时还需要 lib文件夹下的

 

fmodex_vc.lib 静态库文件有了这些文件之后,就可以进行到最为激动地时刻--编

码。
编码前需要把fmodex.dll,fmodex_vc.lib添加到工程目录中并设置 附加依赖项

fmodex_vc.lib
 

拷贝E:/FMOD Programmers API Win32/api/inc下的头文件到自己的工程目录下,并

全部添加到自己的工程中,编写代码:

Code:
  1. #include "fmod.hpp"  
  2. #include "fmod_errors.h"  
  3. #include <stdio.h>  
  4. #include <windows.h>  
  5. #include <conio.h>   
  6.   
  7. void ERRCHECK(FMOD_RESULT result)   
  8. {   
  9.     if (result != FMOD_OK)   
  10.     {   
  11.         printf("FMOD error! (%d) %s/n", result, FMOD_ErrorString(result));   
  12.         exit(-1);   
  13.     }   
  14. }   
  15.   
  16. int  main()   
  17. {   
  18.     FMOD_RESULT result;   
  19.     FMOD::System * system;   
  20.   
  21.     //  创建Fmod主系统   
  22.     result  = FMOD::System_Create(&system);   
  23.     if (result != FMOD_OK)   
  24.     {   
  25.         printf("FMOD error! (%d) %s/n", result, FMOD_ErrorString(result));   
  26.         exit(-1);   
  27.     }   
  28.     //  初始化Fmod系统init方法   
  29.     result = system->init(1,FMOD_INIT_NORMAL,0);   
  30.     if (result != FMOD_OK)   
  31.     {   
  32.         printf("FMOD error! (%d) %s/n", result, FMOD_ErrorString(result));   
  33.         exit(-1);   
  34.     }   
  35.   
  36.     //  检测版本号,支持吗?   
  37.     unsigned int version;   
  38.     result = system->getVersion(&version);   
  39.     ERRCHECK(result);   
  40.   
  41.     if (version < FMOD_VERSION)   
  42.     {   
  43.         printf("Error!  You are using an old version of FMOD %08x.  This program requires %08x/n", version, FMOD_VERSION);   
  44.         return 0;   
  45.     }   
  46.     //  加载媒体文件并播放   
  47.     FMOD::Sound *sound;   
  48.     result = system->createStream("media/许嵩 - 城府.mp3",FMOD_3D,0,&sound);   
  49.     //  其他格式:FMOD_NONBLOCKING   
  50.     ERRCHECK(result);   
  51.   
  52.     FMOD::Channel *channel;//   定义Channel对象   
  53.     // 计算媒体文件的长度   
  54.     unsigned int lenms;   
  55.   
  56.     result = sound->getLength(&lenms, FMOD_TIMEUNIT_MS);   
  57.     ERRCHECK(result);   
  58.   
  59.     printf("Total CD length %02d:%02d/n/n", lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100);   
  60.   
  61.   
  62.     result = system->playSound(FMOD_CHANNEL_FREE,sound,false,&channel);   
  63.     Sleep(lenms*60*1000);//一定要sleep一下,要不然程序马上返回了,听不到声音,呵呵   
  64.     ERRCHECK(result);   
  65.   
  66.   
  67.     return 0;   
  68. }   

 


最后工程目录为:

其实查看Fmod Ex  文档, documentation里面的tutorial写的已经很详细。本人只

是按部就班而已。
谨以此文献给那些入门级的code man。
 

原创粉丝点击