void attribute(unsigned, const std::string &);
void fragment_shader(const std::string &);
void attribute(unsigned, const std::string &);
void fragment_shader(const std::string &);
void attach_shader(Shader &shader);
void attach_shader_owned(Shader *shader);
void detach_shader(Shader &shader);
void attach_shader(Shader &shader);
void attach_shader_owned(Shader *shader);
void detach_shader(Shader &shader);
void bind_attribute(unsigned, const std::string &);
void bind_attribute(VertexComponent, const std::string &);
void bind_attribute(unsigned, const std::string &);
void bind_attribute(VertexComponent, const std::string &);