5 #include "uniformblock.h"
13 UniformBlock::~UniformBlock()
15 for(map<int, Uniform *>::iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
19 void UniformBlock::uniform(int index, Uniform *uni)
21 map<int, Uniform *>::iterator i = uniforms.find(index);
28 uniforms[index] = uni;
31 void UniformBlock::uniform(int index, const Uniform &uni)
33 uniform(index, uni.clone());
36 void UniformBlock::uniform(int index, int v)
38 uniform(index, new Uniform1i(v));
41 void UniformBlock::uniform(int index, float v)
43 uniform(index, new Uniform1f(v));
46 void UniformBlock::uniform(int index, float v0, float v1)
48 uniform(index, new Uniform2f(v0, v1));
51 void UniformBlock::uniform2(int index, const float *v)
53 uniform(index, v[0], v[1]);
56 void UniformBlock::uniform(int index, float v0, float v1, float v2)
58 uniform(index, new Uniform3f(v0, v1, v2));
61 void UniformBlock::uniform(int index, const Vector3 &v)
63 uniform(index, v.x, v.y, v.z);
66 void UniformBlock::uniform3(int index, const float *v)
68 uniform(index, v[0], v[1], v[2]);
71 void UniformBlock::uniform(int index, float v0, float v1, float v2, float v3)
73 uniform(index, new Uniform4f(v0, v1, v2, v3));
76 void UniformBlock::uniform(int index, const Vector4 &v)
78 uniform(index, v.x, v.y, v.z, v.w);
81 void UniformBlock::uniform(int index, const Color &c)
83 uniform(index, c.r, c.g, c.b, c.a);
86 void UniformBlock::uniform4(int index, const float *v)
88 uniform(index, v[0], v[1], v[2], v[3]);
91 void UniformBlock::uniform_matrix4(int index, const float *v)
93 uniform(index, new UniformMatrix4x4f(v));
96 void UniformBlock::uniform_matrix4(int index, const Matrix &m)
99 copy(m.data(), m.data()+16, v);
100 uniform_matrix4(index, v);
103 void UniformBlock::apply(int index) const
106 throw logic_error("GL_ARB_uniform_buffer_object support not implemented yet");
108 for(map<int, Uniform *>::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
109 i->second->apply(i->first);