directsound DirectSound DirectSound-DirectSound,DirectSound-创建IDirec

DirectSound是DirectXAudio的一个较底层的部件,提供了丰富的接口函数,实现.wav格式的波形声音数据的播放控制。

directsound_DirectSound -DirectSound


DirectMusic和DirectSound比较

DirectSound是DirectXAudio的一个较底层的部件,提供了丰富的接口函数,实现.wav格式的波形声音数据的播放控制。
与一般的WindowsAPI提供的声音播放函数不同,DirectSound可实现多个声音的混合播放。DirectSound可充分使用声卡的内存资源,同时也提供了3D声效算法,模拟出真实的3D立体声。
DirectSound的开发比较简单,本章在详细介绍DirectSound各个接口函数基础上,

directsound_DirectSound -创建IDirectSound8对象

要取得次缓冲区,首先需要创建一个IDirectSound8接口对象。为此,调用DirectXAPI函数提供的DirectSoundCreate8进行创建。该函数用到dsound.h和dsound.lib文件,如下是它的使用原型。

HRESULTWINAPIDirectSoundCreate8
(
LPCGUIDlpcGuidDevice,//声卡设备全局标志,一半是NULL,表示默认的声卡
LPDIRECTSOUND8*PPDS8,//返回的IDirectSound8接口对象指针
LPUNKNOWNpUnkOuter//必须为NULL
);
直观地说,IDirectSound8对象代表声卡设备。下面是利用DirectSoundCreate8函数创建IDirectSound8对象的示例代码。

directsound_DirectSound -设置设备的协调级别

IDirectSound声卡设备创建出来以后,需要调用DirectXAPI函数SetCooperativeLevel,进一步设置设备的协调级别,以决定声卡设备以哪种方式与Windows其他程序分享。
HRESULTSetCooperativeLevel
(
HWNDhwnd,//窗口句柄
DWORDdwLevel//协调级别
);
参数hwnd为当前应用程序的窗口句柄。dwLevel参数为协调级别,具有如下的几个取值。

四个协调级别分别是:?

DSSCL_EXCLUSIVE

对于DirectX8.0以上版本,此标志与DSSCL_PRIORITY具有相同的作用。对于以前的版本,此标志设置声卡设备为当前程序独占。

DSSCL_PRIORITY

具有优先设置DirectSound设备的权限。例如,可调用IDirectSoundBuffer8接口SetFormat函数这只主次缓冲区的播放形式。在此标志下,DirectSound必然是独占的,否则不可能重新设置播放格式,因为其他使用该设备的程序是不知道新格式的。

DSSCL_NORMAL

正常的协调层级标志,其他程序可共享声卡设备进行播放。此标志下,主缓冲区的播放格式不允许修改,而且会默认地在声卡内存中申请到一个8bit和22KHz的单声道主缓冲区。

DSSCL_WRITEPRIMARY

可写主缓冲区,此时次缓冲区就不可能进行播放处理,即不能将次缓冲区的数据送进混声器,再输出到主缓冲区上。这是最完全控制声音播放的方式,意味着声卡的混音器被弃置,需要自行处理声音混合。

directsound_DirectSound -Primary主缓冲区的创建

设备级别设置为DSSCL_NORMAL,将自动分配一块声卡内存作为主缓冲区,并使用双声道、8bit和22kHz方式进行声音播放。因此,主缓冲区一般是现成的,可略去在声卡内存中再进行主缓冲区的创建分配。
如果需要设置主缓冲区的新播放格式,则可调用IDirectSound8接口的CreateSoundBuffer函数,从声卡内存中分配出缓冲区。当然,此时不能再使用DSSCL_NORMAL方式的设备协调级别,因为该协调级别不允许进行主缓冲区的格式修改。

directsound_DirectSound -Secondary次缓冲区的创建

次缓冲区用来装入实际的声音数据,因此,必须根据实际的声音文件大小,创建一个相应大小的次缓冲区。

directsound DirectSound DirectSound-DirectSound,DirectSound-创建IDirec

  

爱华网本文地址 » http://www.413yy.cn/a/8104050103/162598.html

更多阅读

如何在unity3d中创建天空 unity3d 天空盒子

如何在unity3d中创建天空——简介我们玩各种各样的网络游戏,都会给人一种感觉,那就是觉得这个游戏世界似乎很大、很宽广。这里主要是因为天空盒的原因。有了天空盒,会突然让玩家觉得,这个游戏世界很美,很大。这里简单介绍一下如何在unity

如何创建百科词条 百度百科我的词条

如何创建百科词条——简介创建百科词条简介如何创建百科词条——工具/原料百度百科如何创建百科词条——方法/步骤如何创建百科词条 1、在百度百科的每个页面的顶端都可以看到百度搜索框,在搜索框中输入您要查看的词条名称。如果您

如何免费创建属于自己的免费论坛? 免费创建自己的网站

打开?howbbs.com 点击“免费开通论坛”。填写相关注册信息。点击“完成注册”,然后用刚注册的账号登陆论坛,进行以下几步设置。经过上面的设置,我们的免费论坛已经创建完毕了。如何免费创建属于自己的免费论坛?_免费建论坛

qq高级群和超级群创建资格 超级qq高级版开通网址

QQ群是腾讯公司推出的多人聊天交流服务,群主在创建群以后,可以邀请朋友或者有共同兴趣爱好的人到一个群里面聊天。在群内除了聊天,腾讯还提供了群空间服务,在群空间中,用户可以使用群BBS、相册、共享文件等多种方式进行交流。QQ群的理念

声明:《directsound DirectSound DirectSound-DirectSound,DirectSound-创建IDirec》为网友缺薀鍒分享!如侵犯到您的合法权益请联系我们删除