class Shader {
protected:
+ SType type;
+ std::string name;
+
virtual bool create(char *buf, unsigned int bsz, const char *fname) = 0;
public:
- SType type;
Shader();
virtual ~Shader() = 0;
ShaderProgram();
virtual ~ShaderProgram();
- virtual void cache_uniforms() = 0;
-
- virtual void add_shader(Shader *sdr);
- virtual void delete_shaders() = 0;
-
virtual bool create() = 0;
virtual bool link() = 0;
- virtual bool use() = 0;
+ virtual bool use() const = 0;
virtual void destroy() = 0;
virtual void attach_shader(Shader *shader) = 0;
using descriptor sets. The current design is suitable for OpenGL and
it *might* have to be rewritten to work with both APIs later
*/
+ virtual int get_uniform_location(const char *name) const = 0;
virtual void set_uniformi(int location, int value) = 0;
virtual void set_uniformi(int location, int x, int y) = 0;
virtual void set_uniform_matrix(int location, const Mat4 &mat) = 0;
};
-ShaderProgram *get_current_program();
-
#endif // SHADER_H_