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

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

?? gl_fxmesa.c

?? 著名游戲quake2原代碼最新版本(vc6.0可以編譯的)
?? C
字號:
/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/
/*
** GLW_IMP.C
**
** This file contains ALL Linux specific stuff having to do with the
** OpenGL refresh.  When a port is being made the following functions
** must be implemented by the port:
**
** GLimp_EndFrame
** GLimp_Init
** GLimp_Shutdown
** GLimp_SwitchFullscreen
**
*/

#include <termios.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/vt.h>
#include <stdarg.h>
#include <stdio.h>
#include <signal.h>

#include "../ref_gl/gl_local.h"
#include "../client/keys.h"
#include "../linux/rw_linux.h"

#include "../linux/glw_linux.h"

#include <GL/fxmesa.h>

/*****************************************************************************/

glwstate_t glw_state;

static qboolean GLimp_SwitchFullscreen( int width, int height );
qboolean GLimp_InitGL (void);

extern cvar_t *vid_fullscreen;
extern cvar_t *vid_ref;

static fxMesaContext fc = NULL;

#define NUM_RESOLUTIONS 16

static resolutions[NUM_RESOLUTIONS][3]={ 
	{ 320,200,  GR_RESOLUTION_320x200 },
	{ 320,240,  GR_RESOLUTION_320x240 },
	{ 400,256,  GR_RESOLUTION_400x256 },
	{ 400,300,  GR_RESOLUTION_400x300 },
	{ 512,384,  GR_RESOLUTION_512x384 },
	{ 640,200,  GR_RESOLUTION_640x200 },
	{ 640,350,  GR_RESOLUTION_640x350 },
	{ 640,400,  GR_RESOLUTION_640x400 },
	{ 640,480,  GR_RESOLUTION_640x480 },
	{ 800,600,  GR_RESOLUTION_800x600 },
	{ 960,720,  GR_RESOLUTION_960x720 },
	{ 856,480,  GR_RESOLUTION_856x480 },
	{ 512,256,  GR_RESOLUTION_512x256 },
	{ 1024,768, GR_RESOLUTION_1024x768 },
	{ 1280,1024,GR_RESOLUTION_1280x1024 },
	{ 1600,1200,GR_RESOLUTION_1600x1200 }
};

static int findres(int *width, int *height)
{
	int i;

	for(i=0;i<NUM_RESOLUTIONS;i++)
		if((*width<=resolutions[i][0]) && (*height<=resolutions[i][1])) {
			*width = resolutions[i][0];
			*height = resolutions[i][1];
			return resolutions[i][2];
		}
        
	*width = 640;
	*height = 480;
	return GR_RESOLUTION_640x480;
}

static void signal_handler(int sig)
{
	printf("Received signal %d, exiting...\n", sig);
	GLimp_Shutdown();
	_exit(0);
}

static void InitSig(void)
{
	signal(SIGHUP, signal_handler);
	signal(SIGQUIT, signal_handler);
	signal(SIGILL, signal_handler);
	signal(SIGTRAP, signal_handler);
	signal(SIGIOT, signal_handler);
	signal(SIGBUS, signal_handler);
	signal(SIGFPE, signal_handler);
	signal(SIGSEGV, signal_handler);
	signal(SIGTERM, signal_handler);
}

/*
** GLimp_SetMode
*/
int GLimp_SetMode( int *pwidth, int *pheight, int mode, qboolean fullscreen )
{
	int width, height;
	GLint attribs[32];

	ri.Con_Printf( PRINT_ALL, "Initializing OpenGL display\n");

	ri.Con_Printf (PRINT_ALL, "...setting mode %d:", mode );

	if ( !ri.Vid_GetModeInfo( &width, &height, mode ) )
	{
		ri.Con_Printf( PRINT_ALL, " invalid mode\n" );
		return rserr_invalid_mode;
	}

	ri.Con_Printf( PRINT_ALL, " %d %d\n", width, height );

	// destroy the existing window
	GLimp_Shutdown ();

	// set fx attribs
	attribs[0] = FXMESA_DOUBLEBUFFER;
	attribs[1] = FXMESA_ALPHA_SIZE;
	attribs[2] = 1;
	attribs[3] = FXMESA_DEPTH_SIZE;
	attribs[4] = 1;
	attribs[5] = FXMESA_NONE;

	fc = qfxMesaCreateContext(0, findres(&width, &height), GR_REFRESH_75Hz, 
		attribs);
	if (!fc)
		return rserr_invalid_mode;

	*pwidth = width;
	*pheight = height;

	// let the sound and input subsystems know about the new window
	ri.Vid_NewWindow (width, height);

	qfxMesaMakeCurrent(fc);

	return rserr_ok;
}

