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 float va[2] = { v0, v1 };
52 void UniformBlock::uniform2(int index, const float *v)
54 uniform(index, new Uniform2f(v));
57 void UniformBlock::uniform(int index, float v0, float v1, float v2)
59 float va[3] = { v0, v1, v2 };
63 void UniformBlock::uniform(int index, const Vector3 &v)
65 uniform(index, v.x, v.y, v.z);
68 void UniformBlock::uniform3(int index, const float *v)
70 uniform(index, new Uniform3f(v));
73 void UniformBlock::uniform(int index, float v0, float v1, float v2, float v3)
75 float va[4] = { v0, v1, v2, v3 };
79 void UniformBlock::uniform(int index, const Vector4 &v)
81 uniform(index, v.x, v.y, v.z, v.w);
84 void UniformBlock::uniform(int index, const Color &c)
86 uniform(index, c.r, c.g, c.b, c.a);
89 void UniformBlock::uniform4(int index, const float *v)
91 uniform(index, new Uniform4f(v));
94 void UniformBlock::uniform_matrix4(int index, const float *v)
96 uniform(index, new UniformMatrix4x4f(v));
99 void UniformBlock::uniform_matrix4(int index, const Matrix &m)
102 copy(m.data(), m.data()+16, v);
103 uniform_matrix4(index, v);
106 void UniformBlock::apply(int index) const
109 throw logic_error("GL_ARB_uniform_buffer_object support not implemented yet");
111 for(map<int, Uniform *>::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
112 i->second->apply(i->first);