OpenAL 2d 平移 C++
Posted
技术标签:
【中文标题】OpenAL 2d 平移 C++【英文标题】:OpenAL 2d panning C++ 【发布时间】:2014-01-06 13:00:23 【问题描述】:我试图弄清楚如何让 openAL 平移 2D(通过操纵 3D 定位)。理想情况下,我希望实现平移,以便左声道或右声道可以与另一个完全静音的声道完全接合。 Open AL 似乎可以很好地处理 3d 距离和衰减,但我正在努力模拟这种 2D 平移。
我正在使用
alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED)
float sourcePosition[3] = 0.99f,0.f,0.f;
alSourcefv(sourceID, AL_POSITION, sourcePosition);
alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_FALSE);
alSourcef(sourceID, AL_MAX_DISTANCE, 1.f);
alSourcef(sourceID, AL_REFERENCE_DISTANCE, 0.5f);
但是,右声道中有大量音频。我真的不希望增益基于距离而下降,只是按比例分配通道。
是否可以用 open AL 模拟 2d 平移?
【问题讨论】:
【参考方案1】:您需要将 AL_SOURCE_RELATIVE 设置为 AL_TRUE,而不是 false。
AL_SOURCE_RELATIVE 设置为 AL_TRUE 表示位置, 源的速度、锥体和方向属性是 相对于听者位置进行解释。
OpenAL 1.1 Specification 这么说(第 34 页)!
所以,改变
alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_FALSE);
到
alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_TRUE);
应该会达到预期的效果。
【讨论】:
以上是关于OpenAL 2d 平移 C++的主要内容,如果未能解决你的问题,请参考以下文章