为什么ArrayBuffer会改变价值?

时间:2015-04-19 13:39:07

标签: javascript buffer

为什么我更改positionViewcolorView

时缓冲区也会发生变化
var buffer = new ArrayBuffer(nbrOfVertices * vertexSizeInBytes);
var positionView = new Float32Array(buffer);
var colorView = new Uint8Array(buffer);

1 个答案:

答案 0 :(得分:1)

typed array structures上的所有ArrayBuffer都是观看次数。它们允许您在选择的布局中访问和修改ArrayBuffer中的基础二进制数据,例如32位浮点数。

如果你想创建单独的缓冲区,你可以通过使用顶点数乘以组件数作为参数来创建位置和颜色缓冲区,这隐式地通过{{1创建一个基础ArrayBuffer可访问视图的属性。

buffer

如果您尝试使用布局设置隔行扫描的VertexBuffer:var numVertices = 4; var positions = new Float32Array(numVertices * 3 /*position: x, y, z*/); var colors = new Uint8Array(numVertices * 4 /*color: r, g, b, a*/); "即时" 你的colorView也是"观看"浮点数据,所以你必须将你的文字偏移12个字节。

f32pX,f32pY,f32pZ,ui8cR,ui8cG,ui8cB,ui8cA