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.
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) {} };
Verwenden Sie XAudio2Create, um eine instance der XAudio2-Engine zu erstellen.
if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
Verwenden Sie IXAudio2::RegisterForCallbacks , um den Engine-Rückruf zu registrieren.
pXAudio2->RegisterForCallbacks( &engineCallback );
Wenn Sie den Engine-Rückruf nicht mehr benötigen, rufen Sie IXAudio2::UnregisterForCallbacks auf.
pXAudio2->UnregisterForCallbacks( &engineCallback );
Zugehörige Themen