Jogamp
cad9c0ad77f1475ff702394441cc1c9e70e7c078
[users/sgothel/jake2.git] / src / jake2 / render / opengl / JoglGL2Driver.java
1 /*
2  * JoglDriver.java
3  * Copyright (C) 2004
4  * 
5  */
6 /*
7 Copyright (C) 1997-2001 Id Software, Inc.
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
18 See the GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23
24  */
25
26 package jake2.render.opengl;
27
28 import java.util.List;
29
30 import jake2.game.cvar_t;
31 import jake2.qcommon.Cvar;
32 import jake2.qcommon.xcommand_t;
33 import jake2.render.Base;
34
35 import javax.media.nativewindow.util.Dimension;
36 import javax.media.opengl.*;
37
38 import com.jogamp.newt.MonitorMode;
39
40 /**
41  * JoglCommon
42  */
43 public abstract class JoglGL2Driver extends JoglGL2ES1 implements GLDriver {
44
45     protected static final GLProfile glp;    
46     static {
47         // exception if GLProfile is n/a is desired
48         cvar_t v = Cvar.Get("jogl_gl2", "1", 0);
49         if( v.value != 0f ) {
50             glp = GLProfile.get(GLProfile.GL2);
51         } else {
52             throw new GLException("GL2 is disabled");
53         }
54     }
55     
56     protected JoglGL2Driver() {
57         super();
58     }
59
60     private NEWTWin newtWin = null;
61
62     public abstract String getName();
63     
64     public List<MonitorMode> getModeList() {
65         if(null == newtWin) {
66             throw new RuntimeException("NEWTWin not yet initialized.");
67         }
68         return newtWin.getModeList();        
69     }
70     
71     public int setMode(Dimension dim, int mode, boolean fullscreen) {
72         if(null == newtWin) {
73             newtWin = new NEWTWin();
74         }
75         int res = newtWin.setMode(glp, dim, mode, fullscreen, getName());
76         if( Base.rserr_ok == res ) {
77             
78             setGL(newtWin.window.getGL().getGL2());
79             init(0, 0);
80             
81             return Base.rserr_ok;
82         }
83         return res;
84     }
85
86     public void shutdown() {
87         if(null != newtWin) {
88             newtWin.shutdown();
89         }
90     }
91
92     /**
93      * @return true
94      */
95     public boolean init(int xpos, int ypos) {
96         // clear the screen
97         // first buffer
98         beginFrame(0.0f);
99         glViewport(0, 0, newtWin.window.getWidth(), newtWin.window.getHeight());
100         glClearColor(0, 0, 0, 0);
101         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
102         endFrame();
103         // second buffer
104         beginFrame(0.0f);
105         glViewport(0, 0, newtWin.window.getWidth(), newtWin.window.getHeight());
106         glClearColor(0, 0, 0, 0);
107         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
108         endFrame();
109         return true;
110     }
111
112     public void beginFrame(float camera_separation) {
113         activateGLContext();
114     }
115
116     public void endFrame() {
117         newtWin.window.swapBuffers();
118         // deactivate();
119         newtWin.fpsCounter.tickFPS();
120     }
121
122     public void appActivate(boolean activate) {
123         // do nothing
124     }
125
126     public void enableLogging(boolean enable) {
127         // do nothing
128     }
129
130     public void logNewFrame() {
131         // do nothing
132     }
133
134     /*
135      * @see jake2.client.refexport_t#updateScreen()
136      */
137     public void updateScreen(xcommand_t callback) {
138         callback.execute();
139     }
140
141     protected final void activateGLContext() {
142         newtWin.activateGLContext();        
143     }
144
145     protected final void deactivateGLContext() {
146         newtWin.activateGLContext();        
147     }
148     
149     // --------------------------------------------------------------------------    
150 }
http://JogAmp.org git info: FAQ, tutorial and man pages.