1

我试图弄清楚如何让 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 平移?

4

1 回答 1

2

您需要将 AL_SOURCE_RELATIVE 设置为 AL_TRUE,而不是 false。

AL_SOURCE_RELATIVE 设置为 AL_TRUE 表示源的位置、速度、锥体和方向属性将相对于听者位置进行解释。

OpenAL 1.1 规范(第 34 页)这么说!

所以,改变

alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_FALSE);

alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_TRUE);

应该达到预期的结果。

于 2014-12-15T17:33:54.067 回答