Skip to content

Commit 6b24ca5

Browse files
authored
Merge pull request #85 from hotstreams/fix/glb-loader
fix .glb loading
2 parents a8099db + caf229c commit 6b24ca5

1 file changed

Lines changed: 31 additions & 17 deletions

File tree

src/limitless/loaders/gltf_model_loader.cpp

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -828,26 +828,40 @@ static std::shared_ptr<ms::Material> loadMaterial(
828828
flags.wrapping = *wrap_t_mode;
829829
}
830830

831-
if (strncmp(img.uri, "data:", 5) == 0) {
832-
const char* comma = strchr(img.uri, ',');
833-
834-
if (comma && comma - img.uri >= 7 && strncmp(comma - 7, ";base64", 7) == 0) {
835-
auto buffer = bytesFromBase64(comma + 1);
836-
837-
return TextureLoader::load(
838-
assets,
839-
name,
840-
buffer.data(),
841-
buffer.size(),
842-
flags
843-
);
844-
} else {
845-
throw ModelLoadError {"unknown data uri"};
831+
if (img.uri == nullptr) {
832+
if (!img.buffer_view) {
833+
throw ModelLoadError {"texture has no uri and no buffer view"};
846834
}
847835

836+
return TextureLoader::load(
837+
assets,
838+
name,
839+
cgltf_buffer_view_data(img.buffer_view),
840+
img.buffer_view->size
841+
);
842+
848843
} else {
849-
const auto path = base_path / fs::path(img.uri);
850-
return TextureLoader::load(assets, path, flags);
844+
if (strncmp(img.uri, "data:", 5) == 0) {
845+
const char* comma = strchr(img.uri, ',');
846+
847+
if (comma && comma - img.uri >= 7 && strncmp(comma - 7, ";base64", 7) == 0) {
848+
auto buffer = bytesFromBase64(comma + 1);
849+
850+
return TextureLoader::load(
851+
assets,
852+
name,
853+
buffer.data(),
854+
buffer.size(),
855+
flags
856+
);
857+
} else {
858+
throw ModelLoadError {"unknown data uri"};
859+
}
860+
861+
} else {
862+
const auto path = base_path / fs::path(img.uri);
863+
return TextureLoader::load(assets, path, flags);
864+
}
851865
}
852866
};
853867

0 commit comments

Comments
 (0)