aboutsummaryrefslogtreecommitdiffstats
path: root/src/jake2/render
diff options
context:
space:
mode:
authorHolger Zickner <[email protected]>2004-07-15 14:37:35 +0000
committerHolger Zickner <[email protected]>2004-07-15 14:37:35 +0000
commit3dd339c9572b792b85bd49182c826aaec36ee161 (patch)
tree89bf9c92372cf384bce4c29dc5ec09c7ab7069f2 /src/jake2/render
parente45462dfe3f3db94bf9668d294794c27909a522f (diff)
show fullscreen modes in video menu
move common renderer code to JoglBase
Diffstat (limited to 'src/jake2/render')
-rw-r--r--src/jake2/render/FastJoglRenderer.java10
-rw-r--r--src/jake2/render/JoglBase.java (renamed from src/jake2/render/jogl/Impl.java)287
-rw-r--r--src/jake2/render/JoglRenderer.java8
-rw-r--r--src/jake2/render/fastjogl/Base.java11
-rw-r--r--src/jake2/render/fastjogl/Draw.java4
-rw-r--r--src/jake2/render/fastjogl/Impl.java343
-rw-r--r--src/jake2/render/fastjogl/Main.java46
-rw-r--r--src/jake2/render/jogl/Base.java11
-rw-r--r--src/jake2/render/jogl/Draw.java4
-rw-r--r--src/jake2/render/jogl/Main.java52
10 files changed, 185 insertions, 591 deletions
diff --git a/src/jake2/render/FastJoglRenderer.java b/src/jake2/render/FastJoglRenderer.java
index da20bfd..56ab03b 100644
--- a/src/jake2/render/FastJoglRenderer.java
+++ b/src/jake2/render/FastJoglRenderer.java
@@ -2,7 +2,7 @@
* FastJoglRenderer.java
* Copyright (C) 2003
*
- * $Id: FastJoglRenderer.java,v 1.1 2004-07-09 06:50:47 hzi Exp $
+ * $Id: FastJoglRenderer.java,v 1.2 2004-07-15 14:37:35 hzi Exp $
*/
/*
Copyright (C) 1997-2001 Id Software, Inc.
@@ -28,7 +28,7 @@ package jake2.render;
import jake2.Defines;
import jake2.client.*;
import jake2.qcommon.xcommand_t;
-import jake2.render.fastjogl.Impl;
+import jake2.render.fastjogl.Misc;
import java.awt.Dimension;
@@ -37,8 +37,10 @@ import java.awt.Dimension;
*
* @author cwei
*/
-final class FastJoglRenderer extends Impl implements refexport_t, Ref {
-
+final class FastJoglRenderer extends Misc implements refexport_t, Ref {
+
+ public static final String DRIVER_NAME = "fastjogl";
+
static {
Renderer.register(new FastJoglRenderer());
};
diff --git a/src/jake2/render/jogl/Impl.java b/src/jake2/render/JoglBase.java
index cfaec7e..5477229 100644
--- a/src/jake2/render/jogl/Impl.java
+++ b/src/jake2/render/JoglBase.java
@@ -1,8 +1,8 @@
/*
- * Impl.java
- * Copyright (C) 2003
- *
- * $Id: Impl.java,v 1.5 2004-07-09 06:50:48 hzi Exp $
+ * JoglCommon.java
+ * Copyright (C) 2004
+ *
+ * $Id: JoglBase.java,v 1.1 2004-07-15 14:37:34 hzi Exp $
*/
/*
Copyright (C) 1997-2001 Id Software, Inc.
@@ -23,35 +23,53 @@ 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.jogl;
+
+package jake2.render;
import jake2.Defines;
-import jake2.Globals;
-import jake2.qcommon.Com;
+import jake2.client.refimport_t;
+import jake2.client.viddef_t;
+import jake2.game.cvar_t;
import jake2.qcommon.xcommand_t;
import jake2.sys.KBD;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.util.LinkedList;
import javax.swing.JFrame;
import net.java.games.jogl.*;
+import net.java.games.jogl.util.GLUT;
/**
- * Impl
- *
- * @author cwei
+ * JoglCommon
*/
-public class Impl extends Misc implements GLEventListener {
+public abstract class JoglBase implements GLEventListener {
+
+ // IMPORTED FUNCTIONS
+ protected refimport_t ri = null;
+
+ protected GraphicsDevice device;
+ protected DisplayMode oldDisplayMode;
+ protected GLCanvas canvas;
+ JFrame window;
+
+ protected GL gl;
+ protected GLU glu;
+ protected GLUT glut = new GLUT();
- public static final String DRIVER_NAME = "jogl";
+ // window position on the screen
+ int window_xpos, window_ypos;
+ protected viddef_t vid = new viddef_t();
// handles the post initialization with JoglRenderer
protected boolean post_init = false;
-
- private final xcommand_t INIT_CALLBACK = new xcommand_t() {
+ protected boolean contextInUse = false;
+ protected abstract boolean R_Init2();
+
+ protected final xcommand_t INIT_CALLBACK = new xcommand_t() {
public void execute() {
// only used for the first run (initialization)
// clear the screen
@@ -68,27 +86,76 @@ public class Impl extends Misc implements GLEventListener {
GLimp_EndFrame();
}
};
-
- private xcommand_t callback = INIT_CALLBACK;
- protected boolean contextInUse = false;
+ protected xcommand_t callback = INIT_CALLBACK;
- private GraphicsDevice device;
- private DisplayMode oldDisplayMode;
+ protected cvar_t vid_fullscreen;
- GLCanvas canvas;
- JFrame window;
+ // enum rserr_t
+ protected static final int rserr_ok = 0;
+ protected static final int rserr_invalid_fullscreen = 1;
+ protected static final int rserr_invalid_mode = 2;
+ protected static final int rserr_unknown = 3;
- // 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;
+ public DisplayMode[] getModeList() {
+ DisplayMode[] modes = device.getDisplayModes();
+ LinkedList l = new LinkedList();
+ l.add(oldDisplayMode);
+
+ for (int i = 0; i < modes.length; i++) {
+ DisplayMode m = modes[i];
+
+ if (m.getBitDepth() != oldDisplayMode.getBitDepth()) continue;
+ if (m.getRefreshRate() > oldDisplayMode.getRefreshRate()) continue;
+
+ int j = 0;
+ DisplayMode ml = null;
+ for (j = 0; j < l.size(); j++) {
+ ml = (DisplayMode)l.get(j);
+ if (ml.getWidth() >= m.getWidth()) break;
+ }
+ if (j == l.size()) {
+ l.addLast(m);
+ } else if (ml.getWidth() > m.getWidth()) {
+ l.add(j, m);
+ } else if (m.getRefreshRate() > ml.getRefreshRate()){
+ l.remove(j);
+ l.add(j, m);
+ }
+ }
+ DisplayMode[] ma = new DisplayMode[l.size()];
+ l.toArray(ma);
+ return ma;
+ }
+
+ DisplayMode findDisplayMode(Dimension dim) {
+ DisplayMode mode = null;
+ DisplayMode m = null;
+ DisplayMode[] modes = getModeList();
+ int w = dim.width;
+ int h = dim.height;
+
+ for (int i = 0; i < modes.length; i++) {
+ m = modes[i];
+ if (m.getWidth() == w) {
+ mode = m;
+ break;
+ }
+ }
+ if (mode == null) mode = oldDisplayMode;
+ 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();
}
/**
@@ -97,12 +164,10 @@ public class Impl extends Misc implements GLEventListener {
* @param fullscreen
* @return enum rserr_t
*/
- int GLimp_SetMode(Dimension dim, int mode, boolean fullscreen) {
+ protected 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 + ":");
@@ -127,9 +192,9 @@ public class Impl extends Misc implements GLEventListener {
canvas.setNoAutoRedrawMode(true);
canvas.addGLEventListener(this);
- window.getContentPane().add(canvas);
+ //window.getContentPane().add(canvas);
- canvas.setSize(newDim.width, newDim.height);
+ //canvas.setSize(newDim.width, newDim.height);
// register event listener
window.addWindowListener(new WindowAdapter() {
@@ -149,39 +214,35 @@ public class Impl extends Misc implements GLEventListener {
*/
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());
+ DisplayMode displayMode = findDisplayMode(newDim);
+
+ newDim.width = displayMode.getWidth();
+ newDim.height = displayMode.getHeight();
+ window.setUndecorated(true);
+ window.setSize(displayMode.getWidth(), displayMode.getHeight());
+ window.setResizable(false);
+ window.getContentPane().add(canvas);
+
+ device.setFullScreenWindow(window);
- if (displayMode != null) {
- newDim.width = displayMode.getWidth();
- newDim.height = displayMode.getHeight();
- window.setUndecorated(true);
- window.setResizable(false);
- device.setFullScreenWindow(window);
+ if (!displayMode.equals(oldDisplayMode))
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');
- }
+
+ window.setLocation(0, 0);
+ ri.Con_Printf(Defines.PRINT_ALL, "...setting fullscreen " + getModeString(displayMode) + '\n');
+
} else {
window.setLocation(window_xpos, window_ypos);
- window.pack();
+ window.setSize(newDim.width, newDim.height);
window.setResizable(false);
+ window.getContentPane().add(canvas);
window.setVisible(true);
}
@@ -202,41 +263,32 @@ public class Impl extends Misc implements GLEventListener {
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;
+
+ protected void GLimp_Shutdown() {
+ if (oldDisplayMode != null && device.getFullScreenWindow() != null) {
+ try {
+ if (!device.getDisplayMode().equals(oldDisplayMode))
+ device.setDisplayMode(oldDisplayMode);
+ device.setFullScreenWindow(null);
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
- 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();
+ if (this.window != null) {
+ window.dispose();
+ }
+ post_init = false;
+ callback = INIT_CALLBACK;
}
- void GLimp_BeginFrame(float camera_separation) {
+ /**
+ * @return true
+ */
+ protected boolean GLimp_Init(int xpos, int ypos) {
// do nothing
+ window_xpos = xpos;
+ window_ypos = ypos;
+ return true;
}
protected void GLimp_EndFrame() {
@@ -244,49 +296,36 @@ public class Impl extends Misc implements GLEventListener {
// swap buffer
// but jogl has no method to swap
}
-
- protected void GLimp_AppActivate(boolean activate) {
+ protected void GLimp_BeginFrame(float camera_separation) {
// 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
+ protected void GLimp_AppActivate(boolean activate) {
// 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) {
+ protected void GLimp_EnableLogging(boolean enable) {
// doesn't need jogl logging
// do nothing
}
- void GLimp_LogNewFrame() {
+ protected void GLimp_LogNewFrame() {
// doesn't need jogl logging
// 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();
+ }
// ============================================================================
// GLEventListener interface
// ============================================================================
@@ -327,17 +366,5 @@ public class Impl extends Misc implements GLEventListener {
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();
- }
}
diff --git a/src/jake2/render/JoglRenderer.java b/src/jake2/render/JoglRenderer.java
index 97e3967..6e0926b 100644
--- a/src/jake2/render/JoglRenderer.java
+++ b/src/jake2/render/JoglRenderer.java
@@ -2,7 +2,7 @@
* JoglRenderer.java
* Copyright (C) 2003
*
- * $Id: JoglRenderer.java,v 1.3 2004-07-09 06:50:47 hzi Exp $
+ * $Id: JoglRenderer.java,v 1.4 2004-07-15 14:37:35 hzi Exp $
*/
/*
Copyright (C) 1997-2001 Id Software, Inc.
@@ -28,7 +28,7 @@ package jake2.render;
import jake2.Defines;
import jake2.client.*;
import jake2.qcommon.xcommand_t;
-import jake2.render.jogl.Impl;
+import jake2.render.jogl.Misc;
import java.awt.Dimension;
@@ -37,7 +37,9 @@ import java.awt.Dimension;
*
* @author cwei
*/
-final class JoglRenderer extends Impl implements refexport_t, Ref {
+final class JoglRenderer extends Misc implements refexport_t, Ref {
+
+ public static final String DRIVER_NAME = "jogl";
static {
Renderer.register(new JoglRenderer());
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();
}
/*
diff --git a/src/jake2/render/jogl/Base.java b/src/jake2/render/jogl/Base.java
index 91cbdea..5a4e9ea 100644
--- a/src/jake2/render/jogl/Base.java
+++ b/src/jake2/render/jogl/Base.java
@@ -2,7 +2,7 @@
* Base.java
* Copyright (C) 2003
*
- * $Id: Base.java,v 1.1 2004-07-07 19:59:36 hzi Exp $
+ * $Id: Base.java,v 1.2 2004-07-15 14:37:34 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.jogl;
+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/jogl/Draw.java b/src/jake2/render/jogl/Draw.java
index 3251b0e..b83e422 100644
--- a/src/jake2/render/jogl/Draw.java
+++ b/src/jake2/render/jogl/Draw.java
@@ -2,7 +2,7 @@
* Draw.java
* Copyright (C) 2003
*
- * $Id: Draw.java,v 1.3 2004-07-09 06:50:48 hzi Exp $
+ * $Id: Draw.java,v 1.4 2004-07-15 14:37:34 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.jogl;
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/jogl/Main.java b/src/jake2/render/jogl/Main.java
index 2b46501..9f85422 100644
--- a/src/jake2/render/jogl/Main.java
+++ b/src/jake2/render/jogl/Main.java
@@ -2,7 +2,7 @@
* Main.java
* Copyright (C) 2003
*
- * $Id: Main.java,v 1.3 2004-07-09 06:50:47 hzi Exp $
+ * $Id: Main.java,v 1.4 2004-07-15 14:37:34 hzi Exp $
*/
/*
Copyright (C) 1997-2001 Id Software, Inc.
@@ -25,13 +25,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package jake2.render.jogl;
-import jake2.*;
+import jake2.Defines;
+import jake2.Globals;
import jake2.client.*;
import jake2.game.cplane_t;
import jake2.game.cvar_t;
-import jake2.qcommon.Cvar;
-import jake2.qcommon.qfiles;
-import jake2.qcommon.xcommand_t;
+import jake2.qcommon.*;
import jake2.render.*;
import jake2.util.Math3D;
import jake2.util.Vargs;
@@ -41,9 +40,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
@@ -52,10 +48,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];
int c_visible_lightmaps;
@@ -86,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();
@@ -128,14 +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;
float gldepthmin, gldepthmax;
@@ -238,7 +216,6 @@ public abstract class Main extends Base {
cvar_t gl_3dlabs_broken;
- cvar_t vid_fullscreen;
cvar_t vid_gamma;
cvar_t vid_ref;
@@ -1113,32 +1090,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();
/*
@@ -1385,11 +1348,6 @@ public abstract class Main extends Base {
* shut down OS specific OpenGL stuff like contexts, etc.
*/
GLimp_Shutdown();
-
- /*
- * shutdown our QGL subsystem
- */
- QGL_Shutdown();
}
/*