From cf27c8b69dde8df51f4775ba75d9edda00878cdb Mon Sep 17 00:00:00 2001 From: Sean Lilley Date: Tue, 14 Mar 2017 14:40:33 -0400 Subject: [PATCH] Better buffer handling --- lib/gltf.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/gltf.js b/lib/gltf.js index 8efea35..b24b887 100644 --- a/lib/gltf.js +++ b/lib/gltf.js @@ -144,9 +144,9 @@ function createGltf(objData) { } var vertexBuffers = []; - var vertexByteOffset = 0; + var vertexBufferByteOffset = 0; var indexBuffers = []; - var indexBuffersByteOffset = 0; + var indexBufferByteOffset = 0; var accessorCount = 0; function addVertexAttribute(array, components) { @@ -157,7 +157,7 @@ function createGltf(objData) { var type = (components === 3 ? 'VEC3' : 'VEC2'); var accessor = { bufferView : vertexBufferViewId, - byteOffset : vertexByteOffset, + byteOffset : vertexBufferByteOffset, byteStride : 0, componentType : WebGLConstants.FLOAT, count : count, @@ -166,7 +166,7 @@ function createGltf(objData) { type : type }; - vertexByteOffset += buffer.length; + vertexBufferByteOffset += buffer.length; vertexBuffers.push(buffer); var accessorId = 'accessor_' + accessorCount++; gltf.accessors[accessorId] = accessor; @@ -180,7 +180,7 @@ function createGltf(objData) { var minMax = array.getMinMax(1); var accessor = { bufferView : indexBufferViewId, - byteOffset : indexBuffersByteOffset, + byteOffset : indexBufferByteOffset, byteStride : 0, componentType : componentType, count : length, @@ -189,7 +189,7 @@ function createGltf(objData) { type : 'SCALAR' }; - indexBuffersByteOffset += buffer.length; + indexBufferByteOffset += buffer.length; indexBuffers.push(buffer); var accessorId = 'accessor_' + accessorCount++; @@ -300,9 +300,9 @@ function createGltf(objData) { } } - var vertexBuffer = Buffer.concat(vertexBuffers); - var indexBuffer = Buffer.concat(indexBuffers); - var buffer = Buffer.concat([vertexBuffer, indexBuffer]); + var buffers = []; + buffers = buffers.concat(vertexBuffers, indexBuffers); + var buffer = Buffer.concat(buffers); // Buffers larger than ~192MB cannot be base64 encoded due to a NodeJS limitation. Source: https://github.com/nodejs/node/issues/4266 var bufferUri; @@ -317,15 +317,15 @@ function createGltf(objData) { gltf.bufferViews[vertexBufferViewId] = { buffer : bufferId, - byteLength : vertexBuffer.length, + byteLength : vertexBufferByteOffset, byteOffset : 0, target : WebGLConstants.ARRAY_BUFFER }; gltf.bufferViews[indexBufferViewId] = { buffer : bufferId, - byteLength : indexBuffer.length, - byteOffset : vertexBuffer.length, + byteLength : indexBufferByteOffset, + byteOffset : vertexBufferByteOffset, target : WebGLConstants.ELEMENT_ARRAY_BUFFER };