如何:在 XAudio2 中使用 XAPO
本主題說明如何在 XAudio2 效果鏈中使用以 XAPO API 建立的效果。
建立 XAPO,如 如何:建立 XAPO中所述。
您也可以實作運行時間參數功能,如 如何:將運行時間參數支援新增至 XAPO中所述。
建立 XAPO 的實例。
IUnknown * pXAPO; pXAPO = new SimpleXAPO();
將資料填入 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();
如有與效果相關的參數結構,請填入。 在此情況下,應該套用效果的完整強度百分比。
XAPO_PARAMETERS XAPOParameters; XAPOParameters.Level = 0.75;
藉由在附加效果的語音上呼叫 SetEffectParameters 函式,將效果參數結構傳遞至效果。
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
相關主題