成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

WebAssembly介紹

appetizerio / 445人閱讀

摘要:工作原理分點(diǎn)介紹官方解讀它可以從各類現(xiàn)有的其他高級(jí)語(yǔ)言寫(xiě)的業(yè)務(wù)庫(kù)編譯而來(lái),比如下文提到的庫(kù),就是一種語(yǔ)言編寫(xiě)的剛體動(dòng)力學(xué)與碰撞檢測(cè)計(jì)算的庫(kù)。

1、WebAssembly工作原理 分點(diǎn)介紹
官方解讀

它可以從各類現(xiàn)有的其他高級(jí)語(yǔ)言寫(xiě)的業(yè)務(wù)庫(kù)編譯而來(lái),比如下文提到的bullet庫(kù),就是一種C++語(yǔ)言編寫(xiě)的剛體動(dòng)力學(xué)與
碰撞檢測(cè)計(jì)算的庫(kù)。根據(jù)調(diào)研,還有Haskell、Go、C#的語(yǔ)言的一些WebAssembly編譯工具或者已經(jīng)編譯成的WebAssembly代碼庫(kù),
OK,既然是經(jīng)過(guò)編譯而得來(lái),可以將WebAssembly理解為是該庫(kù)的低級(jí)語(yǔ)言代碼版本,是一種類匯編語(yǔ)言。

另類理解

可以把它理解成一個(gè)ES6語(yǔ)法寫(xiě)的js模塊,既可以有導(dǎo)入又有導(dǎo)出,也可以沒(méi)有導(dǎo)入只有導(dǎo)出。

兩類文件

WebAssembly文件格式與源碼閱讀->.wasm文件和.wast文件

