我正在开发基于 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; }
}