【发布时间】:2013-09-07 02:21:33
【问题描述】:
我正在使用 XAudio2 在我的游戏中播放声音。我有大约 16 个源声音,其中 3 个是循环效果,需要像背景音乐一样播放。我有另一个背景音乐,它开始定期播放(一旦完成,它会等待 1 分钟并重新启动)。每当需要播放其他效果(如按钮单击、枪击等)时,我都会搜索可用的源并将缓冲区附加到它并开始播放。
我的问题是,一旦背景音乐开始播放,只会播放循环效果,而其他需要在游戏动作上播放的效果(例如按钮单击)不会播放。一旦背景音乐停止,所有这些延迟效果都会播放。此外,如果我使用一个循环效果(而不是 3 个),所有这些都会以正确的顺序播放。
我正在为效果使用子混音,而背景音乐直接提交给母带。
有人可以帮我吗,因为我被困在这里了
【问题讨论】:
-
您是否尝试使用单独的线程来播放您的音频效果?
-
每次发出播放声音请求时,我都会创建一个播放它的任务
-
我明白,但我相信你在同一个线程中运行它们,所以它等待效果完成然后播放下一个效果。您需要创建单独的线程来显示不同的效果,以便它们可以同时同时显示。
-
我正在使用任务来播放声音,我意识到 create_task 并不能保证任务在不同的线程上运行,一旦我尝试使用 IAsyncAction,它就可以正常工作
-
请查看我的回答。它总结了我们的对话以及为您的问题找到的解决方案。
标签: c++ audio windows-8 xaudio2