00001 #ifndef TRIMESH_H_INCLUDED
00002 #define TRIMESH_H_INCLUDED
00003
00004 #include "CGLA/Vec3f.h"
00005 #include "CGLA/Vec3i.h"
00006 #include "Component.h"
00007 #include "Geometry/TriMesh.h"
00008 #include "Ressource.h"
00009 #include "includeGL.h"
00010
00011
00012 enum BasicShapeEnum{
00013 CUBE,
00014 SPHERE,
00015 PLANE
00016 };
00017
00018 using namespace CGLA;
00019
00020 namespace TR3D{
00021
00022 static const Vec3i NULL_FACE(-1,-1,-1);
00023
00024 class TriMesh:public Object, public Ressource{
00025 public :
00026 static const RTTI TYPE;
00027 virtual const RTTI& getType() const{ return TYPE; }
00028
00029 protected:
00030 Geometry::TriMesh mesh;
00031 GLuint VBOId;
00032 GLuint iVBOId;
00033 GLuint nVBOId;
00034 GLuint tVBOId;
00035 void createVBO();
00036
00037 public:
00038 TriMesh();
00039 TriMesh(const string& filename);
00040 TriMesh(BasicShapeEnum shape);
00041 ~TriMesh();
00042 virtual void sendVertices()const;
00043
00044 virtual void load(const string& name);
00045
00046 private:
00047
00048 friend class boost::serialization::access;
00049 template<class Archive>
00050 void serialize(Archive& ar, const unsigned int version){
00051
00052 ar & boost::serialization::base_object<Object>(*this);
00053 ar & ressourceName;
00054 }
00055 };
00056
00057 }
00058
00059 #endif