Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе показано, как использовать эффект, созданный с помощью API XAPO в цепочке эффектов XAudio2.
Создайте 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;
Примените цепочку эффектов к голосу XAudio2 с функцией SetEffectChain.
pVoice->SetEffectChain(&chain);
Заметка
Цепочка эффектов также может применяться к голосу при создании голоса путем передачи цепочки в качестве параметра в IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoiceили IXAudio2::CreateMasteringVoice.
Отпустите эффект с помощью IUnknown::Release.
При создании XAPO он будет иметь количество ссылок 1. Когда XAPO передается в XAudio2 с SetEffectChain, 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 ) );
Связанные разделы
-
Руководство по программированию XAudio2