방법: 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입니다. SetEffectChain을 사용하여 XAudio2에 XAPO가 전달되면 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 ) );
관련 항목