365bet官网是多少

DirectSound入门指南(0)播放声音

发布时间 2025-09-30 23:10:17 作者 admin 阅读 7626

过去PC机上播放声音和音乐比登天还难!然而,随着DirectSound和DirectMusic的出现,这一切变得相当容易了。本文根据《Windows游戏编程大师技巧》一书学习了DirectSound基本原理,从《Doubango开源项目》中习得了开发技巧。(后文中的源码,为博主从开源库中剥离出来的)。呼,本文讲了很多原理,下一篇文章《DirectSound录制声音入门指南(1)》就很简单粗暴了。

目录:

初始化DirectSound

理解协作等级

主声音缓冲区与辅助声音缓冲区

创建声音辅助缓冲区

把数据写入辅助声音缓冲区

声音渲染

控制音量

调整频率

完整DEMO

DirectSound内部格式是22kHz、8位立体声。但自然界中的大多数声音都是单声道,除非你在不同位置用两个麦克风进行录音,或者你有正真的立体数据,否则对DirectSound传入立体声数据只是种浪费。

建议设置:16位、单声道、22kHz;

有两个组件是我们所关心的:

使用DirectSound时加载的动态链接库DLL;

编译时的库文件dsound.lib和头文件dsound.h;

在DirectX8.0中有一个新的DirectSound接口,IDirectSound8。微软公司跳过了一系列版本,直接从版本1过渡到版本8。但是,IDirectSound8没有为我们带来任何新东西。我们正在用的标准DirectSound接口实际从DirectX3.0就存在了。本段摘自《Windows游戏编程大师技巧》一书。

DirectSound主要接口:

IUnknown ——所有COM对象的基对象。

IDirectSound——DirectSound的主COM对象。它代表音频本身。如果你的计算机中有多块声卡,那么每块声卡都需要一个DirectSound对象。

IDirectSoundBuffer——代表混音硬件和实际的声音。有两种类型的DirectSound缓冲,主缓冲和辅助缓冲。

主缓冲——只有一个主缓冲提供正在播放的声音,通过硬件或软件把声音混合起来。

辅助缓冲——提供存储,用来回放的声音。

IDirectSoundCapture——实时捕获声音。

IDirectSoundNotify——这个接口被用于反馈声音给DirectSound。在一个具有复杂的声音系统中药使用它。

初始化DirectSound

主DirectSound对象代表一块声卡。如果你有多块声卡,就必须枚举、检测并未它们分配GUID(唯一标识)。一般直接使用默认声卡,简单创建一个DirectSound主对象就够了。

/* 创建播放设备 */

if ((hr = DirectSoundCreate(NULL, &ds->device, NULL) != DS_OK)){

return -3;

}

理解协作等级

这步是必须的,否则无法发出声音。你可以较为直接的方法进行控制,但微软建议你不要硬来。

DirectSound被设定为许多等级。主要有两类:

可控制主缓冲;

不可控制主缓冲。

记住,主缓冲代表实际的混音硬件或软件,它始终在混合声音并将其发送给扬声器。如果你直接操作主缓冲,微软希望你知道你在做什么,因为这可能带来灾难性的…

#define DSSCL_NORMAL 0x00000001

#define DSSCL_PRIORITY 0x00000002

#define DSSCL_EXCLUSIVE 0x00000003

#define DSSCL_WRITEPRIMARY 0x00000004

几大协作等级:

普通等级(DSSCL_NORMAL)——这是协作性最好的。当程序获得焦点即可发出声音,同时其他应用程序也可发出声音,不独占。不可控制主缓冲。

优先等级(DSSCL_PRIORITY)——可以访问所有硬件,可以改变主混音器的设定,可以要求声卡完成更高等级的内存操作(如压缩)。这个设定只有在你必须改变主缓冲数据格式时才是必要得——比如想播放16位采样值时,可以这么做。

排他等级(DSSCL_EXCLUSIVE)——同优先等级一样,但只有你的应用程序在前台才能发出声音。

写优先等级(DSSCL_WRITEPRIMARY)——这是最高优先级别,你可以完全控制。并且想听到声音就必须得自己控制主缓冲。如果你在写自己的混音程序或者声音引擎,就只能使用该模式——我想只有John Miles才会使用这个等级。

小结:

描述

相关推荐

易企秀作品

易企秀提供的在线设计平台助力用户轻松制作H5作品,其中【水悟乾坤】是一款针对瓶装水产品的介绍H5。本作品采用经济实惠的装量,包括1.5L

08-12 分类 365bet官网是多少

abs是什么材质

ABS材料的全面解析与应用 如今,随着工业和制造业的飞速发展,塑料材料在日常生活和生产中的应用越来越广泛。其中,ABS塑料以其优异的性能

09-16 分类 365bet官网是多少

APP是什么? 为什么叫APP APP全称是什么

应用程序,Application的缩写, APP:应用程序(外语缩写:App;外语全称:Application) 。APP狭义指智能手机的第三方应用程序,广义指所有客户端

07-09 分类 365bet网页版

机械硬盘功率-机械硬盘功率多少瓦

机械硬盘功率 机械硬盘的功率因尺寸、类型、容量及工作状态等因素有所不同,具体如下: 按尺寸划分 3.5 寸机械硬盘:满速功耗一般在 12W 左

06-27 分类 365bet官网是多少