亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

WebAssembly介紹

appetizerio / 500人閱讀

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

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

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

另類理解

可以把它理解成一個ES6語法寫的js模塊,既可以有導(dǎo)入又有導(dǎo)出,也可以沒有導(dǎo)入只有導(dǎo)出。

兩類文件

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

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

工作流程

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



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

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

5、基于WebAssembly模塊庫ammo.js的Demo Demo介紹

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

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

圖1 使用ammo庫前

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

Demo源代碼地址

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

如需測試使用,請注意替換掉以下兩行


本Demo參考鏈接

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

(2)Ammo庫地址 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)有編譯工具鏈簡單介紹 http://geek.csdn.net/news/det...

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/91843.html

相關(guān)文章

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

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

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

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

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

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

    stormzhang 評論0 收藏0
  • WebAssembly 為什么比 asm.js 快?

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

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

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

    劉德剛 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<