共用方式為


如何使用引擎回呼

您可以將實作 IXAudio2EngineCallback 介面的類別實例註冊到 XAudio2 引擎,以便通知 XAudio2 用戶端程式代碼有關引擎事件。 這可讓 XAudio2 用戶端程式代碼追蹤何時發生音訊處理,以及在發生嚴重錯誤時重新啟動引擎的時機。

使用引擎回調

下列步驟會登錄物件來用來處理引擎事件。

  1. 建立繼承自 IXAudio2EngineCallback 介面的類別。

    IXAudio2EngineCallback 的所有方法全都是虛擬的,必須加以定義。 此範例中感興趣的方法是 IXAudio2EngineCallback::OnCriticalError,這會設定旗標來向主要遊戲迴圈發出重大錯誤發生訊號。 其餘方法 IXAudio2EngineCallback::OnProcessingPassStartIXAudio2EngineCallback::OnProcessingPassEnd為存根。

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. 使用 XAudio2Create 建立 XAudio2 引擎的實例。

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. 使用 IXAudio2::RegisterForCallbacks 來註冊引擎回調。

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. 如果您不再需要引擎回呼,請呼叫 IXAudio2::UnregisterForCallbacks

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

回呼

XAudio2 回調函數

XAudio2 程式設計手冊

如何:建置基本音訊處理圖形

如何:從磁碟串流音效