bufferView.stride が無いときの処置

https://github.com/KhronosGroup/glTF/blob/main/specification/2.0/schema/bufferView.schema.json#L24
This commit is contained in:
ousttrue
2021-12-22 16:01:44 +09:00
parent 4d8cfb95d8
commit 8fbcb5c6a7

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
namespace UniGLTF
{
@@ -156,7 +157,7 @@ namespace UniGLTF
{
var segment = GetBytesFromBuffer(view.buffer);
var attrib = new T[count];
var bytes = new ArraySegment<Byte>(segment.Array, segment.Offset + view.byteOffset + byteOffset, count * view.byteStride);
var bytes = new ArraySegment<Byte>(segment.Array, segment.Offset + view.byteOffset + byteOffset, count * Marshal.SizeOf<T>());
SafeMarshalCopy.CopyBytesToArray(bytes, attrib);
return attrib;
}
@@ -288,7 +289,7 @@ namespace UniGLTF
var attrib = new float[vertexAccessor.count * vertexAccessor.TypeCount];
var view = GLTF.bufferViews[vertexAccessor.bufferView];
var segment = GetBytesFromBuffer(view.buffer);
var bytes = new ArraySegment<Byte>(segment.Array, segment.Offset + view.byteOffset + vertexAccessor.byteOffset, vertexAccessor.count * view.byteStride);
var bytes = new ArraySegment<Byte>(segment.Array, segment.Offset + view.byteOffset + vertexAccessor.byteOffset, vertexAccessor.count * 4 * vertexAccessor.TypeCount);
SafeMarshalCopy.CopyBytesToArray(bytes, attrib);
result = attrib;
}