Я разрабатываю игровой движок C ++ на основе Direct3D 9 и XAudio 2.7. И у меня возникает одна и та же проблема каждый раз, когда я выхожу из тестовой игры: XAudio вылетает. Я уверен, что именно этот компонент вызывает проблему, потому что, когда я удаляю вызов инициализации, игра завершается без проблем.
Поле исключения
Я не знаю почему, я настроил весь базовый код (инициализация, мастеринг голоса, аудио компоненты, очистка всех буферов и завершение работы с -> Release ();), пробовал с XAudio 3D и без него .. .
Если вы уже это испытали, вы можете помочь.
Спасибо.
Я использую 64-разрядную версию Windows 10 Pro
Код:
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; }
}