Skip to content

Commit 78d7cb9

Browse files
slimbuckDonovan Hutchence
andauthored
simplify glb-parser buffer usage slightly and fix possible alignment error (playcanvas#2000)
* simplify buffer usage slightly and fix alignement error Co-authored-by: Donovan Hutchence <dhutchence@snapchat.com>
1 parent 7a72c0b commit 78d7cb9

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

src/resources/parser/glb-parser.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,7 @@ Object.assign(pc, function () {
143143
var size = getNumComponents(accessor.type) * getComponentSizeInBytes(accessor.componentType);
144144
var buffer = buffers[bufferView.buffer];
145145
sourceDesc[semantic] = {
146-
array: new Uint32Array(buffer.buffer),
147-
buffer: bufferView.buffer,
146+
buffer: buffer.buffer,
148147
size: size,
149148
offset: (accessor.hasOwnProperty('byteOffset') ? accessor.byteOffset : 0) +
150149
(bufferView.hasOwnProperty('byteOffset') ? bufferView.byteOffset : 0) +
@@ -178,8 +177,7 @@ Object.assign(pc, function () {
178177
});
179178

180179
sourceDesc[pc.SEMANTIC_NORMAL] = {
181-
array: new Uint32Array(normals.buffer),
182-
buffer: null,
180+
buffer: normals.buffer,
183181
size: 12,
184182
offset: 0,
185183
stride: 12,
@@ -220,25 +218,26 @@ Object.assign(pc, function () {
220218

221219
var vertexData = vertexBuffer.lock();
222220
var targetArray = new Uint32Array(vertexData);
223-
var sourceArray, targetStride, sourceStride;
221+
var sourceArray;
224222

225223
if (isCorrectlyInterleaved) {
226224
// copy data
227-
sourceArray = new Uint32Array(positionDesc.array.buffer,
225+
sourceArray = new Uint32Array(positionDesc.buffer,
228226
positionDesc.offset,
229227
numVertices * vertexBuffer.format.size / 4);
230228
targetArray.set(sourceArray);
231229
} else {
230+
var targetStride, sourceStride;
232231
// copy data and interleave
233232
for (i = 0; i < vertexBuffer.format.elements.length; ++i) {
234233
target = vertexBuffer.format.elements[i];
235234
targetStride = target.stride / 4;
236235

237236
source = sourceDesc[target.name];
238-
sourceArray = source.array;
237+
sourceArray = new Uint32Array(source.buffer, source.offset, source.count * source.stride / 4);
239238
sourceStride = source.stride / 4;
240239

241-
var src = source.offset / 4;
240+
var src = 0;
242241
var dst = target.offset / 4;
243242
for (j = 0; j < numVertices; ++j) {
244243
for (k = 0; k < source.size / 4; ++k) {

0 commit comments

Comments
 (0)