From 2797b9fd3ae449aeb9d7b2bc6929ba24e8d2ee42 Mon Sep 17 00:00:00 2001 From: NurgazievichR Date: Tue, 18 Mar 2025 15:40:55 +0600 Subject: [PATCH] shader zip --- ShaderManager.cpp | 22 +++++++++++++++++++--- ShaderManager.h | 2 +- TextureManager.cpp | 18 ++++++++++++++---- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/ShaderManager.cpp b/ShaderManager.cpp index f0e5a2f..29ce406 100755 --- a/ShaderManager.cpp +++ b/ShaderManager.cpp @@ -121,11 +121,27 @@ namespace ZL { } - void ShaderManager::AddShaderFromFiles(const std::string& shaderName, const std::string& vertexShaderFileName, const std::string& fragmentShaderFileName) + void ShaderManager::AddShaderFromFiles(const std::string& shaderName, const std::string& vertexShaderFileName, const std::string& fragmentShaderFileName, const std::string& ZIPFileName) { - std::string vertexShader = readTextFile(vertexShaderFileName); - std::string fragmentShader = readTextFile(fragmentShaderFileName); + std::string vertexShader; + std::string fragmentShader; + + if (!ZIPFileName.empty()){ + + std::vector vertexShaderData; + std::vector fragmentShaderData; + + vertexShaderData = readFileFromZIP(vertexShaderFileName, ZIPFileName); + fragmentShaderData = readFileFromZIP(fragmentShaderFileName, ZIPFileName); + + vertexShader = std::string(vertexShaderData.begin(), vertexShaderData.end()); + fragmentShader = std::string(fragmentShaderData.begin(), fragmentShaderData.end()); + + }else{ + vertexShader = readTextFile(vertexShaderFileName); + fragmentShader = readTextFile(fragmentShaderFileName); + } ///std::cout << "Shader: "<< vertexShader << std::endl; shaderResourceMap[shaderName] = std::make_shared(vertexShader, fragmentShader); diff --git a/ShaderManager.h b/ShaderManager.h index dd84eed..da911f1 100755 --- a/ShaderManager.h +++ b/ShaderManager.h @@ -37,7 +37,7 @@ namespace ZL { std::stack shaderStack; public: - void AddShaderFromFiles(const std::string& shaderName, const std::string& vertexShaderFileName, const std::string& fragmentShaderFileName); + void AddShaderFromFiles(const std::string& shaderName, const std::string& vertexShaderFileName, const std::string& fragmentShaderFileName, const std::string& ZIPFileName = ""); void PushShader(const std::string& shaderName); void PopShader(); diff --git a/TextureManager.cpp b/TextureManager.cpp index b2cd400..faa0927 100755 --- a/TextureManager.cpp +++ b/TextureManager.cpp @@ -74,8 +74,13 @@ namespace ZL TextureDataStruct texData; std::vector fileArr; - if (!ZIPFileName.empty()) fileArr = readFileFromZIP(fullFileName, ZIPFileName); - else fileArr = readFile(fullFileName); + + if (!ZIPFileName.empty()) { + fileArr = readFileFromZIP(fullFileName, ZIPFileName); + } + else { + fileArr = readFile(fullFileName); + } size_t fileSize = fileArr.size(); @@ -123,8 +128,13 @@ namespace ZL TextureDataStruct texData; std::vector fileArr; - if (!ZIPFileName.empty()) fileArr = readFileFromZIP(fullFileName, ZIPFileName); - else fileArr = readFile(fullFileName); + + if (!ZIPFileName.empty()) { + fileArr = readFileFromZIP(fullFileName, ZIPFileName); + } + else { + fileArr = readFile(fullFileName); + } size_t fileSize = fileArr.size();