2024年6月6日发(作者:)

微软所提供开发工具包括一系列专为游戏和交互DircetX DirectSound 以及

Direct3Dsound音频媒体的程序设计人员开发的强有力的工具。DirectX充分利用了声音

加速硬件以尽可能的提高其运行速度,减少CPU的占用时间。但是,音频信号仍然对整个

系统的运行产生着重大影响。本文所描述的技术将帮助用户使用DirectSound 以及

Direct3DSound以减少音频重放对系统运行的影响。

前 言

微软所提供的开发工具中DirectX 波形声音重放设备是为支持在Windows 95 和

Windows NT 中开发游戏和交互媒体应用程序而设计的。 DirectSound 和

Direct3DSound允许你在同一个三维空间中同时运行多个声音文件和移动声音源。只要有

可能DirectX ,将充分利用声音加速设备来改善运行状况和减少CPU的使用。但这并不

是说你可在三维程序空间运行、编译充斥着大量声音代码的程序,并且随心所欲地将其移

来移去。如果你并没有注意如何使用计算机的声音资源你将很快发现,你的计算机的CPU

周期绝大部分被你自己添加的一个户外历险游戏的44.1khz,16位立体声的优美声音所占

去。

技巧 和 技术

首先,我们来谈谈一些有关的定义。你所熟悉的DirectSound包括以下一些术语:

从缓冲区:

是指用来执行波形数据的应用程序缓冲区。每个执行的波形文件都有一个从缓冲区,

每个这样的缓冲区都有自己特定的格式。

主缓冲区:

是DirectSound的输出缓冲区。一般说来,应用程序并非将波形数据直接写入主缓冲

区。相反,DirectSound首先在从缓冲区中将波形数据加以合成,然后输入主缓冲区中。

注意:仅有一个主缓冲区,并且其格式决定了其输出格式。

静态缓冲区:

包含了内存中的一个完整的声音。因为,通过一次简单操作,你能在缓冲区中写入一

个完整的声音。所以,他们对于用户十分方便。静态缓冲区通过声卡的合成加速执行。

流缓冲区:

仅仅为声音的一部分,利用它,我们并不需要大量的内存就能运行较长的声音文件。

在利用流缓冲区时,用户必须周期性的在声音缓冲区中写入数据。但是,流缓冲区不能在

硬件中进行声音合成。

我们将再次提到 DirectSound 合成器。这种 DirectSound 元件负责从缓冲区中将

声音中按位隔行合成。然后执行诸如:音量大小、均衡调节(左右声道平衡)、频率转换,

以及三维操纵等操作。当合成器不能识别你通过API存放的组件时(不同于上面所述的任

一控制操作),这正是 DirectSound 的 CPU 核心所要做的。一些运行问题将在

“ DirectSound 合成器发生了什么情况”的项目中加以讨论。下面的关于合成器和主、

从缓冲区之间关系的示意图,将使读者清楚地了解他们之间的关系。

图通过一个简单的示意图阐明缓冲区和 DirectSound 合成器之间的关系