So wird's gemacht: Verwenden der Modulrückrufe

Sie können den XAudio2-Clientcode über Engine-Ereignisse benachrichtigen, indem Sie eine instance einer Klasse registrieren, die die IXAudio2EngineCallback-Schnittstelle mit der XAudio2-Engine implementiert. Dadurch kann der XAudio2-Clientcode nachverfolgen, wann die Audioverarbeitung stattfindet und wann die Engine bei einem kritischen Fehler neu gestartet werden soll.

So verwenden Sie einen Engine-Rückruf

In den folgenden Schritten wird ein -Objekt registriert, um Engine-Ereignisse zu behandeln.

  1. Erstellen Sie eine Klasse, die von der IXAudio2EngineCallback-Schnittstelle erbt.

    Alle Methoden von IXAudio2EngineCallback sind rein virtuell und müssen definiert werden. Die in diesem Beispiel interessante Methode ist IXAudio2EngineCallback::OnCriticalError, die ein Flag festlegt, um der Standard Spielschleife zu signalisieren, dass ein kritischer Fehler aufgetreten ist. Die übrigen Methoden IXAudio2EngineCallback::OnProcessingPassStart und IXAudio2EngineCallback::OnProcessingPassEnd sind stubs in diesem Beispiel.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Verwenden Sie XAudio2Create, um eine instance der XAudio2-Engine zu erstellen.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Verwenden Sie IXAudio2::RegisterForCallbacks , um den Engine-Rückruf zu registrieren.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Wenn Sie den Engine-Rückruf nicht mehr benötigen, rufen Sie IXAudio2::UnregisterForCallbacks auf.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Rückrufe

XAudio2-Rückrufe

XAudio2-Programmieranleitung

So wird's gemacht: Erstellen eines grundlegenden Audioverarbeitungsdiagramms

So wird's gemacht: Streamen von Sound von einem Datenträger