#pragma once #include #include #include #include #include class ShaderProgram { bool mUniformLocationsNeedRefresh; std::map UniformLocationCache; static GLint my_checkCompileSuccess (const GLuint, const GLenum); public: GLuint ID; ShaderProgram (const std::string&, const std::string&, const std::string&); GLint getCachedLoc (const std::string&); void RefreshUniformLocations (void); void Use (void); void Bool (const std::string&, const bool&); void Float (const std::string&, const float&); void Int (const std::string&, const int&); void Vec2 (const std::string&, const glm::vec2&); void Vec3 (const std::string&, const glm::vec3&); void Vec4 (const std::string&, const glm::vec4&); void Mat2 (const std::string&, const glm::mat2&); void Mat3 (const std::string&, const glm::mat3&); void Mat4 (const std::string&, const glm::mat4&); GLuint CompileShaderBuffer (const std::string&, const GLenum); GLuint Compile3ShaderBuffers (const std::string&, const std::string&, const std::string&); GLuint CompileShaderPath (const std::string&, const GLenum); GLint LinkProgram (void); };