亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cwgl.h

?? 這是一個用于生成等值線的源代碼
?? H
字號:

#ifndef _CWGL_H_
#define _CWGL_H_
/*
#include "gl/gl.h"
#include "gl/glu.h"
#ifndef OGLTOOLS_EXT_CLASS
	#ifdef _OGLTOOLS_DLL
		#define OGLTOOLS_EXT_CLASS _declspec(dllexport)
	#else
		#define OGLTOOLS_EXT_CLASS _declspec(dllimport)
	#endif
#endif
*/
#define	WGL_DONT_SWAP_BUFFERS	true
#define WGL_FONTS_LISTBASE		1000




// define group
/*!
	\defgroup OGLToolsGroup OGLTools Library : OpenGL Tools for MFC
*/

/*! \brief A Windows OpenGL rendering interface class. 

\ingroup OGLToolsGroup
CWGL is a Windows OpenGL rendering interface class.
This header defines also a few interfaceing wgl_ inlines.
 
The idea behing the CWGL is to make use
of OpenGL in Microsoft Windows as simple as possible.
 
Under Windows only one OpenGL rendering context may be active 
in a single thread. CWGL helps you write a single threaded 
windows applications which need more than one OpenGL 
rendering context.
 
\b Usage:
 
<ol>
<il> Optionaly, set different pixelformat if you are
      not satisfied with CWGL's default one.
 
<li> Enable OpenGL telling it where it should render.
 
 \code		wgl.Begin(&windowOrBitmapDC); \endcode
 
<li> Call OpenGL API functions to do the rendering.
 
<li> Disable OpenGL, first optionaly showing the rendered image.
 
\code       wgl.End(); \endcode
</ol> 
 
\b Examples:
 
In MFC view, render to window's backbuffer and swap buffers.

\code  
	CView.h
		CWGL m_wgl;
 
	CView.cpp
 		CView::OnDraw(pDC)
 		{
 			m_wgl.Begin(pDC);
 				glClearColor(1.0, 1.0, 1.0, 0.0);
 				glClear(GL_COLOR_BUFFER_BIT);
 			m_wgl.End();
 		}
\endcode
 
Render on DIB section GDI object and copy it to clipboard.
  
\code
	CRGBSurface tmpSurf;	// CRGBSurface encapsulates a DIB section GDI object
 	tmpSurf.Create(10, 10);
 
 	CWGL wgl;
 	wgl.Begin(tmpSurf.GetDC());
 		glClearColor(1.0, 1.0, 1.0, 0.0)
 		glClear(GL_COLOR_BUFFER_BIT);
 	wgl.End();
 
 	tmpSurf.CopyToClipboard();
\endcode 
 
Rendering contexts may be 'nested' if different
CWGL objects are used,
but remember that only one RC can be created for one window.

\code 
	wgl1.Begin(&windowDC);
	{
		CWGL wgl2;
		wgl2.Begin(&bitmapDC);
		wgl2.End();
		// here wgl2 destructor delete's wgl2 RC and makes
		// wgl1 RC current again.
	}
	// here all the display lists and textures of wgl1 RC
	// remain valid
	wgl1.End(); 
\endcode

If you need an RC for a window for which you
no longer have a device context available,
you may call wgl.Begin() with no DC
to make last used RC of this window current again.

\code
	wgl.Begin(&windowDC);
	wgl.End(); 
	...

	// some time in the future...
	wgl.Begin();
	wgl.End(); 
\endcode

After a call to CWGL::End() you may ask what the
rendering time was with GetRenderingTime().


NOTES: 

When rendering on different DIB sections or bitmaps, a new RC with
PFD_DRAW_TO_BITMAP pixelformat is always created for that bitmap.

WindowsNT: CWGL synchronizes GDI and OpenGL access to
rendering surface automaticaly.

When switching RC's of different pixelformats with CWGL,
all textures and display lists must be recreated in a new RC.
Display list sharing is possible when RCs are of the same pixelformat
(this means also that you cannot share between window and bitmap RC).

Please also note that under Windows only one RC 
may be created for a given window and this RC cannot be
used for another window.

\sa CGLImage
\sa CRGBSurface
\author (c) W.Weyna 'Voytec', http://shiptech.tuniv.szczecin.pl/~weyna/OpenGL/
\author Independent JPEG library : http://www.ijg.org
*/
class OGLTOOLS_EXT_CLASS CWGL
{
public:
	CWGL();
	virtual ~CWGL();

// Attributes
public:
	/*! \name Attributes */
	//@{
	//! TRUE if a new RC has been created.
	bool	NewRCCreated() {return m_bNewRCCreated; }
	//! Rendering time
	DWORD	GetRenderingTime() {return m_dwRenderingTime; }
	//! Pointer to DC	
	CDC*	GetRenderingDC() {return m_pDC; }
	//! true if rendering to bitmap.
	bool	RenderingToBitmap() {return m_pDC ? false : true;}
	//! true if full screen mode	
	bool	IsFullScreen() {return m_bFullScreen; }
	//! returns window width (in pixels)
	int		GetFSWidth() {return m_windowRect.Width(); }
	//! returns window height (in pixels)
	int		GetFSHeight() {return m_windowRect.Height(); }
	//@}
protected:
	CDC*	m_pDC;
	CDC*	m_pBitmapDC;
	CWnd*	m_pWnd;
	HWND	m_hWnd;
	HGLRC	m_hWndRC;
	HGLRC	m_hFSWndRC;
	HGLRC	m_hBmpRC;
	HDC		m_hPrevDC;
	HGLRC	m_hPrevRC;
	bool    m_bNewRCCreated;
	bool    m_bWeCreatedDC;

