다음을 통해 공유


방법: XAudio2 초기화

XAudio2 엔진의 인스턴스를 만든 다음 마스터 음성을 만들어 오디오 재생을 위해 XAudio2를 초기화합니다.

  1. 먼저 COM을 초기화해야 합니다. C++/WinRT를 사용하는 경우 처리됩니다. 환경이 COM을 이미 초기화했는지 확실하지 않은 경우 반환 값을 확인하는 한 CoInitializeEx를 호출할 수 있습니다.

    HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED);
    if (FAILED(hr)) return hr;
    
  2. XAudio2 엔진의 인스턴스를 만들려면 XAudio2Create 함수를 호출합니다. 그러면 IXAudio2 인터페이스에 대한 포인터가 제공되므로 클래스 데이터 멤버에 저장하는 것이 좋습니다. 이 코드 조각에서는 C++/WinRT 스마트 포인터를 사용하지만 필요한 경우 원시 포인터를 사용할 수 있습니다.

    winrt::com_ptr<IXAudio2> m_xAudio2{};
    ...
    winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
    
  3. 다음으로 마스터링 음성으로 알려진 것을 만들려면 IXAudio2::CreateMasteringVoice 메서드를 호출합니다. 그러면 IXAudio2MasteringVoice 인터페이스에 대한 포인터가 표시됩니다. 마스터 음성은 오디오 디바이스를 캡슐화합니다. 오디오 그래프를 통과하는 모든 오디오의 궁극적인 대상입니다.

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

스마트 포인터

안전성과 편의를 위해 IXAudio2 인터페이스에 스마트 포인터를 사용할 수 있습니다. 그러나 음성 인터페이스(예: IXAudio2MasteringVoice)에는 릴리스 메서드가 없으므로 스마트 포인터를 사용하려고 하면 빌드 오류가 표시됩니다. 이러한 코드 조각에서는 가능한 경우 스마트 포인터와 필요한 경우 원시 포인터를 사용합니다.