使用方法:使用引擎回呼
您可以向 XAudio2 引擎註冊實作 IXAudio2EngineCallback 介面的類別實例,以通知引擎事件的 XAudio2 用戶端程式代碼。 這可讓 XAudio2 用戶端程式代碼追蹤何時發生音訊處理,以及在發生重大錯誤時重新開機引擎的時機。
使用引擎回呼
下列步驟會註冊 物件來處理引擎事件。
建立繼承自 IXAudio2EngineCallback 介面的類別。
IXAudio2EngineCallback的所有方法都是虛擬的,必須加以定義。 此範例中感興趣的方法是 IXAudio2EngineCallback::OnCriticalError,它會設定旗標以向主要遊戲迴圈發出重大錯誤發生訊號。 此範例中其餘的方法 IXAudio2EngineCallback::OnProcessingPassStart 和 IXAudio2EngineCallback::OnProcessingPassEnd是存根。
class EngineCallback : public IXAudio2EngineCallback { void OnProcessingPassEnd () {} void OnProcessingPassStart() {} void OnCriticalError (HRESULT Error) {} };
使用 XAudio2Create 建立 XAudio2 引擎的實例。
if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
使用 IXAudio2::RegisterForCallbacks 來註冊引擎回呼。
pXAudio2->RegisterForCallbacks( &engineCallback );
如果您不再需要引擎回呼,請呼叫 IXAudio2::UnregisterForCallbacks。
pXAudio2->UnregisterForCallbacks( &engineCallback );
相關主題