我试图弄清楚如何使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);
应该达到预期的结果。