国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

用VB.Net實現DirectSound9 (4) DS3D

2024-07-10 13:00:52
字體:
來源:轉載
供稿:網友
關鍵字:vb directx9 directsound 3d 作者:董含君


昨天去百度搜索directsound3d的資料,真是一點都沒有。驚訝啊。

google有一些,還是微軟的。看來真的要填補國內空白了。

高手門看來都很忙啊。

========以上是廢話================

一開始看微軟dsound3d的例子很困難,主要是術語太多,如果準備工作做的不夠,可以說幾乎看不懂。

從家里翻出一本directx的速成教材,看來有解釋的必要。

=========以下是正文===============

一個3d的聲音,我們可以理解為一個3d的緩沖區(buffer)

研究d3d的同志們知道,需要創建一個場景,然后設置頂點,光照,攝像機...

ds3d也是類似,大體有一下概念。這些需要跟現實聯系起來理解。

1 聲源 就是發聲的物體。具備很多屬性(慢慢討論)(buffer3d)

2 listenner 可以理解為聽眾,同樣具備很多屬性。(listener3d)

3 聲源與聽眾之間有各種關系,這就組成了場景,再代碼里面不存在,是通過聲源與聽眾的關系體現的。

4 聲源是可以移動的,于是他有了位置(vector3 position)

5 聽眾也是可以移動的,他也有位置(vector3 position)

6 聲源與聽眾都有位置,所以存在距離(distance)

7 由于存在距離又可以移動,于是便有了速度。(輔助概念)

8 有了聲源的移動跟聽眾的位置,所以產生了多普勒效應(dopplerfactor)
(不懂?就是接近的物體音調變高,離去的時候相反。還不懂?去看看初中物力教科書....)

9 聲音也有特性,比如衰減。距離越遠,效果自然不一樣。(rollofffactor)

10 有兩種聲音:a 360度空間的聲音(如爆炸) b 有方向的聲音(如說話具有方向性)
對于前者,好說,需要注意的是,聽眾也有這兩種屬性。
帶有方向的分為3個部分可以想象成3個嵌套的圓錐,聲源(你的嘴巴)在頂點位置,發出的聲音在最內的圓錐沒有感覺出強烈的衰減。但是在外測的圓錐能夠明顯的感覺到(靠近內側圓錐聽得更加清楚,也許你會進去),最后剩下的就是聽不到的了。
(也許你會說現實生活中我朝一個方向喊話,周圍都能聽到。那是因為波的傳播特性以及反射的結果)

以上就是ds3d再現實中的參考模型。如果上面的你不能充分理解,那么你永遠無法進入ds3d.

下一步,進入代碼。

用設備device創建關聯大家都會了,也知道他們都有自己的相關的參數的類,比如listenerparameters,listener3dsettings

播放聲音依賴于buffer.play()

前3章說的就是如何通過修改buffer的參數來達到聲音效果的不同。

ds3d也是如此,修改buffer的
application3dsettings.position = position;(x,y,z,)
application3dsettings.velocity = velocity;
然后利用這些位置參數
applicationbuffer3d.allparameters = application3dsettings;

這樣聽到的聲音就不一樣了。

實質上,初始化完成ds 以及 ds3d之后,開始播放,我們修改的就是這些參數而已。

跟修改音量類似,只不過音量我們可以直接增大10或者減少5。而修改三維坐標需要用方程來解決罷了。
(也許會用到立體解析幾何的知識)

ds3d理解起來不是很難了吧,就是修改坐標參數。其他的多普勒或者衰減微軟已經做好了(什么!你要自己做,那你不用看本文了)

至于代碼理解起來比較復雜,個人認為微軟的例子使用了太多的技巧,導致理解起來難度增大。

下次我自己做個簡單的例子,用來結束ds3d這一章。

為了寫代碼,用這么多文字介紹這些預備知識是值得的


中國最大的web開發資源網站及技術社區,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太仆寺旗| 贡觉县| 灯塔市| 崇左市| 山西省| 佛坪县| 延庆县| 兴化市| 麻栗坡县| 富蕴县| 上高县| 岳普湖县| 辽阳县| 中西区| 天祝| 梁河县| 东莞市| 长兴县| 新巴尔虎右旗| 合水县| 海丰县| 赞皇县| 钟祥市| 霍城县| 文昌市| 桃源县| 裕民县| 雷波县| 拜城县| 宝鸡市| 都江堰市| 久治县| 昌都县| 九江市| 肥城市| 忻州市| 兴宁市| 嵩明县| 海晏县| 扎鲁特旗| 屏山县|