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支持对立体声进行衰减吗

    评论

报告相同问题?

悬赏问题

  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常