使用方法:在 XAudio2 中使用 XAPOFX
本主題說明如何使用 XAudio2 效果鏈結中 XAPOFX 中包含的其中一個效果。
若要在 XAudio2 效果鏈結中使用來自 XAPOFX 的效果
將 XAPOFX 效果的 CLSID 傳遞至 CreateFX 函式,以建立效果。
在此情況下,會建立簡化的殘響效果 FXReverb。
IUnknown * pXAPO; CreateFX(__uuidof(FXReverb),&pXAPO);
使用資料填入 XAUDIO2_EFFECT_DESCRIPTOR 結構。
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;
使用資料填入 XAUDIO2_EFFECT_CHAIN 結構。
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;
使用 SetEffectChain 函式將效果鏈結套用至 XAudio2 語音。
pVoice->SetEffectChain(&chain);
注意
您也可以將鏈結當做參數傳遞至IXAudio2::CreateSourceVoice、IXAudio2::CreateSubmixVoice 或IXAudio2::CreateMasteringVoice,將效果鏈結套用至語音。
使用 IUnknown::Release 釋放效果。 當您建立 XAPO 時,其參考計數會是 1。 當 XAPO 傳遞至 具有 SetEffectChain的 XAudio2 時,XAudio2 會遞增 XAPO 上的參考計數。 釋放用戶端對 XAPO 的參考,可讓 XAudio2 取得 XAPO 的擁有權。 如果 XAudio2 只有 XAPO 的參考,當 XAudio2 不再使用它時,就會處置此參考。 如果用戶端程式代碼需要維護 XAPO 的參考,例如,供稍後重複使用,您可以略過此步驟。
pXAPO->Release();
如果有任何與效果相關聯的參數結構,請填入參數結構。
在此情況下,會使用 FXREVERB_PARAMETERS 結構來設定殘響效果應該使用的氣場和房間大小。
FXREVERB_PARAMETERS XAPOParameters; XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION; XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;
在附加效果的語音上呼叫 SetEffectParameters 函式,將效果參數結構傳遞至效果。
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( FXREVERB_PARAMETERS ) );
相關主題