共用方式為


如何:在 XAudio2 中使用 XAPOFX

本主題說明如何使用 XAudio2 效果鏈結中 XAPOFX 中包含的其中一個效果。

若要在 XAudio2 效果鏈中使用 XAPOFX 效果

  1. 將 XAPOFX 效果的 CLSID 傳遞至 CreateFX 函式,以建立效果。

    在此情況下,會建立簡化的殘響效果 FXReverb。

    IUnknown * pXAPO;
    CreateFX(__uuidof(FXReverb),&pXAPO);
    
  2. 使用數據填入 XAUDIO2_EFFECT_DESCRIPTOR 結構。

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  3. 使用數據填充 XAUDIO2_EFFECT_CHAIN 結構。

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  4. 使用 SetEffectChain 函式,將效果鏈結套用至 XAudio2 語音。

    pVoice->SetEffectChain(&chain);
    

    注意

    您可以在建立聲音時,將效果鏈作為參數傳遞至 IXAudio2::CreateSourceVoiceIXAudio2::CreateSubmixVoiceIXAudio2::CreateMasteringVoice,以套用至聲音。

     

  5. 使用 IUnknown::Release 釋放效果。 當您建立 XAPO 時,其參考計數會是 1。 當 XAPO 通過 SetEffectChain傳遞到 XAudio2 時,XAudio2 會增加 XAPO 的參考計數。 釋放客戶端對 XAPO 的引用,使 XAudio2 取得對 XAPO 的掌控權。 如果 XAudio2 只有 XAPO 的參考,則 XAudio2 不再使用這個參考時,會處置此參考。 如果客戶端程式代碼需要維護 XAPO 的參考,例如,以供稍後重複使用,您可以略過此步驟。

    pXAPO->Release();
    
  6. 如果有任何與效果相關聯的參數結構,請將其填入。

    在此情況下,FXREVERB_PARAMETERS 結構可用來設定迴響效果應使用的擴散和房間大小。

    FXREVERB_PARAMETERS XAPOParameters;
    XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION;
    XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;
    
  7. 藉由在附加效果的語音上呼叫 SetEffectParameters 函式,將效果參數結構傳遞至效果。

    hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( FXREVERB_PARAMETERS ) );
    

音訊效果

XAudio2 程式設計手冊