jian_vv 2015-04-24 12:47 采纳率: 0%
浏览 1669

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条回答

  • jian_vv 2015-04-24 13:47
    关注

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

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法