编程知识汇总--OpenAL

1,OpenAL源码编译 (http://blog.csdn.net/oilcode/article/details/50748568)

2,声音衰减,以及alDistanceModel函数使用详解 (http://blog.csdn.net/jianingshow/article/details/50609365)

3,OpenAL同时播放的声音数目,有一个上限。(换而言之,最大的source数目)。在iPhone上能够通过某句代码获得最大的source数目为32。

alGenSources(1, &sourceID);
当已经达到最大数目时,上面的语句将失败,但它并不产生错误。因此,不要超过最大source数目。

所以,这意味着什么?这意味着任何时候都不要同时播放超过32个音效。但是游戏中经常遇到大量音效同时播放的情况。之所以会有这种情况发生,是由于你必须在适当的时候关闭声音。是的,播放声音非常容易,但要关闭,就有相当的学问。如果你在声音播放的中途直接关闭,那么我可以保证,你将听到爆音。我在App Store下载了许多乐器软件,有几个会产生明显的爆音,就是由于这个原因。要解决这个问题,可能有许多方法。经过我的实验,我的方法是在停止一个声音前,采用定时器逐渐减小音量或将souce移动到很远的地方,确保听不见,但不要停止声音。哪怕声音的音量只有0.00001,如果你关闭它,你仍然会听到爆音。你必须让声音采样自然结束,所以你采用的音效一定不能过长。这就是为什么有许多source会同时存在的原因。为减小source的同时使用的数量,造成source不够用的情况,还必须采用一些其他的技术,比如在将音量减小到接近0(注意不能为0,如果直接设置成0就等同于关闭音量,会产生破音)时,将buffer中的指针指向buffer的结尾处,或采用streaming的方法,另外还可以采用source重用的技术。

4,OpenAL编程入门 (http://blog.csdn.net/devday/article/details/5271357)

5,OpenAL:3D定位音效的API (http://blog.sina.com.cn/s/blog_685b5b220100ukbp.html)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ALUT(OpenAL Utility Toolkit)是一个用于OpenAL的工具包,它提供了一些方便的函数来简化OpenAL的使用。下面是使用ALUT库的步骤: 1. 下载OpenAL-Soft库,可以从官网下载:https://www.openal.org/downloads/ 。 2. 下载ALUT库,可以从官网下载:https://github.com/vancegroup/freealut/releases 。 3. 解压OpenAL-Soft和ALUT库。 4. 进入OpenAL-Soft源码目录,建立build目录(如果没有),进入build目录,执行cmake ..,生成vs2019工程文件OpenAl.sln。 5. 用vs2019打开OpenAl.sln工程文件,编译64位目标文件。 6. 在你的代码中包含AL/alut.h头文件。 7. 在你的代码中使用ALUT库提供的函数,例如alutInit()、alutCreateBufferFromFile()、alutCreateSource()等。 8. 在你的代码中使用OpenAL库提供的函数,例如alGenSources()、alSourcei()、alSourcePlay()等。 下面是一个使用ALUT库的例子: ```c #include <AL/alut.h> #include <AL/al.h> int main(int argc, char **argv) { // 初始化ALUT库 alutInit(&argc, argv); // 创建一个缓冲区并从文件中读取数据 ALuint buffer = alutCreateBufferFromFile("sound.wav"); // 创建一个源并将缓冲区分配给它 ALuint source; alGenSources(1, &source); alSourcei(source, AL_BUFFER, buffer); // 播放声音 alSourcePlay(source); // 等待声音播放完毕 ALint state; do { alGetSourcei(source, AL_SOURCE_STATE, &state); } while (state == AL_PLAYING); // 清理资源 alDeleteSources(1, &source); alDeleteBuffers(1, &buffer); alutExit(); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值