From 12d38a0114657cc468e93f7eb0f97b2b1ac8f924 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 24 Jan 2021 13:16:05 +0000 Subject: Big tidy up of shader wrapper --- gfx/gl/shader.h | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'gfx/gl/shader.h') diff --git a/gfx/gl/shader.h b/gfx/gl/shader.h index 2072199..e253f50 100644 --- a/gfx/gl/shader.h +++ b/gfx/gl/shader.h @@ -2,34 +2,36 @@ #define SHADER_INCLUDED_H #include -#include -#include -#include +#include +#include class Camera; class Transform; class Shader { public: - explicit Shader(const std::string & fileName); - virtual ~Shader(); - - NO_COPY(Shader); - NO_MOVE(Shader); + Shader(); void Bind() const; void Update(const Transform & transform, const Camera & camera) const; private: - static constexpr unsigned int NUM_SHADERS = 2; - static constexpr unsigned int NUM_UNIFORMS = 3; + class Source { + public: + using ShaderRef = glRef; + + Source(const std::basic_string_view text, GLuint type); + Source(const GLchar * text, GLint len, GLuint type); + + ShaderRef id; + }; + + static void CheckShaderError(GLuint shader, GLuint flag, bool isProgram, std::string_view errorMessage); - static void CheckShaderError(GLuint shader, GLuint flag, bool isProgram, const std::string & errorMessage); - static GLuint CreateShader(const GLchar * text, GLint len, unsigned int type); + using ProgramRef = glRef; - GLuint m_program; - std::array m_shaders; - std::array m_uniforms; + ProgramRef m_program; + GLint mvp_uniform, normal_uniform, lightDir_uniform; }; #endif -- cgit v1.2.3