+#include <msp/core/maputils.h>
#include <msp/gl/extensions/arb_direct_state_access.h>
#include "buffer.h"
#include "color.h"
uniform(name, new UniformArray<Uniform4f>(n, v));
}
+void ProgramData::uniform_matrix2_array(const string &name, unsigned n, const float *v)
+{
+ uniform(name, new UniformArray<UniformMatrix2x2f>(n, v));
+}
+
+void ProgramData::uniform_matrix3_array(const string &name, unsigned n, const float *v)
+{
+ uniform(name, new UniformArray<UniformMatrix3x3f>(n, v));
+}
+
void ProgramData::uniform_matrix4_array(const string &name, unsigned n, const float *v)
{
uniform(name, new UniformArray<UniformMatrix4x4f>(n, v));
}
}
+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;
ProgramData::ProgramBlock::ProgramBlock(int p, SharedBlock *b):
bind_point(p),
- block(b ? b->block : 0),
+ block((b && b->used) ? b->block : 0),
shared(b)
{ }