#ifndef _H_SHADER_H #define _H_SHADER_H #include #include #include class Shader { protected: bool compileAndLink(const char *vSource, const char *fSource); std::string vertexPath; std::string fragmentPath; bool valid; Shader(); public: unsigned int ID; Shader(const char* vertPath, const char* fragPath); void use() { glUseProgram(ID); } void setFloat(const std::string& name, float value); void setFloatArray(const std::string & name, size_t count, const float* value); void setIntArray(const std::string & name, size_t count, const int* value); void setInt(const std::string& name, int value); void setBool(const std::string& name, bool value); void setVec2(const std::string& name, const float* value); void setMatrix4f(const std::string& name, const float* value); bool isValid() { return valid; } virtual ~Shader(); }; class GenericShader : public Shader { public: GenericShader() : Shader() {}; }; #endif // _H_SHADER_H