00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef opengl_CSetOfTexturedTriangles_H
00029 #define opengl_CSetOfTexturedTriangles_H
00030
00031 #include <mrpt/opengl/CTexturedObject.h>
00032
00033 namespace mrpt
00034 {
00035 namespace opengl
00036 {
00037 class OPENGL_IMPEXP CSetOfTexturedTriangles;
00038
00039
00040 DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE( CSetOfTexturedTriangles, CTexturedObject, OPENGL_IMPEXP )
00041
00042
00043
00044
00045
00046 class OPENGL_IMPEXP CSetOfTexturedTriangles : public CTexturedObject
00047 {
00048 DEFINE_SERIALIZABLE( CSetOfTexturedTriangles )
00049
00050 public:
00051
00052
00053 struct OPENGL_IMPEXP TVertex
00054 {
00055
00056
00057 TVertex( ) :
00058 m_x(0.0), m_y(0.0), m_z(0.0), m_u(0), m_v(0) { }
00059
00060
00061 TVertex(float x, float y, float z, unsigned int u, unsigned int v) :
00062 m_x(x), m_y(y), m_z(z), m_u(u), m_v(v) { }
00063
00064
00065 float m_x, m_y, m_z;
00066
00067
00068 unsigned int m_u, m_v;
00069 };
00070
00071
00072
00073 struct OPENGL_IMPEXP TTriangle
00074 {
00075
00076
00077 TTriangle( ) :
00078 m_v1(), m_v2(), m_v3() { }
00079
00080
00081 TTriangle(TVertex v1, TVertex v2, TVertex v3) :
00082 m_v1(v1), m_v2(v2), m_v3(v3) { }
00083
00084
00085 TVertex m_v1, m_v2, m_v3;
00086 };
00087
00088 protected:
00089
00090
00091
00092 std::vector<TTriangle> m_triangles;
00093
00094 public:
00095 void clearTriangles( ) { m_triangles.clear(); }
00096 size_t getTrianglesCount( ) const { return m_triangles.size(); }
00097 void getTriangle( size_t idx, TTriangle &t ) const { ASSERT_(idx<m_triangles.size()); t = m_triangles[idx]; }
00098 void insertTriangle( const TTriangle &t ) { m_triangles.push_back(t); }
00099
00100
00101
00102 void render( ) const;
00103
00104
00105
00106 virtual bool traceRay( const mrpt::poses::CPose3D &o,double &dist ) const;
00107
00108 private:
00109
00110
00111 CSetOfTexturedTriangles( ) : m_triangles()
00112 { }
00113
00114
00115 virtual ~CSetOfTexturedTriangles();
00116 };
00117
00118 }
00119
00120 }
00121
00122 #endif