var vertices = [ 0.5,0.5, //Vertex 1 0.5,-0.5, //Vertex 2 -0.5,-0.5, //Vertex 3 ];

var indices = [ 0,1,2 ]
var indices = [0,3,1,3,1,2];

注意 ?
drawArrays() ? 當使用這種方法,我們通過原語使用JavaScript數(shù)組的頂點。
drawElements() ? 當使用這種方法,我們通過這兩個頂點和原語使用JavaScript數(shù)組的索引。
頂點緩沖區(qū)對象 (VBO) ? 它保持所述圖形模型,要被渲染的每個頂點的數(shù)據(jù)。我們使用頂點緩沖對象中的WebGL存儲和處理關(guān)于頂點諸如頂點坐標,法線,色彩,紋理坐標數(shù)據(jù)。
索引緩沖區(qū)對象(IBO) ? 它保持所述圖形模型的索引(索引數(shù)據(jù)),這是要被渲染的。
注?
var vertex_buffer = gl.createBuffer();
注 ? gl 是參考變量的當前的 WebGL 的上下文。
bindBuffer()方法的語法如下 ?
void bindBuffer (enum target, Object buffer)
target ? 第一變量是一個枚舉值,表示我們要綁定到空緩沖器的緩沖的類型。有兩個預(yù)定義枚舉值作為該參數(shù)選項。他們是-
ARRAY_BUFFER 表示頂點的數(shù)據(jù)。
ELEMENT_ARRAY_BUFFER 表示索引數(shù)據(jù)。
Object buffer ? 第二個是參考變量,在上一步中創(chuàng)建的緩沖區(qū)對象。參考變量可以是一個索引緩存對象或頂點緩沖對象。
//vertex buffer var vertex_buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer); //Index buffer var Index_Buffer = gl.createBuffer(); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index_buffer);
void bufferData (enum target, Object data, enum usage)
target ? 第一個參數(shù)是一個枚舉值,表示我們使用了數(shù)組中緩沖的類型。它們可以是ARRAY_BUFFER或ELEMENT_ARRAY_BUFFER。
Object data ? 第二個參數(shù)是包含數(shù)據(jù)寫入到緩沖對象的對象的值。在這里,我們使用類型數(shù)組來傳遞數(shù)據(jù)。
Usage ? 該方法的第三個參數(shù)是一個枚舉變量,來指定如何使用緩沖區(qū)對象的數(shù)據(jù)(存儲的數(shù)據(jù))來繪制形狀。有三種選擇此參數(shù)如下表所示。
gl.STATIC_DRAW ? 數(shù)據(jù)將指定一次,多次使用。
gl.STREAM_DRAW ? 數(shù)據(jù)將指定一次,使用幾次。
gl.DYNAMIC_DRAW ? 數(shù)據(jù)將被重復(fù)指定和多次使用。
//vertex buffer gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); //Index buffer gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
| S.No. |
方法及說明
|
|---|---|
| 1 |
void bindBuffer (enum target, Object buffer) target ? ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER |
| 2 |
void bufferData(enum target, long size, enum usage) target ? ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER usage ? STATIC_DRAW, STREAM_DRAW, DYNAMIC_DRAW |
| 3 |
void bufferData (enum target, Object data, enum usage) target and usage ? Same as for bufferData above |
| 4 |
void bufferSubData(enum target, long offset, Object data) target ? ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER |
| 5 | Object createBuffer() |
| 6 | void deleteBuffer(Object buffer) |
| 7 |
any getBufferParameter(enum target, enum pname) target ? ARRAY_BUFFER, ELEMENT_ ARRAY_BUFFER pname ? BUFFER_SIZE, BUFFER_USAGE |
| 8 | bool isBuffer(Object buffer) |