如何:在 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 ) );
相关主题