DirectX与VB.NET编程(二)DirectSound初体验
从最容易入手的DirectSound开始。
DirectSound简介:DirectSound提供了实现声音的播放、混音、录音及3D音效的方法。值得一提的是DirectSound中的DirectSound3D(DS3D)组件。其实微软公司已经为我们封装好了一个近乎完美的类:DS3D,通过使用DS3D,不仅可以实现普通的声音播放,而且可以设置听者于声源的物理位置和物理速度,甚至用户还可以设置声音的衰减因子和多普勒效应因子,根据这些参数,DS3D可以智能地转化为3D立体音效,你会发现声音是从四面八方传过来的,甚至你还可以设置声音的回声等特效。而这一切用户根本勿须具体了解其中具体的物理原理。
这次是做一个播放声音的程序,当程序运行的时候会自动播放指定的声音。
学习要点:
·导入Managed DirectX的动态链接库和引用名称空间;
·声明一个设备并将其与窗口绑定;
·声明并初始化声音缓冲区;
·利用声音缓冲区播放声音;
·DirectSound只能播放WAV声音文件。
启动Microsoft Visual Studio.NET 2003,新建一个Visual Basic项目,模板为Windows应用程序。
使用DirectX编程,首先必须将Managed DirectX的动态链接库引用到应用程序中,这样才能够将其imports出来,不然imports的话是看不到DirectX名称空间的。选择“项目”-“添加引用”,然后浏览C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0目录下的相关链接库,因为本次使用DirectSound,所以将Microsoft.DirectX.dll和Microsoft.DirectX.DirectSound.dll导入进来。
进入代码编辑窗口,添加引用名称空间的语句
然后必须声明一个设备,因为DirectX是应用程序直接与硬件打交道,所以必须使用一个设备为中间连接,设备声明语句如下:
因为该设备会在多个函数中使用,所以需要声明为类全局变量,即声明语句应放在类的最前面。
下面开始初始化设备,在Form_Load函数中写如下语句:
以上的设备声明与初始化是任何一个DirectX程序必备的,以后不再详细说明。
程序播放声音,首先是从硬盘加载到内存的缓冲区中,然后在缓冲区中播放,因此,我们需要声明一个缓冲区,范围为类全局变量。
现在已经完成初始化了,可以使用缓冲开始播放声音了,在上面语句的后面加入:
本程序的所有代码如下:
Code
可以运行看下啦~~~~~第一个DirectX程序~~下一课是做一个简单的播放器!!
DirectSound简介:DirectSound提供了实现声音的播放、混音、录音及3D音效的方法。值得一提的是DirectSound中的DirectSound3D(DS3D)组件。其实微软公司已经为我们封装好了一个近乎完美的类:DS3D,通过使用DS3D,不仅可以实现普通的声音播放,而且可以设置听者于声源的物理位置和物理速度,甚至用户还可以设置声音的衰减因子和多普勒效应因子,根据这些参数,DS3D可以智能地转化为3D立体音效,你会发现声音是从四面八方传过来的,甚至你还可以设置声音的回声等特效。而这一切用户根本勿须具体了解其中具体的物理原理。
这次是做一个播放声音的程序,当程序运行的时候会自动播放指定的声音。
学习要点:
启动Microsoft Visual Studio.NET 2003,新建一个Visual Basic项目,模板为Windows应用程序。
使用DirectX编程,首先必须将Managed DirectX的动态链接库引用到应用程序中,这样才能够将其imports出来,不然imports的话是看不到DirectX名称空间的。选择“项目”-“添加引用”,然后浏览C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0目录下的相关链接库,因为本次使用DirectSound,所以将Microsoft.DirectX.dll和Microsoft.DirectX.DirectSound.dll导入进来。
进入代码编辑窗口,添加引用名称空间的语句
Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectSound
这样就把DirectX和DirectSound名称空间引用进来了。 Imports Microsoft.DirectX.DirectSound
然后必须声明一个设备,因为DirectX是应用程序直接与硬件打交道,所以必须使用一个设备为中间连接,设备声明语句如下:
Dim Dev As Device
因为该设备会在多个函数中使用,所以需要声明为类全局变量,即声明语句应放在类的最前面。
Public Class Form1
Inherits System.Windows.Forms.Form
Inherits System.Windows.Forms.Form
下面开始初始化设备,在Form_Load函数中写如下语句:
Dev = New Device
Dev.SetCooperativeLevel(Me, CooperativeLevel.Normal)
第一句用于将设备Dev实例化,第二句则代表该设备捆绑的窗口,以代表该设备为该窗口服务,优先级别为普通。 Dev.SetCooperativeLevel(Me, CooperativeLevel.Normal)
以上的设备声明与初始化是任何一个DirectX程序必备的,以后不再详细说明。
程序播放声音,首先是从硬盘加载到内存的缓冲区中,然后在缓冲区中播放,因此,我们需要声明一个缓冲区,范围为类全局变量。
Dim SB As SecondaryBuffer
然后在设备初始化后面实例化该缓冲,同时向其构造函数传参: SB = New SecondaryBuffer("D:\魔兽争霸2\DRIVERS\DIGTEST.WAV", Dev)
第一个参数是文件的路径,第二个参数是使用的设备。 现在已经完成初始化了,可以使用缓冲开始播放声音了,在上面语句的后面加入:
SB.Play(0, BufferPlayFlags.Looping)
第一个参数是播放的优先级别,优先级越高,使用的硬件资源也越多,该值的范围从0到0xFFFFFF之间,第二个则是播放模式,这里选择的是循环播放。 本程序的所有代码如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)