XAudio2 简介

XAudio2 是低级别音频 API。 它为类似于其前身 DirectSound 和 XAudio 的游戏提供了信号处理和混合基础。

XAudio2 是期待已久的 DirectSound 替代产品。 它解决了几个悬而未决的问题和功能请求。

XAudio2 功能

下面是 XAudio2 特性和新功能的列表,这些特性和新功能使开发人员能够提高其游戏的性能。

  • DSP 效果和按语音筛选

    数字信号处理 (DSP) 效果是音频的像素着色器。 它们处理从转换声音(将猪尖叫变成低矮的可怕怪物声音)到使用混响和遮挡或障碍筛选在游戏环境中放置声音的所有内容。 XAudio2 提供灵活而强大的 DSP 框架。 它还为每个语音提供内置筛选器,实现高效的低/高/带通筛选效果。

    有关 DSP 效果和按语音筛选的详细信息,请参阅 XAudio2 音频 效果和 IXAudio2Voice::SetFilterParameters

  • 子混合

    子混合将多个声音合并到单个音频流中,例如,由复合部件组成的引擎声音,所有这些声音同时播放。 此外,还可以使用子混合来处理和合并游戏的类似部分。 例如,可以组合所有游戏声音效果,以允许在单独的设置控制音乐音量时应用用户音量设置。 与 DSP 相结合,子混合提供当今游戏所需的数据路由和处理类型。 XAudio2 允许任意级别的子混合,从而创建复杂的声音和游戏混合。

    有关子混合的详细信息,请参阅 XAudio2 Audio GraphXAudio2 Voices

  • 压缩的音频支持

    DirectSound 的主要功能请求之一是压缩音频支持。 XAudio2 通过运行时解压缩以本机方式支持压缩格式(ADPCM)。

  • 增强的多声道和环绕声支持

    扩展了多声道、3D 和环绕声支持。 3D 和环绕音效现在更加灵活和透明。 XAudio2 取消了多声道声音的 6 声道限制,并支持任何支持多声道的音频卡的多声道音频。 卡不需要是硬件加速的。

  • 多速率处理

    为了帮助最大程度地减少 CPU 使用率,XAudio2 提供了创建多个低速率音频处理图的技术。 如果速率小于 48 kHz,则允许游戏以源材料速率处理音频,从而显著减少 CPU 使用率。

  • 非阻止 API 模型

    除了少数例外,XAudio2 方法调用不会阻止音频处理引擎。 这意味着客户端可以随时安全地进行一组方法调用,而不会阻止长时间运行的调用导致延迟。 例外情况是 IXAudio2Voice::D estroyVoice 方法 (它可能会阻止引擎,直到被销毁的语音完成处理) 以及终止音频线程的方法: IXAudio2::StopEngineIXAudio2::Release。 请注意,虽然 XAudio2 方法调用不会阻止音频处理引擎,但 XAudio2 方法包含关键部分,并且在某些情况下本身可能会被阻止。

何时使用 XAudio2

XAudio2 主要用于为游戏开发高性能音频引擎。 对于要向其现代游戏中添加声音效果和背景音乐的游戏开发人员,XAudio2 提供了音频图和混合引擎,该引擎具有低延迟且支持动态缓冲、同步采样准确播放以及隐式源速率转换。 与 WASAPI 相比,即使对于复杂的音频解决方案,XAudio2 也只需要最少的代码量。 与媒体基础引擎相比,XAudio2 是一种低级别、低延迟的 C++ API,专为在游戏中使用而设计。

对于只需要常规音乐播放的应用程序,Media Foundation 引擎可能更符合应用程序的要求。

编程指南

入门

XAudio2 编程参考