directsoundDirectsound和声卡驱动之间是什么关系?是不是只有Directsound就可以了而不需要声卡驱动?

directsound  时间:2021-06-19  阅读:()

如何让DirectSound支持3D立体声效果

1. 创建DirectSound8对象CComPtr<IDirectSound8> dsound; HRESULT hres = DirectSoundCreate8(NULL, &dsound, NULL); 2. 创建含有DSBCAPS_CTRL3D能力的DirectSoundBuffer对象CComPtr<IDirectSoundBuffer> dsbuffer; DSBUFFERDESC dsbd = {sizeof(dsbd)}; ... // 正确初始化SoundBufferDescrible成员 dsbd.dwFlags |= DSBCAPS_CTRL3D; hres = dsound->CreateSoundBuffer(&dsbd, &dsbuffer, NULL); 3. 从DirectSoundBuffer对象中获取DirectSound3DBuffer对象CComPtr<IDirectSound3DBuffer> ds3dbuffer; hres = dsbuffer->QueryInterface(IID_IDirectSound3DBuffer, (LPVOID *)&ds3dbuffer); 4. 从PrimarySoundBuffer对象中获取DirectSound3DListenerCComPtr<IDirectSoundBuffer> primaryBuffer; DSBUFFERDESC dsbd = {sizeof(dsbd)}; dsbd.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_PRIMARYBUFFER; hres = dsound->CreateSoundBuffer(&dsbd, &primaryBuffer, NULL); CComPtr<IDirectSound3DListener> ds3dlistener; hres = primaryBuffer->QueryInterface(IID_IDirectSound3DListener, (LPVOID *)&ds3dlistener); 5. 在帧循环中设置DirectSound3DBuffer对象DS3DBUFFER ds3db = {sizeof(ds3db)}; hres = ds3dbuffer->GetAllParameters(&ds3db); ds3db.vPosition = ...; // 设置Position ds3db.vVelocity = ...; // 设置Velocity ds3db.flMinDistance = 5; ds3db.flMaxDistance = 50; ds3db.dwMode = DS3DMODE_NORMAL; hres = ds3dbuffer->SetAllParameters(&ds3db, DS3D_DEFERRED); 6. 在帧循环中设置DirectSound3DListener对象DS3DLISTENER ds3dl = {sizeof(ds3dl)}; hres = ds3dlistener->GetAllParameters(&ds3dl); ds3dl.vPosition = ...; // 设置Position ds3dl.vOrientFront = ...; // 设置向前的矢量,注意旋转变换 ds3dl.vOrientTop = ...; // 设置向上的矢量,注意旋转变换 ds3dl.flDistanceFactor = 1.0f; ds3dl.flRolloffFactor = 0.05f; ds3dl.flDopplerFactor = 0; hres = ds3dlistener->SetAllParameters(&ds3dl, DS3D_IMMEDIATE); 7. 在合适的时机更新及播放DirectSoundBuffer,就可以得到效果了unsigned char * buffer1, * buffer2; DWORD bytes1, bytes2; hres = dsbuffer->Lock(0, 0, (LPVOID *)&buffer1, &bytes1, (LPVOID *)&buffer2, &bytes2, DSBLOCK_ENTIREBUFFER); ... // 更新声音缓存 hres = dsbuffer->Unlock(buffer1, bytes1, buffer2, bytes2); // 找到合适的时机 hres = dsbuffer->Play(0, 0, DSBPLAY_LOOPING);

声卡DirectSound是什么意思

DirectX 使程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。

该程序使得多媒体软件程序能够在基于 Windows 的具有 DirectX 兼容硬件与驱动程序的计算机上运行,同时可确保多媒体程序能够充分利用高性能硬件。

Microsoft DirectSound API 为程序和音频适配器的混音、声音播放和声音捕获功能之间提供了链接。

DirectSound 为多媒体软件程序提供低延迟混合、硬件加速以及直接访问声音设备等功能。

维护与现有设备驱动程序的兼容性时提供该功能。

现在的很多集成声卡都支持,基本这已经是一个标准了,大家设计的时候都已经根据Microsoft DirectSound API设计芯片,编写程序

DirectSound 在那里?

directsound 它是 directx 中的一个组件,同时, directsound 本身就是一个声音合成引擎,是一个软件。

只要装了directx就默认集成了,一般的声卡驱动里也有...

C#里边怎么用directsound混音?

第1步:下载并安装DirectX 9c第2步:建立C#应用程序新建一个C#的windows应用程序,名称这里输mydirectXtest。

解决方案管理器里,右击项目,“添加引用”,选中DirectX和DirectSound,如下图: 在Form1.cs里面添加: using Microsoft.DirectX; using Microsoft.DirectX.DirectSound; 往Form1上面拉一个Label和一个Button,在Button onclick事件里面写入:1// 建立声音设备 2Microsoft.DirectX.DirectSound.Device dev = 3 new Microsoft.DirectX.DirectSound.Device(); 4 5dev.SetCooperativeLevel(this, 6 Microsoft.DirectX.DirectSound.CooperativeLevel.Normal); 7 8// 为声音建立二级缓冲区 9try 10{ 11 Microsoft.DirectX.DirectSound.SecondaryBuffer snd = 12 new Microsoft.DirectX.DirectSound.SecondaryBuffer( 13 "../../NewDrums.wav", dev); 14 15 // 播放声音 16 snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default); 17} 18catch (Exception ex) 19{ 20 label1.Text = ex.ToString(); 21} Microsoft.DirectX.DirectSound.Device dev = new Microsoft.DirectX.DirectSound.Device(); ——建立device的类;dev.SetCooperativeLevel(this, Microsoft.DirectX.DirectSound.CooperativeLevel.Normal); ——设置CooperativeLevel。

