我以前使用过 SDL_Mixer,它正确地完成了这项工作:当我用一个函数调用按顺序播放一个声音 10 次时,所有的声音都会混合在一起。但是在 OpenAL 中,当我使用 alSourcePlay() 播放声音时,它只播放一种声音而不会混入之前的声音。

那么,我怎样才能同时播放 1 个以上的声音呢?

最佳答案

每个声音需要一个源。

缓冲区保存原始声音样本,并且可以提供一个或多个源(一次和同时)。监听器定义了您的“耳朵”在哪里(永远只有一个!)。源是声音的单个实例,给定空间中的位置、音量、从中提取样本的缓冲区等。

因此,要同时播放 2 个声音,您需要 2 个音源。

关于c++ - OpenAL:如何同时播放多个声音并混合它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5760642/

10-14 09:11
查看更多