X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramdata.cpp;h=a0e0e8bc61376b814f28af1439f01329d8e7e61e;hp=ca6ae5ba44dbae3ee8b5ee992b6c85ff785fde5f;hb=00cc52f21b5ae29fb1b25c162552c851a0559e66;hpb=53953f28255e782ed640a9e8d2d42c9b218943ad diff --git a/source/programdata.cpp b/source/programdata.cpp index ca6ae5ba..a0e0e8bc 100644 --- a/source/programdata.cpp +++ b/source/programdata.cpp @@ -1,3 +1,4 @@ +#include #include #include "buffer.h" #include "color.h" @@ -104,6 +105,11 @@ void ProgramData::uniform(const string &name, Uniform *uni) } } +void ProgramData::uniform(const string &name, const Uniform &u) +{ + uniform(name, u.clone()); +} + void ProgramData::uniform(const string &name, int v) { uniform(name, new Uniform1i(v)); @@ -289,6 +295,19 @@ void ProgramData::remove_uniform(const string &name) } } +vector ProgramData::get_uniform_names() const +{ + vector names; + for(SlotMap::const_iterator i=uniform_slots.begin(); i!=uniform_slots.end(); ++i) + names.push_back(i->first); + return names; +} + +const Uniform &ProgramData::get_uniform(const string &name) const +{ + return *uniforms[get_item(uniform_slots, name)]; +} + unsigned ProgramData::compute_slot_mask(const Program::UniformBlockInfo &block) const { unsigned mask = 0;