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 合成器之间的关系


发布评论