3dphotoshoot

annotate src/shader.h @ 27:3d082c566b53

fixed all the bugs, pc version works
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 18 Jun 2015 04:32:25 +0300
parents 4ca4e3c5a754
children
rev   line source
nuclear@20 1 #ifndef SHADER_H_
nuclear@20 2 #define SHADER_H_
nuclear@20 3
nuclear@20 4 #include <vector>
nuclear@22 5 #include "vmath/vmath.h"
nuclear@20 6
nuclear@21 7 enum SdrDefaultAttrib {
nuclear@21 8 SDR_ATTR_VERTEX,
nuclear@21 9 SDR_ATTR_NORMAL,
nuclear@21 10 SDR_ATTR_TEXCOORD,
nuclear@21 11 SDR_ATTR_COLOR,
nuclear@21 12 SDR_ATTR_TANGENT
nuclear@21 13 };
nuclear@21 14
nuclear@21 15
nuclear@20 16 class SdrProg {
nuclear@20 17 private:
nuclear@20 18 std::vector<unsigned int> priv_sdr;
nuclear@20 19 unsigned int prog;
nuclear@20 20 mutable bool valid;
nuclear@20 21
nuclear@20 22 public:
nuclear@21 23 static const SdrProg *active;
nuclear@21 24
nuclear@20 25 SdrProg();
nuclear@20 26 ~SdrProg();
nuclear@20 27
nuclear@20 28 void create();
nuclear@20 29 void destroy();
nuclear@20 30
nuclear@20 31 bool attach_shader(unsigned int sdr);
nuclear@20 32
nuclear@20 33 bool create(unsigned int vsdr, unsigned int psdr);
nuclear@20 34 bool create(const char *vsrc, const char *psrc);
nuclear@20 35 bool load(const char *vfname, const char *pfname);
nuclear@20 36
nuclear@20 37 bool link() const;
nuclear@20 38
nuclear@20 39 int get_uniform(const char *name) const;
nuclear@20 40 int get_attrib(const char *name) const;
nuclear@20 41 bool bind_attrib(const char *name, int loc) const;
nuclear@21 42 void bind_default_attribs() const;
nuclear@20 43
nuclear@20 44 bool bind() const;
nuclear@21 45
nuclear@22 46 // helper functions for setting uniforms
nuclear@22 47 void set_uniform(const char *name, int count, const int *val) const;
nuclear@22 48 void set_uniform(const char *name, int count, const float *val) const;
nuclear@22 49 void set_uniform(const char *name, const Vector4 &v) const;
nuclear@22 50
nuclear@22 51 void set_uniform1i(const char *name, int x) const;
nuclear@22 52 void set_uniform2i(const char *name, int x, int y) const;
nuclear@22 53 void set_uniform3i(const char *name, int x, int y, int z) const;
nuclear@22 54 void set_uniform4i(const char *name, int x, int y, int z, int w) const;
nuclear@22 55
nuclear@22 56 void set_uniform1f(const char *name, float x) const;
nuclear@22 57 void set_uniform2f(const char *name, float x, float y) const;
nuclear@22 58 void set_uniform3f(const char *name, float x, float y, float z) const;
nuclear@22 59 void set_uniform4f(const char *name, float x, float y, float z, float w) const;
nuclear@22 60
nuclear@22 61 void set_uniform_matrix(const char *name, const float *m) const;
nuclear@22 62 void set_uniform_matrix(const char *name, const Matrix4x4 &m) const;
nuclear@22 63
nuclear@22 64
nuclear@21 65 unsigned int get_globj() const { return prog; }
nuclear@20 66 };
nuclear@20 67
nuclear@20 68 unsigned int get_shader(const char *name, unsigned int type);
nuclear@20 69
nuclear@21 70 SdrProg *get_sdrprog(const char *vfile, const char *pfile);
nuclear@21 71
nuclear@20 72 #endif /* SHADER_H_ */