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);

должен достичь желаемого результата.

Другие вопросы по тегам