}
}
- Conditional<BindRestore> _bind(!ARB_separate_shader_objects, this);
+ if(!ARB_separate_shader_objects)
+ glUseProgram(id);
for(map<string, unsigned>::const_iterator i=transient->textures.begin(); i!=transient->textures.end(); ++i)
{
int location = get_uniform_location(i->first);
return i!=attributes.end() && i->name==name ? i->location : -1;
}
-void Program::bind() const
-{
- if(!linked)
- throw invalid_operation("Program::bind");
-
- if(!set_current(this))
- return;
-
- glUseProgram(id);
-}
-
-void Program::unbind()
-{
- if(!set_current(0))
- return;
-
- glUseProgram(0);
-}
-
void Program::set_debug_name(const string &name)
{
#ifdef DEBUG