]> git.tdb.fi Git - libs/gl.git/blob - source/programdata.h
Drop Id tags and copyright notices from files
[libs/gl.git] / source / programdata.h
1 #ifndef MSP_GL_PROGRAMDATA_H_
2 #define MSP_GL_PROGRAMDATA_H_
3
4 #include <map>
5 #include <msp/datafile/objectloader.h>
6
7 namespace Msp {
8 namespace GL {
9
10 class Color;
11 class Matrix;
12 class Program;
13 class Uniform;
14 class Vector3;
15 class Vector4;
16
17 /**
18 Stores uniform variables for a shader program.
19 */
20 class ProgramData
21 {
22 public:
23         class Loader: public DataFile::ObjectLoader<ProgramData>
24         {
25         public:
26                 Loader(ProgramData &);
27         private:
28                 void uniform1i(const std::string &, int);
29                 void uniform1f(const std::string &, float);
30                 void uniform2f(const std::string &, float, float);
31                 void uniform3f(const std::string &, float, float, float);
32                 void uniform4f(const std::string &, float, float, float, float);
33         };
34
35 private:
36         const Program &program;
37         std::map<int, Uniform *> data;
38
39         ProgramData &operator=(const ProgramData &);
40 public:
41         explicit ProgramData(const Program &);
42         ProgramData(const ProgramData &);
43         ~ProgramData();
44
45 private:
46         void uniform(int, Uniform *);
47 public:
48         void uniform(int, int);
49         void uniform(int, float);
50         void uniform(int, float, float);
51         void uniform2(int, const float *);
52         void uniform(int, float, float, float);
53         void uniform(int, const Vector3 &);
54         void uniform3(int, const float *);
55         void uniform(int, float, float, float, float);
56         void uniform(int, const Vector4 &);
57         void uniform(int, const Color &);
58         void uniform4(int, const float *);
59         void uniform_matrix4(int, const float *);
60         void uniform_matrix4(int, const Matrix &);
61
62         void uniform(const std::string &, int);
63         void uniform(const std::string &, float);
64         void uniform(const std::string &, float, float);
65         void uniform2(const std::string &, const float *);
66         void uniform(const std::string &, float, float, float);
67         void uniform(const std::string &, const Vector3 &);
68         void uniform3(const std::string &, const float *);
69         void uniform(const std::string &, float, float, float, float);
70         void uniform(const std::string &, const Vector4 &);
71         void uniform(const std::string &, const Color &);
72         void uniform4(const std::string &, const float *);
73         void uniform_matrix4(const std::string &, const float *);
74         void uniform_matrix4(const std::string &, const Matrix &);
75
76         void apply() const;
77 };
78
79 } // namespace GL
80 } // namespace Msp
81
82 #endif