我似乎有一些相互矛盾的信息,而且我不确定最新信息和正确信息。
在本次谈话中:https://www.microsoft.com/en-us/download/details.aspx?id=6871
他们建议在应用程序级别上合并语音,因为销毁语音会产生成本。
但是,看着https://docs.microsoft.com/en-us/windows/win32/api/xaudio2/nf-xaudio2-ixaudio2-createsourcevoice
它指出:

因此,这使我相信我不需要池化,因为XAudio2具有内部池化。然后在另一部分中:
https://docs.microsoft.com/en-us/windows/win32/api/xaudio2/nf-xaudio2-ixaudio2voice-destroyvoice

这具有有关再次集中的信息,这使我似乎应该集中声音。有人知道哪个信息正确吗?我应该集中声音还是应该将其留给XAudio2的内部共用器?

最佳答案

这些文档并不一致,但是有些微妙。如果您只创建相同格式的声音,则在内部它们将被重用以帮助最大程度地降低创建/销毁声音的成本。
但是,您可以走得更远,直接在应用程序级别重用源语音。它们必须使用相同的基本格式(PCM与ADPCM,比特率和通道数),但是它们可以是不同的采样率。
有关语音重用的示例代码,请参见DirectX Tool Kit for Audio

10-04 22:56