用于游戏的跨平台声音API?

jma*_*erx 21 c c++ api audio

是否只有声音的API?

AllegroSDL等API 为我的需求提供了太多.我只需要一个可以执行以下操作的库:

InitSound();
Sound *door = LoadSound("door.wav");
PlaySound(door,volume);
Run Code Online (Sandbox Code Playgroud)

如果它可以支持VorbisMP3等压缩格式也会很棒.

roc*_*hal 19

我是SFML库的忠实粉丝.它确实提供了额外的图形和网络功能,但与此问题相关的是它还具有整洁的音频包.

音频功能包括:

  • 尽可能使用硬件加速
  • 可以加载和保存标准声音格式: Ogg,WAV,FLAC,AIFF,Au,RAW,paf,8SVX,NIST,VOC,IRCAM,W64,MAT4,MAT5 PVF,HTK,SDS,AVR,SD2,核心音频格式,WVE ,MPC2K,RF64
  • 可以直接从内存中的文件加载所有音频资源
  • 3D声音空间化
  • 轻松捕获音频的界面
  • 有效管理内存,因此您不必担心资源生命周期或存储
  • 支持大文件流; 您甚至可以为任何来源编写自定义流媒体类(网络,......)
  • 支持多声道格式(单声道,立体声,4.0,5.1,6.1,7.1)

网站:http: //www.sfml-dev.org/

  • 阅读我对graham.reeds答案的评论.SFML包含获得lgpl许可的声音库,并且gpl许可代码存在许多潜在危险.我打算在我的游戏中使用SFML,但不像自由软件基金会的人(他们似乎已经很富有或者有其他人支付账单),我想让我的辛勤工作超出任何合理怀疑.只是一些值得思考的东西. (5认同)
  • Boooo,你打了我一分钟.但是,SFML很棒. (2认同)

Bag*_*get 11

使用PortAudio.它是一种便携式跨平台音频API.


gra*_*eds 8

如果您习惯使用OpenGL,那么您可能想尝试OpenAL

API与OpenGL非常相似,因此您应该有宾至如归的感觉.

  • 由于lgpl许可证,我基本上回避了像openAL这样的库.任何包含"gpl"的东西,我立即回避,我不知道为什么两个gpl许可证如此受欢迎.它们是我遇到的最多病毒许可证.当然,你可以链接到lgpl库,这没关系,但许可证中有许多模糊的条款,最终可能会劫持你的应用程序,并迫使它成为lgpl.例如,如果你的程序因为"依赖"类型和库中的类型,请亲吻所有的工作再见.对任何GPL都要非常警惕. (2认同)