0

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

4

1 回答 1

1

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

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

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

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

  • LOC_HARDWARE不支持缓冲区。

  • DirectSound 不支持效果(I3DL、EAX 等)。

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

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

XAudio 2.8 包含在 Windows SDK 中,尽管您需要使用 XAudio 2.7 的旧版 DirectX SDK 来面向 Windows 7 或 Windows Vista——有关详细信息,请参阅这篇文章。可以在GitHub 上找到示例。DirectX Tool Kit for Audio对于使用 C++ 中的 XAudio2 是非常有用的抽象。

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

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

于 2016-02-01T21:06:14.260 回答