c++ - OpenAL:如何同时播放多种声音并将它们混合?

标签 c++ openal

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

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

最佳答案

每个声音需要一个源。

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

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

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

相关文章:

c++ - 未使用的功能会得到优化吗?

c++ - 在另一个窗口中捕获窗口输出

c++ - 编译时计数器

android - 在 Android 上使用 OpenAL 录音

iphone - AudioToolbox/OpenAL ExtAudioFile 播放压缩音频

c++ - 使用来自不同库的相同函数的不同结果

c++ - 即使没有指定自定义比较器, pair<int,int> 的优先级队列如何工作?

iphone - 暂停后Iphone OpenAL循环声音未重新启动

iphone - 使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放

java - native 库,Java OpenAL 所需