12 virtual bool create(char *buf, unsigned int bsz, const char *fname) = 0;
18 virtual ~Shader() = 0;
20 virtual void destroy() = 0;
21 virtual bool load(const char *fname, SType type);
22 virtual void attach(unsigned int prog) = 0; // if vulkan -> leave empty
31 virtual ~ShaderProgram();
33 virtual void add_shader(Shader *sdr);
34 virtual bool link() = 0;
35 virtual bool load(const char *vfname, const char *ffname) = 0;
36 virtual void use() = 0;
38 /* THIS PART IS GOING TO BE CHANGED: on vulkan we set the uniforms
39 using descriptor sets. The current design is suitable for OpenGL and
40 it has to become more generic to work with both APIs later. */