VB.NET 实现DirectSound9 (5) DS3D2[4]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 a11s 的 blog

        me.resumelayout(false)

    end sub

#end region

    private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
        '''加载的时候初始化一下picturebox,把它变成黑色(没有颜色)
        picturebox1_doubleclick(0, nothing)
    end sub

    sub initdirectsound()
        ''加载directsound设备以及读取wav文件
        '设置3d模式
        dim dsmode as guid
        dsmode = dsoundhelper.guid3dalgorithmhrtffull       '由于为了演示3d效果,所以用最高模式
        '关联窗体
        dev = new device
        dev.setcooperativelevel(me.handle, cooperativelevel.priority)
        ''加载wav '''注释掉了,原来测试用的
        'dim tmpdesc as new bufferdescription
        'tmpdesc.guid3dalgorithm = dsmode
        'tmpdesc.control3d = true
        'sbuff = new secondarybuffer(fn, tmpdesc, dev)

        '格式有比较严格的限制
        dim fmt as new waveformat
        fmt.formattag = waveformattag.pcm
        fmt.channels = 2
        fmt.samplespersecond = 22050
        fmt.bitspersample = 16
        fmt.blockalign = cshort(fmt.bitspersample / 8 * fmt.channels)
        fmt.averagebytespersecond = fmt.samplespersecond * fmt.blockalign
        '创建描述
        descbuff = new bufferdescription
        'descbuff.controlvolume = true
        descbuff.control3d = true
        'descbuff.globalfocus = true
        'descbuff.staticbuffer = true
        'descbuff.locateinhardware = true
        descbuff.primarybuffer = true
        descbuff.format = fmt
        'descbuff.guid3dalgorithm = dsmode
        '''以上可以自己去掉注释尝试一下,某些时候当primary打开的时候,其他的不能用,有冲突,尤其是后面几个
        '创建主缓冲
        try
            '''捕获一下,防止descript的描述不正确(就是参数设置的不对)
            buff = new buffer(descbuff, dev)
        catch ex as exception
            msgbox(ex.message)
            end   '不对的话,就没有必要继续了
        end try
        '创建听众
        listenner = new listener3d(buff)
        listennerset = listenner.allparameters   '使用主缓冲听众的设置

        ''wav
        dim tmpdesc2 as new bufferdescription
        tmpdesc2.guid3dalgorithm = dsmode
        tmpdesc2.control3d = true
        ''' 这里必须借助辅助缓冲给主缓冲提供实例,不知道微软怎么想的,也可能是我学艺不精,怎么尝试都要这样用
        buff = new secondarybuffer(fn, tmpdesc2, dev)

        '创建3d缓冲区
        buff3d = new buffer3d(buff)
        buff3dset = buff3d.allparameters        '使用默认的设置
        buff3dset.mode = mode3d.headrelative    '改变一个参数
        buff3d.allparameters = buff3dset        '应用新的设置

        msgbox("已经读取" + fn)

本文关键:VB.NET 实现DirectSound9 (5) DS3D2
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top