因为Windows是多任务的系统,设备不是独占的,所以在使用设备前要为这个设备设置CooperativeLevel。

调用Device的SetCooperativeLevel方法:其中,第一个参数是一个Control;第二个参数是个枚举类型,用来设置优先级的。

SecondaryBuffer snd = new Microsoft.DirectX.DirectSound.SecondaryBuffer("../../NewDrums.wav", dev); —— 开辟缓冲区。

声音设备有个自己的缓冲区,叫主缓冲区。

系统中,一个设备有唯一的主缓冲区。

由于windows是多任务的,所以可以有几个程序同时利用一个设备播放声音,每个程序都自己开辟一个二级缓冲区,放自己的声音。

这里需要注意播放声音的路径,一开始初学者容易把wav声音放到项目里面,在SecondaryBuffer里面直接写“NewDrums.wav”,调试是会显示“应用程序错误”。

因为调试的默认文件夹是Debug,需要的声音文件应该放到Debug目录下,用“NewDrums.wav”的格式;或者放在项目下面,用“../../NewDrums.wav”的格式。

很傻的错误吧。

这样,调试程序,按button就会播放声音了。

全部代码如下: Form1.cs:1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Text; 7using System.Windows.Forms; 8 9using Microsoft.DirectX; 10using Microsoft.DirectX.DirectSound; 11 12 13namespace mydirectXtest 14{ 15 public partial class Form1 : Form 16 { 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 22 private void button1_Click(object sender, EventArgs e) 23 { 24 25 // 建立声音设备 26 Microsoft.DirectX.DirectSound.Device dev = 27 new Microsoft.DirectX.DirectSound.Device(); 28 29 dev.SetCooperativeLevel(this, 30 Microsoft.DirectX.DirectSound.CooperativeLevel.Normal); 31 32 // 为声音建立二级缓冲区 33 try 34 { 35 Microsoft.DirectX.DirectSound.SecondaryBuffer snd = 36 new Microsoft.DirectX.DirectSound.SecondaryBuffer( 37 "../../NewDrums.wav", dev); 38 39 // 播放声音 40 snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default); 41 } 42 catch (Exception ex) 43 { 44 label1.Text = ex.ToString(); 45 } 46 47 } 48 } 49}到这里OK ! 。







应该行的 ,慢慢摸索下吧

Directsound和声卡驱动之间是什么关系?是不是只有Directsound就可以了而不需要声卡驱动?

不,声卡驱动是发声用的。

机器必须装了声卡驱动才可以正常发出声音,不装声卡驱动就谈不上directsound了。

directsound是立体音效的,相当于声音的修饰作用。

Linode($5/月),新用户注册送100美元,11个数据中心云服务器

关于Linode,这是一家运营超过18年的VPS云主机商家,产品支持随时删除(按小时计费),可选包括美国、英国、新加坡、日本、印度、加拿大、德国等全球十多个数据中心,最低每月费用5美元($0.0075/小时)起。目前,注册Linode的新用户添加付款方式后可以获得100美元赠送,有效期为60天,让更多新朋友可以体验Linode的产品和服务。Linode的云主机产品分为几类,下面分别列出几款套餐配置...

华纳云CN2高防1810M带宽独享,三网直cn218元/月,2M带宽;独服/高防6折购

华纳云怎么样?华纳云是香港老牌的IDC服务商,成立于2015年,主要提供中国香港/美国节点的服务器及网络安全产品、比如,香港服务器、香港云服务器、香港高防服务器、香港高防IP、美国云服务器、机柜出租以及云虚拟主机等。以极速 BGP 冗余网络、CN2 GIA 回国专线以及多年技能经验,帮助全球数十万家企业实现业务转型攀升。华纳云针对618返场活动,华纳云推出一系列热销产品活动,香港云服务器低至3折,...

速云:深圳独立服务器,新品上线,深港mpls免费体验,多重活动!

速云怎么样?速云是一家国人商家。速云商家主要提供广州移动、深圳移动、广州茂名联通、香港HKT等VDS和独立服务器。目前,速云推出深圳独服优惠活动,机房为深圳移动机房,购买深圳服务器可享受5折优惠,目前独立服务器还支持申请免费试用,需要提交工单开通免费体验试用,次月可享受永久8折优惠,也是需工单申请哦!点击进入:速云官方网站地址活动期限至 2021年7月22日速云云服务器优惠活动:活动1:新购首月可...

directsound为你推荐
activity跳转Android中如何知道由哪个activity跳转到当前页面订房系统常用的酒店管理软件有哪些郭列90后三无人物,如何创业?如何去实现人生价值?wow服务器状态我电脑上的魔兽服务器状态很好.但是还是玩不起来.请问可以玩了不?音乐代码css控制背景音乐代码sms是什么短信确认码是什么网站客服代码在线客服系统的代码添加到网站中,要怎么做?空间导航怎么设置QQ空间个性导航情人节网页有没有网站情人节办活动的啊???中国交通频道在线直播日照广播交通生活频道怎么在线收听?帮帮忙
vps优惠码 全能主机 牛人与腾讯客服对话 嘟牛 卡巴斯基永久免费版 个人空间申请 52测评网 北京双线 徐正曦 qq对话框 重庆双线服务器托管 免费网页空间 免费网页申请 爱奇艺会员免费试用 万网空间购买 宏讯 便宜空间 linode支付宝 web应用服务器 注册阿里云邮箱 更多