OpenAL:如何同时播放多个声音并将它们混合?

Roo*_*kie 4 c++ openal

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

那么,我怎么能同时播放超过1个声音呢?

Dam*_*mon 10

每个声音需要一个音源.

缓冲区保存原始声音样本,并且可以一次或多次地馈送一个或多个源.听众定义了你的"耳朵"所在的位置(只有一个!).源是声音的单个实例,给定空间中的位置,音量,从中提取样本的缓冲区,等等.

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