X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Funiformblock.cpp;h=59871cdde8249b3b90e0dd03a89db66963e2efd6;hb=dbc91b65728ab9c0e574bb1127cfe4d2da55de7f;hp=25511d251e2361e56b67285b86b7e8add1f14585;hpb=492325880c47450f50dcdebdcb336b37230ef867;p=libs%2Fgl.git diff --git a/source/core/uniformblock.cpp b/source/core/uniformblock.cpp index 25511d25..59871cdd 100644 --- a/source/core/uniformblock.cpp +++ b/source/core/uniformblock.cpp @@ -3,6 +3,7 @@ #include #include "buffer.h" #include "color.h" +#include "deviceinfo.h" #include "error.h" #include "matrix.h" #include "uniform.h" @@ -24,11 +25,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 +43,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); } @@ -61,7 +68,7 @@ BufferBackedUniformBlock::~BufferBackedUniformBlock() unsigned BufferBackedUniformBlock::get_alignment() const { - return BufferRange::get_uniform_buffer_alignment(); + return Limits::get_global().uniform_buffer_alignment; } void BufferBackedUniformBlock::location_changed(Buffer *buf, unsigned off, unsigned) const