]> git.tdb.fi Git - libs/gl.git/blob - source/uniform.h
72a1bd2c074121625136015e0af845807347d6d3
[libs/gl.git] / source / uniform.h
1 /* $Id$
2
3 This file is part of libmspgl
4 Copyright © 2007-2008, 2010-2011  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef MSP_GL_UNIFORM_H_
9 #define MSP_GL_UNIFORM_H_
10
11 namespace Msp {
12 namespace GL {
13
14 class Program;
15
16 class Uniform
17 {
18 protected:
19         Uniform() { }
20 private:
21         Uniform(const Uniform &);
22         Uniform &operator=(const Uniform &);
23 public:
24         virtual ~Uniform() { }
25
26         virtual void apply(int) const =0;
27         virtual Uniform *clone() const =0;
28 };
29
30
31 class Uniform1i: public Uniform
32 {
33 private:
34         int v;
35
36 public:
37         Uniform1i(int v_);
38
39         virtual void apply(int index) const;
40         virtual Uniform1i *clone() const;
41 };
42
43
44 class Uniform1f: public Uniform
45 {
46 private:
47         float v;
48
49 public:
50         Uniform1f(float v_);
51
52         virtual void apply(int index) const;
53         virtual Uniform1f *clone() const;
54 };
55
56
57 class Uniform2f: public Uniform
58 {
59 private:
60         float v[2];
61
62 public:
63         Uniform2f(float v0, float v1);
64
65         virtual void apply(int index) const;
66         virtual Uniform2f *clone() const;
67 };
68
69
70 class Uniform3f: public Uniform
71 {
72 private:
73         float v[3];
74
75 public:
76         Uniform3f(float v0, float v1, float v2);
77
78         virtual void apply(int index) const;
79         virtual Uniform3f *clone() const;
80 };
81
82
83 class Uniform4f: public Uniform
84 {
85 private:
86         float v[4];
87
88 public:
89         Uniform4f(float v0, float v1, float v2, float v3);
90
91         virtual void apply(int index) const;
92         virtual Uniform4f *clone() const;
93 };
94
95
96 class UniformMatrix4x4f: public Uniform
97 {
98 private:
99         float v[16];
100
101 public:
102         UniformMatrix4x4f(const float *);
103
104         virtual void apply(int index) const;
105         virtual UniformMatrix4x4f *clone() const;
106 };
107
108 } // namespace GL
109 } // namespace Msp
110
111 #endif