Jogamp
Fix Window destroyNotify() -> QUIT
[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.endFrame();
118         // deactivate();
119     }
120
121     public void appActivate(boolean activate) {
122         // do nothing
123     }
124
125     public void enableLogging(boolean enable) {
126         // do nothing
127     }
128
129     public void logNewFrame() {
130         // do nothing
131     }
132
133     /*
134      * @see jake2.client.refexport_t#updateScreen()
135      */
136     public void updateScreen(xcommand_t callback) {
137         callback.execute();
138     }
139
140     protected final void activateGLContext() {
141         newtWin.activateGLContext();        
142     }
143
144     protected final void deactivateGLContext() {
145         newtWin.activateGLContext();        
146     }
147     
148     // --------------------------------------------------------------------------    
149 }
http://JogAmp.org git info: FAQ, tutorial and man pages.