diff --git a/base/VulkanTexture.hpp b/base/VulkanTexture.hpp index a4300340..87a44aaf 100644 --- a/base/VulkanTexture.hpp +++ b/base/VulkanTexture.hpp @@ -104,6 +104,9 @@ namespace vks free(textureData); #else + if (!vks::tools::fileExists(filename)) { + vks::tools::exitFatal("Could not load texture from " + filename, "File not found"); + } gli::texture2d tex2D(gli::load(filename.c_str())); #endif assert(!tex2D.empty()); @@ -582,9 +585,11 @@ namespace vks free(textureData); #else + if (!vks::tools::fileExists(filename)) { + vks::tools::exitFatal("Could not load texture from " + filename, "File not found"); + } gli::texture2d_array tex2DArray(gli::load(filename)); #endif - assert(!tex2DArray.empty()); this->device = device; @@ -791,6 +796,9 @@ namespace vks free(textureData); #else + if (!vks::tools::fileExists(filename)) { + vks::tools::exitFatal("Could not load texture from " + filename, "File not found"); + } gli::texture_cube texCube(gli::load(filename)); #endif assert(!texCube.empty()); diff --git a/base/VulkanTools.cpp b/base/VulkanTools.cpp index 3f314d6d..994527da 100644 --- a/base/VulkanTools.cpp +++ b/base/VulkanTools.cpp @@ -375,5 +375,11 @@ namespace vks return shaderModule; } + + bool fileExists(const std::string &filename) + { + std::ifstream f(filename.c_str()); + return !f.fail(); + } } } \ No newline at end of file diff --git a/base/VulkanTools.h b/base/VulkanTools.h index 7860b0e1..bd0f31dd 100644 --- a/base/VulkanTools.h +++ b/base/VulkanTools.h @@ -21,6 +21,7 @@ #include #include #include +#include #if defined(_WIN32) #include #include @@ -123,5 +124,8 @@ namespace vks // Load a GLSL shader (text) // Note: GLSL support requires vendor-specific extensions to be enabled and is not a core-feature of Vulkan VkShaderModule loadShaderGLSL(const char *fileName, VkDevice device, VkShaderStageFlagBits stage); + + /** @brief Checks if a file exists */ + bool fileExists(const std::string &filename); } }