是否有在 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
不支持缓冲区。
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 等第三方解决方案。请参阅创意网站了解更多信息。
这完全是废话。 为什么他们不赞成直接声音他们疯了吗??? 这到底是什么意思。