1 #ifndef MSP_GL_PROGRAM_H_
2 #define MSP_GL_PROGRAM_H_
6 #include <msp/datafile/objectloader.h>
15 class Program: public Bindable<Program>
18 class Loader: public DataFile::ObjectLoader<Program>
24 virtual void finish();
26 void attribute(unsigned, const std::string &);
27 void fragment_shader(const std::string &);
29 void vertex_shader(const std::string &);
32 struct StandardFeatures
34 class Loader: public DataFile::ObjectLoader<StandardFeatures>
37 Loader(StandardFeatures &);
51 std::string create_flags() const;
64 std::list<Shader *> shaders;
65 std::list<Shader *> owned_data;
67 std::map<std::string, UniformInfo> uniforms;
71 Program(const StandardFeatures &);
72 Program(const std::string &, const std::string &);
78 void attach_shader(Shader &shader);
79 void attach_shader_owned(Shader *shader);
80 void detach_shader(Shader &shader);
81 void add_standard_shaders(const StandardFeatures &);
83 static std::string process_standard_source(const char **, const std::string &);
85 const std::list<Shader *> &get_shaders() const { return shaders; }
86 void bind_attribute(unsigned, const std::string &);
88 bool is_linked() const { return linked; }
89 std::string get_info_log() const;
91 int get_uniform_location(const std::string &) const;