Udostępnij za pośrednictwem


Jak używać wywołań zwrotnych silnika

Kod klienta XAudio2 zdarzeń aparatu można powiadomić, rejestrując wystąpienie klasy implementujące interfejsIXAudio2EngineCallback za pomocą aparatu XAudio2. Dzięki temu kod klienta XAudio2 może śledzić, kiedy odbywa się przetwarzanie dźwięku, oraz kiedy ponownie uruchomić silnik w przypadku wystąpienia błędu krytycznego.

Aby użyć wywołania zwrotnego silnika

Poniższe kroki rejestrują obiekt do obsługi zdarzeń silnika.

  1. Utwórz klasę dziedziczącą z interfejsu IXAudio2EngineCallback.

    Wszystkie metody IXAudio2EngineCallback są wyłącznie wirtualne i muszą być zdefiniowane. Metoda, którą się interesujemy w tym przykładzie, to IXAudio2EngineCallback::OnCriticalError, ta ustawia flagę sygnalizującą głównej pętli gry, że wystąpił błąd krytyczny. Pozostałe metody, IXAudio2EngineCallback::OnProcessingPassStart i IXAudio2EngineCallback::OnProcessingPassEnd, są szablonami w tym przykładzie.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Użyj XAudio2Create, aby utworzyć wystąpienie silnika XAudio2.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Użyj IXAudio2::RegisterForCallbacks, aby zarejestrować wywołanie zwrotne silnika.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Jeśli nie potrzebujesz już wywołania zwrotnego silnika, wywołaj IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

wywołania zwrotne

wywołania zwrotne XAudio2

przewodnik programowania XAudio2

Instrukcje: tworzenie podstawowego grafu przetwarzania dźwięku

Jak przesyłać strumieniowo dźwięk z dysku