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

传真(Fax)编程

开发平台:

Visual C++

  1. // glview.h
  2. //
  3. #ifndef GLVIEW_3D_IMAGE_INCLUDE
  4. #define GLVIEW_3D_IMAGE_INCLUDE
  5. #include <dibsect.h>
  6. #include "matrix3d.h"
  7. #include "geo.h"
  8. void ComputeNormalVector(double p1[3], double p2[3],
  9.   double p3[3], double n[3]);
  10. void NormalVector(GLdouble p1[3], GLdouble p2[3],
  11.   GLdouble p3[3], GLdouble n[3]);
  12. class GLView3D {
  13. void InitImage(void)
  14. {
  15. m_hGLContext = 0;
  16. m_IsInitialized = 0;
  17. m_red_bg = m_green_bg = m_blue_bg = 1.0;
  18. m_reRender = true;
  19. m_pickMode = false;
  20. }
  21. void InitGeometry(void);
  22. protected:
  23. // OpenGL specific
  24. BOOL SetWindowPixelFormat(HDC hDC);
  25. BOOL SetImagePixelFormat(HDC hDC);
  26. void MakeImageCurrent(HDC hDC)
  27. {
  28. wglMakeCurrent(hDC,m_hGLContext);
  29. }
  30. BOOL CreateImageGLContext(HDC hDC);
  31. int  CreateView(void);
  32. void InitializeOpenGL(void);
  33. void PushMatrixValues(void);
  34. void PopMatrixValues(void);
  35. protected:
  36.   // OpenGL attributes
  37. HGLRC m_hGLContext;
  38. int m_IsInitialized;
  39. int m_GLPixelIndex;
  40. DIBSection m_dib;
  41. Matrix3D m_view_matrix;
  42. Matrix3D m_model_matrix;
  43. Matrix3D m_saved_matrix;
  44. double m_red_bg; // colors between 0 and 1
  45. double m_green_bg;
  46. double m_blue_bg;
  47. bool m_reRender;
  48. bool m_pickMode;
  49. INT32 m_pickX, m_pickY, m_pickID;
  50. public:
  51. GLView3D(void);
  52. virtual ~GLView3D(void);
  53. DIBSection * GetDIB(void){ return &m_dib;}
  54. void CreateImage(UINT32 width, UINT32 height);
  55. void SizeImage(UINT32 width, UINT32 height);
  56. virtual void RebuildImage(void){ m_reRender = true;}
  57. virtual void RenderImage(void);
  58. virtual void RenderPrimaryImage(void);
  59. virtual void SetOrientation(void);
  60. virtual void DrawImage(CWnd * wnd);
  61. int IsInitialized(void)const{ return m_IsInitialized;}
  62. void SetViewState(const Matrix3D& matrix);
  63. Matrix3D& GetViewState(void){ return m_view_matrix;}
  64. void SetModelState(const Matrix3D& matrix){ m_model_matrix = matrix;}
  65. Matrix3D& GetModelState(void){ return m_model_matrix;}
  66. void SetSavedState(const Matrix3D& matrix);
  67. Matrix3D& GetSavedState(void){ return m_saved_matrix;}
  68. void SetBackgroundColor(double r, double g, double b);
  69. void DrawCone(double * v, bool pointingOut = true);
  70. void PickObject(int x, int y, int& id);
  71. };
  72. #endif