我正在与一个为各种2D以及最终3D迷你游戏构建引擎的团队合作。我们面临的问题是可靠的,跨平台的,完善的API。显然,由于我们对跨平台功能的需求,DirectX毫无疑问。 SDL很不错,而且效果很好,但是让我们面对现实吧SDL_Mixer在其功能上有些局限。我们目前正在使用它,但是当我们最终扩展到3D时,这将成为一个问题。
我一直在使用OpenAL,但是我发现的大多数文档都已经过时了,似乎还不能很好地工作。我愿意学习OpenAL,并努力通过它奋斗,但我想更加确定自己没有浪费时间。除了DevMaster教程之外,我还没有看到太多让我震惊的文档。如果某人的 Material 比我发现的要好,那真是太棒了。
我还看过FMOD之类的项目,尽管获得了许可,但看起来还是不错的。但是,像OpenAL一样,它们几乎没有文档。当然,我可以倒入代码来推断我的选择,但是考虑到我最终可能会为此付出代价,这似乎有些痛苦。
无论如何,想法,评论或担忧?非常感谢!
最佳答案
(注意:我在FMOD,BASS,OpenAL和DirectSound方面有经验;虽然我在下面列出了其他库,但我没有使用它们)。
BASS和FMOD都很好(实际上,我非常喜欢FMOD的文档;为什么您会说它“不存在”?)。还有Miles Sound System,Wwise,irrKlang和更多中间件软件包。
OpenAL应该是跨平台的,在每个平台上都有自己的怪癖。它也不是完全“开放”的。而且我不确定它的 future 是什么。当Creative掌握它时,似乎卡住了。不过,最近有种尝试从头开始构建实现:OpenAL Soft。
然后是 native 平台的API,例如Windows的DirectSound或XAudio2,OS X的Core Audio,Linux的ALSA,控制台的专有API等。您只需在所需的通用接口(interface)下对其进行抽象,并且在每个平台上都有不同的实现。当然,这不仅是使用OpenAL进行的工作,而且OpenAL在某些平台上甚至不可用,并且在其他平台上有许多您甚至无法修复的怪癖(因为没有可修复的源代码)。从某种意义上说,为所有此类平台相关的工作都已经为您完成了,可以选择授予诸如FMOD或Miles之类的商业库许可。
我们现在正在使用OpenAL,但正在考虑放弃它,因为它不会随处可见,而且我们无法解决这个问题。因此,尽管OpenAL易于入门,但它并没有获得我的投票。
关于c++ - 游戏开发声音框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/90503/