当我从 2010 年 6 月的 SDK 中实现 XAudio2Sound3D 示例时。我几乎将它全部复制到我自己的框架中,并且这个变量(sound3DInstance)显示为未解析的外部:X3DAudioCalculate( sound3DInstance , &listener, &emitter, calcFlags, &dspSettings); 和X3DAudioInitialize(details.OutputFormat.dwChannelMask, SPEEDOFSOUND, sound3DInstance ); 其中变量类型是:
X3DAUDIO_HANDLE sound3DInstance;
X3DAUDIO_LISTENER listener;
X3DAUDIO_EMITTER emitter;
X3DAUDIO_DSP_SETTINGS dspSettings;
DWORD calcFlags = X3DAUDIO_CALCULATE_MATRIX | X3DAUDIO_CALCULATE_DOPPLER | X3DAUDIO_CALCULATE_LPF_DIRECT | X3DAUDIO_CALCULATE_LPF_REVERB | X3DAUDIO_CALCULATE_REVERB;
const float SPEEDOFSOUND = X3DAUDIO_SPEED_OF_SOUND;
XAUDIO2_DEVICE_DETAILS details;
现在,两个函数中唯一显示错误的公共变量是sound3DInstance,所以这一定是问题所在。在 SDK 示例中,所有变量都放在一个名为 *AUDIO_STATE* 的结构中,并且在程序的初始化中,它们调用: *ZeroMemory( &g_audioState, sizeof( AUDIO_STATE ) );* 在我的代码中,变量是我的 Sound 类的成员,我只是将它们一一清零,所以效果不应该是一样的吗?