#ifndef MATERIAL_H #define MATERIAL_H #include "opengl.h" #include "shader.h" class Material { public: void bind(); virtual void unbind(); virtual int get_material_id() = 0; virtual void bind_uniforms(); virtual void setup_uniforms(); virtual void setup_state(); virtual const GLchar** get_vertex_shader_source() = 0; virtual const GLchar** get_fragment_shader_source() = 0; GLint get_uniform(const char* name); Material(); virtual ~Material(); protected: static Material* current_material; Shader* shader; }; #endif