@@ -992,7 +992,7 @@ public static void readToByteArray(InputStream input, byte[] dst, int bytesToRea
992992 * @param byteOffset start offset within source (relative to beginning)
993993 * @param byteStride stride in bytes (0 means tightly packed = element size)
994994 * @param numComponents components per element (e.g. 3 for VEC3)
995- * @param originalFormat the source component type (from glTF accessor.componentType)
995+ * @param originalFormat the source component type
996996 * @param targetFormat the desired buffer view type to return
997997 */
998998 public static Buffer getBufferView (ByteBuffer source , int byteOffset , int count , int byteStride ,
@@ -1008,15 +1008,11 @@ public static Buffer getBufferView(ByteBuffer source, int byteOffset, int count
10081008 int start = byteOffset ;
10091009 int bytes = stride * count ;
10101010
1011- // Full-range duplicate so absolute offsets are correct
1012- ByteBuffer dup = source .duplicate ();
1013- dup .clear (); // pos=0, limit=capacity
10141011
10151012 boolean tightlyPacked = (stride == elemSize );
10161013
10171014 if (tightlyPacked ) {
1018- // Narrow the view to the accessor range and set LE order
1019- ByteBuffer view = dup .duplicate ();
1015+ ByteBuffer view = source .duplicate ();
10201016 view .position (start ).limit (start + bytes );
10211017 view = view .slice ().order (ByteOrder .LITTLE_ENDIAN );
10221018
@@ -1027,7 +1023,7 @@ public static Buffer getBufferView(ByteBuffer source, int byteOffset, int count
10271023 if (srcCompSize == 1 &&
10281024 (originalFormat == VertexBuffer .Format .Byte ||
10291025 originalFormat == VertexBuffer .Format .UnsignedByte )) {
1030- return view ; // ByteBuffer shares memory
1026+ return view ;
10311027 }
10321028 break ;
10331029
@@ -1060,7 +1056,6 @@ public static Buffer getBufferView(ByteBuffer source, int byteOffset, int count
10601056 break ;
10611057
10621058 case Double :
1063- // glTF doesn't use doubles; if ever needed, ensure 8-byte alignment
10641059 if (srcCompSize == 8 &&
10651060 originalFormat == VertexBuffer .Format .Double &&
10661061 (start & 7 ) == 0 ) {
@@ -1076,25 +1071,24 @@ public static Buffer getBufferView(ByteBuffer source, int byteOffset, int count
10761071 case Byte :
10771072 case UnsignedByte : {
10781073 ByteBuffer out = BufferUtils .createByteBuffer (elements );
1079- populateBuffer (out , dup , count , byteOffset , byteStride , numComponents , originalFormat );
1074+ populateBuffer (out , source , count , byteOffset , byteStride , numComponents , originalFormat );
10801075 return out ;
10811076 }
10821077 case Short :
10831078 case UnsignedShort : {
10841079 ShortBuffer out = BufferUtils .createShortBuffer (elements );
1085- populateBuffer (out , dup , count , byteOffset , byteStride , numComponents , originalFormat );
1080+ populateBuffer (out , source , count , byteOffset , byteStride , numComponents , originalFormat );
10861081 return out ;
10871082 }
10881083 case Int :
10891084 case UnsignedInt : {
10901085 IntBuffer out = BufferUtils .createIntBuffer (elements );
1091- populateBuffer (out , dup , count , byteOffset , byteStride , numComponents , originalFormat );
1086+ populateBuffer (out , source , count , byteOffset , byteStride , numComponents , originalFormat );
10921087 return out ;
10931088 }
10941089 case Float : {
1095- // Handles normalized integer sources via readAsFloat(...)
10961090 FloatBuffer out = BufferUtils .createFloatBuffer (elements );
1097- populateBuffer (out , dup , count , byteOffset , byteStride , numComponents , originalFormat );
1091+ populateBuffer (out , source , count , byteOffset , byteStride , numComponents , originalFormat );
10981092 return out ;
10991093 }
11001094 case Double :
0 commit comments