Answers:
堆栈溢出问题:“游戏的跨平台声音API?”
我同意接受的答案:
我是SFML库的忠实拥护者。它确实提供了其他图形和网络功能,但是与此问题相关的是它还具有简洁的音频包。
音频功能包括:
- 尽可能使用硬件加速
- 可以加载和保存标准声音格式:ogg,wav,flac,aiff,au,raw,paf,svx,nist,voc,ircam,w64,mat4,mat5 pvf,htk,sds,avr,sd2,caf,wve,mpc2k ,rf64
- 可以直接从内存中的文件加载所有音频资源
- 3D声音空间化
- 简单的界面,可捕捉音频
- 有效地管理内存,因此您不必担心资源的寿命或存储
- 支持大文件流; 您甚至可以为任何来源(网络等)编写自定义流式类
- 支持多声道格式(单声道,立体声,4.0、5.1、6.1、7.1)
就我而言,这些天来在游戏中实现声音的事实API是FMOD。
对于非商业用途,它是免费的,对于“休闲”(阅读:独立)开发,它相对便宜。
对于简单的“播放此声音”要求而言,这有点矫kill过正,但确实提供了在各种平台上都经过良好测试的庞大功能集。
我非常喜欢OpenAL作为跨平台音频库。该API级别较低,但是您可以轻松地将其包装到更好的引擎友好界面中。它是真正的跨平台,具有对iPhone,Android,MacOSX,Windows和Linux的一流支持。
看一下Djinn Engine的声音代码。两个文件,它们之间可能有300行(计算注释等),您便有了一个可行的声音系统。
我从未开发过以音频为中心的游戏,因此,如果需要极端控制,OpenAL可能不适合。
除了FMOD,还有Audiokinetic Wwise,它在游戏行业中越来越多地用作专业的跨平台声音设计工具和API。它具有多种效果选择(包括卷积混响),复杂的声音逻辑系统,声音分层,概要分析,交互式音乐工具等。它提供了很好的解码算法选择,并且对于非商业项目也是免费的。
libsoundio是低级别的,但它是跨平台的,专注于健壮性。它是游戏和系统音频后端之间的最小层。