3dphotoshoot

annotate src/shader.h @ 21:4ca4e3c5a754

port to C++ completed, shader programs now use the SdrProg class
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 11 Jun 2015 04:56:33 +0300
parents c14613d27a3a
children d7fe157c402d
rev   line source
nuclear@20 1 #ifndef SHADER_H_
nuclear@20 2 #define SHADER_H_
nuclear@20 3
nuclear@20 4 #include <vector>
nuclear@20 5
nuclear@21 6 enum SdrDefaultAttrib {
nuclear@21 7 SDR_ATTR_VERTEX,
nuclear@21 8 SDR_ATTR_NORMAL,
nuclear@21 9 SDR_ATTR_TEXCOORD,
nuclear@21 10 SDR_ATTR_COLOR,
nuclear@21 11 SDR_ATTR_TANGENT
nuclear@21 12 };
nuclear@21 13
nuclear@21 14
nuclear@20 15 class SdrProg {
nuclear@20 16 private:
nuclear@20 17 std::vector<unsigned int> priv_sdr;
nuclear@20 18 unsigned int prog;
nuclear@20 19 mutable bool valid;
nuclear@20 20
nuclear@20 21 public:
nuclear@21 22 static const SdrProg *active;
nuclear@21 23
nuclear@20 24 SdrProg();
nuclear@20 25 ~SdrProg();
nuclear@20 26
nuclear@20 27 void create();
nuclear@20 28 void destroy();
nuclear@20 29
nuclear@20 30 bool attach_shader(unsigned int sdr);
nuclear@20 31
nuclear@20 32 bool create(unsigned int vsdr, unsigned int psdr);
nuclear@20 33 bool create(const char *vsrc, const char *psrc);
nuclear@20 34 bool load(const char *vfname, const char *pfname);
nuclear@20 35
nuclear@20 36 bool link() const;
nuclear@20 37
nuclear@20 38 int get_uniform(const char *name) const;
nuclear@20 39 int get_attrib(const char *name) const;
nuclear@20 40 bool bind_attrib(const char *name, int loc) const;
nuclear@21 41 void bind_default_attribs() const;
nuclear@20 42
nuclear@20 43 bool bind() const;
nuclear@21 44
nuclear@21 45 unsigned int get_globj() const { return prog; }
nuclear@20 46 };
nuclear@20 47
nuclear@20 48 unsigned int get_shader(const char *name, unsigned int type);
nuclear@20 49
nuclear@21 50 SdrProg *get_sdrprog(const char *vfile, const char *pfile);
nuclear@21 51
nuclear@20 52 #endif /* SHADER_H_ */