Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
XAudio2 — это низкоуровневый API аудио. Он предоставляет базу для обработки и микширования сигналов в играх, подобного тем, что использовались в DirectSound и XAudio.
XAudio2 является долгожданной заменой DirectSound. В нем рассматриваются несколько нерешённых проблем и запросов на функции.
Функции XAudio2
Ниже приведен список функций XAudio2 и новых функций, позволяющих разработчикам повысить производительность в своих играх.
Эффекты DSP и фильтрация по каждому голосу
Эффекты цифровой обработки сигналов (DSP) — это шейдеры пикселей звука. Они обрабатывают всё: от преобразования звука — превращая визг свиньи в низкий, страшный монстроподобный звук — до размещения звуков в игровой среде с помощью реверберации и окклюзии или фильтрации препятствующей. XAudio2 предоставляет гибкую и мощную платформу DSP. Кроме того, он предоставляет встроенный фильтр для каждого голоса, обеспечивающий эффективную низкочастотную, высокочастотную или полосовую фильтрацию.
Дополнительные сведения о звуковых эффектах XAudio2 и фильтрации голосовых данных см. в и IXAudio2Voice::SetFilterParameters.
Подмиксирование
Подмиксирование объединяет несколько звуков в один звуковой поток, например звук двигателя, состоящий из составных частей, все из которых одновременно играют. Кроме того, можно использовать подмиксирование для обработки и объединения аналогичных частей игры. Например, можно объединить все звуковые эффекты в игре, чтобы разрешить применять настройки громкости для пользователя, а отдельный параметр контролировал громкость музыки. В сочетании с DSP подмиксирование обеспечивает тип маршрутизации и обработки данных, необходимых для современных игр. XAudio2 позволяет создавать произвольные уровни подмиксирования, что позволяет создавать сложные звуки и игровые смеси.
Дополнительные сведения о субмиксинге см. в XAudio2 Audio Graph и XAudio2 Voices.
Поддержка сжатых звуковых файлов
Одним из основных запросов на функцию DirectSound является поддержка сжатых звуковых данных. XAudio2 поддерживает сжатые форматы — ADPCM — изначально с распаковкой во время выполнения.
Расширенная поддержка многоканального и объёмного звука
Расширена поддержка многоканального, трехмерного и окружного звука. Трехмерный и окружной звук теперь гораздо более гибкий и прозрачный. XAudio2 удаляет ограничение 6 каналов на многоканальные звуки и поддерживает многоканальный звук на любой мультиканальной звуковой карточке с поддержкой нескольких каналов. Карточка не требует аппаратного ускорения.
Многократная обработка
Чтобы свести к минимуму использование ЦП, XAudio2 предоставляет технологию для создания нескольких низкоуровневых графиков обработки звука. Это может значительно сократить использование ЦП, позволяя игре обрабатывать звук по скорости исходного материала, если скорость меньше 48 кГц.
Неблокирование модели API
При некоторых исключениях вызов метода XAudio2 не блокирует обработчик обработки звука. Это означает, что клиент может безопасно выполнять набор вызовов методов в любое время, не блокируя длительные вызовы, вызывающие задержки. Исключениями являются метод IXAudio2Voice::DestroyVoice (который может блокировать подсистему, пока не завершится обработка разрушаемого голоса) и методы, которые завершают поток аудио: IXAudio2::StopEngine и IXAudio2::Release. Обратите внимание, что в то время как вызовы метода XAudio2 не блокируют подсистему обработки звука, методы XAudio2 содержат критически важные разделы и могут быть заблокированы в некоторых обстоятельствах.
Когда следует использовать XAudio2
XAudio2 в основном предназначен для разработки высокопроизводительных звуковых двигателей для игр. Для разработчиков игр, которые хотят добавить звуковые эффекты и фоновую музыку в свои современные игры, XAudio2 предлагает звуковую графическую схему и микшировочный движок с низкой задержкой и поддержкой динамических буферов, синхронного воспроизведения с точностью до семпла и автоматического преобразования частоты сэмплов. По сравнению с WASAPI XAudio2 требуется только минимальный объем кода даже для сложных звуковых решений. По сравнению с подсистемой Media Foundation XAudio2 — это низкоуровневый API C++ с низкой задержкой, предназначенный для использования в играх.
Для приложений, которые просто нуждаются в регулярном воспроизведении музыки, подсистема Media Foundation может быть лучше соответствовать требованиям приложения.
Связанные разделы