Share via


XAudio2-Einführung

XAudio2 ist eine Audio-API auf niedriger Ebene. Es bietet eine Signalverarbeitungs- und Mischbasis für Spiele, die den Vorgängern DirectSound und XAudio ähnelt.

XAudio2 ist der lang erwartete Ersatz für DirectSound. Es werden mehrere offene Probleme und Featureanforderungen behandelt.

XAudio2-Features

Im Folgenden finden Sie eine Liste mit XAudio2-Features und neuen Funktionen, mit denen Entwickler die Leistung ihrer Spiele verbessern können.

  • DSP-Effekte und Sprachfilterung

    DSP-Effekte (Digital Signal Processing) sind die Pixel-Shader von Audio. Sie erledigen alles, von der Umwandlung eines Sounds – ein Pig Quietal in einen niedrigen, beängstigenden Monstersound – bis hin zum Platzieren von Klängen in der Spielumgebung mithilfe von Hall und Verschlüssen oder Obstruktionsfilterung. XAudio2 bietet ein flexibles und leistungsstarkes DSP-Framework. Es bietet auch einen integrierten Filter für jede Stimme für effiziente Filtereffekte für niedrige/hohe/Bandpass-Filterung.

    Weitere Informationen zu DSP-Effekten und der Sprachfilterung finden Sie unter XAudio2 Audio Effects und IXAudio2Voice::SetFilterParameters .

  • Untermischung

    Beim Submixen werden mehrere Sounds zu einem einzigen Audiostream kombiniert– beispielsweise ein Engine-Sound aus zusammengesetzten Teilen, die alle gleichzeitig wiedergegeben werden. Außerdem können Sie submixing verwenden, um ähnliche Teile eines Spiels zu verarbeiten und zu kombinieren. Beispielsweise können Sie alle Soundeffekte des Spiels kombinieren, um eine Benutzerlautstärkeeinstellung anzuwenden, während eine separate Einstellung die Musiklautstärke steuert. In Kombination mit DSP stellt submixing die Art des Datenroutings und der Verarbeitung bereit, die für die heutigen Spiele erforderlich sind. XAudio2 ermöglicht beliebige Submischungsstufen, die die Erstellung komplexer Sounds und Spielmischungen ermöglichen.

    Weitere Informationen zum Submixen finden Sie unter XAudio2 Audio Graph und XAudio2 Voices .

  • Unterstützung für komprimierte Audiodaten

    Eine der wichtigsten Featureanforderungen für DirectSound war die Unterstützung komprimierter Audiodaten. XAudio2 unterstützt komprimierte Formate – ADPCM – nativ mit Laufzeitdekomprimierung.

  • Erweiterte Unterstützung für Multichannel- und Surround-Sound

    Die Unterstützung für Multichannel-, 3D- und Surround-Sound wird erweitert. 3D- und Surround-Sound sind jetzt viel flexibler und transparenter. XAudio2 entfernt das 6-Kanal-Limit für Mehrkanalsounds und unterstützt Mehrkanalaudio für alle mehrkanalfähigen Audio-Karte. Die Karte muss nicht hardwarebeschleunigt sein.

  • Mehrstufige Verarbeitung

    Um die CPU-Auslastung zu minimieren, bietet XAudio2 die Technologie zum Erstellen mehrerer Audioverarbeitungsdiagramme mit niedriger Rate. Dies kann die CPU-Auslastung erheblich reduzieren, indem es einem Spiel erlaubt, Audio mit der Rate des Quellmaterials zu verarbeiten, wenn die Rate kleiner als 48 kHz ist.

  • API-Modell ohne Blockierung

    Mit wenigen Ausnahmen blockiert ein Aufruf der XAudio2-Methode die Audioverarbeitungs-Engine nicht. Dies bedeutet, dass ein Client jederzeit sicher eine Reihe von Methodenaufrufen ausführen kann, ohne dass lange aufrufe blockiert werden, was zu Verzögerungen führt. Ausnahmen sind die IXAudio2Voice::D estroyVoice-Methode (die die Engine blockieren kann, bis die Verarbeitung der stimme beendet wurde) und die Methoden, die den Audiothread beenden: IXAudio2::StopEngine und IXAudio2::Release. Beachten Sie, dass XAudio2-Methodenaufrufe zwar die Audioverarbeitungs-Engine nicht blockieren, die XAudio2-Methoden jedoch kritische Abschnitte enthalten und unter umständen selbst blockiert werden können.

Wann sollte XAudio2 verwendet werden?

XAudio2 ist in erster Linie für die Entwicklung leistungsstarker Audio-Engines für Spiele vorgesehen. Spieleentwicklern, die Soundeffekte und Hintergrundmusik zu ihren modernen Spielen hinzufügen möchten, bietet XAudio2 ein Modul für Audiodiagramme und zum Mischen mit geringer Latenz und Unterstützung für dynamische Puffer, synchrone Wiedergabe genau nach Beispiel und implizite Quellratenumwandlung. Im Vergleich zu WASAPI benötigt XAudio2 auch für komplexe Audiolösungen nur eine minimale Menge an Code. Im Vergleich zur Media Foundation-Engine ist XAudio2 eine C++-API mit niedriger Latenz, die für die Verwendung in Spielen konzipiert ist.

Für Anwendungen, die lediglich eine reguläre Musikwiedergabe benötigen, kann die Media Foundation-Engine besser zu den Anforderungen der Anwendung passen.

Programmierhandbuch

Erste Schritte

XAudio2-Programmierreferenz