diff --git a/.gitmodules b/.gitmodules index f3748ee10aa95ba9ef5f1c69d6bb67523667ef49..1f0eb496973c964d945a0da9ea10ac692f4fe8a9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,7 +10,3 @@ path = external/nlohmann-json url = https://github.com/nlohmann/json.git branch = origin/master -[submodule "ktxlib"] - path = external/ktxlib - url = https://github.com/KhronosGroup/KTX-Software.git - branch = origin/master diff --git a/Data/Textures/test.ktx b/Data/Textures/test.ktx new file mode 100644 index 0000000000000000000000000000000000000000..9add869edebe42cf5eb2deac36c93a122db644f1 Binary files /dev/null and b/Data/Textures/test.ktx differ diff --git a/external/ktxlib b/external/ktxlib deleted file mode 160000 index 94170beb4189d6fdacf49fb900d4393a9ad0dd05..0000000000000000000000000000000000000000 --- a/external/ktxlib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 94170beb4189d6fdacf49fb900d4393a9ad0dd05 diff --git a/src/Engine/AssetManager/AssetManager.cpp b/src/Engine/AssetManager/AssetManager.cpp index 74a96f37b467135f281e6b62167663fa1d37dc0d..9d2ec01faed6293e0af84af3adf269535f95c59b 100644 --- a/src/Engine/AssetManager/AssetManager.cpp +++ b/src/Engine/AssetManager/AssetManager.cpp @@ -14,12 +14,12 @@ struct AssetManagerInfo std::string_view relativePath; }; -static const std::map<Engine::AssetManager::Sprite, AssetManagerInfo> textureInfos +static const std::map<size_t, AssetManagerInfo> textureInfos { - { Engine::AssetManager::Sprite::None, {"None" , ""} }, - { Engine::AssetManager::Sprite::Default, {"Default", "defaultTexture.png"} }, - { Engine::AssetManager::Sprite::Test, {"Test", "test.png"} }, - { Engine::AssetManager::Sprite::Circle, {"Circle", "circle.png"} }, + { size_t(Engine::AssetManager::Sprite::None), {"None" , ""} }, + { size_t(Engine::AssetManager::Sprite::Default), {"Default", "defaultTexture.png"} }, + { size_t(Engine::AssetManager::Sprite::Test), {"Test", "test.png"} }, + { size_t(Engine::AssetManager::Sprite::Circle), {"Circle", "circle.png"} }, }; static const std::map<size_t, AssetManagerInfo> meshInfos @@ -43,7 +43,16 @@ namespace Engine return std::string(meshFolderPath) + std::string(iterator->second.relativePath); } - std::optional<Renderer::MeshDocument> AssetManager::LoadMesh(size_t i) + std::string GetTexturePath(size_t i) + { + auto iterator = textureInfos.find(i); + if (iterator == textureInfos.end()) + return {}; + else + return std::string(textureFolderPath) + std::string(iterator->second.relativePath); + } + + std::optional<Renderer::MeshDocument> LoadMesh(size_t i) { auto path = GetMeshPath(i); if (path == "") @@ -69,6 +78,11 @@ namespace Engine return { Renderer::MeshDocument(std::move(newInfo)) }; } + + std::optional<Renderer::TextureDocument> LoadTexture(size_t i) + { + return {}; + } } } diff --git a/src/Engine/AssetManager/AssetManager.hpp b/src/Engine/AssetManager/AssetManager.hpp index ed4ba0370cc04ec834a8ad6c41086fa1f59c73b4..74368254498f920cb61ff956236c44e876b02de7 100644 --- a/src/Engine/AssetManager/AssetManager.hpp +++ b/src/Engine/AssetManager/AssetManager.hpp @@ -9,6 +9,7 @@ #include <optional> #include "../Renderer/MeshDocument.hpp" +#include "../Renderer/TextureDocument.hpp" namespace Engine { @@ -18,8 +19,10 @@ namespace Engine constexpr std::string_view meshFolderPath = "Data/Meshes/"; std::string GetMeshPath(size_t i); + std::string GetTexturePath(size_t i); std::optional<Renderer::MeshDocument> LoadMesh(size_t i); + std::optional<Renderer::TextureDocument> LoadTexture(size_t i); } namespace AssMan = AssetManager; diff --git a/src/Engine/AssetManager/TextureDocument.hpp b/src/Engine/AssetManager/TextureDocument.hpp index 83403430fe7ed10f81a67dbd12573f0edb83ca49..169411060727b60b227db022bfa8d535dc580931 100644 --- a/src/Engine/AssetManager/TextureDocument.hpp +++ b/src/Engine/AssetManager/TextureDocument.hpp @@ -3,6 +3,7 @@ #include <array> #include <vector> #include <optional> +#include <string> namespace Engine { diff --git a/src/Engine/AssetManager/TextureDocument.inl b/src/Engine/AssetManager/TextureDocument.inl index 288748324561c24d5b99f2001a87cd17f0fdaf3f..1a52d37d67041f540a43e8baac7d1bf4c3d3fa53 100644 --- a/src/Engine/AssetManager/TextureDocument.inl +++ b/src/Engine/AssetManager/TextureDocument.inl @@ -2,12 +2,25 @@ #include "TextureDocument.hpp" +#include <string> +#include <optional> + +#include "ktx.h" + namespace Engine { namespace AssetManager { std::optional<TextureDocument> LoadTextureDocument(std::string path) { + if (path == "") + return {}; + + ktxTexture* texture; + KTX_error_code result = ktxTexture_CreateFromNamedFile(path.c_str(), KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT, &texture); + + + return {}; } } diff --git a/src/Engine/Engine.cpp b/src/Engine/Engine.cpp index c312ea4f654ed51ea95a4aee53b79f51bdd2d086..a355415e9fcc89549451e53881accaa9a58a25e0 100644 --- a/src/Engine/Engine.cpp +++ b/src/Engine/Engine.cpp @@ -69,6 +69,7 @@ namespace Engine rendererInitInfo.surfaceHandle = Application::Core::GetMainWindowHandle(); rendererInitInfo.assetLoadCreateInfo.meshLoader = &AssMan::LoadMesh; + rendererInitInfo.assetLoadCreateInfo.textureLoader = &AssMan::LoadTexture; rendererInitInfo.openGLInitInfo.glSwapBuffers = &Application::Core::GL_SwapWindow; Renderer::Core::Initialize(rendererInitInfo); diff --git a/src/Engine/Renderer/Renderer.hpp b/src/Engine/Renderer/Renderer.hpp index 2abf2052789b8a7844215cfee93d7c50ab2dab41..38bdacde2a291ef9b10f601500565c9b777443ae 100644 --- a/src/Engine/Renderer/Renderer.hpp +++ b/src/Engine/Renderer/Renderer.hpp @@ -71,7 +71,7 @@ namespace Engine struct Renderer::InitInfo { API preferredAPI = API::None; - Utility::ImgDim surfaceDimensions; + Utility::ImgDim surfaceDimensions{}; void* surfaceHandle = nullptr; AssetLoadCreateInfo assetLoadCreateInfo; diff --git a/src/Engine/Renderer/TextureDocument.hpp b/src/Engine/Renderer/TextureDocument.hpp index fce68b392c6d828a5cf9cce8edb7f190287d1f8c..8bc57f257ce5e725f21a2a3f9236b39cc52f0ddb 100644 --- a/src/Engine/Renderer/TextureDocument.hpp +++ b/src/Engine/Renderer/TextureDocument.hpp @@ -16,7 +16,7 @@ namespace Engine private: Format format; std::array<uint32_t, 2> dimensions; - std::array<uint8_t> byteArray; + std::vector<uint8_t> byteArray; }; enum class TextureDocument::Format diff --git a/src/main.cpp b/src/main.cpp index 997145821b93b77584e03c3027cc874820b55ee3..a039f4c1e4e4686713e360aa56374676dc2ff402 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,10 +1,12 @@ //#include "SDL2/SDL.h" -#include "Engine/Engine.hpp" +//#include "Engine/Engine.hpp" + +#include "Engine/AssetManager/TextureDocument.hpp" int main(int argc, char* argv[]) { - Engine::Core::Run(); + auto test = Engine::AssMan::LoadTextureDocument("Data/Textures/test.ktx"); return 0; } \ No newline at end of file