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

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

?? gl_app.cpp

?? game programing code
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

	//find the end of the extension list
	cEndExtensions= szSupExt+strlen( m_szSupportedGLExtensions );

	//search through the entire list
	while( szSupExt<cEndExtensions )
	{
		//find the next extension in the list
		uiNextExtension= strcspn( szSupExt, " " );

		//check the extension to the one given in the argument list
		if( ( strlen( szExtensionName )==uiNextExtension ) && 
			( strncmp( szExtensionName, szSupExt, uiNextExtension )==0 ) )
		{
			//the extension is supported
			g_log.Write( LOG_RENDERER, "Your video card supports extension: %s", szExtensionName );
			return true;
		}

		//move to the nexte extension in the list
		szSupExt+= ( uiNextExtension+1 );
	}

	//the extension is not supported
	g_log.Write( LOG_RENDERER, "Your video card does not support extension: %s", szExtensionName );
	return false;
}

//--------------------------------------------------------------
// Name:			CGL_APP::CreateTTFont - public
// Description:		Create a truetype font (for font rendering)
// Arguments:		-szFontName: the truetype font to be created
//					-iSize: the size of the font
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::CreateTTFont( char* szFontName, int iSize )
{
	HFONT font;

	m_uiFont= glGenLists( 256 );

	font= CreateFont( -iSize,
					  0,
					  0,
			 		  0,
					  FW_NORMAL,
					  FALSE,
					  FALSE,
					  FALSE,
					  ANSI_CHARSET,
					  OUT_TT_PRECIS,
					  CLIP_DEFAULT_PRECIS,
					  ANTIALIASED_QUALITY,
					  FF_DONTCARE | DEFAULT_PITCH,
					  szFontName);

	SelectObject( m_hDC, font );
	wglUseFontBitmaps( m_hDC, 0, 256, m_uiFont );
}

//--------------------------------------------------------------
// Name:			CGL_APP::DestroyFont - public
// Description:		Destroy the font system created earlier
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::DestroyFont( void )
{	glDeleteLists( m_uiFont, 256 );	}

//--------------------------------------------------------------
// Name:			CGL_APP::Print - public
// Description:		Print a string onto the screen
// Arguments:		-iX, iY: Position on the screen to start printing
//					-vecColor: The color of the printed text
//					-szString: the string to be printed
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::Print( int iX, int iY, CVECTOR vecColor, char* szString, ... )
{
	va_list va;
	char	szParsedString[256];

	//make sure that the string actually exists
	if( szString==NULL )
		return;

	//parse the string
	va_start( va, szString );
	    vsprintf( szParsedString, szString, va );
	va_end( va );

	//set the color for the text
	glColor3f( vecColor[0], vecColor[1], vecColor[2] );

	glPushMatrix( );
		glLoadIdentity( );

		//position and render the text
		glRasterPos2d( iX, iY );
		glListBase( m_uiFont );
		glCallLists( strlen( szParsedString ), GL_UNSIGNED_BYTE, szParsedString );
	glPopMatrix( );
}

//--------------------------------------------------------------
// Name:			CGL_APP::BeginTextMode - public
// Description:		Begin text mode (2D mode)
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::BeginTextMode( void )
{
	glMatrixMode( GL_PROJECTION );					//select the projection matrix
	glPushMatrix( );								//store the projection matrix
		glLoadIdentity( );							//reset the projection matrix
		glOrtho( 0, m_iWidth, 0, m_iHeight, -1, 1 );//set up an ortho screen
		glMatrixMode( GL_MODELVIEW );				//select the modelview matrix
}

//--------------------------------------------------------------
// Name:			CGL_APP::EndTextMode - public
// Description:		End text mode (2D mode)
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::EndTextMode( void )
{
		glMatrixMode(GL_PROJECTION);	//select the projection matrix
	glPopMatrix();						//restore the old projection matrix
	glMatrixMode(GL_MODELVIEW);			//select the modelview matrix
}

//--------------------------------------------------------------
// Name:			CGL_APP::BeginRendering - public
// Description:		Begin rendering, and update the timer
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::BeginRendering( void )
{
    m_timer.Update( );

	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
}

//--------------------------------------------------------------
// Name:			CGL_APP::EndRendering - public
// Description:		Finish all rendering and swap buffers
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::EndRendering( void )
{
	glFlush( );
	SwapBuffers( m_hDC );
}

//--------------------------------------------------------------
// Name:			CGL_APP::EndRendering - public
// Description:		Finish all rendering and swap buffers
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::TakeScreenshot( char* szFilename )
{
	CIMAGE screenshot;

	//allocate the memory
	screenshot.Create( m_iWidth+10, m_iHeight, 24 );

	//read the screen data
	glReadPixels( 0, 0, m_iWidth+10, m_iHeight, GL_RGB, GL_UNSIGNED_BYTE, screenshot.GetData( ) );

	//write the image data
	screenshot.Save( szFilename );
}