/*
** GLimp_Shutdown
**
** This routine does all OS specific shutdown procedures for the OpenGL
** subsystem.  Under OpenGL this means NULLing out the current DC and
** HGLRC, deleting the rendering context, and releasing the DC acquired
** for the window.  The state structure is also nulled out.
**
*/
void GLimp_Shutdown( void )
{
	if (fc) {
		qfxMesaDestroyContext(fc);
		fc = NULL;
	}
}

/*
** GLimp_Init
**
** This routine is responsible for initializing the OS specific portions
** of OpenGL.  
*/
int GLimp_Init( void *hinstance, void *wndproc )
{
	InitSig();

	return true;
}

/*
** GLimp_BeginFrame
*/
void GLimp_BeginFrame( float camera_seperation )
{
}

/*
** GLimp_EndFrame
** 
** Responsible for doing a swapbuffers and possibly for other stuff
** as yet to be determined.  Probably better not to make this a GLimp
** function and instead do a call to GLimp_SwapBuffers.
*/
void GLimp_EndFrame (void)
{
	qglFlush();
	qfxMesaSwapBuffers();
}

/*
** GLimp_AppActivate
*/
void GLimp_AppActivate( qboolean active )
{
}

void Fake_glColorTableEXT( GLenum target, GLenum internalformat,
                             GLsizei width, GLenum format, GLenum type,
                             const GLvoid *table )
{
	byte temptable[256][4];
	byte *intbl;
	int i;

	for (intbl = (byte *)table, i = 0; i < 256; i++) {
		temptable[i][2] = *intbl++;
		temptable[i][1] = *intbl++;
		temptable[i][0] = *intbl++;
		temptable[i][3] = 255;
	}
	qglEnable( GL_SHARED_TEXTURE_PALETTE_EXT );
	qgl3DfxSetPaletteEXT((GLuint *)temptable);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美在线一区| 国产91综合网| 欧美日韩国产一级片| 亚洲图片你懂的| 色综合 综合色| 亚洲综合视频网| 欧美军同video69gay| 日韩成人av影视| 精品国产乱码久久久久久蜜臀| 久久成人羞羞网站| 久久亚洲精精品中文字幕早川悠里 | 日韩欧美中文一区| 蜜桃视频一区二区三区在线观看| 日韩一区二区三区高清免费看看| 久久精品国产一区二区三| 国产亚洲精品精华液| 成人爽a毛片一区二区免费| 亚洲精品老司机| 日韩欧美中文字幕制服| 成人免费看黄yyy456| 一区二区三区四区在线播放 | 亚洲与欧洲av电影| 日韩一区二区免费在线观看| 国产一区二区导航在线播放| 亚洲天堂av老司机| 欧美肥妇bbw| 成人激情免费网站| 亚洲高清视频的网址| 久久亚洲欧美国产精品乐播| 91色乱码一区二区三区| 日韩黄色免费网站| 中文字幕国产精品一区二区| 欧美人体做爰大胆视频| 国产成人日日夜夜| 亚洲第一av色| 综合色天天鬼久久鬼色| 日韩精品中文字幕在线不卡尤物| www.亚洲人| 蜜桃视频一区二区三区| 亚洲精品免费播放| 久久人人爽爽爽人久久久| 91福利在线免费观看| 精彩视频一区二区| 亚洲chinese男男1069| 中文在线资源观看网站视频免费不卡| 欧美精品久久一区二区三区| bt欧美亚洲午夜电影天堂| 免费不卡在线视频| 国产香蕉久久精品综合网| 欧美午夜一区二区三区| 丰满少妇在线播放bd日韩电影| 日日夜夜一区二区| 一区二区三区日韩精品视频| 国产亚洲一区二区三区四区 | 久草中文综合在线| 亚洲激情第一区| 国产精品无圣光一区二区| 日韩精品影音先锋| 欧美久久久久久久久中文字幕| 99精品国产91久久久久久| 韩国av一区二区三区四区| 青青草精品视频| 亚洲自拍偷拍网站| 亚洲免费电影在线| 亚洲女人的天堂| 欧美国产一区二区在线观看 | 国产欧美一二三区| 精品电影一区二区三区| 欧美一级日韩免费不卡| 欧美日韩国产高清一区| 91国偷自产一区二区使用方法| av在线综合网| av成人免费在线| 成人开心网精品视频| 高清不卡一区二区在线| 国产在线精品一区二区三区不卡| 日韩电影免费在线| 毛片av一区二区三区| 麻豆精品国产91久久久久久| 日日欢夜夜爽一区| 日韩av在线播放中文字幕| 日本aⅴ免费视频一区二区三区| 亚洲成人高清在线| 亚洲成人资源在线| 亚洲成av人片一区二区三区 | 国产日韩v精品一区二区| 亚洲精品在线网站| 国产片一区二区| 国产精品国产三级国产普通话蜜臀 | 亚洲人xxxx| 国产一区二区精品在线观看| 亚洲午夜电影网| 中文乱码免费一区二区| 国产日本欧美一区二区| 国产视频视频一区| 久久久久久免费| 欧美高清精品3d| 在线成人午夜影院| 欧美日本在线播放| 日韩欧美亚洲另类制服综合在线| 欧美日韩电影在线播放| 欧美美女一区二区三区| 欧美精品一二三区| 在线成人小视频| 69堂精品视频| 精品欧美乱码久久久久久| 精品av久久707| 国产亚洲欧洲997久久综合| 国产偷国产偷精品高清尤物| 欧美人与z0zoxxxx视频| 日韩亚洲欧美成人一区| 日韩精品在线一区二区| 久久综合色一综合色88| 国产性天天综合网| 亚洲午夜久久久久久久久久久| 午夜天堂影视香蕉久久| 免费成人av在线播放| 国内久久精品视频| 99免费精品在线| 欧美无砖专区一中文字| 精品国精品自拍自在线| 欧美激情在线观看视频免费| 一区二区三区小说| 日韩av在线免费观看不卡| 国产福利一区二区三区| 成人av电影免费在线播放| 在线成人av网站| 国产香蕉久久精品综合网| 亚洲婷婷在线视频| 美国十次了思思久久精品导航| 色婷婷精品久久二区二区蜜臂av| 亚洲电影你懂得| 五月天久久比比资源色| 久久av资源站| 色综合久久久久| 久久中文字幕电影| 一区二区三区视频在线观看| 国产成人夜色高潮福利影视| 欧美视频三区在线播放| 久久久精品人体av艺术| 一区二区三区四区乱视频| 九九热在线视频观看这里只有精品| 99久久精品国产导航| 欧美一级国产精品| 亚洲日本在线观看| 韩国精品主播一区二区在线观看| 经典三级一区二区| 91精品国产aⅴ一区二区| 国产精品日韩精品欧美在线| 日本成人超碰在线观看| 在线观看www91| 国产偷国产偷亚洲高清人白洁 | 综合久久给合久久狠狠狠97色| 青椒成人免费视频| 91丨九色丨尤物| 久久综合色婷婷| 丝袜亚洲另类欧美| 99久久99久久久精品齐齐| 欧美成人三级电影在线| 亚洲国产日韩一区二区| 成人黄色在线网站| 日韩精品一区二区三区在线| 国产精品久久免费看| 国产jizzjizz一区二区| 日韩免费性生活视频播放| 亚洲成av人片在线| 欧洲日韩一区二区三区| 国产精品丝袜一区| 精品一区二区三区免费观看| 日韩一区二区影院| 亚洲成av人片在www色猫咪| 91麻豆视频网站| 亚洲人123区| 成人av网站大全| 欧美高清一级片在线观看| 国内成人免费视频| 精品88久久久久88久久久| 蜜桃av一区二区在线观看| 欧美一区国产二区| 天堂精品中文字幕在线| 欧美日韩一区二区在线观看 | 天天色天天爱天天射综合| 日本韩国视频一区二区| 亚洲日本丝袜连裤袜办公室| 丁香六月久久综合狠狠色| 国产精品美女一区二区在线观看| 丰满少妇久久久久久久| 久久精品综合网| 国产91精品精华液一区二区三区| 久久久久久亚洲综合| 岛国av在线一区| 日韩毛片高清在线播放| 91国在线观看| 精品一区二区三区视频| 日韩欧美成人一区二区| 国内外成人在线视频| 亚洲国产成人午夜在线一区| 盗摄精品av一区二区三区| 亚洲电影在线播放| 911精品国产一区二区在线|