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

问题描述 投票:0回答:2

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

c++ audio directx directsound xaudio2
2个回答
1
投票

首先,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
    不支持缓冲区。

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

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

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

XAudio 2.8 位于 Windows SDK 中,但您需要使用 XAudio 2.7 的旧版 DirectX SDK 来面向 Windows 7 或 Windows Vista - 请参阅 this post 了解详细信息。示例可以在 GitHub 上找到。 DirectX 音频工具套件对于使用 C++ 中的 XAudio2 来说是非常有用的抽象。

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

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


0
投票

这完全是废话。 为什么他们不赞成直接声音他们疯了吗??? 这到底是什么意思。

© www.soinside.com 2019 - 2024. All rights reserved.