凹凸国产熟女精品视频app,国产99视频精品免费观看9 http://www.a21118.cn/ zh-hans 虛擬展廳中所運(yùn)用的WebGL技術(shù)原理簡(jiǎn)單介紹 http://www.a21118.cn/news/493 <span>虛擬展廳中所運(yùn)用的WebGL技術(shù)原理簡(jiǎn)單介紹</span> <span><span lang="" about="http://www.a21118.cn/user/1" typeof="schema:Person" property="schema:name" datatype="" xml:lang="">Jyadmin</span></span> <span>周三, 12/23/2020 - 15:45</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>?</p> <h4><strong>WebGL是什么,用它能做什么?</strong></h4> <p>WebGL(Web Graphics Library)是一種3D繪圖協(xié)議,這種繪圖技術(shù)標(biāo)準(zhǔn)允許把JavaScript和OpenGL ES 2.0(OpenGL 的嵌入式平臺(tái)版本)結(jié)合在一起,通過增加OpenGL ES 2.0的一個(gè)JavaScript綁定來實(shí)現(xiàn),WebGL可以為HTML5 Canvas提供硬件3D加速渲染。</p> <p><img alt="WebGL是什么" data-entity-type="file" data-entity-uuid="e8fa5751-3686-4164-a62b-67bbd5dfe419" src="http://www.a21118.cn/sites/default/files/inline-images/WebGL%E6%98%AF%E4%BB%80%E4%B9%88.jpg" width="616" height="413" loading="lazy" /></p> <p>開發(fā)者就可以借助系統(tǒng)顯卡來在瀏覽器里更流暢地展示3D場(chǎng)景和模型,還能創(chuàng)建復(fù)雜的導(dǎo)航和數(shù)據(jù)視覺化。WebGL技術(shù)標(biāo)準(zhǔn)免去了開發(fā)網(wǎng)頁專用渲染插件的麻煩,可被用于創(chuàng)建具有復(fù)雜3D結(jié)構(gòu)的網(wǎng)站頁面,甚至可以用來設(shè)計(jì)3D網(wǎng)頁游戲等等。</p> <p>這項(xiàng)技術(shù)還應(yīng)用了一個(gè)繪制所需的專用語言 GLSL:</p> <p>OpenGL著色語言(OpenGL Shading Language)是用來在OpenGL中著色編程的語言,他們是在圖形顯卡的GPU (Graphic Processor Unit圖形處理單元)上執(zhí)行的,一般著色器分為兩部分:Vertex Shader(頂點(diǎn)著色器)和Fragment(片元著色器),GLSL使用C語言作為基礎(chǔ)高階著色語言。</p> <p>總的來說,WebGL就是通過js獲取Canvas上下文關(guān)系,使用JS Api操作GLSL語言進(jìn)行編程,并最終在Canvas中展示的web圖形繪制能力。</p> <h4><strong>WebGL如何形成指定圖像?</strong></h4> <p><strong>1. WebGL只能繪制點(diǎn)(gl.POINTS)、線(gl.LINES)、三角(gl.TRIANGLES)三種基礎(chǔ)圖形,任何復(fù)雜圖形都是由基礎(chǔ)圖形組合形成的,如下圖所示的茶壺(復(fù)雜圖形),可被拆解為所示的復(fù)數(shù)基礎(chǔ)圖形的組合:</strong></p> <p><strong><img alt="WebGL只能繪制點(diǎn)、線、三角三種基礎(chǔ)圖形" data-entity-type="file" data-entity-uuid="9008111a-9033-465b-92a8-8d3939250987" src="http://www.a21118.cn/sites/default/files/inline-images/WebGL%E5%8F%AA%E8%83%BD%E7%BB%98%E5%88%B6%E7%82%B9%E3%80%81%E7%BA%BF%E3%80%81%E4%B8%89%E8%A7%92%E4%B8%89%E7%A7%8D%E5%9F%BA%E7%A1%80%E5%9B%BE%E5%BD%A2.jpg" width="641" height="348" loading="lazy" /></strong></p> <p><strong>2. 繪制的實(shí)現(xiàn),會(huì)經(jīng)過這三個(gè)步驟的處理:</strong></p> <p>① 獲取頂點(diǎn)坐標(biāo)(即該形狀的可見點(diǎn)陣集)</p> <p>② 圖元裝配(將頂點(diǎn)繪制成一個(gè)一個(gè)三角形,拼接成面)</p> <p>③ 光柵化(將每一個(gè)三角形所對(duì)應(yīng)畫布的位置和色值計(jì)算出來)</p> <p><img alt="繪制的實(shí)現(xiàn)" data-entity-type="file" data-entity-uuid="08fc54f7-52af-4776-93bf-b621266667ec" src="http://www.a21118.cn/sites/default/files/inline-images/%E7%BB%98%E5%88%B6%E7%9A%84%E5%AE%9E%E7%8E%B0.jpg" width="643" height="151" loading="lazy" /></p> <p>目標(biāo)圖形繪制的完整流程如下:</p> <p><img alt="目標(biāo)圖形繪制的完整流程" data-entity-type="file" data-entity-uuid="dbe8f30a-af4b-4703-926a-7ae3a1ccf490" src="http://www.a21118.cn/sites/default/files/inline-images/%E7%9B%AE%E6%A0%87%E5%9B%BE%E5%BD%A2%E7%BB%98%E5%88%B6%E7%9A%84%E5%AE%8C%E6%95%B4%E6%B5%81%E7%A8%8B.jpg" width="644" height="269" loading="lazy" /></p> <p><strong>3. 目標(biāo)圖形在實(shí)際場(chǎng)景中存在位置、大小、透視關(guān)系等影響因素,為了達(dá)到符合預(yù)期的視覺效果,坐標(biāo)(X, Y, Z)將經(jīng)由復(fù)數(shù)個(gè)矩陣變換的計(jì)算處理,最終形成指定坐標(biāo)點(diǎn)(同樣片元也會(huì)根據(jù)矩陣關(guān)系計(jì)算著色結(jié)果)。</strong></p> <p><strong><img alt="形成指定坐標(biāo)點(diǎn)" data-entity-type="file" data-entity-uuid="2d955ed5-b747-40ac-93dc-d35fbf565235" src="http://www.a21118.cn/sites/default/files/inline-images/%E5%BD%A2%E6%88%90%E6%8C%87%E5%AE%9A%E5%9D%90%E6%A0%87%E7%82%B9.jpg" width="647" height="184" loading="lazy" /></strong></p> <p><strong>4.完成繪制后,通過JS的上下文操作DOM,將在Canvas上成功渲染“</strong><strong>一幀”</strong><strong>圖片,即每次計(jì)算將得到一組靜態(tài)的像素序列,用于鋪滿填充Canvas畫布。</strong></p> <p>此時(shí)一次完整的WebGL繪制流程完成。</p> <p><strong>WebGL的渲染,就是將三維圖形的坐標(biāo)點(diǎn),經(jīng)過復(fù)雜的加工處理(3D建模),再經(jīng)由上述步驟的繪制流程,即可通過WebGL在前端頁面中完成“一次”繪制操作,此時(shí)通過JS將緩存區(qū)的圖元信息填充至Canvas,即可在網(wǎng)頁中展示一張靜態(tài)繪制圖,受限于篇幅原因,詳細(xì)的實(shí)現(xiàn)細(xì)節(jié)建議通過網(wǎng)絡(luò)示例進(jìn)行了解。</strong></p> <p>?</p> <p>?</p> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">標(biāo)簽</div> <div class="field--items"> <div class="field--item"><a href="http://www.a21118.cn/taxonomy/term/16" hreflang="zh-hans">線上展廳</a></div> </div> </div> Wed, 23 Dec 2020 07:45:03 +0000 Jyadmin 493 at http://www.a21118.cn