	DWORD	m_dwRenderingTime;
	DWORD	m_dwStartRenderingTime;

	LOGFONT m_defaultLogfont;
	CFont	m_defaultFont;

	LOGFONT m_currentLogfont;
	CFont	m_currentFont;

	CFont*	m_pFont;

	HWND	m_hFSWnd;
	HWND	m_hViewWnd;
	CView*	m_pView;
	bool	m_bFullScreen;
	int		m_nMode;
	CRect	m_windowRect;
	
// Operations
public:
	/*! \name Operations: */
	//@{
	bool Begin(CDC* pDC = NULL);
	void End(bool m_bDontSwapBuffers = false);
	bool FullScreen(int nMode = -1, CView* pView = NULL); 
	void TextOut(const CString& str);
	//@}
// Helpers
public:
	/*! \name Helpers */
	//@{
	DWORD GetTimeDif(DWORD dwStartTime);
	//@}	
protected:
	bool SetPixelFormat(CDC* pDC, DWORD dwFlags = 
		                   PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER,
						int nBitsPerPixel = 24);
	void CompileFonts();
};

inline BYTE GetAValue(DWORD rgb)  {    return (BYTE)((rgb)>>24); }

inline void wgl_ClearColorCR(COLORREF cr, float fAlpha = 1.0)
{
	glClearColor(GetRValue(cr)/255.0f, GetGValue(cr)/255.0f, GetBValue(cr)/255.0f, fAlpha);
}

inline void wgl_ColorCR(COLORREF cr, float fAlpha = 1.0, float fBrightness = 1.0)
{
	glColor4f(fBrightness * GetRValue(cr)/255.0f, fBrightness * GetGValue(cr)/255.0f, fBrightness * GetBValue(cr)/255.0f, fAlpha);
}

inline void wgl_ColorCRA(COLORREF cr)
{
	glColor4f(GetRValue(cr)/255.0f, GetGValue(cr)/255.0f, GetBValue(cr)/255.0f, GetAValue(cr)/255.0f);
}

inline void wgl_ColorCRB(COLORREF cr, float fAlpha = 1.0, int nBrightness = 0)
{
	float fBrightness = 1.0;
	switch(nBrightness)
	{
	case 0:
		fBrightness = 1.0;
		break;
	case 1:
		fBrightness = 0.85f;
		break;
	case 2:
		fBrightness = 1.15f;
		break;
	}

	glColor4f(fBrightness * GetRValue(cr)/255.0f, fBrightness * GetGValue(cr)/255.0f, fBrightness * GetBValue(cr)/255.0f, fAlpha);
}


#ifdef _DEBUG
inline bool wgl_ErrorCheck()
{
	GLenum errCode;
	if((errCode = glGetError()) != GL_NO_ERROR)
	{
		AfxMessageBox((char*)gluErrorString(errCode));
		ASSERT(0);
		return false;
	}
	return true;
}
#else
	inline bool wgl_ErrorCheck() {return glGetError() == GL_NO_ERROR; }
#endif

