diff options
-rw-r--r-- | src/jake2/render/Jsr231cbRenderer.java | 329 | ||||
-rw-r--r-- | src/jake2/render/Renderer.java | 13 | ||||
-rw-r--r-- | src/jake2/render/opengl/Jsr231cbDriver.java | 363 |
3 files changed, 4 insertions, 701 deletions
diff --git a/src/jake2/render/Jsr231cbRenderer.java b/src/jake2/render/Jsr231cbRenderer.java deleted file mode 100644 index 1990191..0000000 --- a/src/jake2/render/Jsr231cbRenderer.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Jsr231cbRenderer.java - * Copyright (C) 2003 - * - */ -/* -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; - -import jake2.Defines; -import jake2.client.refdef_t; -import jake2.client.refexport_t; -import jake2.qcommon.xcommand_t; -import jake2.render.opengl.Jsr231cbDriver; -import jake2.sys.JOGLKBD; -import jake2.sys.KBD; - -import java.awt.Dimension; - -/** - * Jsr231cbRenderer - * - * This is render uses the callback version of jsr231 - * - * @author cwei - */ -final class Jsr231cbRenderer extends Jsr231cbDriver implements refexport_t, Ref { - - public static final String DRIVER_NAME = "jsr231"; - - private KBD kbd = new JOGLKBD(); - - // is set from Renderer factory - private RenderAPI impl; - - static { - Renderer.register(new Jsr231cbRenderer()); - }; - - private Jsr231cbRenderer() { - // singleton - } - - // ============================================================================ - // public interface for Renderer implementations - // - // refexport_t (ref.h) - // ============================================================================ - - - private boolean post_init = false; - - /** - * @see jake2.client.refexport_t#Init() - */ - public boolean Init(int vid_xpos, int vid_ypos) { - // init the OpenGL drivers - impl.setGLDriver(this); - // pre init - if (!impl.R_Init(vid_xpos, vid_ypos)) return false; - // calls the R_Init2() internally - updateScreen(new xcommand_t() { - public void execute() { - Jsr231cbRenderer.this.post_init = impl.R_Init2(); - } - }); - // the result from R_Init2() - return post_init; - } - - /** - * @see jake2.client.refexport_t#Shutdown() - */ - public void Shutdown() { - impl.R_Shutdown(); - } - - /** - * @see jake2.client.refexport_t#BeginRegistration(java.lang.String) - */ - public void BeginRegistration(final String map) { - if (contextInUse) { - impl.R_BeginRegistration(map); - } else { - updateScreen(new xcommand_t() { - public void execute() { - impl.R_BeginRegistration(map); - } - }); - } - } - - - private model_t model = null; - - /** - * @see jake2.client.refexport_t#RegisterModel(java.lang.String) - */ - public model_t RegisterModel(final String name) { - if (contextInUse) { - return impl.R_RegisterModel(name); - } else { - updateScreen(new xcommand_t() { - public void execute() { - Jsr231cbRenderer.this.model = impl.R_RegisterModel(name); - } - }); - return model; - } - } - - private image_t image = null; - - /** - * @see jake2.client.refexport_t#RegisterSkin(java.lang.String) - */ - public image_t RegisterSkin(final String name) { - if (contextInUse) { - return impl.R_RegisterSkin(name); - } else { - updateScreen(new xcommand_t() { - public void execute() { - Jsr231cbRenderer.this.image = impl.R_RegisterSkin(name); - } - }); - return image; - } - } - - /** - * @see jake2.client.refexport_t#RegisterPic(java.lang.String) - */ - public image_t RegisterPic(final String name) { - if (contextInUse) { - return impl.Draw_FindPic(name); - } else { - updateScreen(new xcommand_t() { - public void execute() { - Jsr231cbRenderer.this.image = impl.Draw_FindPic(name); - } - }); - return image; - } - } - - /** - * @see jake2.client.refexport_t#SetSky(java.lang.String, float, float[]) - */ - public void SetSky(final String name, final float rotate, final float[] axis) { - if (contextInUse) { - impl.R_SetSky(name, rotate, axis); - } else { - updateScreen(new xcommand_t() { - public void execute() { - impl.R_SetSky(name, rotate, axis); - } - }); - } - } - - /** - * @see jake2.client.refexport_t#EndRegistration() - */ - public void EndRegistration() { - if (contextInUse) { - impl.R_EndRegistration(); - } else { - updateScreen(new xcommand_t() { - public void execute() { - impl.R_EndRegistration(); - } - }); - } - } - - /** - * @see jake2.client.refexport_t#RenderFrame(jake2.client.refdef_t) - */ - public void RenderFrame(refdef_t fd) { - impl.R_RenderFrame(fd); - } - - /** - * @see jake2.client.refexport_t#DrawGetPicSize(java.awt.Dimension, java.lang.String) - */ - public void DrawGetPicSize(Dimension dim, String name) { - impl.Draw_GetPicSize(dim, name); - } - - /** - * @see jake2.client.refexport_t#DrawPic(int, int, java.lang.String) - */ - public void DrawPic(int x, int y, String name) { - impl.Draw_Pic(x, y, name); - } - - /** - * @see jake2.client.refexport_t#DrawStretchPic(int, int, int, int, java.lang.String) - */ - public void DrawStretchPic(int x, int y, int w, int h, String name) { - impl.Draw_StretchPic(x, y, w, h, name); - } - - /** - * @see jake2.client.refexport_t#DrawChar(int, int, int) - */ - public void DrawChar(final int x, final int y, final int num) { - if (contextInUse) { - impl.Draw_Char(x, y, num);; - } else { - updateScreen(new xcommand_t() { - public void execute() { - impl.Draw_Char(x, y, num); - } - }); - } - } - - /** - * @see jake2.client.refexport_t#DrawTileClear(int, int, int, int, java.lang.String) - */ - public void DrawTileClear(int x, int y, int w, int h, String name) { - impl.Draw_TileClear(x, y, w, h, name); - } - - /** - * @see jake2.client.refexport_t#DrawFill(int, int, int, int, int) - */ - public void DrawFill(int x, int y, int w, int h, int c) { - impl.Draw_Fill(x, y, w, h, c); - } - - /** - * @see jake2.client.refexport_t#DrawFadeScreen() - */ - public void DrawFadeScreen() { - impl.Draw_FadeScreen(); - } - - /** - * @see jake2.client.refexport_t#DrawStretchRaw(int, int, int, int, int, int, byte[]) - */ - public void DrawStretchRaw(int x, int y, int w, int h, int cols, int rows, byte[] data) { - impl.Draw_StretchRaw(x, y, w, h, cols, rows, data); - } - - /** - * @see jake2.client.refexport_t#CinematicSetPalette(byte[]) - */ - public void CinematicSetPalette(byte[] palette) { - impl.R_SetPalette(palette); - } - - /** - * @see jake2.client.refexport_t#BeginFrame(float) - */ - public void BeginFrame(float camera_separation) { - impl.R_BeginFrame(camera_separation); - } - - /** - * @see jake2.client.refexport_t#EndFrame() - */ - public void EndFrame() { - endFrame(); - } - - /** - * @see jake2.client.refexport_t#AppActivate(boolean) - */ - public void AppActivate(boolean activate) { - appActivate(activate); - } - - public void screenshot() { - if (contextInUse) { - impl.GL_ScreenShot_f(); - } else { - updateScreen(new xcommand_t() { - public void execute() { - impl.GL_ScreenShot_f(); - } - }); - } - } - - public int apiVersion() { - return Defines.API_VERSION; - } - - public KBD getKeyboardHandler() { - return kbd; - } - - // ============================================================================ - // Ref interface - // ============================================================================ - - public String getName() { - return DRIVER_NAME; - } - - public String toString() { - return DRIVER_NAME; - } - - public refexport_t GetRefAPI(RenderAPI renderer) { - this.impl = renderer; - return this; - } - -}
\ No newline at end of file diff --git a/src/jake2/render/Renderer.java b/src/jake2/render/Renderer.java index 4c3b18e..76db87f 100644 --- a/src/jake2/render/Renderer.java +++ b/src/jake2/render/Renderer.java @@ -2,7 +2,7 @@ * Renderer.java * Copyright (C) 2003 * - * $Id: Renderer.java,v 1.11 2006-12-11 15:44:29 cawe Exp $ + * $Id: Renderer.java,v 1.12 2008-03-02 15:40:27 cawe Exp $ */ /* Copyright (C) 1997-2001 Id Software, Inc. @@ -47,7 +47,7 @@ public class Renderer { Class.forName("net.java.games.jogl.GL"); Class.forName("jake2.render.JoglRenderer"); } catch (ClassNotFoundException e) { - // ignore the fastjogl drivers if runtime not in classpath + // ignore the oldjogl drivers if runtime not in classpath } try { Class.forName("org.lwjgl.opengl.GL11"); @@ -57,14 +57,9 @@ public class Renderer { } try { Class.forName("javax.media.opengl.GL"); - // TODO this is a hack for Win32 - if (System.getProperty("os.name").startsWith("Windows")) { - Class.forName("jake2.render.Jsr231Renderer"); - } else { - Class.forName("jake2.render.Jsr231Renderer"); - } + Class.forName("jake2.render.Jsr231Renderer"); } catch (ClassNotFoundException e) { - // ignore the jogl drivers if runtime not in classpath + // ignore the jnew ogl drivers if runtime not in classpath } } catch (Throwable e) { e.printStackTrace(); diff --git a/src/jake2/render/opengl/Jsr231cbDriver.java b/src/jake2/render/opengl/Jsr231cbDriver.java deleted file mode 100644 index 5580db6..0000000 --- a/src/jake2/render/opengl/Jsr231cbDriver.java +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Jsr231cb.java - * Copyright (C) 2004 - * - */ -/* -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.opengl; - -import jake2.Defines; -import jake2.client.VID; -import jake2.qcommon.Cbuf; -import jake2.qcommon.xcommand_t; -import jake2.render.Base; -import jake2.sys.JOGLKBD; - -import java.awt.*; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.util.LinkedList; - -import javax.media.opengl.*; -import javax.swing.ImageIcon; -import javax.swing.JFrame; - -/** - * JoglCommon - */ -public abstract class Jsr231cbDriver extends Jsr231GL implements GLDriver, GLEventListener { - - protected Jsr231cbDriver() { - // see JoglRenderer - } - - private GraphicsDevice device; - - private DisplayMode oldDisplayMode; - private GLCanvas canvas; - JFrame window; - - // window position on the screen - int window_xpos, window_ypos; - - // handles the post initialization with JoglRenderer - protected boolean post_init = false; - protected boolean contextInUse = false; - - protected final xcommand_t INIT_CALLBACK = new xcommand_t() { - public void execute() { - // only used for the first run (initialization) - // clear the screen - glClearColor(0, 0, 0, 0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // - // check the post init process - // - if (!post_init) { - VID.Printf(Defines.PRINT_ALL, "Missing multi-texturing for FastJOGL renderer\n"); - } - - endFrame(); - } - }; - - xcommand_t callback = INIT_CALLBACK; - - 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; - if (m.getHeight() < 240 || m.getWidth() < 320) 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 (ml.getWidth() == m.getWidth() && ml.getHeight() >= m.getHeight()) break; - } - if (j == l.size()) { - l.addLast(m); - } else if (ml.getWidth() > m.getWidth() || ml.getHeight() > m.getHeight()) { - 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 && m.getHeight() == h) { - 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(); - } - - /** - * @param dim - * @param mode - * @param fullscreen - * @return enum Base.rserr_t - */ - public int setMode(Dimension dim, int mode, boolean fullscreen) { - - Dimension newDim = new Dimension(); - - VID.Printf(Defines.PRINT_ALL, "Initializing OpenGL display\n"); - - VID.Printf(Defines.PRINT_ALL, "...setting mode " + mode + ":"); - - /* - * fullscreen handling - */ - GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); - device = env.getDefaultScreenDevice(); - - if (oldDisplayMode == null) { - oldDisplayMode = device.getDisplayMode(); - } - - if (!VID.GetModeInfo(newDim, mode)) { - VID.Printf(Defines.PRINT_ALL, " invalid mode\n"); - return Base.rserr_invalid_mode; - } - - VID.Printf(Defines.PRINT_ALL, " " + newDim.width + " " + newDim.height + '\n'); - - // destroy the existing window - shutdown(); - - window = new JFrame("Jake2 (jsr231cb)"); - ImageIcon icon = new ImageIcon(getClass().getResource("/icon-small.png")); - window.setIconImage(icon.getImage()); - - GLCanvas canvas = new GLCanvas(new GLCapabilities()); - - // we want keypressed events for TAB key - canvas.setFocusTraversalKeysEnabled(false); - - // TODO Use debug pipeline - //canvas.setGL(new DebugGL(canvas.getGL())); - - canvas.setAutoSwapBufferMode(false); - - 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) { - Cbuf.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(JOGLKBD.listener); - canvas.addKeyListener(JOGLKBD.listener); - canvas.addMouseListener(JOGLKBD.listener); - canvas.addMouseMotionListener(JOGLKBD.listener); - canvas.addMouseWheelListener(JOGLKBD.listener); - - if (fullscreen) { - - DisplayMode displayMode = findDisplayMode(newDim); - - newDim.width = displayMode.getWidth(); - newDim.height = displayMode.getHeight(); - window.setUndecorated(true); - window.setResizable(false); - - device.setFullScreenWindow(window); - - if (device.isFullScreenSupported()) - device.setDisplayMode(displayMode); - - window.setLocation(0, 0); - window.setSize(displayMode.getWidth(), displayMode.getHeight()); - canvas.setSize(displayMode.getWidth(), displayMode.getHeight()); - - VID.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; - - Base.setVid(newDim.width, newDim.height); - - // let the sound and input subsystems know about the new window - VID.NewWindow(newDim.width, newDim.height); - - return Base.rserr_ok; - } - - public void shutdown() { - if (oldDisplayMode != null && device.getFullScreenWindow() != null) { - try { - if (device.isFullScreenSupported()) - device.setDisplayMode(oldDisplayMode); - device.setFullScreenWindow(null); - } catch (Exception e) { - e.printStackTrace(); - } - } - if (window != null) { - // this is very important to change the GL context - if (canvas != null) { - canvas.setVisible(false); - window.remove(canvas); - canvas = null; - } - window.dispose(); - } - post_init = false; - callback = INIT_CALLBACK; - } - - /** - * @return true - */ - public boolean init(int xpos, int ypos) { - // do nothing - window_xpos = xpos; - window_ypos = ypos; - return true; - } - - public void beginFrame(float camera_separation) { - // do nothing - } - - public void endFrame() { - glFlush(); - canvas.swapBuffers(); - } - - public void appActivate(boolean activate) { - // do nothing - } - - public void enableLogging(boolean enable) { - // do nothing - } - - public void logNewFrame() { - // 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 - // ============================================================================ - - /* - * @see net.java.games.jogl.GLEventListener#init(net.java.games.jogl.GLDrawable) - */ - public void init(GLAutoDrawable drawable) { - setGL(drawable.getGL()); - } - - /* - * @see net.java.games.jogl.GLEventListener#display(net.java.games.jogl.GLDrawable) - */ - public void display(GLAutoDrawable drawable) { - setGL(drawable.getGL()); - - contextInUse = true; - callback.execute(); - contextInUse = false; - } - - /* - * @see net.java.games.jogl.GLEventListener#displayChanged(net.java.games.jogl.GLDrawable, boolean, boolean) - */ - public void displayChanged(GLAutoDrawable 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(GLAutoDrawable drawable, int x, int y, int width, int height) { - // do nothing - } - -} |