www.pudn.com > opengl_pick_sample.rar > glview.h


// glview.h 
// 
 
#ifndef GLVIEW_3D_IMAGE_INCLUDE 
#define GLVIEW_3D_IMAGE_INCLUDE 
 
#include  
#include "matrix3d.h" 
 
void ComputeNormalVector(double p1[3], double p2[3], 
				  double p3[3], double n[3]); 
void NormalVector(GLdouble p1[3], GLdouble p2[3], 
				  GLdouble p3[3], GLdouble n[3]); 
 
class GLView3D { 
	void InitImage(void) 
	{ 
		m_hGLContext = 0; 
		m_IsInitialized = 0; 
		m_red_bg = m_green_bg = m_blue_bg = 0.0; 
	} 
	void InitGeometry(void); 
protected: 
		// OpenGL specific 
	BOOL SetWindowPixelFormat(HDC hDC); 
	BOOL SetImagePixelFormat(HDC hDC); 
	void MakeImageCurrent(HDC hDC) 
	{ 
		wglMakeCurrent(hDC,m_hGLContext); 
	} 
	BOOL CreateImageGLContext(HDC hDC); 
	int  CreateView(void); 
	void InitializeOpenGL(void); 
 
	void PushMatrixValues(void); 
	void PopMatrixValues(void); 
 
protected: 
	  // OpenGL attributes 
	HGLRC m_hGLContext; 
	int m_IsInitialized; 
	int m_GLPixelIndex; 
 
	DIBSection m_dib; 
	Matrix3D m_view_matrix; 
	Matrix3D m_model_matrix; 
	Matrix3D m_saved_matrix; 
 
	double m_red_bg; // colors between 0 and 1 
	double m_green_bg; 
	double m_blue_bg; 
public: 
	GLView3D(void); 
	virtual ~GLView3D(void); 
 
	DIBSection * GetDIB(void){ return &m_dib;} 
 
	void CreateImage(UINT32 width, UINT32 height); 
	void SizeImage(UINT32 width, UINT32 height); 
 
	virtual void RenderImage(void); 
	virtual void RenderPrimaryImage(void); 
 
	virtual void DrawImage(CWnd * wnd); 
 
	int IsInitialized(void)const{ return m_IsInitialized;} 
 
	void SetViewState(const Matrix3D& matrix); 
	Matrix3D& GetViewState(void){ return m_view_matrix;} 
 
	void SetModelState(const Matrix3D& matrix){ m_model_matrix = matrix;} 
	Matrix3D& GetModelState(void){ return m_model_matrix;} 
 
	void SetSavedState(const Matrix3D& matrix); 
	Matrix3D& GetSavedState(void){ return m_saved_matrix;} 
 
	void SetBackgroundColor(double r, double g, double b); 
}; 
 
#endif