Skip to content

Commit 6409d34

Browse files
committed
Fix: Preallocate every buffer
1 parent 0a78e2a commit 6409d34

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

src/fastgltf.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ std::tuple<fg::Error, fg::DataSource, fg::DataLocation> fg::glTF::decodeUri(std:
176176
DataSource source = {};
177177
source.mimeType = getMimeTypeFromString(uri.substr(5, index - 5));
178178
source.bytes = std::move(uriData);
179-
return std::make_tuple(Error::None, source, DataLocation::VectorWithMime);
179+
return std::make_tuple(Error::None, std::move(source), DataLocation::VectorWithMime);
180180
} else {
181181
DataSource source = {};
182182
source.path = directory / uri;
@@ -586,7 +586,7 @@ fg::Error fg::glTF::parse(Category categories) {
586586

587587
void fg::glTF::parseAccessors(simdjson::ondemand::array accessors) {
588588
using namespace simdjson;
589-
// parsedAsset->accessors.reserve(accessors.count_elements());
589+
parsedAsset->accessors.reserve(accessors.count_elements());
590590

591591
for (auto accessorValue : accessors) {
592592
// Required fields: "componentType", "count"
@@ -649,7 +649,7 @@ void fg::glTF::parseAccessors(simdjson::ondemand::array accessors) {
649649

650650
void fg::glTF::parseAnimations(simdjson::ondemand::array animations) {
651651
using namespace simdjson;
652-
// parsedAsset->animations.reserve(animations.count_elements());
652+
parsedAsset->animations.reserve(animations.count_elements());
653653

654654
for (auto animationValue : animations) {
655655
ondemand::object animationObject;
@@ -664,7 +664,7 @@ void fg::glTF::parseAnimations(simdjson::ondemand::array animations) {
664664
RETURN_SET_ERROR(Error::InvalidGltf)
665665
}
666666

667-
// animation.channels.reserve(channels.count_elements());
667+
animation.channels.reserve(channels.count_elements());
668668
for (auto channelValue : channels) {
669669
ondemand::object channelObject;
670670
AnimationChannel channel = {};
@@ -714,7 +714,7 @@ void fg::glTF::parseAnimations(simdjson::ondemand::array animations) {
714714
RETURN_SET_ERROR(Error::InvalidGltf)
715715
}
716716

717-
// animation.samplers.reserve(samplers.count_elements());
717+
animation.samplers.reserve(samplers.count_elements());
718718
for (auto samplerValue : samplers) {
719719
ondemand::object samplerObject;
720720
AnimationSampler sampler = {};
@@ -766,7 +766,7 @@ void fg::glTF::parseAnimations(simdjson::ondemand::array animations) {
766766

767767
void fg::glTF::parseBuffers(simdjson::ondemand::array buffers) {
768768
using namespace simdjson;
769-
// parsedAsset->buffers.reserve(buffers.count_elements());
769+
parsedAsset->buffers.reserve(buffers.count_elements());
770770

771771
size_t bufferIndex = 0;
772772
for (auto bufferValue : buffers) {
@@ -793,7 +793,7 @@ void fg::glTF::parseBuffers(simdjson::ondemand::array buffers) {
793793
RETURN_SET_ERROR(Error::InvalidGltf)
794794
}
795795

796-
buffer.data = source;
796+
buffer.data = std::move(source);
797797
buffer.location = location;
798798
} else if (bufferIndex == 0 && glb != nullptr) {
799799
if (hasBit(options, Options::LoadGLBBuffers)) {
@@ -829,7 +829,7 @@ void fg::glTF::parseBuffers(simdjson::ondemand::array buffers) {
829829

830830
void fg::glTF::parseBufferViews(simdjson::ondemand::array bufferViews) {
831831
using namespace simdjson;
832-
// parsedAsset->bufferViews.reserve(bufferViews.count_elements());
832+
parsedAsset->bufferViews.reserve(bufferViews.count_elements());
833833

834834
for (auto bufferViewValue : bufferViews) {
835835
// Required fields: "bufferIndex", "byteLength"
@@ -885,7 +885,7 @@ void fg::glTF::parseBufferViews(simdjson::ondemand::array bufferViews) {
885885

886886
void fg::glTF::parseCameras(simdjson::ondemand::array cameras) {
887887
using namespace simdjson;
888-
// parsedAsset->cameras.reserve(cameras.count_elements());
888+
parsedAsset->cameras.reserve(cameras.count_elements());
889889

890890
for (auto cameraValue : cameras) {
891891
Camera camera = {};
@@ -975,7 +975,7 @@ void fg::glTF::parseCameras(simdjson::ondemand::array cameras) {
975975

976976
void fg::glTF::parseImages(simdjson::ondemand::array images) {
977977
using namespace simdjson;
978-
// parsedAsset->images.reserve(images.count_elements());
978+
parsedAsset->images.reserve(images.count_elements());
979979

980980
for (auto imageValue : images) {
981981
Image image = {};
@@ -1033,7 +1033,7 @@ void fg::glTF::parseImages(simdjson::ondemand::array images) {
10331033

10341034
void fg::glTF::parseMaterials(simdjson::ondemand::array materials) {
10351035
using namespace simdjson;
1036-
// parsedAsset->materials.reserve(materials.count_elements());
1036+
parsedAsset->materials.reserve(materials.count_elements());
10371037

10381038
for (auto materialValue : materials) {
10391039
ondemand::object materialObject;
@@ -1180,7 +1180,7 @@ void fg::glTF::parseMaterials(simdjson::ondemand::array materials) {
11801180

11811181
void fg::glTF::parseMeshes(simdjson::ondemand::array meshes) {
11821182
using namespace simdjson;
1183-
// parsedAsset->meshes.reserve(meshes.count_elements());
1183+
parsedAsset->meshes.reserve(meshes.count_elements());
11841184

11851185
for (auto meshValue : meshes) {
11861186
// Required fields: "primitives"
@@ -1197,7 +1197,7 @@ void fg::glTF::parseMeshes(simdjson::ondemand::array meshes) {
11971197
} else if (meshError != Error::None) {
11981198
RETURN_SET_ERROR(meshError)
11991199
} else {
1200-
// mesh.primitives.reserve(primitives.count_elements());
1200+
mesh.primitives.reserve(primitives.count_elements());
12011201
for (auto primitiveValue : primitives) {
12021202
// Required fields: "attributes"
12031203
Primitive primitive = {};
@@ -1264,7 +1264,7 @@ void fg::glTF::parseMeshes(simdjson::ondemand::array meshes) {
12641264

12651265
void fg::glTF::parseNodes(simdjson::ondemand::array nodes) {
12661266
using namespace simdjson;
1267-
// parsedAsset->nodes.reserve(nodes.count_elements());
1267+
parsedAsset->nodes.reserve(nodes.count_elements());
12681268

12691269
for (auto nodeValue : nodes) {
12701270
Node node = {};
@@ -1288,7 +1288,7 @@ void fg::glTF::parseNodes(simdjson::ondemand::array nodes) {
12881288
ondemand::array children;
12891289
auto childError = getJsonArray(nodeObject, "children", &children);
12901290
if (childError == Error::None) {
1291-
// node.children.reserve(children.count_elements());
1291+
node.children.reserve(children.count_elements());
12921292
for (auto childValue : children) {
12931293
if (childValue.get_uint64().get(index) != SUCCESS) {
12941294
RETURN_SET_ERROR(Error::InvalidGltf)
@@ -1382,7 +1382,7 @@ void fg::glTF::parseNodes(simdjson::ondemand::array nodes) {
13821382
void fg::glTF::parseSamplers(simdjson::ondemand::array samplers) {
13831383
using namespace simdjson;
13841384
uint64_t number;
1385-
// parsedAsset->samplers.reserve(samplers.count_elements());
1385+
parsedAsset->samplers.reserve(samplers.count_elements());
13861386

13871387
for (auto samplerValue : samplers) {
13881388
Sampler sampler = {};
@@ -1422,7 +1422,7 @@ void fg::glTF::parseSamplers(simdjson::ondemand::array samplers) {
14221422
void fg::glTF::parseScenes(simdjson::ondemand::array scenes) {
14231423
using namespace simdjson;
14241424

1425-
// parsedAsset->scenes.reserve(scenes.count_elements());
1425+
parsedAsset->scenes.reserve(scenes.count_elements());
14261426
for (auto sceneValue : scenes) {
14271427
// The scene object can be completely empty
14281428
Scene scene = {};
@@ -1441,7 +1441,7 @@ void fg::glTF::parseScenes(simdjson::ondemand::array scenes) {
14411441
ondemand::array nodes;
14421442
auto nodeError = getJsonArray(sceneObject, "nodes", &nodes);
14431443
if (nodeError == Error::None) {
1444-
// scene.nodeIndices.reserve(nodes.count_elements());
1444+
scene.nodeIndices.reserve(nodes.count_elements());
14451445
for (auto nodeValue : nodes) {
14461446
uint64_t index;
14471447
if (nodeValue.get_uint64().get(index) != SUCCESS) {
@@ -1460,7 +1460,7 @@ void fg::glTF::parseScenes(simdjson::ondemand::array scenes) {
14601460

14611461
void fg::glTF::parseSkins(simdjson::ondemand::array skins) {
14621462
using namespace simdjson;
1463-
// parsedAsset->skins.reserve(skins.count_elements());
1463+
parsedAsset->skins.reserve(skins.count_elements());
14641464

14651465
for (auto skinValue : skins) {
14661466
Skin skin = {};
@@ -1481,7 +1481,7 @@ void fg::glTF::parseSkins(simdjson::ondemand::array skins) {
14811481
if (skinObject["joints"].get_array().get(jointsArray) != SUCCESS) {
14821482
RETURN_SET_ERROR(Error::InvalidGltf)
14831483
}
1484-
// skin.joints.reserve(jointsArray.count_elements());
1484+
skin.joints.reserve(jointsArray.count_elements());
14851485
for (auto jointValue : jointsArray) {
14861486
if (jointValue.get_uint64().get(index) != SUCCESS) {
14871487
RETURN_SET_ERROR(Error::InvalidGltf)
@@ -1580,7 +1580,7 @@ fg::Error fg::glTF::parseTextureObject(void* object, std::string_view key, Textu
15801580

15811581
void fg::glTF::parseTextures(simdjson::ondemand::array textures) {
15821582
using namespace simdjson;
1583-
// parsedAsset->textures.reserve(textures.count_elements());
1583+
parsedAsset->textures.reserve(textures.count_elements());
15841584

15851585
for (auto textureValue : textures) {
15861586
Texture texture;

0 commit comments

Comments
 (0)