我正在试图弄清楚如何让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平移?
答案 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);
应该达到预期的效果。