音效部分。
HGE的音效底层接口用的BASS库,做的事情就是把BASS库里的操作封装了一下。
这个文件里面函数挺多,外部的接口分为,Effect,music,Stream,Channel
先上图看看这些函数。
在这里感谢easis童鞋的翻译~~
这些函数都不难,只要明白函数做的事情是什么,再去看源码就特别容易了
对了对了,在这里顺便提一下Effect,Music,Stream,Channel的区别
Effect是音效,比如开枪的声音,点击鼠标的声音等等
Music是更长的音乐,比如游戏场景的背景音,过场动画时放的音乐
Stream是音效的压缩格式,一套相关的音效合在一起,同时载入和释放
至于Channel,BASS里的音乐控制都是由通道控制的,通道打开就相当于播放,其他的调整通道参数播放的效果也会改变
控制播放都是通过控制通道完成的
代码走起:
Effect:
HEFFECT CALL HGE_Impl::Effect_Load(const char *filename, DWORD size)//size不为0,filename就是指向内存块的指针
{ //size是这块内存的大小,也就是音效的大小
DWORD _size, length, samples;
HSAMPLE hs;
HSTREAM hstrm;
BASS_CHANNELINFO info;
void *buffer, *data;
if(hBass)//句柄型数据类型,相当于装载带内存的资源的ID
{
if(bSilent) return 1;
//判断资源从内存载入,还是从文件载入
if(size) { data=(void *)filename; _size=size; }
else
{
data=Resource_