7 #include "uniformblock.h"
15 UniformBlock::UniformBlock()
18 UniformBlock::UniformBlock(unsigned s):
23 void UniformBlock::attach(int index, const Uniform &uni)
25 uniforms[index] = &uni;
28 void UniformBlock::attach(const Program::UniformInfo &info, const Uniform &uni)
30 uniforms[info.location] = &uni;
33 uni.store(info, &data[info.location]);
38 void UniformBlock::apply(int index) const
40 if((index>=0) != (buffer!=0))
41 throw invalid_operation("UniformBlock::apply");
49 buf_range = new BufferRange(*buffer, buffer_offset, size);
51 buf_range->bind_to(UNIFORM_BUFFER, index);
55 for(map<int, const Uniform *>::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
56 i->second->apply(i->first);