diff options
author | Holger Zickner <[email protected]> | 2004-07-15 14:37:35 +0000 |
---|---|---|
committer | Holger Zickner <[email protected]> | 2004-07-15 14:37:35 +0000 |
commit | 3dd339c9572b792b85bd49182c826aaec36ee161 (patch) | |
tree | 89bf9c92372cf384bce4c29dc5ec09c7ab7069f2 /src/jake2/render/fastjogl | |
parent | e45462dfe3f3db94bf9668d294794c27909a522f (diff) |
show fullscreen modes in video menu
move common renderer code to JoglBase
Diffstat (limited to 'src/jake2/render/fastjogl')
-rw-r--r-- | src/jake2/render/fastjogl/Base.java | 11 | ||||
-rw-r--r-- | src/jake2/render/fastjogl/Draw.java | 4 | ||||
-rw-r--r-- | src/jake2/render/fastjogl/Impl.java | 343 | ||||
-rw-r--r-- | src/jake2/render/fastjogl/Main.java | 46 |
4 files changed, 8 insertions, 396 deletions
diff --git a/src/jake2/render/fastjogl/Base.java b/src/jake2/render/fastjogl/Base.java index c5cc690..563b16a 100644 --- a/src/jake2/render/fastjogl/Base.java +++ b/src/jake2/render/fastjogl/Base.java @@ -2,7 +2,7 @@ * Base.java * Copyright (C) 2003 * - * $Id: Base.java,v 1.1 2004-07-09 06:50:49 hzi Exp $ + * $Id: Base.java,v 1.2 2004-07-15 14:37:33 hzi Exp $ */ /* Copyright (C) 1997-2001 Id Software, Inc. @@ -25,6 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package jake2.render.fastjogl; +import jake2.render.JoglBase; import net.java.games.jogl.GL; /** @@ -32,7 +33,7 @@ import net.java.games.jogl.GL; * * @author cwei */ -public class Base { +public abstract class Base extends JoglBase { static final int GL_COLOR_INDEX8_EXT = GL.GL_COLOR_INDEX; static final String REF_VERSION = "GL 0.01"; @@ -75,12 +76,6 @@ public class Base { // =================================================================== - // enum rserr_t - static final int rserr_ok = 0; - static final int rserr_invalid_fullscreen = 1; - static final int rserr_invalid_mode = 2; - static final int rserr_unknown = 3; - // // #include "gl_model.h" // diff --git a/src/jake2/render/fastjogl/Draw.java b/src/jake2/render/fastjogl/Draw.java index fcb48b6..0309dba 100644 --- a/src/jake2/render/fastjogl/Draw.java +++ b/src/jake2/render/fastjogl/Draw.java @@ -2,7 +2,7 @@ * Draw.java * Copyright (C) 2003 * - * $Id: Draw.java,v 1.1 2004-07-09 06:50:49 hzi Exp $ + * $Id: Draw.java,v 1.2 2004-07-15 14:37:33 hzi Exp $ */ /* Copyright (C) 1997-2001 Id Software, Inc. @@ -26,13 +26,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. package jake2.render.fastjogl; import jake2.Defines; -import jake2.Globals; import jake2.render.image_t; import java.awt.Dimension; import net.java.games.jogl.GL; -import net.java.games.jogl.util.GLUT; /** * Draw diff --git a/src/jake2/render/fastjogl/Impl.java b/src/jake2/render/fastjogl/Impl.java deleted file mode 100644 index 03af496..0000000 --- a/src/jake2/render/fastjogl/Impl.java +++ /dev/null @@ -1,343 +0,0 @@ -/* - * Impl.java - * Copyright (C) 2003 - * - * $Id: Impl.java,v 1.1 2004-07-09 06:50:49 hzi Exp $ - */ -/* -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. - -*/ -package jake2.render.fastjogl; - -import jake2.Defines; -import jake2.Globals; -import jake2.qcommon.Com; -import jake2.qcommon.xcommand_t; -import jake2.sys.KBD; - -import java.awt.*; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; - -import javax.swing.JFrame; - -import net.java.games.jogl.*; - -/** - * Impl - * - * @author cwei - */ -public class Impl extends Misc implements GLEventListener { - - public static final String DRIVER_NAME = "fastjogl"; - - // handles the post initialization with JoglRenderer - protected boolean post_init = false; - - private final xcommand_t INIT_CALLBACK = new xcommand_t() { - public void execute() { - // only used for the first run (initialization) - // clear the screen - gl.glClearColor(0, 0, 0, 0); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - - // - // check the post init process - // - if (!post_init) { - ri.Con_Printf(Defines.PRINT_ALL, "Missing multi-texturing for FastJOGL renderer\n"); - } - - GLimp_EndFrame(); - } - }; - - private xcommand_t callback = INIT_CALLBACK; - protected boolean contextInUse = false; - - private GraphicsDevice device; - private DisplayMode oldDisplayMode; - - GLCanvas canvas; - JFrame window; - - // window position on the screen - int window_xpos, window_ypos; - - /** - * @return true - */ - boolean GLimp_Init(int xpos, int ypos) { - // do nothing - window_xpos = xpos; - window_ypos = ypos; - return true; - } - - /** - * @param dim - * @param mode - * @param fullscreen - * @return enum rserr_t - */ - int GLimp_SetMode(Dimension dim, int mode, boolean fullscreen) { - - Dimension newDim = new Dimension(); - - ri.Cvar_Get("r_fakeFullscreen", "0", Globals.CVAR_ARCHIVE); - - ri.Con_Printf(Defines.PRINT_ALL, "Initializing OpenGL display\n"); - - ri.Con_Printf(Defines.PRINT_ALL, "...setting mode " + mode + ":"); - - if (!ri.Vid_GetModeInfo(newDim, mode)) { - ri.Con_Printf(Defines.PRINT_ALL, " invalid mode\n"); - return rserr_invalid_mode; - } - - ri.Con_Printf(Defines.PRINT_ALL, " " + newDim.width + " " + newDim.height + '\n'); - - // destroy the existing window - GLimp_Shutdown(); - - window = new JFrame("Jake2"); - - GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities()); - - // TODO Use debug pipeline - //canvas.setGL(new DebugGL(canvas.getGL())); - - canvas.setNoAutoRedrawMode(true); - canvas.addGLEventListener(this); - - window.getContentPane().add(canvas); - - canvas.setSize(newDim.width, newDim.height); - - // register event listener - window.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - ri.Cmd_ExecuteText(Defines.EXEC_APPEND, "quit"); - } - }); - - // D I F F E R E N T J A K E 2 E V E N T P R O C E S S I N G - window.addComponentListener(KBD.listener); - canvas.addKeyListener(KBD.listener); - canvas.addMouseListener(KBD.listener); - canvas.addMouseMotionListener(KBD.listener); - - /* - * fullscreen handling - */ - GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); - device = env.getDefaultScreenDevice(); - - if (fullscreen && !device.isFullScreenSupported()) { - ri.Con_Printf(Defines.PRINT_ALL, "...fullscreen not supported\n"); - vid_fullscreen.value = 0; - vid_fullscreen.modified = false; - } - - fullscreen = fullscreen && device.isFullScreenSupported(); - - if (oldDisplayMode == null) { - oldDisplayMode = device.getDisplayMode(); - } - - if (fullscreen) { - - DisplayMode displayMode = findDisplayMode(newDim, oldDisplayMode.getBitDepth(), oldDisplayMode.getRefreshRate()); - - if (displayMode != null) { - newDim.width = displayMode.getWidth(); - newDim.height = displayMode.getHeight(); - window.setUndecorated(true); - window.setResizable(false); - device.setFullScreenWindow(window); - device.setDisplayMode(displayMode); - window.setLocation(0, 0); - window.setSize(displayMode.getWidth(), displayMode.getHeight()); - canvas.setSize(displayMode.getWidth(), displayMode.getHeight()); - ri.Con_Printf(Defines.PRINT_ALL, "...setting fullscreen " + getModeString(displayMode) + '\n'); - } - } else { - window.setLocation(window_xpos, window_ypos); - window.pack(); - window.setResizable(false); - window.setVisible(true); - } - - while (!canvas.isDisplayable()) { - try { - Thread.sleep(50); - } catch (InterruptedException e) {} - } - canvas.requestFocus(); - - this.canvas = canvas; - - vid.width = newDim.width; - vid.height = newDim.height; - - // let the sound and input subsystems know about the new window - ri.Vid_NewWindow(vid.width, vid.height); - - return rserr_ok; - } - - DisplayMode findDisplayMode(Dimension dim, int depth, int rate) { - DisplayMode mode = null; - DisplayMode m = null; - DisplayMode[] modes = device.getDisplayModes(); - int w = dim.width; - int h = dim.height; - - for (int i = 0; i < modes.length; i++) { - m = modes[i]; - if (m.getWidth() == w && m.getHeight() == h && m.getBitDepth() == depth && m.getRefreshRate() == rate) { - mode = m; - break; - } - } - if (mode == null) mode = oldDisplayMode; - Com.Printf(getModeString(mode) + '\n'); - return mode; - } - - String getModeString(DisplayMode m) { - StringBuffer sb = new StringBuffer(); - sb.append(m.getWidth()); - sb.append('x'); - sb.append(m.getHeight()); - sb.append('x'); - sb.append(m.getBitDepth()); - sb.append('@'); - sb.append(m.getRefreshRate()); - sb.append("Hz"); - return sb.toString(); - } - - void GLimp_BeginFrame(float camera_separation) { - // do nothing - } - - protected void GLimp_EndFrame() { - gl.glFlush(); - // swap buffer - // but jogl has no method to swap - } - - protected void GLimp_AppActivate(boolean activate) { - // do nothing - } - - boolean QGL_Init(String dll_name) { - // doesn't need libGL.so or .dll loading - return true; - } - - void QGL_Shutdown() { - // doesn't need libGL.so or .dll loading - // do nothing - } - - void GLimp_Shutdown() { - if (oldDisplayMode != null && device.getFullScreenWindow() != null) { - try { - device.setDisplayMode(oldDisplayMode); - device.setFullScreenWindow(null); - } catch (Exception e) { - e.printStackTrace(); - } - } - if (this.window != null) { - window.dispose(); - } - post_init = false; - callback = INIT_CALLBACK; - } - - void GLimp_EnableLogging(boolean enable) { - // doesn't need jogl logging - // do nothing - } - - void GLimp_LogNewFrame() { - // doesn't need jogl logging - // do nothing - } - - - - // ============================================================================ - // GLEventListener interface - // ============================================================================ - - /* - * @see net.java.games.jogl.GLEventListener#init(net.java.games.jogl.GLDrawable) - */ - public void init(GLDrawable drawable) { - this.gl = drawable.getGL(); - this.glu = drawable.getGLU(); - - // this is a hack to run R_init() in gl context - post_init = R_Init2(); - } - - /* - * @see net.java.games.jogl.GLEventListener#display(net.java.games.jogl.GLDrawable) - */ - public void display(GLDrawable drawable) { - this.gl = drawable.getGL(); - this.glu = drawable.getGLU(); - - contextInUse = true; - callback.execute(); - contextInUse = false; - } - - /* - * @see net.java.games.jogl.GLEventListener#displayChanged(net.java.games.jogl.GLDrawable, boolean, boolean) - */ - public void displayChanged(GLDrawable drawable, boolean arg1, boolean arg2) { - // do nothing - } - - /* - * @see net.java.games.jogl.GLEventListener#reshape(net.java.games.jogl.GLDrawable, int, int, int, int) - */ - public void reshape(GLDrawable drawable, int x, int y, int width, int height) { - // do nothing - } - - /* - * @see jake2.client.refexport_t#updateScreen() - */ - public void updateScreen() { - this.callback = INIT_CALLBACK; - canvas.display(); - } - - public void updateScreen(xcommand_t callback) { - this.callback = callback; - canvas.display(); - } -}
\ No newline at end of file diff --git a/src/jake2/render/fastjogl/Main.java b/src/jake2/render/fastjogl/Main.java index 2363db4..4e32817 100644 --- a/src/jake2/render/fastjogl/Main.java +++ b/src/jake2/render/fastjogl/Main.java @@ -2,7 +2,7 @@ * Main.java * Copyright (C) 2003 * - * $Id: Main.java,v 1.1 2004-07-09 06:50:49 hzi Exp $ + * $Id: Main.java,v 1.2 2004-07-15 14:37:33 hzi Exp $ */ /* Copyright (C) 1997-2001 Id Software, Inc. @@ -25,7 +25,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package jake2.render.fastjogl; -import jake2.*; +import jake2.Defines; +import jake2.Globals; import jake2.client.*; import jake2.game.cplane_t; import jake2.game.cvar_t; @@ -40,9 +41,6 @@ import java.nio.FloatBuffer; import java.nio.IntBuffer; import net.java.games.jogl.GL; -import net.java.games.jogl.GLU; -import net.java.games.jogl.util.BufferUtils; -import net.java.games.jogl.util.GLUT; /** * Main @@ -51,9 +49,6 @@ import net.java.games.jogl.util.GLUT; */ public abstract class Main extends Base { - GL gl; - GLU glu; - GLUT glut = new GLUT(); public static int[] d_8to24table = new int[256]; @@ -83,15 +78,6 @@ public abstract class Main extends Base { abstract void Mod_Modellist_f(); abstract mleaf_t Mod_PointInLeaf(float[] point, model_t model); - abstract boolean QGL_Init(String dll_name); - abstract void QGL_Shutdown(); - abstract boolean GLimp_Init(int xpos, int ypos); - abstract void GLimp_BeginFrame(float camera_separation); - abstract int GLimp_SetMode(Dimension dim, int mode, boolean fullscreen); - abstract void GLimp_Shutdown(); - abstract void GLimp_EnableLogging(boolean enable); - abstract void GLimp_LogNewFrame(); - abstract void GL_SetDefaultState(); abstract void GL_InitImages(); @@ -125,13 +111,9 @@ public abstract class Main extends Base { ==================================================================== */ - // IMPORTED FUNCTIONS - protected refimport_t ri = null; - int GL_TEXTURE0 = GL.GL_TEXTURE0; int GL_TEXTURE1 = GL.GL_TEXTURE1; - viddef_t vid = new viddef_t(); model_t r_worldmodel; @@ -235,7 +217,6 @@ public abstract class Main extends Base { cvar_t gl_3dlabs_broken; - cvar_t vid_fullscreen; cvar_t vid_gamma; cvar_t vid_ref; @@ -1110,32 +1091,18 @@ public abstract class Main extends Base { R_Register(); - // initialize our QGL dynamic bindings - if (!QGL_Init(gl_driver.string)) { - QGL_Shutdown(); - ri.Con_Printf(Defines.PRINT_ALL, "ref_gl::R_Init() - could not load \"" + gl_driver.string + "\"\n"); - return false; - } - - // initialize OS-specific parts of OpenGL - if (!GLimp_Init(vid_xpos, vid_ypos)) { - QGL_Shutdown(); - return false; - } - // set our "safe" modes gl_state.prev_mode = 3; // create the window and set up the context if (!R_SetMode()) { - QGL_Shutdown(); ri.Con_Printf(Defines.PRINT_ALL, "ref_gl::R_Init() - could not R_SetMode()\n"); return false; } return true; } - boolean R_Init2() { + protected boolean R_Init2() { ri.Vid_MenuInit(); /* @@ -1350,11 +1317,6 @@ public abstract class Main extends Base { * shut down OS specific OpenGL stuff like contexts, etc. */ GLimp_Shutdown(); - - /* - * shutdown our QGL subsystem - */ - QGL_Shutdown(); } /* |