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

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

是否可以使用开放AL模拟2D平移?

最佳答案

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



因此OpenAL 1.1 Specification(第34页)说!

所以,改变

alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_FALSE);


alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_TRUE);

应该达到预期的结果。

08-17 00:36