X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;ds=sidebyside;f=src%2Fshader.h;h=5a79b7fbfd8027c671ec028eb8ad2aa4e7d3116d;hb=0f6519c2606f2863d9c7ee8b9754b9f23df281ab;hp=1472fb31dc9c5cd977de884f72f1590e78ee19de;hpb=4081e0e8f0f391aa25d67b73c45e73ccacff0f00;p=demo diff --git a/src/shader.h b/src/shader.h index 1472fb3..5a79b7f 100644 --- a/src/shader.h +++ b/src/shader.h @@ -1,6 +1,17 @@ #ifndef SHADER_H_ #define SHADER_H_ +#include + +#include +#include + +#include + +/* + Shader class +*/ + enum SType { SDR_UNKNOWN, SDR_VERTEX, @@ -9,19 +20,23 @@ enum SType { 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; - virtual void destroy() = 0; virtual bool load(const char *fname, SType type); - virtual void attach(unsigned int prog) = 0; // if vulkan -> leave empty + virtual void destroy() = 0; + virtual SType get_type(); }; +/* Shader Program */ + class ShaderProgram { protected: Shader *shaders[2]; @@ -30,9 +45,11 @@ public: ShaderProgram(); virtual ~ShaderProgram(); - virtual void add_shader(Shader *sdr); + virtual bool create() = 0; virtual bool link() = 0; - virtual bool load(const char *vfname, const char *ffname) = 0; + virtual bool use() const = 0; + virtual void destroy() = 0; + virtual void attach_shader(Shader *shader) = 0; }; #endif // SHADER_H_