SceneGraph3d.h
上传用户:hcfgz168
上传日期:2011-09-11
资源大小:116k
文件大小:2k
源码类别:

OpenGL

开发平台:

WINDOWS

  1. //********************************************
  2. // SceneGraph.h
  3. // class CSceneGraph
  4. //********************************************
  5. // pierre.alliez@cnet.francetelecom.fr
  6. // Created : 15/01/98
  7. // Modified : 26/05/98
  8. //********************************************
  9. #ifndef _SCENEGRAPH_3D_
  10. #define _SCENEGRAPH_3D_
  11. #include "Object3d.h"
  12. #include "Texture.h"
  13. #include "Material.h"
  14. #include "Array3d.h"
  15. class CSceneGraph3d
  16. {
  17. private :
  18. // Datas
  19. CArray3d<CObject3d> m_ArrayObject3d;
  20. CArray3d<CTexture>  m_ArrayTexture;
  21. CArray3d<CMaterial> m_ArrayMaterial;
  22. GLuint *m_pIndexTextureBinding;
  23. unsigned int m_ListDone;
  24. public :
  25. // Constructor
  26. CSceneGraph3d();
  27. ~CSceneGraph3d();
  28. // Datas
  29. void Add(CObject3d *pObject3d);
  30. void RemoveAt(int index);
  31. CObject3d *GetAt(int index);
  32. CObject3d *operator[](int index);
  33. int NbObject(void) { return m_ArrayObject3d.GetSize(); }
  34. void Free(void);
  35. // I/O
  36. int SaveFile(char *name);
  37. int SaveFileRaw(char *name);
  38. int WriteHeader(CStdioFile &file,char *name);
  39. // Misc
  40. int BuildAdjacency();
  41. int CalculateNormalPerVertex();
  42. int CalculateNormalPerFace();
  43. // Binding
  44. void SetNormalBinding(int type);
  45. void SetColorBinding(int type);
  46. // OpenGL
  47. virtual int glBuildList();
  48. void glDraw(void);
  49. void glDraw(int type);
  50. // Textures
  51. CArray3d<CTexture> *GetArrayTexture() { return &m_ArrayTexture; }
  52. int HasTexture(char *name,int *index);
  53. int NbTexture() { return m_ArrayTexture.GetSize(); }
  54. int AddTexture(CTexture *pTexture) { return m_ArrayTexture.Add(pTexture); }
  55. void RemoveAllTexture() { m_ArrayTexture.RemoveAll(); }
  56. void RemoveTexture(int index) { m_ArrayTexture.RemoveAt(index); }
  57. CTexture *GetTexture(int index) { return m_ArrayTexture[index]; }
  58. };
  59. #endif // _SCENEGRAPH_3D_