X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Funiformblock.cpp;h=f114ea584d04b7ff35ef550348febd4f9c38585d;hp=25511d251e2361e56b67285b86b7e8add1f14585;hb=3af09f06e9f69532e5adfe6bcd9a7b2d1aea6d5b;hpb=492325880c47450f50dcdebdcb336b37230ef867 diff --git a/source/core/uniformblock.cpp b/source/core/uniformblock.cpp index 25511d25..f114ea58 100644 --- a/source/core/uniformblock.cpp +++ b/source/core/uniformblock.cpp @@ -24,11 +24,16 @@ void DefaultUniformBlock::attach(const Program::UniformInfo &info, const Uniform if(info.block->bind_point>=0) throw invalid_argument("DefaultUniformBlock::attach"); - uniforms[info.location] = &uni; + attach(info.location, uni); } void DefaultUniformBlock::attach(int index, const Uniform &uni) { + if(index<0) + return; + + if(static_cast(index)>=uniforms.size()) + uniforms.resize(index+1, 0); uniforms[index] = &uni; } @@ -37,8 +42,9 @@ void DefaultUniformBlock::apply(int index) const if(index>=0) throw invalid_argument("DefaultUniformBlock::apply"); - for(map::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i) - i->second->apply(i->first); + for(unsigned i=0; iapply(i); }