WebAssembly代碼存儲(chǔ)在.wasm文件內(nèi),這類文件是要瀏覽器直接執(zhí)行的。
因?yàn)?wasm文件內(nèi)是二進(jìn)制文件,難以閱讀,為了方便開(kāi)發(fā)者查看,官方給出了對(duì).wasm文件的閱讀方法,
通過(guò)把.wasm文件通過(guò)工具轉(zhuǎn)為.wast的文本格式,開(kāi)發(fā)者可以在一定程度上理解這個(gè).wast文件。
.wast文件是通過(guò)S-表達(dá)式(一種類似lisp語(yǔ)言的代碼書(shū)寫(xiě)風(fēng)格)來(lái)寫(xiě)成的,
至于怎么讀懂S-表達(dá)式,請(qǐng)去看官方介紹。
.wast文件和.wasm文件的關(guān)系,他們之間的相互轉(zhuǎn)化,可以通過(guò)工具wabt(https://github.com/WebAssembl...)
實(shí)現(xiàn)。

工作流程

某高級(jí)語(yǔ)言寫(xiě)的某功能庫(kù)-->emscripten編譯-->.wasm文件-->結(jié)合WebAssembly JS API-->瀏覽器中運(yùn)行
完成一部分 用js寫(xiě),而后依靠瀏覽器解釋執(zhí)行,會(huì)比較消耗性能 的工作,比如視頻解碼,OpenGL,OpenCV等。
簡(jiǎn)單來(lái)說(shuō),加載運(yùn)行wasm代碼的過(guò)程如下圖所示。



得到wasm文件后,就可以使用js加載該模塊,實(shí)例化該模塊,運(yùn)行該模塊中的函數(shù)。

如上,通過(guò)js調(diào)用這兩個(gè)c語(yǔ)言方法,瀏覽器運(yùn)行,控制臺(tái)打印出正確結(jié)果。

5、基于WebAssembly模塊庫(kù)ammo.js的Demo Demo介紹

基于three.js構(gòu)建了三維場(chǎng)景,場(chǎng)景中有一個(gè)圖片紋理拼成的ground地面,和兩個(gè)THREE.Mesh()方法創(chuàng)建的
球體,這兩個(gè)球體在地面上一左一右有固定的位置。

然后使用ammo構(gòu)建了一個(gè)剛體動(dòng)力學(xué)環(huán)境,這是一個(gè)有重力、考慮物體慣性等的物理環(huán)境,在這個(gè)環(huán)境中創(chuàng)建了
一個(gè)球體(界面中不可見(jiàn)),給該球體設(shè)置了一些剛體動(dòng)力學(xué)的參數(shù),如平移、旋轉(zhuǎn)等,設(shè)置完這些參數(shù)再使用相反的
API獲取這些參數(shù),然后把這些參數(shù)賦給three.js創(chuàng)建的第二個(gè)球體(圖1中右邊那個(gè)),一秒后重新渲染threejs場(chǎng)景,該球體
則獲得了一個(gè)平移的參數(shù),移動(dòng)到相應(yīng)的(本例中是更靠右)的位置。

圖1 使用ammo庫(kù)前

圖2 調(diào)用ammo相關(guān)代碼后

Demo源代碼地址

https://github.com/cunzaizhuy...

如需測(cè)試使用,請(qǐng)注意替換掉以下兩行


本Demo參考鏈接

(1)Bullet類庫(kù)API http://bulletphysics.org/Bull...

(2)Ammo庫(kù)地址 https://github.com/kripken/am...

6、WebAssembly資源推薦

(1)英文官網(wǎng) http://webassembly.org/

(2)中文官網(wǎng) http://webassembly.org.cn/

(3)MDN網(wǎng)址 https://developer.mozilla.org...

(4)資料齊全 https://github.com/mbasso/awe...

(5)一篇講解詳細(xì)的博客 https://segmentfault.com/a/11...

(6)一篇講解詳細(xì)的博客 https://segmentfault.com/a/11...

(7)有編譯工具鏈簡(jiǎn)單介紹 http://geek.csdn.net/news/det...

(0)本篇博客中的一些資源 https://github.com/cunzaizhuy...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91843.html

相關(guān)文章

  • 前端每周清單半年盤點(diǎn)之 WebAssembly

    摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。利用降低三倍加載速度自推出之后,很多開(kāi)發(fā)者都開(kāi)始嘗試在小型項(xiàng)目中實(shí)踐,不過(guò)尚缺大型真實(shí)案例比較。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開(kāi)發(fā)教程、工程實(shí)踐、深度閱讀、開(kāi)源項(xiàng)目、巔峰人生等欄目...

    Alan 評(píng)論0 收藏0
  • WebAssembly 系列(一)生動(dòng)形象地介紹 WebAssembly

    摘要:但是為什么執(zhí)行的更快呢在這個(gè)系列文章中,我會(huì)為你解釋這一點(diǎn)。所以當(dāng)人們說(shuō)更快的時(shí)候,一般來(lái)講是與相比而言的。被人們廣為傳播的性能大戰(zhàn)在年打響。性能的提升使得的應(yīng)用范圍得到很大的擴(kuò)展?,F(xiàn)在通過(guò),我們很有可能正處于第二個(gè)拐點(diǎn)。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58ce8036...

    wangbjun 評(píng)論0 收藏0
  • WebAssembly 系列(四)WebAssembly 工作原理

    摘要:但是它們其實(shí)并不是二選一的關(guān)系并不是只能用或者。正因?yàn)槿绱?,指令有時(shí)也被稱為虛擬指令。這是因?yàn)槭遣捎没跅5奶摂M機(jī)的機(jī)制。聲明模塊的全局變量。。下文預(yù)告現(xiàn)在你已經(jīng)了解了模塊的工作原理,下面將會(huì)介紹為什么運(yùn)行的更快。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58c77641a6d8...

    stormzhang 評(píng)論0 收藏0
  • WebAssembly 為什么比 asm.js 快?

    摘要:并且于年月日,四個(gè)主要的瀏覽器一致同意宣布的版本已經(jīng)完成,即將推出一個(gè)瀏覽器可以搭載的穩(wěn)定版本。因此本文著重介紹為什么比更快。本文主要表達(dá)的是為什么應(yīng)該是更快的。則不同,它是由幾大主要的瀏覽器廠商共同設(shè)計(jì)的。 作者:Alon Zakai 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58ce80d2a6d8a0...

    Binguner 評(píng)論0 收藏0
  • WebAssembly 系列(五)為什么 WebAssembly 更快?

    摘要:圖表中的比例并不代表真實(shí)情況下的確切比例情況。解析當(dāng)?shù)竭_(dá)瀏覽器時(shí),源代碼就被解析成了抽象語(yǔ)法樹(shù)。解析過(guò)后抽象語(yǔ)法樹(shù)就變成了中間代碼叫做字節(jié)碼,提供給引擎編譯。目前為止,不支持垃圾回收。這就是為什么在大多數(shù)情況下,同一個(gè)任務(wù)比表現(xiàn)更好的原因。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId...

    劉德剛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<