Udostępnij za pośrednictwem


Wprowadzenie XAudio2

XAudio2 to interfejs API audio niskiego poziomu. Zapewnia ona podstawy przetwarzania sygnałów i mieszania dla gier, które są podobne do swoich poprzedników, DirectSound i XAudio.

XAudio2 jest długo oczekiwanym zamiennikiem DirectSound. Rozwiązuje on kilka niezałatwionych kwestii oraz prośby o nowe funkcje.

Funkcje XAudio2

Poniżej znajduje się lista funkcji XAudio2 i nowych funkcji, które umożliwiają deweloperom poprawę wydajności w swoich grach.

  • Efekty DSP i filtrowanie na głos

    Efekty przetwarzania sygnału cyfrowego (DSP) to cieniowanie pikseli dźwięku. Obsługują wszystko, od przekształcania dźwięku — przekształcania kwiku świni w niski, przerażający dźwięk potwora — do umieszczania dźwięków w środowisku gry przy użyciu pogłosu i okluzji lub filtrów przeszkód. XAudio2 zapewnia elastyczną i zaawansowaną platformę DSP. Zapewnia również wbudowany filtr dla każdego głosu, umożliwiający efektywne filtrowanie dolnoprzepustowe, górnoprzepustowe i pasmowoprzepustowe.

    Aby uzyskać więcej informacji na temat efektów DSP i filtrowania na głos, zobacz XAudio2 Audio Effects i IXAudio2Voice::SetFilterParameters.

  • Podmiksowanie

    Submiksowanie łączy kilka dźwięków w jeden strumień audio — na przykład dźwięk silnika składający się z części złożonych, z których wszystkie są odtwarzane jednocześnie. Ponadto można używać podmiksowania do przetwarzania i łączenia podobnych części gry. Można na przykład połączyć wszystkie efekty dźwiękowe gry, aby umożliwić zastosowanie ustawienia głośności użytkownika, podczas gdy oddzielne ustawienie kontroluje głośność muzyki. W połączeniu z DSP podmiksowanie zapewnia typ routingu i przetwarzania danych niezbędnych do dzisiejszych gier. XAudio2 umożliwia dowolne poziomy podmiksowania, umożliwiając tworzenie złożonych dźwięków i mieszanek gier.

    Aby uzyskać więcej informacji na temat podmiksowania, zobacz XAudio2 Audio Graph i XAudio2 Voices.

  • Obsługa skompresowanego dźwięku

    Jednym z głównych żądań funkcji directSound jest obsługa skompresowanego dźwięku. XAudio2 obsługuje skompresowane formaty ADPCM natywnie z dekompresją w czasie wykonywania.

  • Ulepszona obsługa dźwięku wielokanałowego i dźwięku otaczającego

    Rozszerzono obsługę dźwięku wielokanałowego, 3D i dźwięku otaczającego. Dźwięk 3D i dźwięk przestrzenny są teraz znacznie bardziej elastyczne i przezroczyste. XAudio2 usuwa limit 6 kanałów na dźwiękach wielokanałowych i obsługuje dźwięk wielokanałowy na dowolnej karcie audio z obsługą wielu kanałów. Karta nie musi być przyspieszona sprzętowo.

  • Przetwarzanie wielokrateczne

    Aby zminimalizować użycie procesora CPU, XAudio2 udostępnia technologię tworzenia wielu grafów przetwarzania audio o niskiej szybkości. Może to znacznie zmniejszyć użycie procesora CPU, umożliwiając grze przetwarzanie dźwięku w tempie materiału źródłowego, jeśli szybkość jest mniejsza niż 48 kHz.

  • Nieblokujący model interfejsu API

    W przypadku kilku wyjątków wywołanie metody XAudio2 nie zablokuje aparatu przetwarzania dźwięku. Oznacza to, że klient może bezpiecznie wykonać zestaw wywołań metod w dowolnym momencie bez blokowania długotrwałych wywołań powodujących opóźnienia. Wyjątki to metoda IXAudio2Voice::DestroyVoice (która może blokować aparat do momentu zakończenia przetwarzania głosu) oraz metody, które przerywają wątek audio: IXAudio2::StopEngine i IXAudio2::Release. Należy pamiętać, że chociaż wywołania metody XAudio2 nie blokują aparatu przetwarzania dźwięku, metody XAudio2 zawierają sekcje krytyczne i mogą zostać zablokowane w pewnych okolicznościach.

Kiedy używać XAudio2

XAudio2 jest przeznaczony przede wszystkim do tworzenia silników audio o wysokiej wydajności dla gier. Dla deweloperów gier, którzy chcą dodać efekty dźwiękowe i muzykę w tle do swoich nowoczesnych gier, XAudio2 oferuje graf audio i silnik miksujący z niskim opóźnieniem i obsługą dynamicznych buforów, synchronicznego, dokładnego odtwarzania próbek oraz niejawnej konwersji częstotliwości źródła. W porównaniu z interfejsem WASAPI XAudio2 wymaga tylko minimalnej ilości kodu, nawet w przypadku złożonych rozwiązań audio. W porównaniu z technologią Media Foundation, XAudio2 to niskopoziomowe, niskolatencyjne API języka C++, które jest przeznaczone do użycia w grach.

W przypadku aplikacji, które po prostu potrzebują regularnego odtwarzania muzyki, aparat Media Foundation może lepiej spełniać wymagania aplikacji.

Przewodnik programowania

Wprowadzenie

Referencje programistyczne XAudio2