⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opengldc.h

📁 Visual C++CAD应用程序开发技术书籍的源代码
💻 H
字号:
// OpenGLDC.h: interface for the COpenGLDC class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_OPENGLDC_H__30E692A3_4129_11D4_B1EE_0010B539EBC0__INCLUDED_)
#define AFX_OPENGLDC_H__30E692A3_4129_11D4_B1EE_0010B539EBC0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "gl/gl.h"
#include "gl/glu.h"
#include "gl/glaux.h"

#include "camera.h"
#include "..\inc\GeomCalc\cadbase.h"

#define BUFFER_LENGTH 64

class AFX_EXT_CLASS COpenGLDC : public CObject  
{
public:
	COpenGLDC(HWND hWnd);
	virtual ~COpenGLDC();

private:
	HWND	m_hWnd;
	HGLRC	m_hRC;
	HDC		m_hDC;

	COLORREF	m_clrBk;		//Background Color
	COLORREF	m_clr;			//Polygon Color for unshading
	COLORREF	m_clrHighlight; //for highlight using
	COLORREF	m_clrMaterial;  //for normal rendering
	BOOL		m_bShading;		//use material property
	GLfloat		m_vecLight[3];	//lighting direction

	//selection
	BOOL	m_bSelectionMode;
	GLuint	m_selectBuff[BUFFER_LENGTH];
public:
	GCamera		m_Camera;
	GCamera		m_CameraPrev;

protected:
	void ClearBkground();
	void OnShading();

public:
	//initialize
	BOOL InitDC();
	void GLResize(int cx,int cy);
	void GLSetupRC();

	//uMode :zero for normal rendering. non-zero for selection
	void Ready();
	void Finish();

	/////////////////////// light & color //////////////////////
	void Shading(BOOL bShading);
	BOOL IsShading();

	void Lighting(BOOL bLighting);
	BOOL IsLighting();

	//Light direction
	void SetLightDirection(float dx,float dy,float dz);
	void GetLightDirection(float& dx,float& dy,float& dz);

	//material
	void SetMaterialColor(COLORREF clr);
	void GetMaterialColor(COLORREF& clr);
	
	//back ground
	void SetBkColor(COLORREF rgb);
	void GetBkColor(COLORREF& rgb);
	
	//frame material
	void SetColor(COLORREF rgb);
	void GetColor(COLORREF& rgb);

	//high light setting
	void SetHighlightColor(COLORREF clr);
	void GetHighlightColor(COLORREF& clr);
	void Highlight(BOOL bLight = TRUE);


	/////////////////// Drawing ////////////////////
	void DrawPoint(const CPoint3D&);

	//drawing curves
	void DrawCoord();

	void DrawLine(const CPoint3D& sp,const CPoint3D& ep);
	void DrawPolyline(const CPoint3D* pt,int size);
	
	//drawing surface
	void DrawTriChip(double n0,double n1,double n2,double v00,double v01,double v02,
					double v10,double v11,double v12,double v20,double v21,double v22);

	//drawing solid entities
	void DrawSphere(const CPoint3D& cen,double r,const CVector3D& vec);
	void DrawCylinder(const CPoint3D& cen,double r,const CVector3D& h);
	void DrawCone(const CPoint3D& cen,double r,const CVector3D& h);
	void DrawTorus(const CPoint3D& cen,const CVector3D& ax,double r_in,double r_out);

	//selection Mode
	void	BeginSelection(int xPos,int yPos);
	int		EndSelection(UINT* items);
	BOOL	IsSelectionMode();

	void	InitNames();
	void	LoadName(UINT name);
	void	PushName(UINT name);
	void    PopName();

};

class AFX_EXT_CLASS CGLView : public CView
{
protected:
	COpenGLDC*	m_pGLDC;

protected: // create from serialization only
	CGLView();
	DECLARE_DYNCREATE(CGLView)

// Attributes
public:
	virtual void RenderScene(COpenGLDC* pDC);

	// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CGLView)
	public:
	virtual void OnDraw(CDC* pDC);  // overridden to draw this view
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CGLView();

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CGLView)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnDestroy();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

	virtual BOOL GetBox(double& x0,double& y0,double& z0,double& x1,double& y1,double& z1);
	
	void	Zoom(double dScale);
	void	ZoomAll();
	void	OnViewType(UINT type);
};
#endif // !defined(AFX_OPENGLDC_H__30E692A3_4129_11D4_B1EE_0010B539EBC0__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -