1

DirectXTK12 オーディオを試してみることにしましたが、3D サウンド以外は問題なく動作しています。私はwikiのガイドに従っていますが、リスナー/エミッターをどのように配置しても、サウンドは常に左側のスピーカーにあります。どうしたの?私のコードは次のようになります。

HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED);
if (FAILED(hr)) {...}

std::unique_ptr<DirectX::AudioEngine> audEngine;

DirectX::AUDIO_ENGINE_FLAGS eflags = DirectX::AudioEngine_Default;
#ifdef _DEBUG
    eflags |= DirectX::AudioEngine_Debug;
#endif

std::unique_ptr<DirectX::SoundEffect> soundEffect;
soundEffect = std::make_unique<DirectX::SoundEffect>(audEngine.get(), L"Sound.wav");
auto effect = soundEffect->CreateInstance(DirectX::SoundEffectInstance_Use3D);

effect->Play(false);

DirectX::AudioListener listener;
listener.SetPosition(DirectX::XMFLOAT3(0.0f, 0.0f, 0.0f));

DirectX::AudioEmitter emitter;
emitter.SetPosition(DirectX::XMFLOAT3(0.0f, 0.0f, 0.0f));

effect->Apply3D(listener, emitter, false);

中央にあるはずですが、出力にエラーはありませんが、左チャンネルのみを使用しています。出力が示す唯一のことは次のとおりです。

INFO: XAudio 2.9 debugging enabled
INFO: mastering voice has 2 channels, 96000 sample rate, 00000003 channel mask

3D なしでサウンドを再生すると、予想どおり両方のスピーカーが使用されます。

4

1 に答える 1