【问题标题】:XAudio2 delayed sound - when playing multiple voicesXAudio2 延迟声音 - 播放多个声音时
【发布时间】:2013-09-07 02:21:33
【问题描述】:

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

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

我正在为效果使用子混音,而背景音乐直接提交给母带。

有人可以帮我吗,因为我被困在这里了

【问题讨论】:

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

标签: c++ audio windows-8 xaudio2


【解决方案1】:

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

在 Milsim 的案例中,问题正是如此,显然,他使用任务来显示声音,但它们不是在不同的线程中发出的。他使用IAsyncAction 解决了他的问题。

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2013-06-08
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多