glUseProgram(id);
for(const auto &kvp: tex_bindings)
{
- int location = static_cast<const Program *>(this)->get_uniform_location(kvp.first);
- if(location>=0)
+ auto i = lower_bound_member(rd.uniforms, Tag(kvp.first), &ReflectData::UniformInfo::tag);
+ if(i!=rd.uniforms.end() && i->location>=0)
{
if(ARB_separate_shader_objects)
- glProgramUniform1i(id, location, kvp.second);
+ glProgramUniform1i(id, i->location, kvp.second);
else
- glUniform1i(location, kvp.second);
+ glUniform1i(i->location, kvp.second);
+ i->binding = kvp.second;
}
}
}