File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -1024,7 +1024,13 @@ class GLTFWriter {
1024
1024
componentSize = 4
1025
1025
}
1026
1026
1027
- const byteLength = getPaddedBufferSize ( count * attribute . itemSize * componentSize )
1027
+ let byteStride = attribute . itemSize * componentSize
1028
+ if ( target === WEBGL_CONSTANTS . ARRAY_BUFFER ) {
1029
+ // Each element of a vertex attribute MUST be aligned to 4-byte boundaries
1030
+ // inside a bufferView
1031
+ byteStride = Math . ceil ( byteStride / 4 ) * 4
1032
+ }
1033
+ const byteLength = getPaddedBufferSize ( count * byteStride )
1028
1034
const dataView = new DataView ( new ArrayBuffer ( byteLength ) )
1029
1035
let offset = 0
1030
1036
@@ -1065,6 +1071,9 @@ class GLTFWriter {
1065
1071
1066
1072
offset += componentSize
1067
1073
}
1074
+ if ( offset % byteStride !== 0 ) {
1075
+ offset += byteStride - ( offset % byteStride )
1076
+ }
1068
1077
}
1069
1078
1070
1079
const bufferViewDef = {
@@ -1077,7 +1086,7 @@ class GLTFWriter {
1077
1086
1078
1087
if ( target === WEBGL_CONSTANTS . ARRAY_BUFFER ) {
1079
1088
// Only define byteStride for vertex attributes.
1080
- bufferViewDef . byteStride = attribute . itemSize * componentSize
1089
+ bufferViewDef . byteStride = byteStride
1081
1090
}
1082
1091
1083
1092
this . byteOffset += byteLength
You can’t perform that action at this time.
0 commit comments