想给游戏(其实还不算游戏,暂时算一个框架吧,以后再丰富)增加背景音乐和效果音,于是考虑是用OpenAL还是Dsound,后来一想,既然都用openGL没有用D3D了,那干脆也用openAL算了,也许openAL没有DSound方便?不清楚,就算用过DSound也不记得了=。=,反正最后背景音乐和效果音都正确地在多线程中播放出来时,还是很激动的。
btw注意到一件事,由于是游戏的背景音乐,所以用多线程播放时cpu占用率绝对不能高,但是参考http://www.devmaster.net/articles/openal-tutorials/上的代码写出来的程序,结果是卡的一塌糊涂,就算不进行任何操作,cpu占用率也快接近100%,但是用openAL自带的sample代码播放就无比流畅,几乎不怎么占用资源的样子,主要区别就在于buffer的使用技巧吧,有些代码还不是很明白,但是体会到openAL真的是一个很灵活的东西,很有潜力哦~ >o<
如果游戏中有多个音乐需要播放的话,要先用alGenSources统一分配sourceID(注意必须在openAL初始化之后执行才有效),这一点感觉和openGL需要先给材质统一申请textureID很相似(注意必须在glMakeCurrent绑定hRC后执行才有效)。