Поделиться через


Введение в XAudio2

XAudio2 — это низкоуровневый API аудио. Он обеспечивает обработку сигналов и смешивание основы для игр, которые похожи на своих предшественников, DirectSound и XAudio.

XAudio2 — долгожданная замена DirectSound. В нем рассматриваются некоторые нерешенные проблемы и запросы функций.

Функции XAudio2

Ниже приведен список функций XAudio2 и новых функций, которые позволяют разработчикам повысить производительность в своих играх.

  • Эффекты DSP и фильтрация голоса

    Эффекты цифровой обработки сигналов (DSP) — это пиксельные шейдеры звука. Они обрабатывают все, от преобразования звука — превращение свиньего визга в низкий, страшный звук монстра — до размещения звуков в игровой среде с помощью реверберации и загораживания или фильтрации препятствий. XAudio2 предоставляет гибкую и мощную платформу DSP. Он также предоставляет встроенный фильтр для каждого голоса для эффективных эффектов фильтрации с низким/ высоким/полосным диапазоном.

    Дополнительные сведения об эффектах DSP и фильтрации для каждого голоса см. в разделах XAudio2 Audio Effects и IXAudio2Voice::SetFilterParameters .

  • Субмикирование

    Субмикксирование объединяет несколько звуков в один звуковой поток, например звук двигателя, состоящий из составных частей, все из которых воспроизводится одновременно. Кроме того, вы можете использовать субмикксирование для обработки и объединения схожих частей игры. Например, можно объединить все звуковые эффекты игры, чтобы разрешить применение параметра громкости пользователя, в то время как отдельный параметр управляет громкость музыки. В сочетании с DSP субмикширование обеспечивает тип маршрутизации и обработки данных, необходимый для современных игр. XAudio2 позволяет использовать произвольные уровни субмикширования, что позволяет создавать сложные звуки и игровые миксы.

    Дополнительные сведения о субмикширование см. в разделе XAudio2 Audio Graph и XAudio2 Voices .

  • Поддержка сжатого звука

    Одним из основных запросов на функцию DirectSound является поддержка сжатого звука. XAudio2 поддерживает сжатые форматы ADPCM с распаковкой во время выполнения.

  • Улучшенная поддержка многоканального и объемного звука

    Расширена поддержка многоканального, трехмерного и объемного звука. Трехмерный и объемный звук теперь гораздо более гибкие и прозрачные. XAudio2 снимает ограничение в 6 каналов на многоканальные звуки и поддерживает многоканальный звук на любых многоканальных звуковых карта с поддержкой нескольких каналов. Карта не требует аппаратного ускорения.

  • Многоскоростная обработка

    Чтобы свести к минимуму загрузку ЦП, XAudio2 предоставляет технологию для создания нескольких графиков низкой скорости обработки звука. Это может значительно снизить загрузку ЦП, позволяя игре обрабатывать звук со скоростью исходного материала, если скорость менее 48 кГц.

  • Неблокировка модели API

    За некоторыми исключениями вызов метода XAudio2 не блокирует подсистему обработки звука. Это означает, что клиент может безопасно выполнять набор вызовов методов в любое время, не блокируя длительные вызовы, что приводит к задержкам. Исключениями являются метод IXAudio2Voice::D ebytesVoice (который может блокировать подсистему до завершения обработки голоса) и методы, завершающие аудиопоток: IXAudio2::StopEngine и IXAudio2::Release. Обратите внимание, что хотя вызовы методов XAudio2 не блокируют подсистему обработки звука, методы XAudio2 содержат критические разделы и могут быть заблокированы в некоторых обстоятельствах.

Когда следует использовать XAudio2

XAudio2 в первую очередь предназначен для разработки высокопроизводительных звуковых движок для игр. Разработчикам игр, желающим добавить в свои современные игры звуковые эффекты и фоновую музыку, XAudio2 предлагает модуль обработки и микширования звука с низкой задержкой и поддержкой динамических буферов, синхронным образцово-точным воспроизведением и неявным преобразованием производительности источника. По сравнению с WASAPI, XAudio2 требует минимального объема кода даже для сложных звуковых решений. По сравнению с движком Media Foundation, XAudio2 — это низкоуровневый API C++ с низкой задержкой, предназначенный для использования в играх.

Для приложений, которым просто требуется регулярное воспроизведение музыки, подсистема Media Foundation может лучше соответствовать требованиям приложения.

Руководство по программированию

Начало работы

Справочник по программированию в XAudio2