Я пытаюсь понять, как получить openAL для панорамирования в 2D (манипулируя 3D-позиционированием). В идеале я хочу добиться панорамирования таким образом, чтобы левый или правый канал могли быть полностью задействованы, а другой канал — полностью бесшумным. Кажется, что Open AL прекрасно обрабатывает трехмерные расстояния и спады, но я изо всех сил пытаюсь эмулировать этот вид 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);
Однако в правом канале присутствует значительное количество звука. Я не хочу, чтобы усиление падало в зависимости от расстояния, а просто пропорционально каналам.
Можно ли эмулировать 2d панорамирование с открытым AL?
Вы захотите установить для 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);
должен достичь желаемого результата.
Других решений пока нет …