X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Fshader.h;h=1472fb31dc9c5cd977de884f72f1590e78ee19de;hp=204d0538dab6fa523af925ef1caa84c37a1156e2;hb=4081e0e8f0f391aa25d67b73c45e73ccacff0f00;hpb=7a8a3e835aa4fefb930b843466db1566621e1fbe diff --git a/src/shader.h b/src/shader.h index 204d053..1472fb3 100644 --- a/src/shader.h +++ b/src/shader.h @@ -2,32 +2,37 @@ #define SHADER_H_ enum SType { + SDR_UNKNOWN, SDR_VERTEX, SDR_FRAGMENT }; class Shader { -private: - SType type; +protected: + virtual bool create(char *buf, unsigned int bsz, const char *fname) = 0; public: + SType type; + Shader(); - ~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 }; class ShaderProgram { -private: +protected: Shader *shaders[2]; public: ShaderProgram(); - virtual ~ShaderProgram() = 0; + virtual ~ShaderProgram(); - void add_shader(Shader *sdr, SType type); - bool link(); - void bind(); + virtual void add_shader(Shader *sdr); + virtual bool link() = 0; + virtual bool load(const char *vfname, const char *ffname) = 0; }; #endif // SHADER_H_