ogl3d.h
上传用户:lbr_007
上传日期:2019-05-31
资源大小:282k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. // ogl3d.h
  2. //
  3. #ifndef OGL3D_INCLUDE_H_
  4. #define OGL3D_INCLUDE_H_
  5. #include <glview.h>
  6. #include <dibsect.h>
  7. class OGL3D : public GLView3D {
  8. public:
  9. enum OGL3DDrawModes {
  10. DrawLines,
  11. DrawTriangles
  12. };
  13. private: // initialization
  14. void InitOGL3D(void)
  15. {
  16. m_model_built = 0;
  17. m_draw_mode = DrawTriangles;
  18. m_have_texture = 0;
  19. }
  20. protected: // data
  21. int m_model_built;
  22. int m_have_texture;
  23. OGL3DDrawModes m_draw_mode;
  24. DIBSection m_texture_dib;
  25. protected: // methods
  26. void GenTexture(DIBSection& dib);
  27. public:
  28. OGL3D(void);
  29. ~OGL3D(void);
  30. virtual void RenderPrimaryImage(void);
  31. void RenderSpecialEffects(void);
  32. void RenderEarthImage(void);
  33. void SetDrawingMode(OGL3DDrawModes mode){ m_draw_mode = mode;}
  34. OGL3DDrawModes GetDrawingMode(void)const{ return m_draw_mode;}
  35. void RebuildModel(void){ m_model_built = 0;}
  36. int HaveTexture(void)const{ return m_have_texture;}
  37. void SetTexture(DIBSection& dib);
  38. DIBSection * GetTextureDIB(void){ return &m_texture_dib;}
  39. void RenderFunction(void);
  40. void RenderPath(void);
  41. void RenderPlane(void);
  42. void RenderGlobe();
  43. void RenderCylinder();
  44. void RenderCone();
  45. void RenderRectangle();
  46. };
  47. class SolarSystem3D : public GLView3D {
  48. protected:
  49. DIBSection m_earth_texture;
  50. DIBSection m_jupiter_texture;
  51. DIBSection m_mars_texture;
  52. DIBSection m_saturn_texture;
  53. int m_model_built;
  54. OGL3D::OGL3DDrawModes m_draw_mode;
  55. protected:
  56. void RenderSun(void);
  57. void RenderMercury(void);
  58. void RenderVenus(void);
  59. void RenderEarth(void);
  60. void RenderMars(void);
  61. void RenderJupiter(void);
  62. void RenderSaturn(void);
  63. void RenderUranus(void);
  64. void RenderNeptune(void);
  65. void RenderPluto(void);
  66. void RenderTexturedSphere(DIBSection& dib, double radius);
  67. void RenderColoredSphere(COLORREF cr, double radius);
  68. void GenTexture(DIBSection& dib, DIBSection& texture_dib);
  69. public:
  70. SolarSystem3D(void);
  71. ~SolarSystem3D(void);
  72. virtual void RenderPrimaryImage(void);
  73. void RebuildModel(void){ m_model_built = 0;}
  74. void SetDrawingMode(OGL3D::OGL3DDrawModes mode){ m_draw_mode = mode;}
  75. OGL3D::OGL3DDrawModes GetDrawingMode(void)const{ return m_draw_mode;}
  76. int PickPlanet(int x, int y, CString& msg);
  77. };
  78. #endif