Direct3D 9 と XAudio 2.7 に基づく C++ ゲーム エンジンを開発しています。そして、テスト ゲームを終了するたびに同じ問題が発生します。XAudio がクラッシュします。初期化の呼び出しを削除すると、ゲームは問題なく終了するため、問題を引き起こしているのはこの特定のコンポーネントであると確信しています。
理由はわかりませんが、すべての基本コードをセットアップしました (初期化、音声、オーディオ コンポーネントのマスタリング、すべてのバッファーのクリア、->Release(); でのシャットダウン)、XAudio 3D の有無にかかわらず試してみました...
すでにそれを経験したことがある場合は、大歓迎です。ありがとう。
Windows 10 Pro 64 ビットを実行しています
コード :
AudioEngineXA2::AudioEngineXA2()
{
m_xaudio2 = 0;
m_xa2MasteringVoice = 0;
m_x3d = 0;
}
void AudioEngineXA2::initialize()
{
if ( XAudio2Create( &m_xaudio2, 0 ) < 0 || m_xaudio2->CreateMasteringVoice( &m_xa2MasteringVoice ) < 0 )
{
cout << "XAudio2 initialization failed!" << endl;
return;
}
//X3DAudioInitialize( SPEAKER_STEREO, X3DAUDIO_SPEED_OF_SOUND, (unsigned char*) m_x3d );
// Uncommenting this part doesn't help either
/*XAUDIO2_DEVICE_DETAILS* devdet = 0;
m_xaudio2->GetDeviceDetails(0, devdet);
float* matrix = new float[devdet->OutputFormat.Format.nChannels];
DSPSettings.SrcChannelCount = 1;
DSPSettings.DstChannelCount = devdet->OutputFormat.Format.nChannels;
DSPSettings.pMatrixCoefficients = matrix;*/
}
void AudioEngineXA2::cleanup()
{
m_xa2MasteringVoice->DestroyVoice();
m_xaudio2->StopEngine();
m_xaudio2->Release();
//if ( m_x3d ) { delete[] m_x3d; m_x3d = 0; }
}