在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ WebGL繪制模型
WebGL Context上下文
WebGL圖形管線
WebGL示例程序
WebGL交互式立方體
WebGL繪制三角形
WebGL幾何體
WebGL繪制模型
WebGL基礎
WebGL平移
WebGL教程
WebGL繪圖的模式
WebGL縮放
WebGL繪制點
WebGL顏色
WebGL旋轉
WebGL繪制四邊形
WebGL著色器程序
WebGL基本圖形概念
WebGL立方體旋轉
WebGL關聯(lián)屬性和緩沖區(qū)對象
Html5 Canvas介紹
WebGL著色器

WebGL繪制模型

在相關聯(lián)的緩沖器與著色之后,最后的步驟是畫出所需的原語。 WebGL 提供了兩種方法,即:drawArrays()和 drawElements()來繪制模型。

drawArrays()

drawArrays()是用于使用頂點來繪制模型方法。下面是它的語法 -
void drawArrays(enum mode, int first, long count)
此方法采用以下三個參數(shù) -
  • mode ? 在WebGL中,模型采用原始類型繪制。使用模式,程序員不得不選擇通過WebGL提供的原始類型。該選項的可能值為 ? gl.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, 和 gl.TRIANGLES.

  • first ? 此選項指定啟用數(shù)組開始元素。它不能是負值。

  • count ? 此選項指定要呈現(xiàn)的元素數(shù)。

如果您使用drawArray()方法s繪制模型,那么WebGL在渲染圖形時,也定義幾何形狀的順序創(chuàng)建頂點坐標。

示例

如果你想使用 drawArray()方法來繪制一個三角形,那么你必須通過三個頂點并調(diào)用drawArrays()方法,如下圖所示。
var vertices = [-0.5,-0.5, -0.25,0.5, 0.0,-0.5,];
gl.drawArrays(gl.TRIANGLES, 0, 3);
它會產(chǎn)生一個三角形,如下所示。

Triangle
假設你想繪制連續(xù)的三角形,那么必須通過下一個三個頂點順序在頂點緩沖區(qū)并注明元素的數(shù)量呈現(xiàn)為6。
var vertices = [-0.5,-0.5, -0.25,0.5, 0.0,-0.5, 0.0,-0.5, 0.25,0.5, 0.5,-0.5,];
gl.drawArrays(gl.TRIANGLES, 0, 6);
這會產(chǎn)生一種連續(xù)的三角形,如下所示。

Triangle 1

drawElements()

drawElements()是用于繪制用頂點和索引模型方法。它的語法如下 -
void drawElements(enum mode, long count, enum type, long offset)
該方法采用以下四個參數(shù) -
  • mode ? WebGL模型使用的是原始類型繪制。使用模式,程序員必須選擇WebGL提供的原始類型之一。對于此選項可能值的列表是- l.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, 和 gl.TRIANGLES.

  • count ? 此選項指定待渲染的元素數(shù)量。

  • type ? 此選項指定必須是UNSIGNED_BYTE或UNSIGNED_SHORT索引的數(shù)據(jù)類型。

  • offset ? 此選項指定渲染起點。它通常是第一個元素(0)。

如果您使用drawElements()方法繪制模型,則指數(shù)緩沖區(qū)對象也應隨著頂點緩沖對象創(chuàng)建。如果使用此方法,該頂點數(shù)據(jù)將被處理一次,并作為中提到的索引多次。

示例

如果想使用索引來畫一個三角形,需要通過指數(shù)以及頂點并調(diào)用drawElements()方法,如下圖所示。
var vertices =[-0.5,-0.5,0.0,-0.25,0.5,0.0,0.0,-0.5,0.0]; 
var indices =[0,1,2]; 
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT,0);
它會產(chǎn)生下面的輸出 -

Triangle
如果你想使用 drawElements()方法來繪制渲染三角形,只需添加其他頂點并注明余下頂點的索引。
var vertices =[-0.5,-0.5,0.0,-0.25,0.5,0.0,0.0,-0.5,0.0,0.25,0.5,0.0,0.5,-0.5,0.0]; 
var indices =[0,1,2,2,3,4]; 
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT,0);

它會產(chǎn)生下面的輸出 -

Triangle 1

所需的操作

繪制一個原語之前,您需要執(zhí)行一些操作,這說明如下。

清除Canvas

首先,應該用clearColor()方法清除canvas??梢詡鬟f所需顏色的RGBA值作為參數(shù)傳遞到這個方法。然后WebGL清除canvas,并使用指定的顏色進行填充。因此,你可以用這個方法來設置背景顏色。
看看下面的例子。在這里,我們傳遞一個灰色的RGBA值。
gl.clearColor(0.5, 0.5, .5, 1);

啟用深度測試

使用 enable() 方法使深度測試,如下所示。
gl.enable(gl.DEPTH_TEST); 

清除顏色緩沖區(qū)位

清除顏色以及通過使用 clear()方法,如下圖所示的深度緩沖。
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

設置瀏覽端口

觀察端口表示包含繪圖緩沖器的渲染結果的矩形可視區(qū)域??梢允褂?viewport() 方法來設置視口的尺寸。在下面的代碼,觀察口的尺寸被設置為所述畫布的大小。
gl.viewport(0,0,canvas.width,canvas.height);