如何从 ArrayBuffer 构建 Float32Array
How to build Float32Array from ArrayBuffer
假设我有一个 ArrayBuffer,如下一个屏幕截图所示)
//recompute object from vertices and normals
const verticesBuffer:ArrayBuffer = e.data.verticesBufferArray;
const normalsBuffer:ArrayBuffer = e.data.normalsBufferArray;
const vertices = new Float32Array(verticesBuffer);
const normals = new Float32Array(normalsBuffer);
但是此时顶点和法线是未定义的。因此,变量 vertices 和 normals 是未定义的,而 verticesBuffer 和 normalBuffer 是可以的。
转换时出现以下错误
const vertices = new Float32Array(verticesBuffer);
Uncaught RangeError: Invalid typed array length: 39744
所以问题是如何从verticesBuffer:ArrayBuffer传递到vertices:Float32Array?
谢谢!
const vertexCount = verticesBuffer.byteLength / 4;
const normalCount = normalsBuffer.byteLength / 4;
const vertices = Float32Array.from(verticesBuffer, 0, vertexCount);
const normals = Float32Array.from(normalsBuffer, 0, normalCount);
假设我有一个 ArrayBuffer,如下一个屏幕截图所示)
//recompute object from vertices and normals
const verticesBuffer:ArrayBuffer = e.data.verticesBufferArray;
const normalsBuffer:ArrayBuffer = e.data.normalsBufferArray;
const vertices = new Float32Array(verticesBuffer);
const normals = new Float32Array(normalsBuffer);
但是此时顶点和法线是未定义的。因此,变量 vertices 和 normals 是未定义的,而 verticesBuffer 和 normalBuffer 是可以的。
转换时出现以下错误
const vertices = new Float32Array(verticesBuffer);
Uncaught RangeError: Invalid typed array length: 39744
所以问题是如何从verticesBuffer:ArrayBuffer传递到vertices:Float32Array?
谢谢!
const vertexCount = verticesBuffer.byteLength / 4;
const normalCount = normalsBuffer.byteLength / 4;
const vertices = Float32Array.from(verticesBuffer, 0, vertexCount);
const normals = Float32Array.from(normalsBuffer, 0, normalCount);