• 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导入进来。

    进入代码编辑窗口,添加引用名称空间的语句
    Imports Microsoft.DirectX 
    Imports Microsoft.DirectX.DirectSound 
    这样就把DirectX和DirectSound名称空间引用进来了。

    然后必须声明一个设备,因为DirectX是应用程序直接与硬件打交道,所以必须使用一个设备为中间连接,设备声明语句如下:
    Dim Dev As Device

    因为该设备会在多个函数中使用,所以需要声明为类全局变量,即声明语句应放在类的最前面。
    Public Class Form1 
        
    Inherits System.Windows.Forms.Form 

    下面开始初始化设备,在Form_Load函数中写如下语句:
    Dev = New Device 
    Dev.SetCooperativeLevel(
    Me, CooperativeLevel.Normal)
    第一句用于将设备Dev实例化,第二句则代表该设备捆绑的窗口,以代表该设备为该窗口服务,优先级别为普通。
    以上的设备声明与初始化是任何一个DirectX程序必备的,以后不再详细说明。

    程序播放声音,首先是从硬盘加载到内存的缓冲区中,然后在缓冲区中播放,因此,我们需要声明一个缓冲区,范围为类全局变量。
    Dim SB As SecondaryBuffer 
    然后在设备初始化后面实例化该缓冲,同时向其构造函数传参:
    SB = New SecondaryBuffer("D:\魔兽争霸2\DRIVERS\DIGTEST.WAV", Dev) 
    第一个参数是文件的路径,第二个参数是使用的设备。

    现在已经完成初始化了,可以使用缓冲开始播放声音了,在上面语句的后面加入:
    SB.Play(0, BufferPlayFlags.Looping)
    第一个参数是播放的优先级别,优先级越高,使用的硬件资源也越多,该值的范围从0到0xFFFFFF之间,第二个则是播放模式,这里选择的是循环播放。

    本程序的所有代码如下:
    Code
    可以运行看下啦~~~~~第一个DirectX程序~~下一课是做一个简单的播放器!!
  • 相关阅读:
    SQL Server误区30日谈Day15CheckPoint只会将已提交的事务写入磁盘
    SQL Server误区30日谈Day16数据的损坏和修复
    【译】Windows Azure迁移生命周期概览
    【译】实现为Windows Azure制定的迁移计划
    SQL Server误区30日谈Day18有关FileStream的存储,垃圾回收以及其它
    【译】为迁移到Windows Azure制定规划
    SQL Server误区30日谈Day14清除日志后会将相关的LSN填零初始化
    SQL PASS北京用户群成功举办第一次线下活动,性能调优PPT分享
    Windows Azure虚拟机概览
    SQL Pass北京将举办第一次线下活动,欢迎大家报名
  • 原文地址:https://www.cnblogs.com/xusd/p/1396780.html
Copyright © 2020-2023  润新知