Megosztás a következőn keresztül:


Útmutató: XAudio2 inicializálása

Az XAudio2-t inicializálhatja a hanglejátszáshoz az XAudio2 motor egy példányának létrehozásával, majd egy mesterhang létrehozásával.

  1. Először inicializált COM-t kell használnia. Ha C++/WinRThasznál, akkor ez meg van oldva. Ha nem biztos abban, hogy a környezete már inicializálta a COM-t, meghívhatja CoInitializeEx, amíg ellenőrzi a visszatérési értéket.

    HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED);
    if (FAILED(hr)) return hr;
    
  2. Az XAudio2 motor egy példányának létrehozásához hívja meg a XAudio2Create függvényt. Ez egy IXAudio2 felületre mutat, és érdemes ezt egy osztályadat-tagban tárolni. Ebben a kódrészletben egy C++/WinRT intelligens mutatót használunk, de szükség esetén használhat nyers mutatót.

    winrt::com_ptr<IXAudio2> m_xAudio2{};
    ...
    winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
    
  3. Ezután az úgynevezett mesterhang létrehozásához hívja meg a IXAudio2::CreateMasteringVoice metódust. Ez mutatót ad egy IXAudio2MasteringVoice felülethez. A mastering voices beágyaz egy hangeszközt. Ez a végső cél minden hang számára, amely áthalad egy hanggráfon.

    IXAudio2MasteringVoice* m_pXAudio2MasteringVoice{};
    ...
    winrt::check_hresult(xAudio2->CreateMasteringVoice(&m_pXAudio2MasteringVoice));
    

Intelligens mutatók

A biztonság és a kényelem érdekében intelligens mutatót használhat az IXAudio2 interfészhez. A hangalapú felületek (például IXAudio2MasteringVoice) azonban nem rendelkeznek Release metódussal, így fordítási hiba jelenik meg, ha okosmutatót próbál használni ezekhez. Ezekben a kódrészletekben lehetőség szerint intelligens mutatót és szükség esetén nyers mutatót használunk.