#ifndef MODEL_H #define MODEL_H #include "gl.h" #include #include #include #include #include #include namespace models { class Mesh { private: GLuint vbo; GLuint vertices; public: Mesh(const aiScene *scene, const aiMesh *mesh, std::map& scene_textures); virtual ~Mesh(); void render(); std::vector textures; }; class Model { public: typedef boost::shared_ptr p; virtual ~Model() {}; virtual void render() = 0; }; class Tree : public Model { private: Mesh *trunk; Mesh *leaves; public: Tree(const aiScene *scene, std::map& scene_textures); virtual ~Tree(); virtual void render(); }; class ModelManager { private: static ModelManager *model_mgr; std::map models; public: void add_model(const std::string name, Model::p model); Model::p get_model(const std::string name); static ModelManager& get_instance(); }; } #endif