From 1944afebb04758661e3bbd3361c16b84d84abf1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Susanne=20D=C3=B6tsch?= <susannedoetsch@uni-koblenz.de> Date: Wed, 16 Jun 2021 13:16:47 +0200 Subject: [PATCH] [#63] started fixing after merge --- .../include/vkcv/asset/asset_loader.hpp | 14 +++++++++++++- .../asset_loader/src/vkcv/asset/asset_loader.cpp | 2 +- projects/first_mesh/src/main.cpp | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/asset_loader/include/vkcv/asset/asset_loader.hpp b/modules/asset_loader/include/vkcv/asset/asset_loader.hpp index f4330c01..64ece270 100644 --- a/modules/asset_loader/include/vkcv/asset/asset_loader.hpp +++ b/modules/asset_loader/include/vkcv/asset/asset_loader.hpp @@ -81,13 +81,25 @@ enum class PrimitiveType : uint32_t { TEXCOORD_0 = 3, TEXCOORD_1 = 4 }; + +/* These integer values are used the same way in OpenGL, Vulkan and glTF. This + * enum is not needed for translation, it's only for the programmers + * convenience (easier to read in if/switch statements etc). While this enum + * exists in (almost) the same definition in the fx-gltf library, we want to + * avoid exposing that dependency, thus it is re-defined here. */ +enum class ComponentType : uint16_t { + NONE = 0, INT8 = 5120, UINT8 = 5121, INT16 = 5122, UINT16 = 5123, + UINT32 = 5125, FLOAT32 = 5126 +}; + + /* This struct describes one vertex attribute of a vertex buffer. */ typedef struct { PrimitiveType type; // POSITION, NORMAL, ... uint32_t offset; // offset in bytes uint32_t length; // length of ... in bytes uint32_t stride; // stride in bytes - uint16_t componentType; // eg. 5126 for float + ComponentType componentType; // eg. 5126 for float uint8_t componentCount; // eg. 3 for vec3 } VertexAttribute; diff --git a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp index 87b2860a..815ad61a 100644 --- a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp +++ b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp @@ -365,7 +365,7 @@ int loadScene(const std::string &path, Scene &scene){ attribute.offset = sceneObjects.bufferViews[accessor.bufferView].byteOffset; attribute.length = sceneObjects.bufferViews[accessor.bufferView].byteLength; attribute.stride = sceneObjects.bufferViews[accessor.bufferView].byteStride; - attribute.componentType = static_cast<ComponentType>(accessor.componentType); + attribute.componentType = static_cast<ComponentType>(accessor.componentType); if (convertTypeToInt(accessor.type) != 10) { attribute.componentCount = convertTypeToInt(accessor.type); diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp index beb0bab6..5a051fb5 100644 --- a/projects/first_mesh/src/main.cpp +++ b/projects/first_mesh/src/main.cpp @@ -31,7 +31,7 @@ int main(int argc, const char** argv) { vkcv::asset::Scene mesh; - const char* path = argc > 1 ? argv[1] : "resources/Szene/Szene.gltf"; + const char* path = argc > 1 ? argv[1] : "resources/Sponza/Sponza.gltf"; int result = vkcv::asset::loadScene(path, mesh); if (result == 1) { -- GitLab