Sdílet prostřednictvím


Úvod do XAudio2

XAudio2 je rozhraní API pro zvuk nízké úrovně. Poskytuje zpracovávání a základ pro mixování signálu ve hrách, který je podobný svým předchůdcům, DirectSound a XAudio.

XAudio2 je dlouho očekávaná náhrada za DirectSound. Řeší několik nevyřízených problémů a žádostí o funkce.

Funkce XAudio2

Následuje seznam funkcí XAudio2 a nových funkcí, které vývojářům umožňují zlepšit výkon ve svých hrách.

  • Efekty DSP a filtrování podle hlasu

    Efekty DSP (Digital Signal Processing) jsou shadery zvuku v pixelech. Zvládnou všechno od transformace zvuku – přetváření kvičení prasete na nízký, děsivý zvuk monstra – až po umístění zvuků do herního prostředí pomocí ozvěny a okluze nebo filtrování překážek. XAudio2 poskytuje flexibilní a výkonnou architekturu DSP. Poskytuje také integrovaný filtr pro každý hlas, který umožňuje efektivní nízkou/vysokou/pásmovou propust.

    Další informace o efektech DSP a jednotlivých hlasových filtrech najdete v XAudio2 Audio Effects a IXAudio2Voice::SetFilterParameters.

  • Submixování

    Submíchání kombinuje několik zvuků do jednoho zvukového streamu – například zvuk motoru tvořený složenými částmi, z nichž všechny se přehrávají současně. Můžete také použít techniku kombinování k zpracování a spojení podobných částí hry. Můžete například zkombinovat všechny herní zvukové efekty, aby bylo možné použít nastavení hlasitosti uživatele, zatímco samostatný nastavení řídí hlasitost hudby. V kombinaci s DSP poskytuje submixing takový typ směrování a zpracování dat, který je nezbytný pro dnešní hry. XAudio2 umožňuje libovolnou úroveň submíchání, což umožňuje vytváření složitých zvuků a herních mixů.

    Další informace o podmíchávání najdete v audio graphu XAudio2 a XAudio2 Voices.

  • Podpora komprimovaného zvuku

    Jedním z hlavních požadavků funkcí pro DirectSound je podpora komprimovaného zvuku. XAudio2 podporuje komprimované formáty – ADPCM – nativně s dekompresí za běhu.

  • Vylepšená podpora vícekanálového a prostorového zvuku

    Je rozšířena podpora vícekanálového zvuku, 3D a prostorového zvuku. 3D a prostorový zvuk je teď mnohem flexibilnější a průhlednější. XAudio2 odstraňuje limit 6 kanálů u vícekanálových zvuků a podporuje vícekanálový zvuk na jakékoliv zvukové kartě, která podporuje vícekanál. Karta nemusí být akcelerovaná hardwarem.

  • Zpracování s více rychlostmi

    Aby se minimalizovalo využití procesoru, XAudio2 poskytuje technologii pro vytváření více grafů pro zpracování zvuku s nízkou rychlostí. To může výrazně snížit využití procesoru tím, že hru umožní zpracovat zvuk rychlostí zdrojového materiálu, pokud je rychlost nižší než 48 kHz.

  • Neblokující model rozhraní API

    S několika výjimkami volání metody XAudio2 neblokuje modul pro zpracování zvuku. To znamená, že klient může bezpečně provádět sadu volání metod kdykoli, aniž by byl blokován dlouhotrvajícími voláními, která způsobují zpoždění. Výjimkou jsou metoda IXAudio2Voice::DestroyVoice (která může blokovat systém, dokud zpracování zničeného hlasu není dokončeno) a metody, které ukončí zvukové vlákno: IXAudio2::StopEngine a IXAudio2::Release. Všimněte si, že zatímco volání metody XAudio2 neblokují modul pro zpracování zvuku, metody XAudio2 obsahují kritické části a mohou se v některých případech zablokovat.

Kdy použít XAudio2

XAudio2 je primárně určen pro vývoj vysoce výkonných zvukových motorů pro hry. Pro vývojáře her, kteří chtějí do svých moderních her přidat zvukové efekty a hudbu na pozadí, nabízí XAudio2 zvukový graf a mixovací modul s nízkou latencí a podporou dynamických vyrovnávacích pamětí, synchronní přehrávání přesných vzorků a implicitní převod frekvence zdroje. Ve srovnání s WASAPI vyžaduje XAudio2 pouze minimální množství kódu i pro složitá zvuková řešení. V porovnání s modulem Media Foundation je XAudio2 rozhraní API C++ s nízkou úrovní nízké latence, které je navržené pro použití ve hrách.

U aplikací, které jednoduše potřebují pravidelné přehrávání hudby, může být stroj Media Foundation vhodnějším způsobem odpovídat požadavkům aplikace.

Průvodce programováním

Začínáme

Referenční příručka programování XAudio2