1 #ifndef MSP_GL_TECHNIQUE_H_
2 #define MSP_GL_TECHNIQUE_H_
5 #include "rendermethod.h"
15 Ties multiple tagged render methods together.
20 class Loader: public Msp::DataFile::CollectionObjectLoader<Technique>
23 std::string inline_base_name;
25 static ActionMap shared_actions;
28 Loader(Technique &, Collection &);
30 virtual void init_actions();
33 void set_inline_base_name(const std::string &);
36 void inherit(const std::string &);
37 void method(const std::string &);
41 class InheritLoader: public Msp::DataFile::CollectionObjectLoader<Technique>
44 InheritLoader(Technique &, Collection &);
47 void material(const std::string &, const std::string &);
48 void texture(const std::string &, const std::string &);
52 std::map<Tag, RenderMethod> methods;
55 RenderMethod &add_method(Tag);
56 bool has_method(Tag) const;
57 const RenderMethod &get_method(Tag) const;
58 const RenderMethod *find_method(Tag) const;
59 const std::map<Tag, RenderMethod> &get_methods() const { return methods; }
60 bool replace_texture(const std::string &, const Texture &);
61 bool replace_material(const std::string &, const Material &);
62 bool replace_uniforms(const ProgramData &);
64 void set_debug_name(const std::string &);