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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gl_app.h

?? game programing code
?? H
字號:
//==============================================================
//==============================================================
//= gl_app.cpp =================================================
//= Original coder: Trent Polack (trent@voxelsoft.com)		   =
//==============================================================
//= Simple framework for an OpenGL application (Windows only.) =
//==============================================================
//==============================================================
#ifndef __GL_APP_H__
#define __GL_APP_H__

//--------------------------------------------------------------
//--------------------------------------------------------------
//- HEADERS AND LIBRARIES --------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <math.h>

#include <gl/gl.h>
#include <gl/glu.h>
#include "glext.h"

#include "log.h"
#include "timer.h"
#include "math_ops.h"


//--------------------------------------------------------------
//--------------------------------------------------------------
//- CONSTANTS --------------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
#define APP_CLASSNAME "window"

#define APP_IDLE   false
#define APP_ACTIVE true


//--------------------------------------------------------------
//--------------------------------------------------------------
//- CLASS ------------------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
class CGL_APP
{
	private:
		//the window's variables
		HINSTANCE m_hInstance;
		HWND	  m_hWnd;
		HDC		  m_hDC;
		HGLRC	  m_hRC;

		//extensions supported by OpenGL
		char* m_szSupportedGLExtensions;

		//font variables
		unsigned int m_uiFont;

		//timing variables
		CTIMER m_timer;

		//multitexturing variables
		int	 m_iNumTextureUnits;
		bool m_bCanMultitexture;

		//compiled vertex array (CVA) flag
		bool m_bCanCVA;

	static LRESULT CALLBACK WindowProc( HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam );

	public:
		//the window's variables
		static int m_iWidth;
		static int m_iHeight;
		static int m_iBPP;
		static WORD m_menuCommand;

		//input-related functions
		static int m_iMouseX, m_iMouseY;
		static int m_iMouseButton;
		static bool m_bKeys[256];

		static bool m_bChangeSize;
		static bool m_bActive;

	bool Init( int iX, int iY, int iWidth, int iHeight, int iBPP,  const char* szTitle, WORD icon= NULL, WORD menu= NULL );
	void Shutdown( void );

	bool CheckExtension( char* szExtensionName );

	//font routines
	void CreateTTFont( char* szFontName, int iSize );
	void DestroyFont( void );
	void Print( int iX, int iY, CVECTOR vecColor, char* szString, ... );
	void BeginTextMode( void );
	void EndTextMode( void );

	void BeginRendering( void );
	void EndRendering( void );

	void TakeScreenshot( char* szFilename );

	bool HandleMessages( void );

	//----------------------------------------------------------
	// Name:			CGL_APP::CreateDialogBox - public
	// Description:		Create (bring up) a dialog box
	// Arguments:		-resourceID: a handle to the resource ID of the dialog box
	//					-dlgProc: the dialog box's message processing function
	// Return Value:	None
	//----------------------------------------------------------
	inline void CreateDialogBox( WORD resourceID, DLGPROC dlgProc )
	{	DialogBox( m_hInstance, MAKEINTRESOURCE( resourceID ), m_hWnd, dlgProc );	}

	//----------------------------------------------------------
	// Name:			CGL_APP::GetHInstance - public
	// Description:		Get a "copy" of the class's hInstance member
	// Arguments:		None
	// Return Value:	The class's HINSTANCE variable
	//----------------------------------------------------------
	inline HINSTANCE GetHInstance( void )
	{	return m_hInstance;	}

	//----------------------------------------------------------
	// Name:			CGL_APP::GetHWnd - public
	// Description:		Get a "copy" of the class's hWnd member
	// Arguments:		None
	// Return Value:	The class's HWND variable
	//----------------------------------------------------------
	inline HWND GetHWnd( void )
	{	return m_hWnd;	}

	//----------------------------------------------------------
	// Name:			CGL_APP::MenuDown - public
	// Description:		Check to see if a menu item has been selected
	// Arguments:		-ID: The menu item to check for
	// Return Value:	A boolean variable: -true: the menu item has been selected
	//										-false: the menu item has not been selected
	//----------------------------------------------------------
	inline bool MenuDown( WORD ID )
	{	return ( m_menuCommand==ID );	}