#endif
//////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本女人一区二区三区| 国产亚洲综合色| 午夜久久久久久久久| 欧美天堂亚洲电影院在线播放| 一区二区三区欧美亚洲| 欧美午夜理伦三级在线观看| 日韩极品在线观看| 26uuu精品一区二区在线观看| 国产成人免费在线观看不卡| 国产精品二三区| 欧美三级电影一区| 奇米影视7777精品一区二区| 精品久久久久久最新网址| 国产jizzjizz一区二区| 日韩毛片一二三区| 91精品国产色综合久久不卡电影| 国模无码大尺度一区二区三区| 国产日韩精品久久久| 色综合久久久久综合体| 日本va欧美va瓶| 中文字幕二三区不卡| 欧美私模裸体表演在线观看| 精品夜夜嗨av一区二区三区| 1024成人网| 日韩视频免费观看高清完整版| 国产精品一区在线观看乱码| 一二三四社区欧美黄| 精品久久久久99| 91蜜桃传媒精品久久久一区二区| 天堂影院一区二区| 国产精品乱人伦| 欧美一区二区女人| av一区二区久久| 久久精品国产免费看久久精品| 专区另类欧美日韩| 精品国产乱子伦一区| 91色在线porny| 久久激五月天综合精品| 一区二区三区日韩在线观看| 久久午夜国产精品| 欧美久久免费观看| 99久久99久久久精品齐齐| 免费看黄色91| 亚洲午夜视频在线| 国产精品国产自产拍高清av | 国产中文一区二区三区| 亚洲男人都懂的| 国产蜜臀97一区二区三区| 4438x亚洲最大成人网| 91免费视频观看| 成人在线综合网站| 九九九久久久精品| 日韩不卡手机在线v区| 一个色妞综合视频在线观看| 国产精品国产精品国产专区不蜜| 久久综合一区二区| 日韩视频在线永久播放| 欧美日韩一区二区电影| 色噜噜狠狠一区二区三区果冻| 高清shemale亚洲人妖| 激情欧美日韩一区二区| 免费在线看一区| 日本网站在线观看一区二区三区| 亚洲最大成人综合| 亚洲蜜桃精久久久久久久| 久久精品亚洲精品国产欧美| 久久综合久色欧美综合狠狠| 日韩免费一区二区| 91精品久久久久久蜜臀| 8x8x8国产精品| 欧美日韩黄视频| 777午夜精品视频在线播放| 欧美日韩精品一区二区天天拍小说| 91丨porny丨首页| 91亚洲精华国产精华精华液| 91视频观看视频| 97se亚洲国产综合在线| 成人天堂资源www在线| 国产精品一区不卡| 国产成人免费在线视频| 国产 日韩 欧美大片| 福利电影一区二区| 国产91在线观看| 91片在线免费观看| 在线观看网站黄不卡| 欧美亚洲一区二区在线观看| 欧美色倩网站大全免费| 欧美美女视频在线观看| 日韩欧美一级二级| 久久天堂av综合合色蜜桃网| 国产日韩精品久久久| 18成人在线观看| 亚洲高清三级视频| 免费成人在线观看视频| 国产福利一区在线| 91丨国产丨九色丨pron| 欧美日韩一区二区三区高清| 日韩欧美激情四射| 国产精品天干天干在观线| 亚洲精选免费视频| 奇米在线7777在线精品| 国产精品99久久不卡二区| 91视频免费播放| 91精品国产综合久久福利软件 | 久久亚洲影视婷婷| 国产精品福利影院| 天堂va蜜桃一区二区三区漫画版| 老司机精品视频导航| 成人美女视频在线观看| 欧美少妇一区二区| 久久精品一区八戒影视| 亚洲欧美偷拍三级| 免费成人美女在线观看.| 夫妻av一区二区| 欧美人与z0zoxxxx视频| 久久综合久久99| 亚洲在线观看免费| 国产精品综合在线视频| 欧美日韩在线综合| 国产欧美精品一区二区色综合| 亚洲一区在线电影| 国产不卡免费视频| 欧美日韩精品一区二区三区蜜桃 | 在线播放国产精品二区一二区四区| 精品裸体舞一区二区三区| 亚洲人精品午夜| 国产麻豆视频精品| 欧美日韩久久一区| 最近日韩中文字幕| 国产精品一二三区| 4438成人网| 亚洲日本中文字幕区| 国产一区二区三区国产| 欧美日韩高清一区二区| 中文字幕一区二区三| 国内精品自线一区二区三区视频| 在线日韩av片| 国产精品久久久久久久浪潮网站 | 一区二区在线看| 国产乱淫av一区二区三区| 欧美日韩国产不卡| 亚洲柠檬福利资源导航| 国产成人午夜精品影院观看视频| 91精品国产品国语在线不卡| 亚洲免费在线视频一区 二区| 国产成人午夜片在线观看高清观看| 91精品久久久久久久久99蜜臂| 亚洲在线中文字幕| 色综合婷婷久久| 国产精品国产成人国产三级| 国产精品一区二区久激情瑜伽| 日韩一级高清毛片| 免费视频一区二区| 欧美蜜桃一区二区三区| 亚洲午夜在线电影| 欧美伊人久久久久久久久影院 | 6080日韩午夜伦伦午夜伦| 亚洲精品中文字幕在线观看| 成人福利视频网站| 欧美国产日韩a欧美在线观看 | 欧美精品久久久久久久久老牛影院| 日韩美女啊v在线免费观看| 成人免费视频免费观看| 国产清纯在线一区二区www| 国产精品白丝jk白祙喷水网站| 久久婷婷国产综合国色天香| 久久爱www久久做| 精品国产91亚洲一区二区三区婷婷| 天堂成人免费av电影一区| 91精品国产一区二区三区| 日日骚欧美日韩| 欧美一区二区精品久久911| 日本va欧美va精品发布| 日韩美女一区二区三区| 黄一区二区三区| 国产视频一区二区在线观看| 国产精品18久久久久| 欧美国产1区2区| 91亚洲国产成人精品一区二区三| 日韩一区在线看| 在线免费观看不卡av| 五月开心婷婷久久| 精品久久久久久无| 成人综合在线网站| 亚洲欧美激情小说另类| 欧美性做爰猛烈叫床潮| 麻豆91在线看| 中文字幕不卡在线播放| 色香蕉久久蜜桃| 视频一区视频二区中文字幕| 久久综合色婷婷| 91色视频在线| 青娱乐精品在线视频| 久久精品欧美一区二区三区不卡| 9l国产精品久久久久麻豆| 午夜精品在线看| 国产亚洲美州欧州综合国| 91同城在线观看| 蜜芽一区二区三区| 国产精品不卡在线|