Write utf-8 encoded json in binary gltf.
This commit is contained in:
parent
66ad5c0d37
commit
41d1d58eb9
@ -137,8 +137,9 @@ OV.ExporterGltf = class extends OV.ExporterBase
|
||||
});
|
||||
|
||||
let mainJsonString = JSON.stringify (mainJson);
|
||||
let mainJsonBufferLength = mainJsonString.length;
|
||||
let mainJsonBufferAlignedLength = AlignToBoundary (mainJsonString.length);
|
||||
let mainJsonBuffer = OV.Utf8StringToArrayBuffer (mainJsonString);
|
||||
let mainJsonBufferLength = mainJsonBuffer.byteLength;
|
||||
let mainJsonBufferAlignedLength = AlignToBoundary (mainJsonBufferLength);
|
||||
|
||||
let glbSize = 12 + 8 + mainJsonBufferAlignedLength + 8 + mainBinaryBufferAlignedLength;
|
||||
let glbWriter = new OV.BinaryWriter (glbSize, true);
|
||||
@ -149,9 +150,7 @@ OV.ExporterGltf = class extends OV.ExporterBase
|
||||
|
||||
glbWriter.WriteUnsignedInteger32 (mainJsonBufferAlignedLength);
|
||||
glbWriter.WriteUnsignedInteger32 (0x4E4F534A);
|
||||
for (let i = 0; i < mainJsonBufferLength; i++) {
|
||||
glbWriter.WriteUnsignedCharacter8 (mainJsonString.charCodeAt (i));
|
||||
}
|
||||
glbWriter.WriteArrayBuffer (mainJsonBuffer);
|
||||
WriteCharacters (glbWriter, 32, mainJsonBufferAlignedLength - mainJsonBufferLength);
|
||||
|
||||
glbWriter.WriteUnsignedInteger32 (mainBinaryBufferAlignedLength);
|
||||
|
||||
@ -24,6 +24,12 @@ OV.AsciiStringToArrayBuffer = function (str)
|
||||
return buffer;
|
||||
};
|
||||
|
||||
OV.Utf8StringToArrayBuffer = function (str)
|
||||
{
|
||||
let encoder = new TextEncoder ();
|
||||
return encoder.encode (str);
|
||||
};
|
||||
|
||||
OV.Base64DataURIToArrayBuffer = function (uri)
|
||||
{
|
||||
let dataPrefix = 'data:';
|
||||
|
||||
@ -89,4 +89,13 @@ describe ('IO Test', function () {
|
||||
assert.strictEqual (reader.ReadFloat32 (), 7.5);
|
||||
assert.strictEqual (reader.ReadDouble64 (), 8.5);
|
||||
});
|
||||
|
||||
it ('Utf8 Conversion', function () {
|
||||
let str = 'example-\u2764-example';
|
||||
let buffer = OV.Utf8StringToArrayBuffer (str);
|
||||
assert.strictEqual (buffer.byteLength, 19);
|
||||
let str2 = OV.ArrayBufferToUtf8String (buffer);
|
||||
assert.strictEqual (str, str2);
|
||||
assert.strictEqual (str.length, str2.length);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user