]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.cpp
Support slopes in keyframe interpolation
[libs/gl.git] / source / programdata.cpp
index 9a531be2fecefb28dfb38de3375b8dc00c7f6249..79a8bb1bd98fe434542504487bdcf5f23b047e50 100644 (file)
@@ -1,3 +1,4 @@
+#include <msp/core/maputils.h>
 #include <msp/gl/extensions/arb_direct_state_access.h>
 #include "buffer.h"
 #include "color.h"
@@ -294,6 +295,19 @@ void ProgramData::remove_uniform(const string &name)
        }
 }
 
+vector<string> ProgramData::get_uniform_names() const
+{
+       vector<string> 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;
@@ -441,7 +455,7 @@ ProgramData::ProgramBlock::ProgramBlock():
 
 ProgramData::ProgramBlock::ProgramBlock(int p, SharedBlock *b):
        bind_point(p),
-       block(b ? b->block : 0),
+       block((b && b->used) ? b->block : 0),
        shared(b)
 { }