OpenAL 2d平移C ++

时间:2014-01-06 13:00:24

标签: c++ audio openal audio-panning

我正在试图弄清楚如何让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);

然而,正确的频道中有大量的音频。我真的不希望增益根据距离而下降,只是通道的比例。

是否可以通过打开AL模拟2d平移?

1 个答案:

答案 0 :(得分:2)

您需要将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);

应该达到预期的效果。