C++ - 将 DirectSound 或 XAudio2 与 EAX 配合使用



是否有在C++中使用EAX与DirectSound或XAudio2的示例/教程/资源?我找不到任何东西,我的游戏引擎真的需要它。

首先,DirectSound在这一点上是古老的。旧游戏仍然支持它,并且 DirectSound 8 标头位于 Windows SDK 中,但十多年来没有针对它的示例或文档更新。

但是,Windows 音频驱动程序模型 (WDM( 不支持 Creative EAX 所需的硬件音频混合。从Windows Vista开始,对此的支持已被删除,因此EAX不能通过DirectSound或XAudio2使用。

总结一下Windows Vista驱动程序模型对DirectSound的更改:

  • LOC_SOFTWARE缓冲区可以支持环绕声多声道格式。在Windows XP上,LOC_SOFTWARE仅支持单声道或立体声。

  • 不支持LOC_HARDWARE缓冲区。

  • 效果(I3DL,EAX等(不支持通过DirectSound。

  • DirectSound 3D 定位仅限于单声道声音。

XAudio2 支持环境混响和 3D 音频定位,包括多声道源,所有这些都在软件中完成。

XAudio 2.8 在 Windows SDK 中,尽管您需要使用传统的 DirectX SDK for XAudio 2.7 来面向 Windows 7 或 Windows Vista - 有关详细信息,请参阅这篇文章。可以在 GitHub 上找到示例。音频的 DirectX 工具包是使用 C++ 中的 XAudio2 非常有用的抽象。

更新:XAudio 2.9 现在可通过 XAudio2Redist 在 Windows 7 SP1 或更高版本上使用,并且无需使用旧版 DirectX SDK 或旧版 DirectSetup 部署。

要获得 EAX 等功能的硬件访问权限,您必须使用 OpenAL 等第三方解决方案。请参阅创意网站了解更多信息。

最新更新