设置源和侦听器的位置无效

时间:2010-04-25 23:47:23

标签: c++ openal

我第一次使用OpenAL,并且在我的生活中我无法弄清楚为什么设置源的位置对声音没有任何影响。声音是固定格式的,我已经确定我设置了听众位置,声音对听众来说并不是真实的,而且OpenAL没有发出任何错误。

任何人都能解释一下吗?

创建音频设备

ALenum result;

mDevice = alcOpenDevice(NULL);
if((result = alGetError()) != AL_NO_ERROR)
{
    std::cerr << "Failed to create Device. " << GetALError(result) << std::endl;
    return;
}

mContext = alcCreateContext(mDevice, NULL);
if((result = alGetError()) != AL_NO_ERROR)
{
    std::cerr << "Failed to create Context. " << GetALError(result) << std::endl;
    return;
}
alcMakeContextCurrent(mContext);

SoundListener::SetListenerPosition(0.0f, 0.0f, 0.0f);
SoundListener::SetListenerOrientation(0.0f, 0.0f, -1.0f);

两个侦听器函数调用

alListener3f(AL_POSITION, x, y, z);
Real vec[6] = {x, y, z, 0.0f, 1.0f, 0.0f};
alListenerfv(AL_ORIENTATION, vec);

我将源位置设置为1,0,0应位于侦听器的右侧,但它没有效果

alSource3f(mSourceHandle, AL_POSITION, x, y, z);

非常感谢任何指导

1 个答案:

答案 0 :(得分:2)

Arrrr,Stereo未本地化。这一切都有意义,因为立体声通道已经计算出单声道不是这样平移由openAL计算。