了解如何开发音乐和声音并将其融入你的 DirectX 游戏,以及如何处理音频信号以创建动态和有方位感的声音。

对于音频编程,建议使用 DirectX 中的 XAudio2 库或 Windows 运行时 音频图 API。 此处使用 XAudio2。 XAudio2 是一个低级别的音频库,可为游戏提供信号处理 和混合的基础,并支持各种格式。

你还可以使用 Microsoft 媒体基础 实现简单的声音和音乐播放。 Microsoft Media Foundation 专门为播放媒体文件和音频和视频流而设计,但也可以用于游戏,而且对游戏的影院场景或非交互式组件非常有用。

下面是我们在此部分中使用的一些音频编程概念。

  • 信号是声音编程的基本单位,好比是图形中的像素。 处理信号的数字信号处理器 (DSP) 好比是游戏音频的像素着色器。 它们可以转换、合并和过滤信号。 通过对 DSP 编程,你可以根据需要更改游戏的声音效果和音乐,使其较为简单或者非常复杂。
  • 语音是两个或多个信号的子混合复合体。 共有 3 种 XAudio2 语音对象:源语音、子混合语音和主语音。 源语音对客户提供的音频数据操作。 源语音和子混合语音将其输出发送到一个或多个子混合语音或主语音。 子混合语音和主语音将传入的所有音频混合在一起,并对结果进行操作。 主语音将音频数据写入音频设备。
  • 混合是将若干离散语音(如声音效果和场景后台播放的背景音频)合并到信号流的过程。 子混合是合并若干离散信号(如属于引擎噪音的组件声音)并创建语音的过程。
  • 音频格式。 音乐和声音效果可以存储为游戏的各种数字格式。 有未压缩格式(如 WAV)和压缩格式(如 MP3 和 OGG)。 采样的压缩率越高(通常由其比特率指示,比特率越低压缩损失越大),保真度就越差。 保真度因压缩方案和比特率而各不相同,因此需要通过实验找到最适合你的游戏的方案。
  • 采样率和质量。 声音可以用不同的速率采样,使用较低速率采样的声音会得到较差的保真度。 CD 质量的采样率是 44.1 千赫(44100 赫兹)。 如果不需要高保真度的声音,则可以选择较低的采样率。 较高的采样率可能适合于专业音频应用程序,但是,除非你的游戏需要专业保真度的声音,否则可能不需要它们。
  • 声音发射器(或源)。 在 XAudio2 中,声音发射器是发出声音的位置,它可能是暂时的背景噪音或者是游戏内唱机播放的摇滚乐曲。 可以通过世界坐标指定发射器。
  • 声音侦听器。 声音侦听器通常是播放器,在更高级的游戏中也可能是处理从侦听器中收到的声音的 AI 实体。 你可以将该声音再混合到音频流中以发送到播放器,也可以使用它执行特定的游戏内操作,如唤醒标记为侦听器的 AI。
  • 设计注意事项

    音频是游戏设计和开发中非常重要的部分。 许多游戏玩家还记得从普通游戏提升到传奇地位就是因为一段难忘的配乐,或优秀的语音作品和声音混合,或者全部是一流的音频作品。 音乐和声音定义游戏的个性,并确立定义该游戏的主要动机,使之从其他类似的游戏中脱颖而出。 花些精力设计和开发游戏的音频配置文件非常值得。

    专业 3D 音频可以添加 3D 图形提供之外的沉浸级别。 如果你在开发模拟世界或需要 电影风格的复杂游戏,请考虑使用 3D 专业音频技术真正将玩家带到你的游戏世界中。

    DirectX 音频开发路线图

    XAudio2 概念资源

    XAudio2 是 DirectX 的音频混合库,主要用于开发高性能的音频游戏引擎。 对于要向其现代游戏中添加声音效果和背景音乐的游戏开发人员,XAudio2 提供了音频图和混合引擎,该引擎具有低延迟且支持动态缓冲、同步采样准确播放以及隐式源速率转换。

    Media Foundation 中支持的媒体格式

    本主题列出了 Microsoft Media Foundation 本机支持的媒体格式。 (第三方可以通过编写自定义插件支持其他格式。)

    编码和文件创作

    本主题介绍如何使用 Microsoft Media Foundation 来执行音频和视频编码以及创作媒体文件。

    Windows Media 编解码器

    本主题介绍如何使用 Windows Media 音频和视频编解码器的功能来生成和使用压缩的数据流。

    Media Foundation 编程参考

    本部分包含 Media Foundation API 的参考信息。

    Media Foundation SDK 示例

    本部分列出了演示如何使用 Media Foundation 的示例应用。

    Windows 运行时 XAML 媒体类型

    如果使用 DirectX-XAML 互操作 ,你可以将 Windows 运行时 XAML 媒体 API 合并到使用 DirectX 和 C++ 的 UWP 应用中,从而获得更简单的游戏方案。

    Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback .

    提交和查看相关反馈