所有typed array structures是在一個ArrayBuffer意見。它們允許您以選擇的佈局(如32位浮點數)訪問和修改ArrayBuffer內的基礎二進制數據。
如果你想使用的頂點乘以組件作爲參數的數量的數量創建單獨的緩衝區,你可以只創建你的位置 - 和colorbuffers,這隱含通過視圖的buffer
屬性創建一個基本ArrayBuffer accessable 。
var numVertices = 4;
var positions = new Float32Array(numVertices * 3 /*position: x, y, z*/);
var colors = new Uint8Array(numVertices * 4 /*color: r, g, b, a*/);
如果你想建立一個隔行VertexBuffer與佈局:f32pX,f32pY,f32pZ,ui8cR,ui8cG,ui8cB,ui8cA
「對飛」 你colorView也是「意見」的浮點數據,所以你必須通過12個字節來抵消你的作品。
var positionOffset = 3 * 4;//3 positions with 4 byte each
var bufferOffset = positionOffset+4;//each color component is 1 byte
for (
var colorStart = positionOffset;
colorStart < colorView.length;
colorStart += bufferOffset
) {
colorView[colorStart]=r;
colorView[colorStart+1]=g;
colorView[colorStart+2]=b;
colorView[colorStart+3]=a;
}
你是什麼意思_changed_?似乎保持不變...... – Xufox
這兩個視圖都寫入相同的底層緩衝區。如果需要將它們分開,請將其複製。 –
哦,你的意思是,當你實際賦予'positionView'或'colorView'值。 – Xufox