您可以將實作 IXAudio2EngineCallback 介面的類別實例註冊到 XAudio2 引擎,以便通知 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 );
相關主題