	//----------------------------------------------------------
	// Name:			CGL_APP::KeyDown - public
	// Description:		Check to see if a key on the keyboard is down
	// Arguments:		-ucKey: The key to check for
	// Return Value:	A boolean variable: -true: the key is down
	//										-false: the key is up
	//----------------------------------------------------------
	inline bool KeyDown( unsigned char ucKey )
	{	return m_bKeys[ucKey];	}

	//----------------------------------------------------------
	// Name:			CGL_APP::KeyUp - public
	// Description:		Check to see if a key on the keyboard is up
	// Arguments:		-ucKey: The key to check for
	// Return Value:	A boolean variable: -true: the key is up
	//										-false: the key is down
	//----------------------------------------------------------
	inline bool KeyUp( unsigned char ucKey )
	{	return !m_bKeys[ucKey];	}

	//----------------------------------------------------------
	// Name:			CGL_APP::GetMouseX - public
	// Description:		Get the X coordinate of the mouse's position
	// Arguments:		None
	// Return Value:	An int value: the mouse's X coordinate
	//----------------------------------------------------------
	inline int GetMouseX( void )
	{	return m_iMouseX;	}

	//----------------------------------------------------------
	// Name:			CGL_APP::GetMouseY - public
	// Description:		Get the Y coordinate of the mouse's position
	// Arguments:		None
	// Return Value:	An int value: the mouse's Y coordinate
	//----------------------------------------------------------
	inline int GetMouseY( void )
	{	return m_iMouseY;	}

	//----------------------------------------------------------
	// Name:			CGL_APP::MouseDown - public
	// Description:		Check to see if a button on the mouse is down
	// Arguments:		-button: The button to check for
	// Return Value:	A boolean variable: -true: the button is down
	//										-false: the button is up
	//----------------------------------------------------------
	inline bool MouseDown( WORD button )
	{
		if( m_iMouseButton & button )
			return true;
		else
			return false;
	}

	//----------------------------------------------------------
	// Name:			CGL_APP::MouseUp - public
	// Description:		Check to see if a button on the mouse is up
	// Arguments:		-button: The button to check for
	// Return Value:	A boolean variable: -true: the button is up
	//										-false: the button is down
	//----------------------------------------------------------
	inline bool MouseUp( WORD button )
	{
		if( m_iMouseButton & button )
			return false;
		else
			return true;
	}

	//----------------------------------------------------------
	// Name:			CGL_APP::GetFPS - public
	// Description:		Get the number of frames per second
	// Arguments:		None
	// Return Value:	A floating-point value: the number of frames
	//											per second.
	//----------------------------------------------------------
	inline float GetFPS( void )
	{	return m_timer.GetFPS( );	}

	//----------------------------------------------------------
	// Name:			CGL_APP::CGL_APP - public
	// Description:		Check to see if the application is active or not
	// Arguments:		None
	// Return Value:	A boolean variable: -true: the application is active
	//										-false: the application is inactive
	//----------------------------------------------------------
	inline bool IsActive( void )
	{	return m_bActive;	}

	//----------------------------------------------------------
	// Name:			CGL_APP::CanMultitexture - public
	// Description:		Check to see if we can or cannot use hardware multitexturing
	// Arguments:		None
	// Return Value:	A boolean variable: -true: can use multitexturing
	//										-false: cannot use multitexturing
	//----------------------------------------------------------
	inline bool CanMultitexture( void )
	{	return m_bCanMultitexture;	}

	//----------------------------------------------------------
	// Name:			CGL_APP::CGL_APP - public
	// Description:		Default constructor
	// Arguments:		None
	// Return Value:	None
	//----------------------------------------------------------
	CGL_APP(void)
	{	}

	//----------------------------------------------------------
	// Name:			CGL_APP::~CGL_APP - public
	// Description:		Default destructor
	// Arguments:		None
	// Return Value:	None
	//----------------------------------------------------------
	~CGL_APP(void)
	{	}
};


