新聞中心
大家好,我是前端西瓜哥,今天來(lái)說(shuō)說(shuō) WebGL 中的三種圖元。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括宜黃網(wǎng)站建設(shè)、宜黃網(wǎng)站制作、宜黃網(wǎng)頁(yè)制作以及宜黃網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,宜黃網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到宜黃省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
在 WebGL 中,圖元有三種:點(diǎn)、線、以及三角形。
繪制的 API 為:
gl.drawArrays(mode, first, count)這里的 mode 就是要繪制的圖元類型。
我們繪制 4 個(gè)點(diǎn),下面是示意圖,并按順序標(biāo)明繪制方向。
下面來(lái)看看這四個(gè)頂點(diǎn)在不同圖元類型下的效果。
gl.POINTS
點(diǎn)
一個(gè)個(gè)繪制頂點(diǎn),各個(gè)頂點(diǎn)之間沒有聯(lián)系。
gl.drawArrays(gl.POINTS, 0, 4);
gl.LINES
線段
每?jī)蓚€(gè)點(diǎn)一組,繪制多條線段。
gl.drawArrays(gl.LINES, 0, 4);
gl.LINE_STRIP
線條(strip)
多個(gè)點(diǎn)按順序依次相連,形成一條多個(gè)線段組成的折線。
gl.drawArrays(gl.LINE_STRIP, 0, 4);
gl.LINE_LOOP
回路
類似 gl.LINE_STRIP,也是多個(gè)點(diǎn)順序相連,但多了一個(gè)頭尾頂點(diǎn)相連。
gl.drawArrays(gl.LINE_LOOP, 0, 4);
gl.TRIANGLES
三角形
三個(gè)點(diǎn)為一組,繪制一個(gè)三角形。如果最后一組湊不夠三個(gè)點(diǎn),會(huì)被丟棄不繪制。
gl.drawArrays(gl.TRIANGLES, 0, 4);
gl.TRIANGLE_STRIP
三角帶
有點(diǎn)像 gl.LINE_STRIP,從第二個(gè)點(diǎn)開始,會(huì)和前兩個(gè)點(diǎn)為一組繪制一個(gè)三角形,也就是一個(gè)點(diǎn)最多會(huì)被 3 個(gè)三角形共享。所以相比 gl.TRIANGLES,可以用更少的信息去繪制同樣的效果。
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);可以看到,第 1、2 個(gè)頂點(diǎn)形成的邊被兩個(gè)三角形共用了。
gl.TRIANGLE_FAN
三角扇
從第二個(gè)點(diǎn)開始,和它的上一個(gè)點(diǎn),以及第一個(gè)點(diǎn)組成一個(gè)三角形。
也就是第一個(gè)點(diǎn)會(huì)被所有三角形共用。
gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);適合用來(lái)繪制多邊形。
動(dòng)手試試
demo 地址。
修改最后一行代碼,改為上面的圖元模式,看看效果吧。
或者你可以追加一些頂點(diǎn)坐標(biāo)看看效果,記得不要忘記改 gl.drawArrays 方法的最后一個(gè)參數(shù),即使用的頂點(diǎn)的個(gè)數(shù)。
文章題目:一起學(xué)WebGL:圖元的類型
文章路徑:http://www.dlmjj.cn/article/ccsgepd.html


咨詢
建站咨詢