//--------------------------------------------------------------
// Name:			CGL_APP::HandleMessages - public
// Description:		Handle the messages that the window is receiving
// Arguments:		None
// Return Value:	A boolean variable: -true: continue running the program
//										-false: end the program
//--------------------------------------------------------------
bool CGL_APP::HandleMessages(void)
{
	MSG msg;

	m_menuCommand= 0;

	//These are functions that are needed to process the messages
	//that the window is recieving.
	while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
	{ 
	    TranslateMessage( &msg );
	    DispatchMessage( &msg ); 

		if( msg.message==WM_QUIT )
			return false;
	}
	return true;
}

//--------------------------------------------------------------
// Name:			CGL_APP::WindowProc - public
// Description:		Handle all window events
// Arguments:		None (that you need to worry about :))
// Return Value:	A LRESULT variable
//--------------------------------------------------------------
LRESULT CALLBACK CGL_APP::WindowProc( HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam )
{
	switch( uiMsg )
	{
		case WM_ACTIVATE:
			if( !HIWORD( wParam ) )
				m_bActive= APP_ACTIVE;

			else
				m_bActive= APP_IDLE;
			return 0;
			break;

		case WM_SYSCOMMAND:
			switch( wParam )
			{
				case SC_SCREENSAVE:
				case SC_MONITORPOWER:
				return 0;
			}
			break;

		case WM_COMMAND:
			m_menuCommand= LOWORD( wParam );
			break;

		case WM_KEYDOWN:
			m_bKeys[wParam]= true;
			return 0;
			break;

		case WM_KEYUP:
			m_bKeys[wParam]= false;
			return 0;
			break;

		case WM_MOUSEMOVE:
			//get the current mouse position
			m_iMouseX= ( int )LOWORD( lParam );
			m_iMouseY= ( int )HIWORD( lParam );

			//get the current mouse button being pressed
			m_iMouseButton= ( int )wParam;

			break;

		case WM_CLOSE:
			PostQuitMessage( 0 );
			return 0;
			break;

		case WM_SIZE:
			m_iWidth = LOWORD( lParam );
			m_iHeight= HIWORD( lParam );

			m_bChangeSize= true;
			return 0;
			break;
	}

	return DefWindowProc( hWnd, uiMsg, wParam, lParam );
}

