+int Program::get_uniform_location(Tag tag) const
+{
+ vector<UniformInfo>::const_iterator i = lower_bound_member(uniforms, tag, &UniformInfo::tag);
+ return i!=uniforms.end() && i->tag==tag && i->block->bind_point<0 ? i->location : -1;
+}
+
+int Program::get_uniform_binding(Tag tag) const
+{
+ vector<UniformInfo>::const_iterator i = lower_bound_member(uniforms, tag, &UniformInfo::tag);
+ return i!=uniforms.end() && i->tag==tag ? i->binding : -1;
+}
+