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

📄 vid.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * VID.java * Copyright (C) 2003 * * $Id: VID.java,v 1.17 2005/11/13 13:36:00 cawe Exp $ *//*Copyright (C) 1997-2001 Id Software, Inc.This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of 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 ofMERCHANTABILITY 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 Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/package jake2.client;import jake2.Defines;import jake2.Globals;import jake2.game.Cmd;import jake2.game.cvar_t;import jake2.qcommon.*;import jake2.render.Renderer;import jake2.sound.S;import jake2.sys.IN;import jake2.util.Vargs;import java.awt.Dimension;import java.awt.DisplayMode;/** * VID is a video driver. *  * source: client/vid.h linux/vid_so.c *  * @author cwei */public class VID extends Globals {	//	   Main windowed and fullscreen graphics interface module. This module	//	   is used for both the software and OpenGL rendering versions of the	//	   Quake refresh engine.	// Global variables used internally by this module	// Globals.viddef	// global video state; used by other modules	// Structure containing functions exported from refresh DLL	// Globals.re;	// Console variables that we need to access from this module	static cvar_t vid_gamma;	static cvar_t vid_ref;			// Name of Refresh DLL loaded	static cvar_t vid_xpos;			// X coordinate of window position	static cvar_t vid_ypos;			// Y coordinate of window position	static cvar_t vid_width;	static cvar_t vid_height;	static cvar_t vid_fullscreen;	// Global variables used internally by this module	// void *reflib_library;		// Handle to refresh DLL 	static boolean reflib_active = false;	// const char so_file[] = "/etc/quake2.conf";	/*	==========================================================================	DLL GLUE	==========================================================================	*/	public static void Printf(int print_level, String fmt) {		Printf(print_level, fmt, null);		}	public static void Printf(int print_level, String fmt, Vargs vargs) {		// static qboolean inupdate;		if (print_level == Defines.PRINT_ALL)			Com.Printf(fmt, vargs);		else			Com.DPrintf(fmt, vargs);	}	// ==========================================================================	/*	============	VID_Restart_f	Console command to re-start the video mode and refresh DLL. We do this	simply by setting the modified flag for the vid_ref variable, which will	cause the entire video mode and refresh DLL to be reset on the next frame.	============	*/	static void Restart_f() {		vid_modes[11].width = (int) vid_width.value;		vid_modes[11].height = (int) vid_height.value;		vid_ref.modified = true;	}	/*	** VID_GetModeInfo	*/	static vidmode_t vid_modes[] =		{			new vidmode_t("Mode 0: 320x240", 320, 240, 0),			new vidmode_t("Mode 1: 400x300", 400, 300, 1),			new vidmode_t("Mode 2: 512x384", 512, 384, 2),			new vidmode_t("Mode 3: 640x480", 640, 480, 3),			new vidmode_t("Mode 4: 800x600", 800, 600, 4),			new vidmode_t("Mode 5: 960x720", 960, 720, 5),			new vidmode_t("Mode 6: 1024x768", 1024, 768, 6),			new vidmode_t("Mode 7: 1152x864", 1152, 864, 7),			new vidmode_t("Mode 8: 1280x1024", 1280, 1024, 8),			new vidmode_t("Mode 9: 1600x1200", 1600, 1200, 9),			new vidmode_t("Mode 10: 2048x1536", 2048, 1536, 10),			new vidmode_t("Mode 11: user", 640, 480, 11)};	static vidmode_t fs_modes[];	public static boolean GetModeInfo(Dimension dim, int mode) {		if (fs_modes == null) initModeList();		vidmode_t[] modes = vid_modes;		if (vid_fullscreen.value != 0.0f) modes = fs_modes;				if (mode < 0 || mode >= modes.length) 			return false;					dim.width = modes[mode].width;		dim.height = modes[mode].height;				return true;	}	/*	** VID_NewWindow	*/	public static void NewWindow(int width, int height) {		Globals.viddef.width = width;		Globals.viddef.height = height;	}	static void FreeReflib()	{		if (Globals.re != null) {			Globals.re.getKeyboardHandler().Close();			IN.Shutdown();		}		Globals.re = null;		reflib_active = false;	}	/*	==============	VID_LoadRefresh	==============	*/	static boolean LoadRefresh( String name )	{		if ( reflib_active )		{			Globals.re.getKeyboardHandler().Close();			IN.Shutdown();			Globals.re.Shutdown();			FreeReflib();		}		Com.Printf( "------- Loading " + name + " -------\n");				boolean found = false;				String[] driverNames = Renderer.getDriverNames();		for (int i = 0; i < driverNames.length; i++) {			if (driverNames[i].equals(name)) {				found = true;				break;			} 			}		if (!found) {			Com.Printf( "LoadLibrary(\"" + name +"\") failed\n");			return false;		}		Com.Printf( "LoadLibrary(\"" + name +"\")\n" );		Globals.re = Renderer.getDriver(name);				if (Globals.re == null)		{			Com.Error(Defines.ERR_FATAL, name + " can't load but registered");		}		if (Globals.re.apiVersion() != Defines.API_VERSION)		{			FreeReflib();			Com.Error(Defines.ERR_FATAL, name + " has incompatible api_version");		}		IN.Real_IN_Init();		if ( !Globals.re.Init((int)vid_xpos.value, (int)vid_ypos.value) )		{			Globals.re.Shutdown();			FreeReflib();			return false;		}		/* Init KBD */		Globals.re.getKeyboardHandler().Init();		Com.Printf( "------------------------------------\n");		reflib_active = true;		return true;	}	/*	============	VID_CheckChanges	This function gets called once just before drawing each frame, and it's sole purpose in life	is to check to see if any of the video mode parameters have changed, and if they have to 	update the rendering DLL and/or video mode to match.	============	*/	public static void CheckChanges()	{		cvar_t gl_mode;		if ( vid_ref.modified )		{			S.StopAllSounds();		}		while (vid_ref.modified)		{			/*			** refresh has changed			*/			vid_ref.modified = false;			vid_fullscreen.modified = true;			Globals.cl.refresh_prepped = false;			Globals.cls.disable_screen = 1.0f; // true;						if ( !LoadRefresh( vid_ref.string ) )			{				String renderer;				if (vid_ref.string.equals(Renderer.getPreferedName())) {				    // try the default renderer as fallback after prefered				    renderer = Renderer.getDefaultName();				} else {				    // try the prefered renderer as first fallback				    renderer = Renderer.getPreferedName();				}				if ( vid_ref.string.equals(Renderer.getDefaultName())) {				    renderer = vid_ref.string;					Com.Printf("Refresh failed\n");					gl_mode = Cvar.Get( "gl_mode", "0", 0 );					if (gl_mode.value != 0.0f) {						Com.Printf("Trying mode 0\n");						Cvar.SetValue("gl_mode", 0);						if ( !LoadRefresh( vid_ref.string ) )							Com.Error(Defines.ERR_FATAL, "Couldn't fall back to " + renderer +" refresh!");					} else						Com.Error(Defines.ERR_FATAL, "Couldn't fall back to " + renderer +" refresh!");				}				Cvar.Set("vid_ref", renderer);				/*				 * drop the console if we fail to load a refresh				 */				if ( Globals.cls.key_dest != Defines.key_console )				{					try {						Console.ToggleConsole_f.execute();					} catch (Exception e) {					}				}			}			Globals.cls.disable_screen = 0.0f; //false;		}	}	/*	============	VID_Init	============	*/	public static void Init()	{		/* Create the video variables so we know how to start the graphics drivers */		vid_ref = Cvar.Get("vid_ref", Renderer.getPreferedName(), CVAR_ARCHIVE);		vid_xpos = Cvar.Get("vid_xpos", "3", CVAR_ARCHIVE);		vid_ypos = Cvar.Get("vid_ypos", "22", CVAR_ARCHIVE);		vid_width = Cvar.Get("vid_width", "640", CVAR_ARCHIVE);		vid_height = Cvar.Get("vid_height", "480", CVAR_ARCHIVE);		vid_fullscreen = Cvar.Get("vid_fullscreen", "0", CVAR_ARCHIVE);		vid_gamma = Cvar.Get( "vid_gamma", "1", CVAR_ARCHIVE );		vid_modes[11].width = (int)vid_width.value;		vid_modes[11].height = (int)vid_height.value;				/* Add some console commands that we want to handle */		Cmd.AddCommand ("vid_restart", new xcommand_t() {			public void execute() {				Restart_f();			}		});		/* Disable the 3Dfx splash screen */		// putenv("FX_GLIDE_NO_SPLASH=0");				/* Start the graphics mode and load refresh DLL */		CheckChanges();	}	/*	============	VID_Shutdown	============	*/	public static void Shutdown()	{		if ( reflib_active )		{			Globals.re.getKeyboardHandler().Close();			IN.Shutdown();			Globals.re.Shutdown();			FreeReflib();		}	}	// ==========================================================================	// 	//	vid_menu.c	//	// ==========================================================================	static final int REF_OPENGL_JOGL = 0;	static final int REF_OPENGL_FASTJOGL =1;	static final int REF_OPENGL_LWJGL =2;	static cvar_t gl_mode;	static cvar_t gl_driver;	static cvar_t gl_picmip;	static cvar_t gl_ext_palettedtexture;	static cvar_t sw_mode;	static cvar_t sw_stipplealpha;	static cvar_t _windowed_mouse;	/*	====================================================================	MENU INTERACTION	====================================================================	*/	static Menu.menuframework_s	s_opengl_menu = new Menu.menuframework_s();	static Menu.menuframework_s s_current_menu; // referenz	static Menu.menulist_s s_mode_list = new Menu.menulist_s();	static Menu.menulist_s s_ref_list = new Menu.menulist_s();	static Menu.menuslider_s s_tq_slider = new Menu.menuslider_s();	static Menu.menuslider_s s_screensize_slider = new Menu.menuslider_s();

⌨️ 快捷键说明

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