#pragma once #include #include class ShaderLoader { public: static void Create(); static void Destroy(); static ShaderLoader* Instance(); unsigned LoadShader(const char* vertexFileName = "Shader.vert", const char* fragmentFileName = "Shader.frag", const std::map additionalProperties = std::map()); void SetShaderPath(std::string shaderPath); std::string GetShaderPath(); protected: private: ShaderLoader(); ~ShaderLoader(); void ParseProperties(std::string &line, char delimiter, const std::map additionalProperties = std::map()); static ShaderLoader* mInstance; std::string mShaderPath; bool verbose; };