//--------------------------------------------------------------
// Name:			ResizeScene - global
// Description:		Resize the perspective view according to the
//					width and height of the window
// Arguments:		None
// Return Value:	None
//--------------------------------------------------------------
void ResizeScene( int iWidth, int iHeight )
{
	if( iHeight==0 )											//Prevent a divide by zero (bad)
		iHeight= 1;											//Making height equal one

	glViewport( 0, 0, iWidth, iHeight );						//Reset the current viewport

	glMatrixMode( GL_PROJECTION );								//Select the projection matrix
	glLoadIdentity( );											//Reset the projection matrix

	//Calculate the aspect ratio of the window
	gluPerspective( 45, iWidth/iHeight, 0.01f, 100.0f );

	glMatrixMode( GL_MODELVIEW );									//Select the modelview matrix
	glLoadIdentity( );											//Reset The modelview matrix
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品一区二区三区不卡| 欧美一级片在线| 日本特黄久久久高潮| 亚洲欧美成aⅴ人在线观看| 精品成人一区二区三区四区| 日韩免费在线观看| 久久久天堂av| 国产精品不卡在线观看| 亚洲欧美日韩国产另类专区| 日本不卡123| 国产乱码一区二区三区| www.亚洲色图| 欧美亚洲另类激情小说| 欧美剧在线免费观看网站| 69p69国产精品| 精品日产卡一卡二卡麻豆| 国产视频一区二区在线观看| 午夜精品123| 美女视频一区在线观看| 韩国一区二区三区| 成人性生交大片免费看中文| 99国产精品视频免费观看| 91黄视频在线| 精品日本一线二线三线不卡| 日韩激情在线观看| 福利一区二区在线观看| 欧美性猛交xxxx乱大交退制版| 欧美精品一区二区三区很污很色的| 日韩黄色一级片| 欧美日韩在线综合| 欧美国产国产综合| 天天影视色香欲综合网老头| 欧美伊人久久久久久久久影院 | 久久综合色8888| 亚洲国产精品二十页| 国产一区中文字幕| 欧美日韩一区 二区 三区 久久精品| 中文字幕一区二区三区在线观看 | 色老头久久综合| 亚洲青青青在线视频| 91在线观看免费视频| 日韩欧美国产一区在线观看| 日本伊人色综合网| 精品国产髙清在线看国产毛片| 日本伊人色综合网| 久久影院午夜论| av网站免费线看精品| 亚洲精品中文在线影院| 蜜桃av噜噜一区| 精品国产乱码久久久久久免费| 国模套图日韩精品一区二区| 国产欧美1区2区3区| 秋霞午夜鲁丝一区二区老狼| 日韩欧美综合一区| 亚洲美女区一区| 欧美区视频在线观看| 亚洲免费在线观看| 欧美日韩久久久| 久久精品国产网站| 日韩欧美国产综合在线一区二区三区| 精品无人码麻豆乱码1区2区| 欧美一级爆毛片| 高清国产一区二区三区| 亚洲国产一二三| 在线亚洲高清视频| 亚洲欧美色一区| 91精品国产欧美一区二区| 国产91精品在线观看| 夜夜嗨av一区二区三区| 成人性生交大片免费| 另类专区欧美蜜桃臀第一页| 欧美国产激情二区三区 | 一区二区三区色| 日韩免费高清av| 91美女片黄在线观看| 蜜桃久久久久久| 国产精品护士白丝一区av| 欧美精品丝袜久久久中文字幕| 福利一区福利二区| 天天av天天翘天天综合网色鬼国产| 日韩精品一区二区三区视频播放 | 久久精品99久久久| 亚洲日本护士毛茸茸| 97精品久久久久中文字幕| 天天综合天天做天天综合| 国产精品你懂的在线| 91福利在线看| 国产成人亚洲精品青草天美| 国产精品理伦片| 精品国产一区二区三区不卡| 在线观看国产精品网站| 国产一区二区三区免费观看| 亚洲一区二区三区不卡国产欧美 | 91精品国产综合久久久久久久| 国产另类ts人妖一区二区| 天天综合天天做天天综合| 一区二区三区小说| 国产精品美女久久久久av爽李琼 | 国产精品久久久久久亚洲毛片| 日韩一级精品视频在线观看| 欧美伊人久久久久久久久影院| 粉嫩一区二区三区性色av| 美女视频免费一区| 日本怡春院一区二区| 天堂一区二区在线| 亚洲综合男人的天堂| 亚洲天堂久久久久久久| 国产精品免费久久久久| 久久网站热最新地址| 精品国精品国产| ww亚洲ww在线观看国产| 日韩三级免费观看| 欧美成人官网二区| 日韩精品一区二区三区视频播放| 日韩亚洲欧美成人一区| 91精品国产综合久久福利软件 | 五月婷婷激情综合| 亚洲成人在线网站| 国产片一区二区三区| 久久午夜电影网| 26uuu久久天堂性欧美| 精品理论电影在线观看| 精品捆绑美女sm三区| 久久亚洲精精品中文字幕早川悠里 | 精品一区二区免费看| 日本不卡视频一二三区| 久久精品国产99久久6| 久久国产麻豆精品| 国产精品一区免费视频| 高清免费成人av| 色乱码一区二区三区88| 欧美天堂一区二区三区| 制服丝袜亚洲播放| 久久一留热品黄| 国产精品网曝门| 亚洲男女毛片无遮挡| 亚洲电影一级片| 久久99精品国产.久久久久| 国产精品1区二区.| 91蝌蚪porny成人天涯| 欧美日韩国产电影| 久久综合国产精品| 亚洲欧洲国产日韩| 日韩一区精品视频| 国产高清视频一区| 在线精品视频一区二区三四| 日韩视频一区二区| 国产精品视频免费| 天天影视色香欲综合网老头| 亚洲卡通欧美制服中文| 日韩av中文字幕一区二区三区| 国产电影一区二区三区| 91黄视频在线| 国产喷白浆一区二区三区| 亚洲一区影音先锋| 国产精品自在欧美一区| 色老汉av一区二区三区| 久久天堂av综合合色蜜桃网| 亚洲视频在线观看三级| 人人精品人人爱| 92国产精品观看| 日韩欧美国产精品| 亚洲福利一二三区| 成人美女在线视频| 欧美电视剧免费全集观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 91九色最新地址| 久久久久久久久久久久久夜| 亚洲另类一区二区| 国产成人免费视频一区| 91麻豆精品国产91久久久使用方法 | 中文字幕中文字幕一区二区| 日韩福利视频网| 日本韩国一区二区| 国产精品视频麻豆| 精品一区二区三区蜜桃| 欧美日韩情趣电影| 亚洲色图都市小说| 国产成人免费在线视频| 91精品国产一区二区人妖| 亚洲黄色性网站| 99久久婷婷国产| 久久理论电影网| 国内成+人亚洲+欧美+综合在线| 欧美日韩www| 亚洲一二三四区不卡| www..com久久爱| 国产精品欧美久久久久一区二区| 国产在线播放一区二区三区| 欧美一区二区女人| 天堂精品中文字幕在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲国产精华液网站w| 国产99精品国产| 欧美激情自拍偷拍| 成人免费毛片app| 国产精品久久久久影院色老大| 国产精品77777| 国产丝袜欧美中文另类| 成人性生交大片免费看视频在线|