OpenAL 2d панорамирование C++
Я пытаюсь понять, как получить 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?
1 ответ
Вам нужно установить 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);
должен достичь желаемого результата.