X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fshader.h;h=491eea89c6009c0f5c9308a429a084b6a8636975;hb=86c912d603be75ac8b2fdb2229f1696e9c0c01d9;hp=a6bec05d4f3c38fd5476a47a5eb0ceb03d9d983c;hpb=64e2adbbab48320b6cd792e515b44cea112a3be4;p=demo diff --git a/src/shader.h b/src/shader.h index a6bec05..491eea8 100644 --- a/src/shader.h +++ b/src/shader.h @@ -1,31 +1,52 @@ #ifndef SHADER_H_ #define SHADER_H_ -enum SType { - SDR_VERTzX, +#include + +#include +#include + +#include + +class Texture; + +enum ShaderType { + SDR_UNKNOWN, + SDR_VERTEX, SDR_FRAGMENT }; class Shader { -private: - SType type; +protected: + ShaderType type; + std::string name; + + virtual bool create(char *buf, unsigned int bsz, const char *fname) = 0; public: Shader(); - ~Shader(); + virtual ~Shader() = 0; - virtual bool load(const char *fname, SType type) = 0; + virtual bool load(const char *fname, ShaderType type); + virtual void destroy() = 0; + virtual ShaderType get_type(); }; +/* Shader Program */ + class ShaderProgram { -private: +protected: Shader *shaders[2]; public: ShaderProgram(); - virtual ~ShaderProgram() = 0; + virtual ~ShaderProgram(); - void set_shader(Shader *sdr, SType type); + virtual bool create() = 0; + virtual bool link() = 0; + virtual bool use() const = 0; + virtual void destroy() = 0; + virtual void attach_shader(Shader *shader) = 0; }; #endif // SHADER_H_