//--------------------------------------------------------------
//--------------------------------------------------------------
//- MACROS -----------------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
#define MIN( a, b )  ( ( ( a )<( b ) )?( a ):( b ) )
#define MAX( a, b )  ( ( ( a )<( b ) )?( b ):( a ) )

#define RANDOM_FLOAT		( ( ( float )rand( ) )/RAND_MAX )
#define CLAMP(x, min, max)	( ( x= ( x<min  ? min : x<max ? x : max ) ) )
#define SWAP_ROWS(a, b)		{	float *tmp= a;	a= b;	b= tmp;	}


//--------------------------------------------------------------
//--------------------------------------------------------------
//- DECLARATIONS -----------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
void ResizeScene( int iWidth, int iHeight );

extern PFNGLACTIVETEXTUREARBPROC	   glActiveTextureARB;
extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
extern PFNGLMULTITEXCOORD2FARBPROC	   glMultiTexCoord2fARB;
extern PFNGLMULTITEXCOORD2DARBPROC     glMultiTexCoord2dARB;

extern PFNGLLOCKARRAYSEXTPROC   glLockArraysEXT;
extern PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT;

extern PFNGLFOGCOORDFEXTPROC glFogCoordfEXT;

#endif	//__GL_APP_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美黑人一区二区三区| 日韩毛片在线免费观看| 日本一二三四高清不卡| 亚洲精品视频一区| 国产在线精品一区二区不卡了| 91丝袜呻吟高潮美腿白嫩在线观看| 久久久久国色av免费看影院| 亚洲午夜免费视频| av在线一区二区三区| 精品少妇一区二区三区在线视频| 自拍偷拍亚洲欧美日韩| 国产一区二区免费在线| 欧美精品xxxxbbbb| 亚洲精品乱码久久久久久黑人 | 亚洲国产中文字幕| 国产精品亚洲午夜一区二区三区| 欧美日韩美女一区二区| 亚洲欧美日韩在线| 99热在这里有精品免费| 久久精品亚洲麻豆av一区二区 | 久久精品人人做人人综合 | 精品国产一区二区三区四区四 | 成人av电影在线观看| 欧美精品一区二区三区蜜臀| 日本v片在线高清不卡在线观看| 色屁屁一区二区| 专区另类欧美日韩| av一区二区三区四区| 国产精品久久久久精k8| 国产大陆a不卡| 久久精品网站免费观看| 国产成人亚洲精品青草天美| 亚洲精品午夜久久久| 本田岬高潮一区二区三区| 日本一区免费视频| 成人av在线播放网址| 中文字幕亚洲精品在线观看| av电影一区二区| 亚洲人成精品久久久久| 在线亚洲欧美专区二区| 亚洲国产日产av| 欧美丰满美乳xxx高潮www| 日韩黄色片在线观看| 69av一区二区三区| 紧缚捆绑精品一区二区| 欧美精品一区视频| 成人久久18免费网站麻豆 | 日韩av不卡一区二区| 欧美一区日韩一区| 日韩av中文在线观看| 欧美一级搡bbbb搡bbbb| 韩国精品主播一区二区在线观看| 26uuu色噜噜精品一区二区| 国产精品资源在线观看| 国产精品女主播av| 在线视频国产一区| 日本三级韩国三级欧美三级| 337p日本欧洲亚洲大胆色噜噜| 国产成人精品免费视频网站| 日韩美女视频19| 欧美精品免费视频| 国产一区二区精品在线观看| 亚洲欧美一区二区三区国产精品| 色综合天天综合网天天狠天天| 亚洲在线免费播放| 欧美变态凌虐bdsm| 99国产精品久久久| 污片在线观看一区二区| 久久久久久久久久电影| 91女神在线视频| 欧美aa在线视频| 成人欧美一区二区三区白人| 制服丝袜中文字幕亚洲| 成人白浆超碰人人人人| 天天色综合成人网| 视频一区二区三区入口| 久久久蜜臀国产一区二区| 在线观看免费一区| 国产一区美女在线| 亚洲成人在线免费| 亚洲国产精品精华液ab| 欧美一区二区美女| 一本一道综合狠狠老| 久久机这里只有精品| 亚洲美女在线一区| 久久天堂av综合合色蜜桃网| 欧美唯美清纯偷拍| 成人黄色网址在线观看| 蜜桃av噜噜一区| 亚洲综合图片区| 亚洲人一二三区| 欧美精品一区二区久久婷婷| 欧美日韩成人综合天天影院| 97久久精品人人做人人爽| 激情五月播播久久久精品| 亚洲成av人片| 亚洲综合无码一区二区| 亚洲特级片在线| 久久亚洲捆绑美女| 日韩亚洲电影在线| 欧美精品九九99久久| 色天使久久综合网天天| 99久久精品国产毛片| 国产曰批免费观看久久久| 天天综合日日夜夜精品| 亚洲与欧洲av电影| 日韩美女视频19| 国产精品短视频| 国产精品午夜电影| 国产视频一区在线播放| 久久精品亚洲一区二区三区浴池| 欧美成人在线直播| 欧美xxxxxxxx| 26uuuu精品一区二区| 日韩女同互慰一区二区| 91精品麻豆日日躁夜夜躁| 欧美肥胖老妇做爰| 91精品国产色综合久久不卡电影| 欧美日韩精品一区二区| 欧美日产在线观看| 日韩一区二区在线看片| 欧美一区二区三区白人| 欧美一区二区网站| 日韩欧美亚洲一区二区| 2021久久国产精品不只是精品| 精品国产三级电影在线观看| 26uuu精品一区二区三区四区在线| 日韩女优毛片在线| 国产欧美久久久精品影院 | 日韩亚洲欧美中文三级| 精品国产91九色蝌蚪| 久久综合久久综合亚洲| 国产亚洲精品中文字幕| 中文字幕在线不卡视频| 曰韩精品一区二区| 日本亚洲电影天堂| 国产呦萝稀缺另类资源| 成人精品一区二区三区中文字幕| 91在线视频免费91| 欧美美女bb生活片| 精品国产一区二区三区av性色| 精品国产91乱码一区二区三区| 久久久99免费| 一区二区高清视频在线观看| 日本不卡123| 成人av免费在线播放| 欧美午夜理伦三级在线观看| 精品噜噜噜噜久久久久久久久试看| 国产网站一区二区三区| 亚洲自拍欧美精品| 国产美女一区二区三区| 91看片淫黄大片一级在线观看| 欧美日韩不卡一区| 久久先锋影音av| 一区二区视频在线| 精品在线观看免费| 色av综合在线| 日韩三级精品电影久久久| 国产精品久久久久永久免费观看| 亚洲伊人色欲综合网| 国产一区日韩二区欧美三区| 精品视频123区在线观看| 国产午夜精品一区二区三区四区| 亚洲影院免费观看| 国产成人免费在线观看| 欧美精品乱码久久久久久| 国产精品乱人伦中文| 裸体一区二区三区| 色屁屁一区二区| 国产拍欧美日韩视频二区| 日韩av在线发布| 欧美色电影在线| 亚洲欧美中日韩| 国产一区二区毛片| 91麻豆精品国产| 一个色妞综合视频在线观看| 国产精品18久久久久| 欧美二区三区91| 亚洲精品乱码久久久久久| 粉嫩欧美一区二区三区高清影视 | 免费在线观看视频一区| 91麻豆精品秘密| 国产欧美一区二区精品性色超碰| 日精品一区二区三区| 在线视频中文字幕一区二区| 中文字幕不卡的av| 韩国成人福利片在线播放| 在线不卡欧美精品一区二区三区| 亚洲免费在线观看视频| 成人高清免费观看| 国产欧美一区视频| 国产在线视频不卡二| 精品国产乱码久久久久久牛牛 | 亚洲成av人片一区二区梦乃| 91蝌蚪porny九色| 一区二区三区欧美视频| 色哟哟欧美精品| 亚洲美女免费视频| 91官网在线免费观看| 亚洲一区二区三区四区不卡|