DirectSound是Windows最好的音频抽象层吗?

时间:2020-03-06 14:58:56  来源:igfitidea点击:

DirectSound是Windows最好的音频抽象层吗?
将我的应用程序从非常糟糕的声音实现(内置于特定的芯片组)切换到抽象层。

应用是本机Winform,.net 3.5. DirectX / DirectSound是可能的选择,但有点担心开销。还有其他选择吗?或者甚至想其他事情都傻吗?

解决方案

查看SDL是否看起来更好。

今天,DirectSound并没有像过去那样受到Microsoft的热爱。就DirectX而言,我们可以尝试使用XAudio2或者XACT。有些人爱那些人,有些人恨他们。 XAudio2更底层,而XACT相当高层。两者都可以从Microsoft XNA(类似于Managed DirectX)进行访问,但是正在积极开发中。

但是我们不限于使用DirectX附带的功能。如果我们想要很棒的东西,请尝试FMod。他们仍然拥有自己的Shareware / Hobbyist许可模型和Freeware许可模型,以防我们不想支付大笔费用。

选择取决于我们想对声音做些什么。

DirectSound相当不错。

如果我们需要低延迟或者通过多个声卡同时支持声音输入和输出的良好支持,则可能还需要查看ASIO:

http://de.wikipedia.org/wiki/Audio_Stream_Input/Output

waveOut ... API仍然是一个选项。使用托管代码很难,但是我们可以通过这种方式一次播放多种声音(至少在XP和Vista中)。

如果我们只需要偶尔播放声音,则System.Media.SoundPlayer非常易于使用。但是,使用此组件一次不能播放多个声音。

DirectSound是我们唯一的其他主要选择。如果我们需要它,它具有内置的软件合成器。

编辑:SDL看起来很有趣。谢谢思珍

好了,我们可以改用OpenAL。 OpenGL对Direct3D的作用是对DirectSound(3D)的OpenAL。该接口与OpenGL非常相似,如果我们不喜欢它,那么我们也可能会不喜欢OpenAL。另外,我不确定此库的Windows版本是自己的本地实现还是仅调用DirectSound,因此可能只是其顶部的(薄?)包装器。