OpenAL播放有些文件没有3d效果,求助

我的系统是win7,64位,最近用openal,播放3d声音,有一个较短的爆炸音效有3d效果,近大远小
但是,其他的声音都是,不论我放多远都是一样大小的声音
下面是一些关键代码
alutLoadWAVFile("../../res/audio/bomb.wav", &format, &data, &size, &freq, &loop);
alBufferData(Buffers[BOMB], format, data, size, freq);
alutUnloadWAV(format, data, size, freq);

alutLoadWAVFile("../../res/audio/hecli.wav", &format, &data, &size, &freq, &loop);
alBufferData(Buffers[HELIC], format, data, size, freq);
alutUnloadWAV(format, data, size, freq); 

//上面的代码是读取文件的,bomb可以正常播放,hecli却没有近大远小的效果
source->id=id;
source->bufid=Buffers[source->soundtype];

source->pos[0]=x;
source->pos[1]=z;
source->pos[2]=-y;
source->vel[0]=vx;
source->vel[1]=vz;
source->vel[2]=-vy;

alSourcei (source->index, AL_BUFFER, source->bufid);
alSourcef (source->index, AL_PITCH, 1.0 );
//alSourcef (source->index, AL_GAIN,Volume[source->bufid]*factor );

//alSourcef (source->index, AL_MAX_DISTANCE, maxDistance[source->bufid]);
//alSourcef (source->index, AL_REFERENCE_DISTANCE, minDistance[source->bufid]);
//alSourcef (source->index, AL_ROLLOFF_FACTOR, Attenuation[source->bufid]);
alSourcefv(source->index, AL_POSITION, source->pos );
alSourcefv(source->index, AL_VELOCITY, source->vel );
alSourcei (source->index, AL_LOOPING, AL_FALSE );


alSourcePlay(source->index);


1个回答

我知道为什么了,因为我上面的方式只支持对单声道的声音文件衰减,而我读入的文件既有单声道又有立体声

如果我想要衰减的话就把所有的文件都转为单声道,但是这样很麻烦

OPENAL支持对立体声进行衰减吗

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问