From 9d5ce3dca2a138f533cee4df3e6c135af090e3df Mon Sep 17 00:00:00 2001 From: OLEGSHA Date: Thu, 9 Mar 2023 23:28:35 +0100 Subject: [PATCH] TMP / assets will be embedded for now --- CMakeLists.txt | 5 +++++ main/game.cpp | 8 ++++---- main/rendering/image.cpp | 20 +++++++++----------- main/rendering/image.h | 2 +- tools/embed/embed.cmake | 3 --- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cbadd8..6282822 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,11 @@ target_sources(progressia PRIVATE target_glsl_shaders(progressia desktop/graphics/shaders/shader.frag desktop/graphics/shaders/shader.vert) + +target_embeds(progressia + assets/texture.png + assets/texture2.png) + compile_glsl(progressia) compile_embeds(progressia) target_include_directories(progressia PRIVATE ${generated}/embedded_resources) diff --git a/main/game.cpp b/main/game.cpp index b354bc5..0540465 100644 --- a/main/game.cpp +++ b/main/game.cpp @@ -63,10 +63,10 @@ void initialize(GraphicsInterface &gintp) { debug("game init begin"); gint = &gintp; - texture1.reset(gint->newTexture( - progressia::main::loadImage(u"../assets/texture.png"))); - texture2.reset(gint->newTexture( - progressia::main::loadImage(u"../assets/texture2.png"))); + texture1.reset( + gint->newTexture(progressia::main::loadImage("assets/texture.png"))); + texture2.reset( + gint->newTexture(progressia::main::loadImage("assets/texture2.png"))); // Cube 1 { diff --git a/main/rendering/image.cpp b/main/rendering/image.cpp index c606710..f361e28 100644 --- a/main/rendering/image.cpp +++ b/main/rendering/image.cpp @@ -8,6 +8,8 @@ #include "stb/stb_image.h" +#include + #include "../logging.h" using namespace progressia::main::logging; @@ -20,23 +22,19 @@ const Image::Byte *Image::getData() const { return data.data(); } Image::Byte *Image::getData() { return data.data(); } -Image loadImage(const std::filesystem::path &path) { +Image loadImage(const std::string &path) { - std::ifstream file(path, std::ios::ate | std::ios::binary); + auto resource = __embedded_resources::getEmbeddedResource(path.c_str()); - if (!file.is_open()) { - fatal() << "Could not access a PNG image in file " << path; + if (resource.data == nullptr) { // REPORT_ERROR + progressia::main::logging::fatal() + << "Could not find resource \"" << path << "\""; exit(1); } - std::size_t fileSize = static_cast(file.tellg()); - std::vector png(fileSize); - - file.seekg(0); - file.read(reinterpret_cast(png.data()), fileSize); - - file.close(); + std::vector png(resource.data, + resource.data + resource.length); int width; int height; diff --git a/main/rendering/image.h b/main/rendering/image.h index a49e4b7..4de6eb9 100644 --- a/main/rendering/image.h +++ b/main/rendering/image.h @@ -19,7 +19,7 @@ class Image { Byte *getData(); }; -Image loadImage(const std::filesystem::path &); +Image loadImage(const std::string &); } // namespace main } // namespace progressia diff --git a/tools/embed/embed.cmake b/tools/embed/embed.cmake index bf94e4e..7251d3f 100644 --- a/tools/embed/embed.cmake +++ b/tools/embed/embed.cmake @@ -1,9 +1,6 @@ # embed.cmake # Generates embedded_resources.h and embedded_resources.cpp -find_package(Vulkan COMPONENTS glslc REQUIRED) -find_program(glslc_EXECUTABLE NAMES glslc HINTS Vulkan::glslc) - find_package(Python3 COMPONENTS Interpreter REQUIRED) macro (get_target_property_or var target prop default)