diff --git a/modules/asset_loader/include/vkcv/asset/asset_loader.hpp b/modules/asset_loader/include/vkcv/asset/asset_loader.hpp index 8d255143c67451c2fbf7ce6a463cd1ea171fac1f..1ab280c03ffb0a675d72f97270c869e258af2ca7 100644 --- a/modules/asset_loader/include/vkcv/asset/asset_loader.hpp +++ b/modules/asset_loader/include/vkcv/asset/asset_loader.hpp @@ -95,6 +95,11 @@ typedef struct { std::string name; std::vector<VertexGroup> vertexGroups; std::vector<Material> materials; + // FIXME Dirty hack to get one(!) texture for our cube demo + struct { + int w, h, ch; // width, height and channels of image + void *img; // raw data, free after use (deal with it) + } texture_hack; } Mesh; diff --git a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp index 9262112bc693f4d27378b460843ff84cc5bde4b7..c0ce049646389994bdee68c84c5c6e686755a1e2 100644 --- a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp +++ b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp @@ -170,6 +170,23 @@ int loadMesh(const std::string &path, Mesh &mesh) { std::vector<Material> materials; + // FIXME HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK + // fail quietly if there is no texture + if (object.textures.size()) { + const std::string mime_type("image/jpeg"); + const fx::gltf::Texture &tex = object.textures[0]; + const fx::gltf::Image &img = object.images[tex.source]; + printf("texture name=%s sampler=%u source=%u\n", + tex.name.c_str(), tex.sampler, tex.source); + printf("image name=%s uri=%s mime=%s\n", + img.name.c_str(), img.uri.c_str(), + img.mimeType.c_str()); + // URI is in img.uri + + // TODO decode using stbimage lib and store in mesh.texture + } + // FIXME HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK + mesh = { object.meshes[0].name, vertexGroups, materials }; return 1; }