MeshTransport.h
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:2k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. //############################################################
  2. // 
  3. // MeshTransport.h
  4. //
  5. // Matt Ginzton
  6. // Tue Feb  9 16:38:33 CET 1999
  7. //
  8. // Wrapper class for sending geometry information, as one or
  9. // more triangle meshes, from point a to b, managing memory
  10. // issues along the way.
  11. //
  12. //############################################################
  13. #ifndef _MESHTRANSPORT_H_
  14. #define _MESHTRANSPORT_H_
  15. #include <vector.h>
  16. #ifdef WIN32
  17. #       include "winGLdecs.h"
  18. #endif
  19. #include <GL/gl.h>
  20. #include "Pnt3.h"
  21. #include "Xform.h"
  22. #include "Bbox.h"
  23. #include "defines.h"
  24. class MeshTransport {
  25.  public:
  26.   MeshTransport();
  27.   ~MeshTransport();
  28.   
  29.   vector<const vector<Pnt3>*>  vtx;
  30.   vector< Xform<float> >       xf;
  31.   vector<Bbox>                 bbox;
  32.   vector<const vector<int>*>   tri_inds;
  33.   vector<const vector<uchar>*> color;
  34.   static const GLenum normal_type;
  35. #ifdef SCZ_NORMAL_FORCEFLOAT
  36.   vector<const vector<float>*> nrm;
  37. #else
  38.   vector<const vector<short>*> nrm;
  39. #endif
  40.   enum TransportMode { copy, share, steal };
  41.   void setVtx (const vector<Pnt3>* in, TransportMode mode,
  42.        const Xform<float>& xfBy = Xform<float>());
  43.   void setBbox (const Bbox& in);
  44.   void setNrm (const vector<short>* in, TransportMode mode);
  45.   void setTris (const vector<int>* in, TransportMode mode);
  46.   void setColor (const vector<uchar>* in, TransportMode mode);
  47.   void appendMT (MeshTransport* in,
  48.  const Xform<float>& xfBy = Xform<float>());
  49. #ifdef SCZ_NORMAL_FORCEFLOAT
  50.  private:
  51.   void setNrm (const vector<float>* in, TransportMode mode);
  52. #endif
  53.  private:
  54.   vector<bool> freeVtx;
  55.   vector<bool> freeNrm;
  56.   vector<bool> freeTris;
  57.   vector<bool> freeColor;
  58. };
  59. #endif // _MESHTRANSPORT_H_