我已经按照微软网站上的教程进行操作,并创建了自己的 SoundEngine 和 Sound 类结构,以便在 main 中抽象出代码,但是每当我拨打诸如 之类的电话时batmanWav->play()
,它只会在我编写std::cin.get()
或system("PAUSE")
为什么是这样?我将尝试将其移植到已经开发的游戏中,但我显然不希望每次播放声音时游戏都停止。
编辑:我被要求显示一些有问题的代码
int main()
{
CoInitializeEx(nullptr, COINIT_MULTITHREADED);
Sound batman("batman.wav");
Sound alien("alien.wav");
alien.play();
batman.play();
system("PAUSE");
CoUninitialize();
}
声音.cpp
HRESULT Sound::play()
{
HRESULT hr = S_OK;
if (FAILED(hr = pSourceVoice->Start(0)))
return hr;
return hr;
}
对于每个 Sound 对象,我初始化了一个源声音,每个声音都指向相同的母带声音和IXAudio2 *pXAudio2
对象。我用来加载波形文件数据的代码直接取自 MSDN 文档。