C++ XAudio2延迟声音-播放多个声音时

C++ XAudio2延迟声音-播放多个声音时,c++,audio,windows-8,xaudio2,C++,Audio,Windows 8,Xaudio2,我正在使用XAudio2在游戏中播放声音。我有大约16个源声音,其中3个是循环效果,需要像背景音乐一样播放。我有另一个背景音乐,开始定期播放(完成后等待1分钟,然后重新启动)。每当需要播放另一种效果时,比如按钮点击、枪声等,我都会搜索一个可用的源并将缓冲区连接到它,然后开始播放 我的问题是,一旦背景音乐开始播放,只会播放循环效果,其他需要在游戏动作中播放的效果(如按钮单击)不会播放。所有这些延迟效果都会在背景音乐停止后播放。此外,如果我使用一个循环效果(而不是3),所有这些都会以正确的顺序播放

我正在使用XAudio2在游戏中播放声音。我有大约16个源声音,其中3个是循环效果,需要像背景音乐一样播放。我有另一个背景音乐,开始定期播放(完成后等待1分钟,然后重新启动)。每当需要播放另一种效果时,比如按钮点击、枪声等,我都会搜索一个可用的源并将缓冲区连接到它,然后开始播放

我的问题是,一旦背景音乐开始播放,只会播放循环效果,其他需要在游戏动作中播放的效果(如按钮单击)不会播放。所有这些延迟效果都会在背景音乐停止后播放。此外,如果我使用一个循环效果(而不是3),所有这些都会以正确的顺序播放

我使用submix音效,背景音乐直接提交给主控音效


当我被困在这里时,有人能帮我一下吗?

当一个人想要同时播放不同的声音时,他或她应该确保这些声音不在队列中,不按顺序显示,而是使用不同的线程显示


在Milsim的例子中,问题恰恰是这个,显然,他使用任务来显示声音,但它们不是在不同的线程中发出的。他用
iasyncation

解决了这个问题。每当一个人想要在同一时间播放不同的声音时,他或她应该确保这些声音不在一个队列中,按顺序显示,而是使用不同的线程显示


在Milsim的例子中,问题恰恰是这个,显然,他使用任务来显示声音,但它们不是在不同的线程中发出的。他使用
iasyncation

解决了他的问题。您是否尝试使用单独的线程来播放音频效果?每次发出播放声音请求时,我都会创建一个播放任务,我理解,但我相信您是在同一线程中运行它们,因此它会等待效果完成,然后播放下一个效果。你需要创建单独的线程来显示不同的效果,以便它们可以同时显示。我使用任务来播放声音,我意识到创建任务不能保证任务在不同的线程上运行,一旦我尝试使用iSyncAction,效果很好。请查看我的答案。它总结了我们的对话以及为您的问题找到的解决方案。您是否尝试使用单独的线程来播放音频效果?每次发出播放声音请求时,我都会创建一个播放任务,我理解,但我相信您是在同一线程中运行它们,因此它会等待效果完成,然后播放下一个效果。你需要创建单独的线程来显示不同的效果,以便它们可以同时显示。我使用任务来播放声音,我意识到创建任务不能保证任务在不同的线程上运行,一旦我尝试使用iSyncAction,效果很好。请查看我的答案。它总结了我们的谈话以及为您的问题找到的解决方案。