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


//	ogl3d.h 
// 
 
#ifndef OGL3D_INCLUDE_H_ 
#define OGL3D_INCLUDE_H_ 
 
#include  
#include  
 
class OGL3D : public GLView3D { 
public: 
	enum OGL3DDrawModes { 
		DrawLines, 
		DrawTriangles 
	}; 
private: // initialization 
	void InitOGL3D(void) 
	{ 
		m_model_built = 0; 
		m_draw_mode = DrawTriangles; 
		m_have_texture = 0; 
	} 
protected: // data 
	int m_model_built; 
	int m_have_texture; 
	OGL3DDrawModes m_draw_mode; 
	DIBSection m_texture_dib; 
protected: // methods 
	void GenTexture(DIBSection& dib); 
public: 
	OGL3D(void); 
	~OGL3D(void); 
	virtual void RenderPrimaryImage(void); 
	void SetDrawingMode(OGL3DDrawModes mode){ m_draw_mode = mode;} 
	OGL3DDrawModes GetDrawingMode(void)const{ return m_draw_mode;} 
	void RebuildModel(void){ m_model_built = 0;} 
	int HaveTexture(void)const{ return m_have_texture;} 
	void SetTexture(DIBSection& dib); 
	DIBSection * GetTextureDIB(void){ return &m_texture_dib;} 
}; 
 
class SolarSystem3D : public GLView3D { 
protected: 
	DIBSection m_earth_texture; 
	DIBSection m_jupiter_texture; 
	DIBSection m_mars_texture; 
	DIBSection m_saturn_texture; 
	int m_model_built; 
	OGL3D::OGL3DDrawModes m_draw_mode; 
protected: 
	void RenderSun(void); 
	void RenderMercury(void); 
	void RenderVenus(void); 
	void RenderEarth(void); 
	void RenderMars(void); 
	void RenderJupiter(void); 
	void RenderSaturn(void); 
	void RenderUranus(void); 
	void RenderNeptune(void); 
	void RenderPluto(void); 
	void RenderTexturedSphere(DIBSection& dib, double radius); 
	void RenderColoredSphere(COLORREF cr, double radius); 
 
	void GenTexture(DIBSection& dib, DIBSection& texture_dib); 
public: 
	SolarSystem3D(void); 
	~SolarSystem3D(void); 
	virtual void RenderPrimaryImage(void); 
	void RebuildModel(void){ m_model_built = 0;} 
	void SetDrawingMode(OGL3D::OGL3DDrawModes mode){ m_draw_mode = mode;} 
	OGL3D::OGL3DDrawModes GetDrawingMode(void)const{ return m_draw_mode;} 
	int PickPlanet(int x, int y, CString& msg); 
}; 
 
#endif