Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zainicjuj XAudio2 do odtwarzania audio, tworząc wystąpienie silnika XAudio2, a następnie tworząc głos główny.
Najpierw musisz zainicjować COM. Jeśli używasz C++/WinRT, to jest to już załatwione. Jeśli nie masz pewności, że środowisko już zainicjowało model COM, możesz wywołać metodę CoInitializeEx, o ile sprawdzasz wartość zwracaną.
HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED); if (FAILED(hr)) return hr;Aby utworzyć wystąpienie silnika XAudio2, wywołaj funkcję XAudio2Create. Da to wskaźnik do interfejsu IXAudio2 i dobrym pomysłem jest przechowywanie go jako członka klasy. W tym fragmencie kodu używamy inteligentnego wskaźnika C++/WinRT, ale w razie potrzeby można użyć nieprzetworzonego wskaźnika.
winrt::com_ptr<IXAudio2> m_xAudio2{}; ... winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));Następnie, aby utworzyć to, co jest znane jako głos mistrzowski, wywołaj metodę IXAudio2::CreateMasteringVoice. To zapewni Ci wskaźnik do interfejsu IXAudio2MasteringVoice. Głosy w procesie masteringu otaczają urządzenie dźwiękowe. Jest to ostateczne miejsce docelowe dla wszystkich dźwięków przechodzących przez graf dźwiękowy.
IXAudio2MasteringVoice* m_pXAudio2MasteringVoice{}; ... winrt::check_hresult(xAudio2->CreateMasteringVoice(&m_pXAudio2MasteringVoice));
Inteligentne wskaźniki
Dla bezpieczeństwa i wygody można użyć inteligentnego wskaźnika dla interfejsu IXAudio2. Jednak interfejsy dźwiękowe (takie jak IXAudio2MasteringVoice) nie mają metody Release, więc pojawi się błąd kompilacji, jeśli spróbujesz użyć sprytnego wskaźnika dla tych. W tych fragmentach kodu używamy inteligentnego wskaźnika tam, gdzie to możliwe, oraz nieprzetworzonego wskaźnika tam, gdzie jest to konieczne.
Tematy pokrewne
- Rozpoczęcie pracy z XAudio2
- Jak ładować pliki danych audio w XAudio2
- Instrukcje: odtwarzanie dźwięku za pomocą XAudio2