OpenAL (Open Audio Library) 是一个跨平台的3D音效库.这个库模型是在三维空间中很多个 单独的监听器在某处听到音频源集合. OpenAL的基本组成是 Listener(收听者),Source(来源),Buffer(缓冲).比如一个包含音频数据的很大的Buffers.每一个buffer能被连接到一个或多个Source上.它代表着一个在3D空间下发出声音的点.总有一个Lisener(每一个audio context)表示Source的位置,然后从Listener的角度进行渲染.
百度文档的解释是这样紫的:OpenAL 主要的功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标、声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含 8 或 16 位元、单声道或立体声 PCM 格式的音效资料,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。
OpenAL是一个跨平台的三维音效API.该API的主要目的是允许应用在三维空间中定位音频源.对Source产生合理的空间定向.通过扩展,OpenAL还增强了在EAX和其他特性的能力.OpenAL适合很多音频应用,在音频游戏中会显示的更为出色.
使用OpenAL围绕着三个基本的对象:Buffers,Sources,Listener. 一个buffer可以用来装audio 数据.然后可以连接到一个Source上.这个Source可以被定位和播放.Source和Listener(只有一个)的相对位置和方向决定了source怎么被听到.创建多个buffers和多个sources和一个listener,然后更新sources的位置和方向,listener就能动态的呈现一个3D的音效世界.
关系:
当初始化OpenAL 的时候,至少有一个Device被开启,在这个Device里面,至少有一个context被创建.在这个context里面,实现一个listener.一个或多个Source.每一个source可以被一个或多个buffer连接.buffer不是一个特定的context的一部分.它们可以被在一个device上的多个context共享.
官网: http://www.openal.org
官方文档: http://www.openal.org/documentation/OpenAL_Programmers_Guide.pdf