propane 3.4.2-java → 3.5.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.mvn/wrapper/MavenWrapperDownloader.java +1 -1
- data/.travis.yml +1 -1
- data/CHANGELOG.md +5 -1
- data/Gemfile +2 -0
- data/README.md +15 -3
- data/Rakefile +9 -10
- data/bin/propane +3 -1
- data/lib/propane.rb +2 -1
- data/lib/propane/app.rb +2 -1
- data/lib/propane/creators/sketch_class.rb +7 -1
- data/lib/propane/creators/sketch_factory.rb +4 -2
- data/lib/propane/creators/sketch_writer.rb +1 -0
- data/lib/propane/helper_methods.rb +22 -22
- data/lib/propane/helpers/numeric.rb +2 -0
- data/lib/propane/helpers/version_error.rb +1 -0
- data/lib/propane/library.rb +5 -1
- data/lib/propane/library_loader.rb +2 -0
- data/lib/propane/native_folder.rb +10 -9
- data/lib/propane/native_loader.rb +3 -0
- data/lib/propane/runner.rb +11 -5
- data/lib/propane/version.rb +2 -1
- data/library/boids/boids.rb +21 -11
- data/library/color_group/color_group.rb +2 -0
- data/library/control_panel/control_panel.rb +8 -5
- data/library/dxf/dxf.rb +2 -0
- data/library/file_chooser/chooser.rb +10 -9
- data/library/file_chooser/file_chooser.rb +10 -9
- data/library/library_proxy/library_proxy.rb +2 -0
- data/library/net/net.rb +2 -0
- data/library/simplex_noise/simplex_noise.rb +2 -0
- data/library/slider/slider.rb +23 -22
- data/library/vector_utils/vector_utils.rb +4 -0
- data/library/video_event/video_event.rb +2 -0
- data/pom.rb +46 -45
- data/pom.xml +4 -4
- data/propane.gemspec +8 -7
- data/src/main/java/monkstone/ColorUtil.java +1 -3
- data/src/main/java/monkstone/MathToolModule.java +1 -1
- data/src/main/java/monkstone/PropaneLibrary.java +2 -2
- data/src/main/java/monkstone/fastmath/Deglut.java +1 -1
- data/src/main/java/monkstone/filechooser/Chooser.java +1 -1
- data/src/main/java/monkstone/noise/SimplexNoise.java +2 -2
- data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SliderBar.java +1 -1
- data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
- data/src/main/java/monkstone/slider/WheelHandler.java +1 -1
- data/src/main/java/monkstone/vecmath/package-info.java +1 -1
- data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +1 -2
- data/src/main/java/monkstone/videoevent/CaptureEvent.java +1 -1
- data/src/main/java/monkstone/videoevent/MovieEvent.java +1 -1
- data/src/main/java/monkstone/videoevent/package-info.java +1 -1
- data/src/main/java/processing/awt/PGraphicsJava2D.java +788 -283
- data/src/main/java/processing/awt/PImageAWT.java +260 -0
- data/src/main/java/processing/awt/PShapeJava2D.java +56 -53
- data/src/main/java/processing/awt/PSurfaceAWT.java +309 -211
- data/src/main/java/processing/awt/ShimAWT.java +580 -0
- data/src/main/java/processing/core/PApplet.java +2877 -2098
- data/src/main/java/processing/core/PConstants.java +477 -447
- data/src/main/java/processing/core/PFont.java +930 -884
- data/src/main/java/processing/core/PGraphics.java +337 -309
- data/src/main/java/processing/core/PImage.java +1689 -1689
- data/src/main/java/processing/core/PMatrix.java +172 -159
- data/src/main/java/processing/core/PMatrix2D.java +456 -410
- data/src/main/java/processing/core/PMatrix3D.java +755 -735
- data/src/main/java/processing/core/PShape.java +2910 -2656
- data/src/main/java/processing/core/PShapeOBJ.java +97 -94
- data/src/main/java/processing/core/PShapeSVG.java +1656 -1462
- data/src/main/java/processing/core/PStyle.java +40 -37
- data/src/main/java/processing/core/PSurface.java +134 -97
- data/src/main/java/processing/core/PSurfaceNone.java +292 -218
- data/src/main/java/processing/core/PVector.java +991 -966
- data/src/main/java/processing/core/ThinkDifferent.java +12 -8
- data/src/main/java/processing/data/DoubleDict.java +756 -710
- data/src/main/java/processing/data/DoubleList.java +749 -696
- data/src/main/java/processing/data/FloatDict.java +748 -702
- data/src/main/java/processing/data/FloatList.java +751 -697
- data/src/main/java/processing/data/IntDict.java +720 -673
- data/src/main/java/processing/data/IntList.java +699 -633
- data/src/main/java/processing/data/JSONArray.java +931 -873
- data/src/main/java/processing/data/JSONObject.java +1262 -1165
- data/src/main/java/processing/data/JSONTokener.java +351 -341
- data/src/main/java/processing/data/LongDict.java +710 -663
- data/src/main/java/processing/data/LongList.java +701 -635
- data/src/main/java/processing/data/Sort.java +37 -41
- data/src/main/java/processing/data/StringDict.java +525 -486
- data/src/main/java/processing/data/StringList.java +626 -580
- data/src/main/java/processing/data/Table.java +3693 -3513
- data/src/main/java/processing/data/TableRow.java +182 -183
- data/src/main/java/processing/data/XML.java +954 -880
- data/src/main/java/processing/event/Event.java +87 -67
- data/src/main/java/processing/event/KeyEvent.java +48 -41
- data/src/main/java/processing/event/MouseEvent.java +87 -113
- data/src/main/java/processing/event/TouchEvent.java +10 -6
- data/src/main/java/processing/javafx/PSurfaceFX.java +26 -0
- data/src/main/java/processing/net/Client.java +20 -20
- data/src/main/java/processing/net/Server.java +9 -9
- data/src/main/java/processing/opengl/FontTexture.java +286 -266
- data/src/main/java/processing/opengl/FrameBuffer.java +390 -376
- data/src/main/java/processing/opengl/LinePath.java +130 -91
- data/src/main/java/processing/opengl/LineStroker.java +593 -582
- data/src/main/java/processing/opengl/PGL.java +645 -579
- data/src/main/java/processing/opengl/PGraphics2D.java +408 -315
- data/src/main/java/processing/opengl/PGraphics3D.java +107 -72
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +12287 -12030
- data/src/main/java/processing/opengl/PJOGL.java +1743 -1672
- data/src/main/java/processing/opengl/PShader.java +345 -416
- data/src/main/java/processing/opengl/PShapeOpenGL.java +4601 -4543
- data/src/main/java/processing/opengl/PSurfaceJOGL.java +1113 -1029
- data/src/main/java/processing/opengl/Texture.java +1489 -1401
- data/src/main/java/processing/opengl/VertexBuffer.java +57 -55
- data/test/create_test.rb +21 -20
- data/test/deglut_spec_test.rb +4 -2
- data/test/helper_methods_test.rb +49 -20
- data/test/math_tool_test.rb +39 -32
- data/test/native_folder.rb +47 -0
- data/test/respond_to_test.rb +3 -2
- data/test/sketches/key_event.rb +2 -2
- data/test/sketches/library/my_library/my_library.rb +3 -0
- data/test/test_helper.rb +2 -0
- data/test/vecmath_spec_test.rb +35 -22
- data/vendors/Rakefile +28 -22
- metadata +13 -13
- data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +0 -154
- data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +0 -154
- data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +0 -160
- data/src/main/java/processing/opengl/shaders/TexLightVert-vc4.glsl +0 -160
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
|
|
1
3
|
/*
|
|
2
4
|
Part of the Processing project - http://processing.org
|
|
3
5
|
|
|
@@ -18,7 +20,8 @@
|
|
|
18
20
|
Public License along with this library; if not, write to the
|
|
19
21
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
|
20
22
|
Boston, MA 02111-1307 USA
|
|
21
|
-
|
|
23
|
+
*/
|
|
24
|
+
|
|
22
25
|
package processing.opengl;
|
|
23
26
|
|
|
24
27
|
import java.awt.Font;
|
|
@@ -57,1869 +60,1937 @@ import processing.core.PGraphics;
|
|
|
57
60
|
import processing.core.PMatrix3D;
|
|
58
61
|
import processing.core.PSurface;
|
|
59
62
|
|
|
63
|
+
|
|
60
64
|
public class PJOGL extends PGL {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
public static int profile = 2;
|
|
64
|
-
|
|
65
|
-
// User-provided icons to override defaults
|
|
66
|
-
protected static String[] icons = null;
|
|
67
|
-
|
|
68
|
-
// The two windowing toolkits available to use in JOGL:
|
|
69
|
-
public static final int AWT = 0; // http://jogamp.org/wiki/index.php/Using_JOGL_in_AWT_SWT_and_Swing
|
|
70
|
-
public static final int NEWT = 1; // http://jogamp.org/jogl/doc/NEWT-Overview.html
|
|
71
|
-
|
|
72
|
-
// ........................................................
|
|
73
|
-
// Public members to access the underlying GL objects and context
|
|
74
|
-
/**
|
|
75
|
-
* Basic GL functionality, common to all profiles
|
|
76
|
-
*/
|
|
77
|
-
public GL gl;
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* GLU interface *
|
|
81
|
-
*/
|
|
82
|
-
public GLU glu;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* The rendering context (holds rendering state info)
|
|
86
|
-
*/
|
|
87
|
-
public GLContext context;
|
|
88
|
-
|
|
89
|
-
// ........................................................
|
|
90
|
-
// Additional parameters
|
|
91
|
-
/**
|
|
92
|
-
* Time that the Processing's animation thread will wait for JOGL's
|
|
93
|
-
* rendering thread to be done with a single frame.
|
|
94
|
-
*/
|
|
95
|
-
protected static int DRAW_TIMEOUT_MILLIS = 500;
|
|
96
|
-
|
|
97
|
-
// ........................................................
|
|
98
|
-
// Protected JOGL-specific objects needed to access the GL profiles
|
|
99
|
-
/**
|
|
100
|
-
* The capabilities of the OpenGL rendering surface
|
|
101
|
-
*/
|
|
102
|
-
protected GLCapabilitiesImmutable capabilities;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* The rendering surface
|
|
106
|
-
*/
|
|
107
|
-
protected GLDrawable drawable;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* GLES2 functionality (shaders, etc)
|
|
111
|
-
*/
|
|
112
|
-
protected GL2ES2 gl2;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* GL3 interface
|
|
116
|
-
*/
|
|
117
|
-
protected GL2GL3 gl3;
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* GL2 desktop functionality (blit framebuffer, map buffer range,
|
|
121
|
-
* multisampled renderbuffers)
|
|
122
|
-
*/
|
|
123
|
-
protected GL2 gl2x;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* GL3ES3 interface
|
|
127
|
-
*/
|
|
128
|
-
protected GL3ES3 gl3es3;
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Stores exceptions that ocurred during drawing
|
|
132
|
-
*/
|
|
133
|
-
protected Exception drawException;
|
|
134
|
-
|
|
135
|
-
// ........................................................
|
|
136
|
-
// Utility arrays to copy projection/modelview matrices to GL
|
|
137
|
-
protected float[] projMatrix;
|
|
138
|
-
protected float[] mvMatrix;
|
|
139
|
-
|
|
140
|
-
// ........................................................
|
|
141
|
-
// Static initialization for some parameters that need to be different for
|
|
142
|
-
// JOGL
|
|
143
|
-
static {
|
|
144
|
-
MIN_DIRECT_BUFFER_SIZE = 2;
|
|
145
|
-
INDEX_TYPE = GL.GL_UNSIGNED_SHORT;
|
|
146
|
-
}
|
|
65
|
+
// OpenGL profile to use (2, 3 or 4)
|
|
66
|
+
public static int profile = 2;
|
|
147
67
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
public PJOGL(PGraphicsOpenGL pg) {
|
|
151
|
-
super(pg);
|
|
152
|
-
glu = new GLU();
|
|
153
|
-
}
|
|
68
|
+
// User-provided icons to override defaults
|
|
69
|
+
protected static String[] icons = null;
|
|
154
70
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
71
|
+
// The two windowing toolkits available to use in JOGL:
|
|
72
|
+
public static final int AWT = 0; // http://jogamp.org/wiki/index.php/Using_JOGL_in_AWT_SWT_and_Swing
|
|
73
|
+
public static final int NEWT = 1; // http://jogamp.org/jogl/doc/NEWT-Overview.html
|
|
159
74
|
|
|
160
|
-
|
|
161
|
-
protected void setFrameRate(float fps) {
|
|
162
|
-
}
|
|
75
|
+
// ........................................................
|
|
163
76
|
|
|
164
|
-
|
|
165
|
-
protected void initSurface(int antialias) {
|
|
166
|
-
}
|
|
77
|
+
// Public members to access the underlying GL objects and context
|
|
167
78
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
79
|
+
/** Basic GL functionality, common to all profiles */
|
|
80
|
+
public GL gl;
|
|
171
81
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
82
|
+
/** GLU interface **/
|
|
83
|
+
public GLU glu;
|
|
175
84
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
PApplet.arrayCopy(icons, PJOGL.icons);
|
|
179
|
-
}
|
|
85
|
+
/** The rendering context (holds rendering state info) */
|
|
86
|
+
public GLContext context;
|
|
180
87
|
|
|
181
|
-
|
|
182
|
-
// Public methods to get/set renderer's properties
|
|
183
|
-
public void setCaps(GLCapabilities caps) {
|
|
184
|
-
reqNumSamples = caps.getNumSamples();
|
|
185
|
-
capabilities = caps;
|
|
186
|
-
}
|
|
88
|
+
// ........................................................
|
|
187
89
|
|
|
188
|
-
|
|
189
|
-
return capabilities;
|
|
190
|
-
}
|
|
90
|
+
// Additional parameters
|
|
191
91
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
gl.setSwapInterval(0);
|
|
197
|
-
} else if (30 < fps) {
|
|
198
|
-
gl.setSwapInterval(1);
|
|
199
|
-
} else {
|
|
200
|
-
gl.setSwapInterval(2);
|
|
201
|
-
}
|
|
202
|
-
targetFps = currentFps = fps;
|
|
203
|
-
setFps = true;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
92
|
+
/** Time that the Processing's animation thread will wait for JOGL's rendering
|
|
93
|
+
* thread to be done with a single frame.
|
|
94
|
+
*/
|
|
95
|
+
protected static int DRAW_TIMEOUT_MILLIS = 500;
|
|
206
96
|
|
|
207
|
-
|
|
208
|
-
protected int getDepthBits() {
|
|
209
|
-
return capabilities.getDepthBits();
|
|
210
|
-
}
|
|
97
|
+
// ........................................................
|
|
211
98
|
|
|
212
|
-
|
|
213
|
-
protected int getStencilBits() {
|
|
214
|
-
return capabilities.getStencilBits();
|
|
215
|
-
}
|
|
99
|
+
// Protected JOGL-specific objects needed to access the GL profiles
|
|
216
100
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
PSurface surf = sketch.getSurface();
|
|
220
|
-
if (surf == null) {
|
|
221
|
-
return graphics.pixelDensity;
|
|
222
|
-
} else if (surf instanceof PSurfaceJOGL) {
|
|
223
|
-
return ((PSurfaceJOGL) surf).getPixelScale();
|
|
224
|
-
} else {
|
|
225
|
-
throw new RuntimeException("Renderer cannot find a JOGL surface");
|
|
226
|
-
}
|
|
227
|
-
}
|
|
101
|
+
/** The capabilities of the OpenGL rendering surface */
|
|
102
|
+
protected GLCapabilitiesImmutable capabilities;
|
|
228
103
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
PJOGL pjogl = (PJOGL) pgl;
|
|
232
|
-
|
|
233
|
-
this.drawable = pjogl.drawable;
|
|
234
|
-
this.context = pjogl.context;
|
|
235
|
-
this.glContext = pjogl.glContext;
|
|
236
|
-
setThread(pjogl.glThread);
|
|
237
|
-
|
|
238
|
-
this.gl = pjogl.gl;
|
|
239
|
-
this.gl2 = pjogl.gl2;
|
|
240
|
-
this.gl2x = pjogl.gl2x;
|
|
241
|
-
this.gl3 = pjogl.gl3;
|
|
242
|
-
this.gl3es3 = pjogl.gl3es3;
|
|
243
|
-
}
|
|
104
|
+
/** The rendering surface */
|
|
105
|
+
protected GLDrawable drawable;
|
|
244
106
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
glContext = context.hashCode();
|
|
248
|
-
setThread(Thread.currentThread());
|
|
249
|
-
|
|
250
|
-
gl = context.getGL();
|
|
251
|
-
gl2 = gl.getGL2ES2();
|
|
252
|
-
try {
|
|
253
|
-
gl2x = gl.getGL2();
|
|
254
|
-
} catch (com.jogamp.opengl.GLException e) {
|
|
255
|
-
gl2x = null;
|
|
256
|
-
}
|
|
257
|
-
try {
|
|
258
|
-
gl3 = gl.getGL2GL3();
|
|
259
|
-
} catch (com.jogamp.opengl.GLException e) {
|
|
260
|
-
gl3 = null;
|
|
261
|
-
}
|
|
262
|
-
try {
|
|
263
|
-
gl3es3 = gl.getGL3ES3();
|
|
264
|
-
} catch (com.jogamp.opengl.GLException e) {
|
|
265
|
-
gl3es3 = null;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
107
|
+
/** GLES2 functionality (shaders, etc) */
|
|
108
|
+
protected GL2ES2 gl2;
|
|
268
109
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
return true;
|
|
272
|
-
}
|
|
110
|
+
/** GL3 interface */
|
|
111
|
+
protected GL2GL3 gl3;
|
|
273
112
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
113
|
+
/** GL2 desktop functionality (blit framebuffer, map buffer range,
|
|
114
|
+
* multisampled renderbuffers) */
|
|
115
|
+
protected GL2 gl2x;
|
|
277
116
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
}
|
|
117
|
+
/** GL3ES3 interface */
|
|
118
|
+
protected GL3ES3 gl3es3;
|
|
281
119
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
PSurfaceJOGL surf = (PSurfaceJOGL) sketch.getSurface();
|
|
285
|
-
surf.window.swapBuffers();
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
@Override
|
|
289
|
-
protected void initFBOLayer() {
|
|
290
|
-
if (0 < sketch.frameCount) {
|
|
291
|
-
if (isES()) {
|
|
292
|
-
initFBOLayerES();
|
|
293
|
-
} else {
|
|
294
|
-
initFBOLayerGL();
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
120
|
+
/** Stores exceptions that ocurred during drawing */
|
|
121
|
+
protected Exception drawException;
|
|
298
122
|
|
|
299
|
-
|
|
300
|
-
IntBuffer buf = allocateDirectIntBuffer(fboWidth * fboHeight);
|
|
123
|
+
// ........................................................
|
|
301
124
|
|
|
302
|
-
|
|
303
|
-
readBuffer(BACK);
|
|
304
|
-
}
|
|
305
|
-
readPixelsImpl(0, 0, fboWidth, fboHeight, RGBA, UNSIGNED_BYTE, buf);
|
|
306
|
-
bindTexture(TEXTURE_2D, glColorTex.get(frontTex));
|
|
307
|
-
texSubImage2D(TEXTURE_2D, 0, 0, 0, fboWidth, fboHeight, RGBA, UNSIGNED_BYTE, buf);
|
|
125
|
+
// Utility arrays to copy projection/modelview matrices to GL
|
|
308
126
|
|
|
309
|
-
|
|
310
|
-
|
|
127
|
+
protected float[] projMatrix;
|
|
128
|
+
protected float[] mvMatrix;
|
|
311
129
|
|
|
312
|
-
|
|
313
|
-
bindFramebufferImpl(FRAMEBUFFER, 0);
|
|
314
|
-
}
|
|
130
|
+
// ........................................................
|
|
315
131
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
// of the FBO, so they are properly initialized. Note that the front buffer
|
|
319
|
-
// of the default framebuffer (the screen) contains the previous frame:
|
|
320
|
-
// https://www.opengl.org/wiki/Default_Framebuffer
|
|
321
|
-
// so it is copied to the front texture of the FBO layer:
|
|
322
|
-
if (pclearColor || 0 < pgeomCount || !sketch.isLooping()) {
|
|
323
|
-
if (hasReadBuffer()) {
|
|
324
|
-
readBuffer(FRONT);
|
|
325
|
-
}
|
|
326
|
-
} else {
|
|
327
|
-
// ...except when the previous frame has not been cleared and nothing was
|
|
328
|
-
// rendered while looping. In this case the back buffer, which holds the
|
|
329
|
-
// initial state of the previous frame, still contains the most up-to-date
|
|
330
|
-
// screen state.
|
|
331
|
-
readBuffer(BACK);
|
|
332
|
-
}
|
|
333
|
-
bindFramebufferImpl(DRAW_FRAMEBUFFER, glColorFbo.get(0));
|
|
334
|
-
framebufferTexture2D(FRAMEBUFFER, COLOR_ATTACHMENT0,
|
|
335
|
-
TEXTURE_2D, glColorTex.get(frontTex), 0);
|
|
336
|
-
if (hasDrawBuffer()) {
|
|
337
|
-
drawBuffer(COLOR_ATTACHMENT0);
|
|
338
|
-
}
|
|
339
|
-
blitFramebuffer(0, 0, fboWidth, fboHeight,
|
|
340
|
-
0, 0, fboWidth, fboHeight,
|
|
341
|
-
COLOR_BUFFER_BIT, NEAREST);
|
|
342
|
-
|
|
343
|
-
readBuffer(BACK);
|
|
344
|
-
bindFramebufferImpl(DRAW_FRAMEBUFFER, glColorFbo.get(0));
|
|
345
|
-
framebufferTexture2D(FRAMEBUFFER, COLOR_ATTACHMENT0,
|
|
346
|
-
TEXTURE_2D, glColorTex.get(backTex), 0);
|
|
347
|
-
drawBuffer(COLOR_ATTACHMENT0);
|
|
348
|
-
blitFramebuffer(0, 0, fboWidth, fboHeight,
|
|
349
|
-
0, 0, fboWidth, fboHeight,
|
|
350
|
-
COLOR_BUFFER_BIT, NEAREST);
|
|
351
|
-
|
|
352
|
-
bindFramebufferImpl(FRAMEBUFFER, 0);
|
|
353
|
-
}
|
|
132
|
+
// Static initialization for some parameters that need to be different for
|
|
133
|
+
// JOGL
|
|
354
134
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
if (gl2x != null) {
|
|
360
|
-
if (projMatrix == null) {
|
|
361
|
-
projMatrix = new float[16];
|
|
362
|
-
}
|
|
363
|
-
gl2x.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
|
|
364
|
-
projMatrix[0] = proj.m00;
|
|
365
|
-
projMatrix[1] = proj.m10;
|
|
366
|
-
projMatrix[2] = proj.m20;
|
|
367
|
-
projMatrix[3] = proj.m30;
|
|
368
|
-
projMatrix[4] = proj.m01;
|
|
369
|
-
projMatrix[5] = proj.m11;
|
|
370
|
-
projMatrix[6] = proj.m21;
|
|
371
|
-
projMatrix[7] = proj.m31;
|
|
372
|
-
projMatrix[8] = proj.m02;
|
|
373
|
-
projMatrix[9] = proj.m12;
|
|
374
|
-
projMatrix[10] = proj.m22;
|
|
375
|
-
projMatrix[11] = proj.m32;
|
|
376
|
-
projMatrix[12] = proj.m03;
|
|
377
|
-
projMatrix[13] = proj.m13;
|
|
378
|
-
projMatrix[14] = proj.m23;
|
|
379
|
-
projMatrix[15] = proj.m33;
|
|
380
|
-
gl2x.glLoadMatrixf(projMatrix, 0);
|
|
381
|
-
|
|
382
|
-
if (mvMatrix == null) {
|
|
383
|
-
mvMatrix = new float[16];
|
|
384
|
-
}
|
|
385
|
-
gl2x.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);
|
|
386
|
-
mvMatrix[0] = mdl.m00;
|
|
387
|
-
mvMatrix[1] = mdl.m10;
|
|
388
|
-
mvMatrix[2] = mdl.m20;
|
|
389
|
-
mvMatrix[3] = mdl.m30;
|
|
390
|
-
mvMatrix[4] = mdl.m01;
|
|
391
|
-
mvMatrix[5] = mdl.m11;
|
|
392
|
-
mvMatrix[6] = mdl.m21;
|
|
393
|
-
mvMatrix[7] = mdl.m31;
|
|
394
|
-
mvMatrix[8] = mdl.m02;
|
|
395
|
-
mvMatrix[9] = mdl.m12;
|
|
396
|
-
mvMatrix[10] = mdl.m22;
|
|
397
|
-
mvMatrix[11] = mdl.m32;
|
|
398
|
-
mvMatrix[12] = mdl.m03;
|
|
399
|
-
mvMatrix[13] = mdl.m13;
|
|
400
|
-
mvMatrix[14] = mdl.m23;
|
|
401
|
-
mvMatrix[15] = mdl.m33;
|
|
402
|
-
gl2x.glLoadMatrixf(mvMatrix, 0);
|
|
403
|
-
}
|
|
404
|
-
}
|
|
135
|
+
static {
|
|
136
|
+
MIN_DIRECT_BUFFER_SIZE = 2;
|
|
137
|
+
INDEX_TYPE = GL.GL_UNSIGNED_SHORT;
|
|
138
|
+
}
|
|
405
139
|
|
|
406
|
-
@Override
|
|
407
|
-
protected boolean hasFBOs() {
|
|
408
|
-
if (context.hasBasicFBOSupport()) {
|
|
409
|
-
return true;
|
|
410
|
-
} else {
|
|
411
|
-
return super.hasFBOs();
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
140
|
|
|
415
|
-
|
|
416
|
-
protected boolean hasShaders() {
|
|
417
|
-
if (context.hasGLSL()) {
|
|
418
|
-
return true;
|
|
419
|
-
} else {
|
|
420
|
-
return super.hasShaders();
|
|
421
|
-
}
|
|
422
|
-
}
|
|
141
|
+
///////////////////////////////////////////////////////////////
|
|
423
142
|
|
|
424
|
-
|
|
425
|
-
capabilities = glDrawable.getChosenGLCapabilities();
|
|
426
|
-
if (!hasFBOs()) {
|
|
427
|
-
throw new RuntimeException(MISSING_FBO_ERROR);
|
|
428
|
-
}
|
|
429
|
-
if (!hasShaders()) {
|
|
430
|
-
throw new RuntimeException(MISSING_GLSL_ERROR);
|
|
431
|
-
}
|
|
432
|
-
}
|
|
143
|
+
// Initialization, finalization
|
|
433
144
|
|
|
434
|
-
///////////////////////////////////////////////////////////
|
|
435
|
-
// Utility functions
|
|
436
|
-
@Override
|
|
437
|
-
protected void enableTexturing(int target) {
|
|
438
|
-
if (target == TEXTURE_2D) {
|
|
439
|
-
texturingTargets[0] = true;
|
|
440
|
-
} else if (target == TEXTURE_RECTANGLE) {
|
|
441
|
-
texturingTargets[1] = true;
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
145
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
} else if (target == TEXTURE_RECTANGLE) {
|
|
450
|
-
texturingTargets[1] = false;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
146
|
+
public PJOGL(PGraphicsOpenGL pg) {
|
|
147
|
+
super(pg);
|
|
148
|
+
glu = new GLU();
|
|
149
|
+
}
|
|
453
150
|
|
|
454
|
-
/**
|
|
455
|
-
* Convenience method to get a legit FontMetrics object. Where possible,
|
|
456
|
-
* override this any renderer subclass so that you're not using what's
|
|
457
|
-
* returned by getDefaultToolkit() to get your metrics.
|
|
458
|
-
*/
|
|
459
|
-
@SuppressWarnings("deprecation")
|
|
460
|
-
private FontMetrics getFontMetrics(Font font) { // ignore
|
|
461
|
-
return Toolkit.getDefaultToolkit().getFontMetrics(font);
|
|
462
|
-
}
|
|
463
151
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
return getFontMetrics(font).getFontRenderContext();
|
|
469
|
-
}
|
|
152
|
+
@Override
|
|
153
|
+
public Object getNative() {
|
|
154
|
+
return sketch.getSurface().getNative();
|
|
155
|
+
}
|
|
470
156
|
|
|
471
|
-
@Override
|
|
472
|
-
protected int getFontAscent(Object font) {
|
|
473
|
-
return getFontMetrics((Font) font).getAscent();
|
|
474
|
-
}
|
|
475
157
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
return getFontMetrics((Font) font).getDescent();
|
|
479
|
-
}
|
|
158
|
+
@Override
|
|
159
|
+
protected void setFrameRate(float fps) {}
|
|
480
160
|
|
|
481
|
-
@Override
|
|
482
|
-
protected int getTextWidth(Object font, char[] buffer, int start, int stop) {
|
|
483
|
-
// maybe should use one of the newer/fancier functions for this?
|
|
484
|
-
int length = stop - start;
|
|
485
|
-
FontMetrics metrics = getFontMetrics((Font) font);
|
|
486
|
-
return metrics.charsWidth(buffer, start, length);
|
|
487
|
-
}
|
|
488
161
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
return ((Font) font).deriveFont(size);
|
|
492
|
-
}
|
|
162
|
+
@Override
|
|
163
|
+
protected void initSurface(int antialias) {}
|
|
493
164
|
|
|
494
|
-
@Override
|
|
495
|
-
protected int getGLSLVersion() {
|
|
496
|
-
VersionNumber vn = context.getGLSLVersionNumber();
|
|
497
|
-
return vn.getMajor() * 100 + vn.getMinor();
|
|
498
|
-
}
|
|
499
165
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
VersionNumber vn = context.getGLSLVersionNumber();
|
|
503
|
-
if (context.isGLESProfile() && 1 < vn.getMajor()) {
|
|
504
|
-
return " es";
|
|
505
|
-
} else {
|
|
506
|
-
return "";
|
|
507
|
-
}
|
|
508
|
-
}
|
|
166
|
+
@Override
|
|
167
|
+
protected void reinitSurface() {}
|
|
509
168
|
|
|
510
|
-
@Override
|
|
511
|
-
protected String[] loadVertexShader(String filename) {
|
|
512
|
-
return loadVertexShader(filename, getGLSLVersion(), getGLSLVersionSuffix());
|
|
513
|
-
}
|
|
514
169
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
return loadFragmentShader(filename, getGLSLVersion(), getGLSLVersionSuffix());
|
|
518
|
-
}
|
|
170
|
+
@Override
|
|
171
|
+
protected void registerListeners() {}
|
|
519
172
|
|
|
520
|
-
@Override
|
|
521
|
-
protected String[] loadVertexShader(URL url) {
|
|
522
|
-
return loadVertexShader(url, getGLSLVersion(), getGLSLVersionSuffix());
|
|
523
|
-
}
|
|
524
173
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
174
|
+
static public void setIcon(String... icons) {
|
|
175
|
+
PJOGL.icons = new String[icons.length];
|
|
176
|
+
PApplet.arrayCopy(icons, PJOGL.icons);
|
|
177
|
+
}
|
|
529
178
|
|
|
530
|
-
@Override
|
|
531
|
-
protected String[] loadFragmentShader(String filename, int version, String versionSuffix) {
|
|
532
|
-
String[] fragSrc0 = sketch.loadStrings(filename);
|
|
533
|
-
return preprocessFragmentSource(fragSrc0, version, versionSuffix);
|
|
534
|
-
}
|
|
535
179
|
|
|
536
|
-
|
|
537
|
-
protected String[] loadVertexShader(String filename, int version, String versionSuffix) {
|
|
538
|
-
String[] vertSrc0 = sketch.loadStrings(filename);
|
|
539
|
-
return preprocessVertexSource(vertSrc0, version, versionSuffix);
|
|
540
|
-
}
|
|
180
|
+
///////////////////////////////////////////////////////////////
|
|
541
181
|
|
|
542
|
-
|
|
543
|
-
protected String[] loadFragmentShader(URL url, int version, String versionSuffix) {
|
|
544
|
-
try {
|
|
545
|
-
String[] fragSrc0 = PApplet.loadStrings(url.openStream());
|
|
546
|
-
return preprocessFragmentSource(fragSrc0, version, versionSuffix);
|
|
547
|
-
} catch (IOException e) {
|
|
548
|
-
PGraphics.showException("Cannot load fragment shader " + url.getFile());
|
|
549
|
-
}
|
|
550
|
-
return null;
|
|
551
|
-
}
|
|
182
|
+
// Public methods to get/set renderer's properties
|
|
552
183
|
|
|
553
|
-
@Override
|
|
554
|
-
protected String[] loadVertexShader(URL url, int version, String versionSuffix) {
|
|
555
|
-
try {
|
|
556
|
-
String[] vertSrc0 = PApplet.loadStrings(url.openStream());
|
|
557
|
-
return preprocessVertexSource(vertSrc0, version, versionSuffix);
|
|
558
|
-
} catch (IOException e) {
|
|
559
|
-
PGraphics.showException("Cannot load vertex shader " + url.getFile());
|
|
560
|
-
}
|
|
561
|
-
return null;
|
|
562
|
-
}
|
|
563
184
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
return new Tessellator(callback);
|
|
569
|
-
}
|
|
185
|
+
public void setCaps(GLCapabilities caps) {
|
|
186
|
+
reqNumSamples = caps.getNumSamples();
|
|
187
|
+
capabilities = caps;
|
|
188
|
+
}
|
|
570
189
|
|
|
571
|
-
protected static class Tessellator implements PGL.Tessellator {
|
|
572
|
-
|
|
573
|
-
protected GLUtessellator tess;
|
|
574
|
-
protected TessellatorCallback callback;
|
|
575
|
-
protected GLUCallback gluCallback;
|
|
576
|
-
|
|
577
|
-
public Tessellator(TessellatorCallback callback) {
|
|
578
|
-
this.callback = callback;
|
|
579
|
-
tess = GLU.gluNewTess();
|
|
580
|
-
gluCallback = new GLUCallback();
|
|
581
|
-
|
|
582
|
-
GLU.gluTessCallback(tess, GLU.GLU_TESS_BEGIN, gluCallback);
|
|
583
|
-
GLU.gluTessCallback(tess, GLU.GLU_TESS_END, gluCallback);
|
|
584
|
-
GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX, gluCallback);
|
|
585
|
-
GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE, gluCallback);
|
|
586
|
-
GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR, gluCallback);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
@Override
|
|
590
|
-
public void setCallback(int flag) {
|
|
591
|
-
GLU.gluTessCallback(tess, flag, gluCallback);
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
@Override
|
|
595
|
-
public void setWindingRule(int rule) {
|
|
596
|
-
setProperty(GLU.GLU_TESS_WINDING_RULE, rule);
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
public void setProperty(int property, int value) {
|
|
600
|
-
GLU.gluTessProperty(tess, property, value);
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
@Override
|
|
604
|
-
public void beginPolygon() {
|
|
605
|
-
beginPolygon(null);
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
@Override
|
|
609
|
-
public void beginPolygon(Object data) {
|
|
610
|
-
GLU.gluTessBeginPolygon(tess, data);
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
@Override
|
|
614
|
-
public void endPolygon() {
|
|
615
|
-
GLU.gluTessEndPolygon(tess);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
@Override
|
|
619
|
-
public void beginContour() {
|
|
620
|
-
GLU.gluTessBeginContour(tess);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
@Override
|
|
624
|
-
public void endContour() {
|
|
625
|
-
GLU.gluTessEndContour(tess);
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
@Override
|
|
629
|
-
public void addVertex(double[] v) {
|
|
630
|
-
addVertex(v, 0, v);
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
@Override
|
|
634
|
-
public void addVertex(double[] v, int n, Object data) {
|
|
635
|
-
GLU.gluTessVertex(tess, v, n, data);
|
|
636
|
-
}
|
|
637
|
-
|
|
638
|
-
protected class GLUCallback extends GLUtessellatorCallbackAdapter {
|
|
639
|
-
|
|
640
|
-
@Override
|
|
641
|
-
public void begin(int type) {
|
|
642
|
-
callback.begin(type);
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
@Override
|
|
646
|
-
public void end() {
|
|
647
|
-
callback.end();
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
@Override
|
|
651
|
-
public void vertex(Object data) {
|
|
652
|
-
callback.vertex(data);
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
@Override
|
|
656
|
-
public void combine(double[] coords, Object[] data,
|
|
657
|
-
float[] weight, Object[] outData) {
|
|
658
|
-
callback.combine(coords, data, weight, outData);
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
@Override
|
|
662
|
-
public void error(int errnum) {
|
|
663
|
-
callback.error(errnum);
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
190
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
}
|
|
191
|
+
public GLCapabilitiesImmutable getCaps() {
|
|
192
|
+
return capabilities;
|
|
193
|
+
}
|
|
672
194
|
|
|
673
|
-
///////////////////////////////////////////////////////////
|
|
674
|
-
// Font outline
|
|
675
|
-
static {
|
|
676
|
-
SHAPE_TEXT_SUPPORTED = true;
|
|
677
|
-
SEG_MOVETO = PathIterator.SEG_MOVETO;
|
|
678
|
-
SEG_LINETO = PathIterator.SEG_LINETO;
|
|
679
|
-
SEG_QUADTO = PathIterator.SEG_QUADTO;
|
|
680
|
-
SEG_CUBICTO = PathIterator.SEG_CUBICTO;
|
|
681
|
-
SEG_CLOSE = PathIterator.SEG_CLOSE;
|
|
682
|
-
}
|
|
683
195
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
196
|
+
public void setFps(float fps) {
|
|
197
|
+
if (!setFps || targetFps != fps) {
|
|
198
|
+
if (60 < fps) {
|
|
199
|
+
// Disables v-sync
|
|
200
|
+
gl.setSwapInterval(0);
|
|
201
|
+
} else if (30 < fps) {
|
|
202
|
+
gl.setSwapInterval(1);
|
|
203
|
+
} else {
|
|
204
|
+
gl.setSwapInterval(2);
|
|
205
|
+
}
|
|
206
|
+
targetFps = currentFps = fps;
|
|
207
|
+
setFps = true;
|
|
687
208
|
}
|
|
209
|
+
}
|
|
688
210
|
|
|
689
|
-
protected class FontOutline implements PGL.FontOutline {
|
|
690
211
|
|
|
691
|
-
|
|
212
|
+
@Override
|
|
213
|
+
protected int getDepthBits() {
|
|
214
|
+
return capabilities.getDepthBits();
|
|
215
|
+
}
|
|
692
216
|
|
|
693
|
-
public FontOutline(char ch, Font font) {
|
|
694
|
-
char textArray[] = new char[]{ch};
|
|
695
|
-
FontRenderContext frc = getFontRenderContext(font);
|
|
696
|
-
GlyphVector gv = font.createGlyphVector(frc, textArray);
|
|
697
|
-
Shape shp = gv.getOutline();
|
|
698
|
-
iter = shp.getPathIterator(null);
|
|
699
|
-
}
|
|
700
217
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
218
|
+
@Override
|
|
219
|
+
protected int getStencilBits() {
|
|
220
|
+
return capabilities.getStencilBits();
|
|
221
|
+
}
|
|
704
222
|
|
|
705
|
-
public int currentSegment(float coords[]) {
|
|
706
|
-
return iter.currentSegment(coords);
|
|
707
|
-
}
|
|
708
223
|
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
224
|
+
@Override
|
|
225
|
+
protected float getPixelScale() {
|
|
226
|
+
PSurface surf = sketch.getSurface();
|
|
227
|
+
if (surf == null) {
|
|
228
|
+
return graphics.pixelDensity;
|
|
229
|
+
} else if (surf instanceof PSurfaceJOGL) {
|
|
230
|
+
return ((PSurfaceJOGL)surf).getPixelScale();
|
|
231
|
+
} else {
|
|
232
|
+
throw new RuntimeException("Renderer cannot find a JOGL surface");
|
|
712
233
|
}
|
|
234
|
+
}
|
|
713
235
|
|
|
714
|
-
///////////////////////////////////////////////////////////
|
|
715
|
-
// Constants
|
|
716
|
-
static {
|
|
717
|
-
FALSE = GL.GL_FALSE;
|
|
718
|
-
TRUE = GL.GL_TRUE;
|
|
719
|
-
|
|
720
|
-
INT = GL2ES2.GL_INT;
|
|
721
|
-
BYTE = GL.GL_BYTE;
|
|
722
|
-
SHORT = GL.GL_SHORT;
|
|
723
|
-
FLOAT = GL.GL_FLOAT;
|
|
724
|
-
BOOL = GL2ES2.GL_BOOL;
|
|
725
|
-
UNSIGNED_INT = GL.GL_UNSIGNED_INT;
|
|
726
|
-
UNSIGNED_BYTE = GL.GL_UNSIGNED_BYTE;
|
|
727
|
-
UNSIGNED_SHORT = GL.GL_UNSIGNED_SHORT;
|
|
728
|
-
|
|
729
|
-
RGB = GL.GL_RGB;
|
|
730
|
-
RGBA = GL.GL_RGBA;
|
|
731
|
-
ALPHA = GL.GL_ALPHA;
|
|
732
|
-
LUMINANCE = GL.GL_LUMINANCE;
|
|
733
|
-
LUMINANCE_ALPHA = GL.GL_LUMINANCE_ALPHA;
|
|
734
|
-
|
|
735
|
-
UNSIGNED_SHORT_5_6_5 = GL.GL_UNSIGNED_SHORT_5_6_5;
|
|
736
|
-
UNSIGNED_SHORT_4_4_4_4 = GL.GL_UNSIGNED_SHORT_4_4_4_4;
|
|
737
|
-
UNSIGNED_SHORT_5_5_5_1 = GL.GL_UNSIGNED_SHORT_5_5_5_1;
|
|
738
|
-
|
|
739
|
-
RGBA4 = GL.GL_RGBA4;
|
|
740
|
-
RGB5_A1 = GL.GL_RGB5_A1;
|
|
741
|
-
RGB565 = GL.GL_RGB565;
|
|
742
|
-
RGB8 = GL.GL_RGB8;
|
|
743
|
-
RGBA8 = GL.GL_RGBA8;
|
|
744
|
-
ALPHA8 = GL.GL_ALPHA8;
|
|
745
|
-
|
|
746
|
-
READ_ONLY = GL2ES3.GL_READ_ONLY;
|
|
747
|
-
WRITE_ONLY = GL.GL_WRITE_ONLY;
|
|
748
|
-
READ_WRITE = GL2ES3.GL_READ_WRITE;
|
|
749
|
-
|
|
750
|
-
TESS_WINDING_NONZERO = GLU.GLU_TESS_WINDING_NONZERO;
|
|
751
|
-
TESS_WINDING_ODD = GLU.GLU_TESS_WINDING_ODD;
|
|
752
|
-
TESS_EDGE_FLAG = GLU.GLU_TESS_EDGE_FLAG;
|
|
753
|
-
|
|
754
|
-
GENERATE_MIPMAP_HINT = GL.GL_GENERATE_MIPMAP_HINT;
|
|
755
|
-
FASTEST = GL.GL_FASTEST;
|
|
756
|
-
NICEST = GL.GL_NICEST;
|
|
757
|
-
DONT_CARE = GL.GL_DONT_CARE;
|
|
758
|
-
|
|
759
|
-
VENDOR = GL.GL_VENDOR;
|
|
760
|
-
RENDERER = GL.GL_RENDERER;
|
|
761
|
-
VERSION = GL.GL_VERSION;
|
|
762
|
-
EXTENSIONS = GL.GL_EXTENSIONS;
|
|
763
|
-
SHADING_LANGUAGE_VERSION = GL2ES2.GL_SHADING_LANGUAGE_VERSION;
|
|
764
|
-
|
|
765
|
-
MAX_SAMPLES = GL.GL_MAX_SAMPLES;
|
|
766
|
-
SAMPLES = GL.GL_SAMPLES;
|
|
767
|
-
|
|
768
|
-
ALIASED_LINE_WIDTH_RANGE = GL.GL_ALIASED_LINE_WIDTH_RANGE;
|
|
769
|
-
ALIASED_POINT_SIZE_RANGE = GL.GL_ALIASED_POINT_SIZE_RANGE;
|
|
770
|
-
|
|
771
|
-
DEPTH_BITS = GL.GL_DEPTH_BITS;
|
|
772
|
-
STENCIL_BITS = GL.GL_STENCIL_BITS;
|
|
773
|
-
|
|
774
|
-
CCW = GL.GL_CCW;
|
|
775
|
-
CW = GL.GL_CW;
|
|
776
|
-
|
|
777
|
-
VIEWPORT = GL.GL_VIEWPORT;
|
|
778
|
-
|
|
779
|
-
ARRAY_BUFFER = GL.GL_ARRAY_BUFFER;
|
|
780
|
-
ELEMENT_ARRAY_BUFFER = GL.GL_ELEMENT_ARRAY_BUFFER;
|
|
781
|
-
PIXEL_PACK_BUFFER = GL2ES3.GL_PIXEL_PACK_BUFFER;
|
|
782
|
-
|
|
783
|
-
MAX_VERTEX_ATTRIBS = GL2ES2.GL_MAX_VERTEX_ATTRIBS;
|
|
784
|
-
|
|
785
|
-
STATIC_DRAW = GL.GL_STATIC_DRAW;
|
|
786
|
-
DYNAMIC_DRAW = GL.GL_DYNAMIC_DRAW;
|
|
787
|
-
STREAM_DRAW = GL2ES2.GL_STREAM_DRAW;
|
|
788
|
-
STREAM_READ = GL2ES3.GL_STREAM_READ;
|
|
789
|
-
|
|
790
|
-
BUFFER_SIZE = GL.GL_BUFFER_SIZE;
|
|
791
|
-
BUFFER_USAGE = GL.GL_BUFFER_USAGE;
|
|
792
|
-
|
|
793
|
-
POINTS = GL.GL_POINTS;
|
|
794
|
-
LINE_STRIP = GL.GL_LINE_STRIP;
|
|
795
|
-
LINE_LOOP = GL.GL_LINE_LOOP;
|
|
796
|
-
LINES = GL.GL_LINES;
|
|
797
|
-
TRIANGLE_FAN = GL.GL_TRIANGLE_FAN;
|
|
798
|
-
TRIANGLE_STRIP = GL.GL_TRIANGLE_STRIP;
|
|
799
|
-
TRIANGLES = GL.GL_TRIANGLES;
|
|
800
|
-
|
|
801
|
-
CULL_FACE = GL.GL_CULL_FACE;
|
|
802
|
-
FRONT = GL.GL_FRONT;
|
|
803
|
-
BACK = GL.GL_BACK;
|
|
804
|
-
FRONT_AND_BACK = GL.GL_FRONT_AND_BACK;
|
|
805
|
-
|
|
806
|
-
POLYGON_OFFSET_FILL = GL.GL_POLYGON_OFFSET_FILL;
|
|
807
|
-
|
|
808
|
-
UNPACK_ALIGNMENT = GL.GL_UNPACK_ALIGNMENT;
|
|
809
|
-
PACK_ALIGNMENT = GL.GL_PACK_ALIGNMENT;
|
|
810
|
-
|
|
811
|
-
TEXTURE_2D = GL.GL_TEXTURE_2D;
|
|
812
|
-
TEXTURE_RECTANGLE = GL2GL3.GL_TEXTURE_RECTANGLE;
|
|
813
|
-
|
|
814
|
-
TEXTURE_BINDING_2D = GL.GL_TEXTURE_BINDING_2D;
|
|
815
|
-
TEXTURE_BINDING_RECTANGLE = GL2GL3.GL_TEXTURE_BINDING_RECTANGLE;
|
|
816
|
-
|
|
817
|
-
MAX_TEXTURE_SIZE = GL.GL_MAX_TEXTURE_SIZE;
|
|
818
|
-
TEXTURE_MAX_ANISOTROPY = GL.GL_TEXTURE_MAX_ANISOTROPY_EXT;
|
|
819
|
-
MAX_TEXTURE_MAX_ANISOTROPY = GL.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT;
|
|
820
|
-
|
|
821
|
-
MAX_VERTEX_TEXTURE_IMAGE_UNITS = GL2ES2.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS;
|
|
822
|
-
MAX_TEXTURE_IMAGE_UNITS = GL2ES2.GL_MAX_TEXTURE_IMAGE_UNITS;
|
|
823
|
-
MAX_COMBINED_TEXTURE_IMAGE_UNITS = GL2ES2.GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS;
|
|
824
|
-
|
|
825
|
-
NUM_COMPRESSED_TEXTURE_FORMATS = GL.GL_NUM_COMPRESSED_TEXTURE_FORMATS;
|
|
826
|
-
COMPRESSED_TEXTURE_FORMATS = GL.GL_COMPRESSED_TEXTURE_FORMATS;
|
|
827
|
-
|
|
828
|
-
NEAREST = GL.GL_NEAREST;
|
|
829
|
-
LINEAR = GL.GL_LINEAR;
|
|
830
|
-
LINEAR_MIPMAP_NEAREST = GL.GL_LINEAR_MIPMAP_NEAREST;
|
|
831
|
-
LINEAR_MIPMAP_LINEAR = GL.GL_LINEAR_MIPMAP_LINEAR;
|
|
832
|
-
|
|
833
|
-
CLAMP_TO_EDGE = GL.GL_CLAMP_TO_EDGE;
|
|
834
|
-
REPEAT = GL.GL_REPEAT;
|
|
835
|
-
|
|
836
|
-
TEXTURE0 = GL.GL_TEXTURE0;
|
|
837
|
-
TEXTURE1 = GL.GL_TEXTURE1;
|
|
838
|
-
TEXTURE2 = GL.GL_TEXTURE2;
|
|
839
|
-
TEXTURE3 = GL.GL_TEXTURE3;
|
|
840
|
-
TEXTURE_MIN_FILTER = GL.GL_TEXTURE_MIN_FILTER;
|
|
841
|
-
TEXTURE_MAG_FILTER = GL.GL_TEXTURE_MAG_FILTER;
|
|
842
|
-
TEXTURE_WRAP_S = GL.GL_TEXTURE_WRAP_S;
|
|
843
|
-
TEXTURE_WRAP_T = GL.GL_TEXTURE_WRAP_T;
|
|
844
|
-
TEXTURE_WRAP_R = GL2ES2.GL_TEXTURE_WRAP_R;
|
|
845
|
-
|
|
846
|
-
TEXTURE_CUBE_MAP = GL.GL_TEXTURE_CUBE_MAP;
|
|
847
|
-
TEXTURE_CUBE_MAP_POSITIVE_X = GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X;
|
|
848
|
-
TEXTURE_CUBE_MAP_POSITIVE_Y = GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
|
|
849
|
-
TEXTURE_CUBE_MAP_POSITIVE_Z = GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
|
|
850
|
-
TEXTURE_CUBE_MAP_NEGATIVE_X = GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
|
|
851
|
-
TEXTURE_CUBE_MAP_NEGATIVE_Y = GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
|
|
852
|
-
TEXTURE_CUBE_MAP_NEGATIVE_Z = GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
|
|
853
|
-
|
|
854
|
-
VERTEX_SHADER = GL2ES2.GL_VERTEX_SHADER;
|
|
855
|
-
FRAGMENT_SHADER = GL2ES2.GL_FRAGMENT_SHADER;
|
|
856
|
-
INFO_LOG_LENGTH = GL2ES2.GL_INFO_LOG_LENGTH;
|
|
857
|
-
SHADER_SOURCE_LENGTH = GL2ES2.GL_SHADER_SOURCE_LENGTH;
|
|
858
|
-
COMPILE_STATUS = GL2ES2.GL_COMPILE_STATUS;
|
|
859
|
-
LINK_STATUS = GL2ES2.GL_LINK_STATUS;
|
|
860
|
-
VALIDATE_STATUS = GL2ES2.GL_VALIDATE_STATUS;
|
|
861
|
-
SHADER_TYPE = GL2ES2.GL_SHADER_TYPE;
|
|
862
|
-
DELETE_STATUS = GL2ES2.GL_DELETE_STATUS;
|
|
863
|
-
|
|
864
|
-
FLOAT_VEC2 = GL2ES2.GL_FLOAT_VEC2;
|
|
865
|
-
FLOAT_VEC3 = GL2ES2.GL_FLOAT_VEC3;
|
|
866
|
-
FLOAT_VEC4 = GL2ES2.GL_FLOAT_VEC4;
|
|
867
|
-
FLOAT_MAT2 = GL2ES2.GL_FLOAT_MAT2;
|
|
868
|
-
FLOAT_MAT3 = GL2ES2.GL_FLOAT_MAT3;
|
|
869
|
-
FLOAT_MAT4 = GL2ES2.GL_FLOAT_MAT4;
|
|
870
|
-
INT_VEC2 = GL2ES2.GL_INT_VEC2;
|
|
871
|
-
INT_VEC3 = GL2ES2.GL_INT_VEC3;
|
|
872
|
-
INT_VEC4 = GL2ES2.GL_INT_VEC4;
|
|
873
|
-
BOOL_VEC2 = GL2ES2.GL_BOOL_VEC2;
|
|
874
|
-
BOOL_VEC3 = GL2ES2.GL_BOOL_VEC3;
|
|
875
|
-
BOOL_VEC4 = GL2ES2.GL_BOOL_VEC4;
|
|
876
|
-
SAMPLER_2D = GL2ES2.GL_SAMPLER_2D;
|
|
877
|
-
SAMPLER_CUBE = GL2ES2.GL_SAMPLER_CUBE;
|
|
878
|
-
|
|
879
|
-
LOW_FLOAT = GL2ES2.GL_LOW_FLOAT;
|
|
880
|
-
MEDIUM_FLOAT = GL2ES2.GL_MEDIUM_FLOAT;
|
|
881
|
-
HIGH_FLOAT = GL2ES2.GL_HIGH_FLOAT;
|
|
882
|
-
LOW_INT = GL2ES2.GL_LOW_INT;
|
|
883
|
-
MEDIUM_INT = GL2ES2.GL_MEDIUM_INT;
|
|
884
|
-
HIGH_INT = GL2ES2.GL_HIGH_INT;
|
|
885
|
-
|
|
886
|
-
CURRENT_VERTEX_ATTRIB = GL2ES2.GL_CURRENT_VERTEX_ATTRIB;
|
|
887
|
-
|
|
888
|
-
VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING;
|
|
889
|
-
VERTEX_ATTRIB_ARRAY_ENABLED = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_ENABLED;
|
|
890
|
-
VERTEX_ATTRIB_ARRAY_SIZE = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_SIZE;
|
|
891
|
-
VERTEX_ATTRIB_ARRAY_STRIDE = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_STRIDE;
|
|
892
|
-
VERTEX_ATTRIB_ARRAY_TYPE = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_TYPE;
|
|
893
|
-
VERTEX_ATTRIB_ARRAY_NORMALIZED = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_NORMALIZED;
|
|
894
|
-
VERTEX_ATTRIB_ARRAY_POINTER = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_POINTER;
|
|
895
|
-
|
|
896
|
-
BLEND = GL.GL_BLEND;
|
|
897
|
-
ONE = GL.GL_ONE;
|
|
898
|
-
ZERO = GL.GL_ZERO;
|
|
899
|
-
SRC_ALPHA = GL.GL_SRC_ALPHA;
|
|
900
|
-
DST_ALPHA = GL.GL_DST_ALPHA;
|
|
901
|
-
ONE_MINUS_SRC_ALPHA = GL.GL_ONE_MINUS_SRC_ALPHA;
|
|
902
|
-
ONE_MINUS_DST_COLOR = GL.GL_ONE_MINUS_DST_COLOR;
|
|
903
|
-
ONE_MINUS_SRC_COLOR = GL.GL_ONE_MINUS_SRC_COLOR;
|
|
904
|
-
DST_COLOR = GL.GL_DST_COLOR;
|
|
905
|
-
SRC_COLOR = GL.GL_SRC_COLOR;
|
|
906
|
-
|
|
907
|
-
SAMPLE_ALPHA_TO_COVERAGE = GL.GL_SAMPLE_ALPHA_TO_COVERAGE;
|
|
908
|
-
SAMPLE_COVERAGE = GL.GL_SAMPLE_COVERAGE;
|
|
909
|
-
|
|
910
|
-
KEEP = GL.GL_KEEP;
|
|
911
|
-
REPLACE = GL.GL_REPLACE;
|
|
912
|
-
INCR = GL.GL_INCR;
|
|
913
|
-
DECR = GL.GL_DECR;
|
|
914
|
-
INVERT = GL.GL_INVERT;
|
|
915
|
-
INCR_WRAP = GL.GL_INCR_WRAP;
|
|
916
|
-
DECR_WRAP = GL.GL_DECR_WRAP;
|
|
917
|
-
NEVER = GL.GL_NEVER;
|
|
918
|
-
ALWAYS = GL.GL_ALWAYS;
|
|
919
|
-
|
|
920
|
-
EQUAL = GL.GL_EQUAL;
|
|
921
|
-
LESS = GL.GL_LESS;
|
|
922
|
-
LEQUAL = GL.GL_LEQUAL;
|
|
923
|
-
GREATER = GL.GL_GREATER;
|
|
924
|
-
GEQUAL = GL.GL_GEQUAL;
|
|
925
|
-
NOTEQUAL = GL.GL_NOTEQUAL;
|
|
926
|
-
|
|
927
|
-
FUNC_ADD = GL.GL_FUNC_ADD;
|
|
928
|
-
FUNC_MIN = GL2ES3.GL_MIN;
|
|
929
|
-
FUNC_MAX = GL2ES3.GL_MAX;
|
|
930
|
-
FUNC_REVERSE_SUBTRACT = GL.GL_FUNC_REVERSE_SUBTRACT;
|
|
931
|
-
FUNC_SUBTRACT = GL.GL_FUNC_SUBTRACT;
|
|
932
|
-
|
|
933
|
-
DITHER = GL.GL_DITHER;
|
|
934
|
-
|
|
935
|
-
CONSTANT_COLOR = GL2ES2.GL_CONSTANT_COLOR;
|
|
936
|
-
CONSTANT_ALPHA = GL2ES2.GL_CONSTANT_ALPHA;
|
|
937
|
-
ONE_MINUS_CONSTANT_COLOR = GL2ES2.GL_ONE_MINUS_CONSTANT_COLOR;
|
|
938
|
-
ONE_MINUS_CONSTANT_ALPHA = GL2ES2.GL_ONE_MINUS_CONSTANT_ALPHA;
|
|
939
|
-
SRC_ALPHA_SATURATE = GL.GL_SRC_ALPHA_SATURATE;
|
|
940
|
-
|
|
941
|
-
SCISSOR_TEST = GL.GL_SCISSOR_TEST;
|
|
942
|
-
STENCIL_TEST = GL.GL_STENCIL_TEST;
|
|
943
|
-
DEPTH_TEST = GL.GL_DEPTH_TEST;
|
|
944
|
-
DEPTH_WRITEMASK = GL.GL_DEPTH_WRITEMASK;
|
|
945
|
-
|
|
946
|
-
COLOR_BUFFER_BIT = GL.GL_COLOR_BUFFER_BIT;
|
|
947
|
-
DEPTH_BUFFER_BIT = GL.GL_DEPTH_BUFFER_BIT;
|
|
948
|
-
STENCIL_BUFFER_BIT = GL.GL_STENCIL_BUFFER_BIT;
|
|
949
|
-
|
|
950
|
-
FRAMEBUFFER = GL.GL_FRAMEBUFFER;
|
|
951
|
-
COLOR_ATTACHMENT0 = GL.GL_COLOR_ATTACHMENT0;
|
|
952
|
-
COLOR_ATTACHMENT1 = GL2ES2.GL_COLOR_ATTACHMENT1;
|
|
953
|
-
COLOR_ATTACHMENT2 = GL2ES2.GL_COLOR_ATTACHMENT2;
|
|
954
|
-
COLOR_ATTACHMENT3 = GL2ES2.GL_COLOR_ATTACHMENT3;
|
|
955
|
-
RENDERBUFFER = GL.GL_RENDERBUFFER;
|
|
956
|
-
DEPTH_ATTACHMENT = GL.GL_DEPTH_ATTACHMENT;
|
|
957
|
-
STENCIL_ATTACHMENT = GL.GL_STENCIL_ATTACHMENT;
|
|
958
|
-
READ_FRAMEBUFFER = GL.GL_READ_FRAMEBUFFER;
|
|
959
|
-
DRAW_FRAMEBUFFER = GL.GL_DRAW_FRAMEBUFFER;
|
|
960
|
-
|
|
961
|
-
RGBA8 = GL.GL_RGBA8;
|
|
962
|
-
DEPTH24_STENCIL8 = GL.GL_DEPTH24_STENCIL8;
|
|
963
|
-
|
|
964
|
-
DEPTH_COMPONENT = GL2ES2.GL_DEPTH_COMPONENT;
|
|
965
|
-
DEPTH_COMPONENT16 = GL.GL_DEPTH_COMPONENT16;
|
|
966
|
-
DEPTH_COMPONENT24 = GL.GL_DEPTH_COMPONENT24;
|
|
967
|
-
DEPTH_COMPONENT32 = GL.GL_DEPTH_COMPONENT32;
|
|
968
|
-
|
|
969
|
-
STENCIL_INDEX = GL2ES2.GL_STENCIL_INDEX;
|
|
970
|
-
STENCIL_INDEX1 = GL.GL_STENCIL_INDEX1;
|
|
971
|
-
STENCIL_INDEX4 = GL.GL_STENCIL_INDEX4;
|
|
972
|
-
STENCIL_INDEX8 = GL.GL_STENCIL_INDEX8;
|
|
973
|
-
|
|
974
|
-
DEPTH_STENCIL = GL.GL_DEPTH_STENCIL;
|
|
975
|
-
|
|
976
|
-
FRAMEBUFFER_COMPLETE = GL.GL_FRAMEBUFFER_COMPLETE;
|
|
977
|
-
FRAMEBUFFER_UNDEFINED = GL2ES3.GL_FRAMEBUFFER_UNDEFINED;
|
|
978
|
-
FRAMEBUFFER_INCOMPLETE_ATTACHMENT = GL.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
|
|
979
|
-
FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GL.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;
|
|
980
|
-
FRAMEBUFFER_INCOMPLETE_DIMENSIONS = GL.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS;
|
|
981
|
-
FRAMEBUFFER_INCOMPLETE_FORMATS = GL.GL_FRAMEBUFFER_INCOMPLETE_FORMATS;
|
|
982
|
-
FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = GL2GL3.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER;
|
|
983
|
-
FRAMEBUFFER_INCOMPLETE_READ_BUFFER = GL2GL3.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER;
|
|
984
|
-
FRAMEBUFFER_UNSUPPORTED = GL.GL_FRAMEBUFFER_UNSUPPORTED;
|
|
985
|
-
FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = GL.GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE;
|
|
986
|
-
FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = GL3ES3.GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS;
|
|
987
|
-
|
|
988
|
-
FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = GL.GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE;
|
|
989
|
-
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = GL.GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME;
|
|
990
|
-
FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = GL.GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL;
|
|
991
|
-
FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = GL.GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE;
|
|
992
|
-
|
|
993
|
-
RENDERBUFFER_WIDTH = GL.GL_RENDERBUFFER_WIDTH;
|
|
994
|
-
RENDERBUFFER_HEIGHT = GL.GL_RENDERBUFFER_HEIGHT;
|
|
995
|
-
RENDERBUFFER_RED_SIZE = GL.GL_RENDERBUFFER_RED_SIZE;
|
|
996
|
-
RENDERBUFFER_GREEN_SIZE = GL.GL_RENDERBUFFER_GREEN_SIZE;
|
|
997
|
-
RENDERBUFFER_BLUE_SIZE = GL.GL_RENDERBUFFER_BLUE_SIZE;
|
|
998
|
-
RENDERBUFFER_ALPHA_SIZE = GL.GL_RENDERBUFFER_ALPHA_SIZE;
|
|
999
|
-
RENDERBUFFER_DEPTH_SIZE = GL.GL_RENDERBUFFER_DEPTH_SIZE;
|
|
1000
|
-
RENDERBUFFER_STENCIL_SIZE = GL.GL_RENDERBUFFER_STENCIL_SIZE;
|
|
1001
|
-
RENDERBUFFER_INTERNAL_FORMAT = GL.GL_RENDERBUFFER_INTERNAL_FORMAT;
|
|
1002
|
-
|
|
1003
|
-
MULTISAMPLE = GL.GL_MULTISAMPLE;
|
|
1004
|
-
LINE_SMOOTH = GL.GL_LINE_SMOOTH;
|
|
1005
|
-
POLYGON_SMOOTH = GL2GL3.GL_POLYGON_SMOOTH;
|
|
1006
|
-
|
|
1007
|
-
SYNC_GPU_COMMANDS_COMPLETE = GL3ES3.GL_SYNC_GPU_COMMANDS_COMPLETE;
|
|
1008
|
-
ALREADY_SIGNALED = GL3ES3.GL_ALREADY_SIGNALED;
|
|
1009
|
-
CONDITION_SATISFIED = GL3ES3.GL_CONDITION_SATISFIED;
|
|
1010
|
-
}
|
|
1011
236
|
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
public void flush() {
|
|
1016
|
-
gl.glFlush();
|
|
1017
|
-
}
|
|
237
|
+
@Override
|
|
238
|
+
protected void getGL(PGL pgl) {
|
|
239
|
+
PJOGL pjogl = (PJOGL)pgl;
|
|
1018
240
|
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
241
|
+
this.drawable = pjogl.drawable;
|
|
242
|
+
this.context = pjogl.context;
|
|
243
|
+
this.glContext = pjogl.glContext;
|
|
244
|
+
setThread(pjogl.glThread);
|
|
1023
245
|
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
246
|
+
this.gl = pjogl.gl;
|
|
247
|
+
this.gl2 = pjogl.gl2;
|
|
248
|
+
this.gl2x = pjogl.gl2x;
|
|
249
|
+
this.gl3 = pjogl.gl3;
|
|
250
|
+
this.gl3es3 = pjogl.gl3es3;
|
|
251
|
+
}
|
|
1028
252
|
|
|
1029
|
-
///////////////////////////////////////////////////////////
|
|
1030
|
-
// State and State Requests
|
|
1031
|
-
@Override
|
|
1032
|
-
public void enable(int value) {
|
|
1033
|
-
if (-1 < value) {
|
|
1034
|
-
gl.glEnable(value);
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
253
|
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
254
|
+
public void getGL(GLAutoDrawable glDrawable) {
|
|
255
|
+
context = glDrawable.getContext();
|
|
256
|
+
glContext = context.hashCode();
|
|
257
|
+
setThread(Thread.currentThread());
|
|
1044
258
|
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
gl.glGetBooleanv(value, byteBuffer);
|
|
1052
|
-
for (int i = 0; i < data.capacity(); i++) {
|
|
1053
|
-
data.put(i, byteBuffer.get(i));
|
|
1054
|
-
}
|
|
1055
|
-
} else {
|
|
1056
|
-
fillIntBuffer(data, 0, data.capacity() - 1, 0);
|
|
1057
|
-
}
|
|
259
|
+
gl = context.getGL();
|
|
260
|
+
gl2 = gl.getGL2ES2();
|
|
261
|
+
try {
|
|
262
|
+
gl2x = gl.getGL2();
|
|
263
|
+
} catch (com.jogamp.opengl.GLException e) {
|
|
264
|
+
gl2x = null;
|
|
1058
265
|
}
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
gl.glGetIntegerv(value, data);
|
|
1064
|
-
} else {
|
|
1065
|
-
fillIntBuffer(data, 0, data.capacity() - 1, 0);
|
|
1066
|
-
}
|
|
266
|
+
try {
|
|
267
|
+
gl3 = gl.getGL2GL3();
|
|
268
|
+
} catch (com.jogamp.opengl.GLException e) {
|
|
269
|
+
gl3 = null;
|
|
1067
270
|
}
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
gl.glGetFloatv(value, data);
|
|
1073
|
-
} else {
|
|
1074
|
-
fillFloatBuffer(data, 0, data.capacity() - 1, 0);
|
|
1075
|
-
}
|
|
271
|
+
try {
|
|
272
|
+
gl3es3 = gl.getGL3ES3();
|
|
273
|
+
} catch (com.jogamp.opengl.GLException e) {
|
|
274
|
+
gl3es3 = null;
|
|
1076
275
|
}
|
|
276
|
+
}
|
|
1077
277
|
|
|
1078
|
-
@Override
|
|
1079
|
-
public boolean isEnabled(int value) {
|
|
1080
|
-
return gl.glIsEnabled(value);
|
|
1081
|
-
}
|
|
1082
278
|
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
279
|
+
@Override
|
|
280
|
+
protected boolean canDraw() { return true; }
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
@Override
|
|
284
|
+
protected void requestFocus() {}
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
@Override
|
|
288
|
+
protected void requestDraw() {}
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
@Override
|
|
292
|
+
protected void swapBuffers() {
|
|
293
|
+
PSurfaceJOGL surf = (PSurfaceJOGL)sketch.getSurface();
|
|
294
|
+
surf.window.swapBuffers();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
@Override
|
|
299
|
+
protected void initFBOLayer() {
|
|
300
|
+
if (0 < sketch.frameCount) {
|
|
301
|
+
if (isES()) initFBOLayerES();
|
|
302
|
+
else initFBOLayerGL();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
private void initFBOLayerES() {
|
|
308
|
+
IntBuffer buf = allocateDirectIntBuffer(fboWidth * fboHeight);
|
|
309
|
+
|
|
310
|
+
if (hasReadBuffer()) readBuffer(BACK);
|
|
311
|
+
readPixelsImpl(0, 0, fboWidth, fboHeight, RGBA, UNSIGNED_BYTE, buf);
|
|
312
|
+
bindTexture(TEXTURE_2D, glColorTex.get(frontTex));
|
|
313
|
+
texSubImage2D(TEXTURE_2D, 0, 0, 0, fboWidth, fboHeight, RGBA, UNSIGNED_BYTE, buf);
|
|
314
|
+
|
|
315
|
+
bindTexture(TEXTURE_2D, glColorTex.get(backTex));
|
|
316
|
+
texSubImage2D(TEXTURE_2D, 0, 0, 0, fboWidth, fboHeight, RGBA, UNSIGNED_BYTE, buf);
|
|
317
|
+
|
|
318
|
+
bindTexture(TEXTURE_2D, 0);
|
|
319
|
+
bindFramebufferImpl(FRAMEBUFFER, 0);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
private void initFBOLayerGL() {
|
|
324
|
+
// Copy the contents of the front and back screen buffers to the textures
|
|
325
|
+
// of the FBO, so they are properly initialized. Note that the front buffer
|
|
326
|
+
// of the default framebuffer (the screen) contains the previous frame:
|
|
327
|
+
// https://www.opengl.org/wiki/Default_Framebuffer
|
|
328
|
+
// so it is copied to the front texture of the FBO layer:
|
|
329
|
+
if (pclearColor || 0 < pgeomCount || !sketch.isLooping()) {
|
|
330
|
+
if (hasReadBuffer()) readBuffer(FRONT);
|
|
331
|
+
} else {
|
|
332
|
+
// ...except when the previous frame has not been cleared and nothing was
|
|
333
|
+
// rendered while looping. In this case the back buffer, which holds the
|
|
334
|
+
// initial state of the previous frame, still contains the most up-to-date
|
|
335
|
+
// screen state.
|
|
336
|
+
readBuffer(BACK);
|
|
337
|
+
}
|
|
338
|
+
bindFramebufferImpl(DRAW_FRAMEBUFFER, glColorFbo.get(0));
|
|
339
|
+
framebufferTexture2D(FRAMEBUFFER, COLOR_ATTACHMENT0,
|
|
340
|
+
TEXTURE_2D, glColorTex.get(frontTex), 0);
|
|
341
|
+
if (hasDrawBuffer()) drawBuffer(COLOR_ATTACHMENT0);
|
|
342
|
+
blitFramebuffer(0, 0, fboWidth, fboHeight,
|
|
343
|
+
0, 0, fboWidth, fboHeight,
|
|
344
|
+
COLOR_BUFFER_BIT, NEAREST);
|
|
345
|
+
|
|
346
|
+
readBuffer(BACK);
|
|
347
|
+
bindFramebufferImpl(DRAW_FRAMEBUFFER, glColorFbo.get(0));
|
|
348
|
+
framebufferTexture2D(FRAMEBUFFER, COLOR_ATTACHMENT0,
|
|
349
|
+
TEXTURE_2D, glColorTex.get(backTex), 0);
|
|
350
|
+
drawBuffer(COLOR_ATTACHMENT0);
|
|
351
|
+
blitFramebuffer(0, 0, fboWidth, fboHeight,
|
|
352
|
+
0, 0, fboWidth, fboHeight,
|
|
353
|
+
COLOR_BUFFER_BIT, NEAREST);
|
|
354
|
+
|
|
355
|
+
bindFramebufferImpl(FRAMEBUFFER, 0);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
@Override
|
|
360
|
+
protected void beginGL() {
|
|
361
|
+
PMatrix3D proj = graphics.projection;
|
|
362
|
+
PMatrix3D mdl = graphics.modelview;
|
|
363
|
+
if (gl2x != null) {
|
|
364
|
+
if (projMatrix == null) {
|
|
365
|
+
projMatrix = new float[16];
|
|
366
|
+
}
|
|
367
|
+
gl2x.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
|
|
368
|
+
projMatrix[ 0] = proj.m00;
|
|
369
|
+
projMatrix[ 1] = proj.m10;
|
|
370
|
+
projMatrix[ 2] = proj.m20;
|
|
371
|
+
projMatrix[ 3] = proj.m30;
|
|
372
|
+
projMatrix[ 4] = proj.m01;
|
|
373
|
+
projMatrix[ 5] = proj.m11;
|
|
374
|
+
projMatrix[ 6] = proj.m21;
|
|
375
|
+
projMatrix[ 7] = proj.m31;
|
|
376
|
+
projMatrix[ 8] = proj.m02;
|
|
377
|
+
projMatrix[ 9] = proj.m12;
|
|
378
|
+
projMatrix[10] = proj.m22;
|
|
379
|
+
projMatrix[11] = proj.m32;
|
|
380
|
+
projMatrix[12] = proj.m03;
|
|
381
|
+
projMatrix[13] = proj.m13;
|
|
382
|
+
projMatrix[14] = proj.m23;
|
|
383
|
+
projMatrix[15] = proj.m33;
|
|
384
|
+
gl2x.glLoadMatrixf(projMatrix, 0);
|
|
385
|
+
|
|
386
|
+
if (mvMatrix == null) {
|
|
387
|
+
mvMatrix = new float[16];
|
|
388
|
+
}
|
|
389
|
+
gl2x.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);
|
|
390
|
+
mvMatrix[ 0] = mdl.m00;
|
|
391
|
+
mvMatrix[ 1] = mdl.m10;
|
|
392
|
+
mvMatrix[ 2] = mdl.m20;
|
|
393
|
+
mvMatrix[ 3] = mdl.m30;
|
|
394
|
+
mvMatrix[ 4] = mdl.m01;
|
|
395
|
+
mvMatrix[ 5] = mdl.m11;
|
|
396
|
+
mvMatrix[ 6] = mdl.m21;
|
|
397
|
+
mvMatrix[ 7] = mdl.m31;
|
|
398
|
+
mvMatrix[ 8] = mdl.m02;
|
|
399
|
+
mvMatrix[ 9] = mdl.m12;
|
|
400
|
+
mvMatrix[10] = mdl.m22;
|
|
401
|
+
mvMatrix[11] = mdl.m32;
|
|
402
|
+
mvMatrix[12] = mdl.m03;
|
|
403
|
+
mvMatrix[13] = mdl.m13;
|
|
404
|
+
mvMatrix[14] = mdl.m23;
|
|
405
|
+
mvMatrix[15] = mdl.m33;
|
|
406
|
+
gl2x.glLoadMatrixf(mvMatrix, 0);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
@Override
|
|
412
|
+
protected boolean hasFBOs() {
|
|
413
|
+
if (context.hasBasicFBOSupport()) return true;
|
|
414
|
+
else return super.hasFBOs();
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
@Override
|
|
419
|
+
protected boolean hasShaders() {
|
|
420
|
+
if (context.hasGLSL()) return true;
|
|
421
|
+
else return super.hasShaders();
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
public void init(GLAutoDrawable glDrawable) {
|
|
426
|
+
capabilities = glDrawable.getChosenGLCapabilities();
|
|
427
|
+
if (!hasFBOs()) {
|
|
428
|
+
throw new RuntimeException(MISSING_FBO_ERROR);
|
|
429
|
+
}
|
|
430
|
+
if (!hasShaders()) {
|
|
431
|
+
throw new RuntimeException(MISSING_GLSL_ERROR);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
///////////////////////////////////////////////////////////
|
|
437
|
+
|
|
438
|
+
// Utility functions
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
@Override
|
|
442
|
+
protected void enableTexturing(int target) {
|
|
443
|
+
if (target == TEXTURE_2D) {
|
|
444
|
+
texturingTargets[0] = true;
|
|
445
|
+
} else if (target == TEXTURE_RECTANGLE) {
|
|
446
|
+
texturingTargets[1] = true;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
@Override
|
|
452
|
+
protected void disableTexturing(int target) {
|
|
453
|
+
if (target == TEXTURE_2D) {
|
|
454
|
+
texturingTargets[0] = false;
|
|
455
|
+
} else if (target == TEXTURE_RECTANGLE) {
|
|
456
|
+
texturingTargets[1] = false;
|
|
1086
457
|
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Convenience method to get a legit FontMetrics object. Where possible,
|
|
463
|
+
* override this any renderer subclass so that you're not using what's
|
|
464
|
+
* returned by getDefaultToolkit() to get your metrics.
|
|
465
|
+
*/
|
|
466
|
+
@SuppressWarnings("deprecation")
|
|
467
|
+
private FontMetrics getFontMetrics(Font font) { // ignore
|
|
468
|
+
return Toolkit.getDefaultToolkit().getFontMetrics(font);
|
|
469
|
+
}
|
|
1087
470
|
|
|
1088
|
-
///////////////////////////////////////////////////////////
|
|
1089
|
-
// Error Handling
|
|
1090
|
-
@Override
|
|
1091
|
-
public int getError() {
|
|
1092
|
-
return gl.glGetError();
|
|
1093
|
-
}
|
|
1094
471
|
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
472
|
+
/**
|
|
473
|
+
* Convenience method to jump through some Java2D hoops and get an FRC.
|
|
474
|
+
*/
|
|
475
|
+
private FontRenderContext getFontRenderContext(Font font) { // ignore
|
|
476
|
+
return getFontMetrics(font).getFontRenderContext();
|
|
477
|
+
}
|
|
1099
478
|
|
|
1100
|
-
//////////////////////////////////////////////////////////////////////////////
|
|
1101
|
-
// Buffer Objects
|
|
1102
|
-
@Override
|
|
1103
|
-
public void genBuffers(int n, IntBuffer buffers) {
|
|
1104
|
-
gl.glGenBuffers(n, buffers);
|
|
1105
|
-
}
|
|
1106
479
|
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
480
|
+
@Override
|
|
481
|
+
protected int getFontAscent(Object font) {
|
|
482
|
+
return getFontMetrics((Font) font).getAscent();
|
|
483
|
+
}
|
|
1111
484
|
|
|
1112
|
-
@Override
|
|
1113
|
-
public void bindBuffer(int target, int buffer) {
|
|
1114
|
-
gl.glBindBuffer(target, buffer);
|
|
1115
|
-
}
|
|
1116
485
|
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
486
|
+
@Override
|
|
487
|
+
protected int getFontDescent(Object font) {
|
|
488
|
+
return getFontMetrics((Font) font).getDescent();
|
|
489
|
+
}
|
|
1121
490
|
|
|
1122
|
-
@Override
|
|
1123
|
-
public void bufferSubData(int target, int offset, int size, Buffer data) {
|
|
1124
|
-
gl.glBufferSubData(target, offset, size, data);
|
|
1125
|
-
}
|
|
1126
491
|
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
492
|
+
@Override
|
|
493
|
+
protected int getTextWidth(Object font, char[] buffer, int start, int stop) {
|
|
494
|
+
// maybe should use one of the newer/fancier functions for this?
|
|
495
|
+
int length = stop - start;
|
|
496
|
+
FontMetrics metrics = getFontMetrics((Font) font);
|
|
497
|
+
return metrics.charsWidth(buffer, start, length);
|
|
498
|
+
}
|
|
1131
499
|
|
|
1132
|
-
@Override
|
|
1133
|
-
public void getBufferParameteriv(int target, int value, IntBuffer data) {
|
|
1134
|
-
gl.glGetBufferParameteriv(target, value, data);
|
|
1135
|
-
}
|
|
1136
500
|
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
501
|
+
@Override
|
|
502
|
+
protected Object getDerivedFont(Object font, float size) {
|
|
503
|
+
return ((Font) font).deriveFont(size);
|
|
504
|
+
}
|
|
1141
505
|
|
|
1142
|
-
@Override
|
|
1143
|
-
public ByteBuffer mapBufferRange(int target, int offset, int length, int access) {
|
|
1144
|
-
if (gl2x != null) {
|
|
1145
|
-
return gl2x.glMapBufferRange(target, offset, length, access);
|
|
1146
|
-
} else if (gl3 != null) {
|
|
1147
|
-
return gl3.glMapBufferRange(target, offset, length, access);
|
|
1148
|
-
} else {
|
|
1149
|
-
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glMapBufferRange()"));
|
|
1150
|
-
}
|
|
1151
|
-
}
|
|
1152
506
|
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
507
|
+
@Override
|
|
508
|
+
protected int getGLSLVersion() {
|
|
509
|
+
VersionNumber vn = context.getGLSLVersionNumber();
|
|
510
|
+
return vn.getMajor() * 100 + vn.getMinor();
|
|
511
|
+
}
|
|
1157
512
|
|
|
1158
|
-
//////////////////////////////////////////////////////////////////////////////
|
|
1159
|
-
// Synchronization
|
|
1160
|
-
@Override
|
|
1161
|
-
public long fenceSync(int condition, int flags) {
|
|
1162
|
-
if (gl3es3 != null) {
|
|
1163
|
-
return gl3es3.glFenceSync(condition, flags);
|
|
1164
|
-
} else {
|
|
1165
|
-
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "fenceSync()"));
|
|
1166
|
-
}
|
|
1167
|
-
}
|
|
1168
513
|
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
514
|
+
@Override
|
|
515
|
+
protected String getGLSLVersionSuffix() {
|
|
516
|
+
VersionNumber vn = context.getGLSLVersionNumber();
|
|
517
|
+
if (context.isGLESProfile() && 1 < vn.getMajor()) {
|
|
518
|
+
return " es";
|
|
519
|
+
} else {
|
|
520
|
+
return "";
|
|
1176
521
|
}
|
|
522
|
+
}
|
|
1177
523
|
|
|
1178
|
-
@Override
|
|
1179
|
-
public int clientWaitSync(long sync, int flags, long timeout) {
|
|
1180
|
-
if (gl3es3 != null) {
|
|
1181
|
-
return gl3es3.glClientWaitSync(sync, flags, timeout);
|
|
1182
|
-
} else {
|
|
1183
|
-
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "clientWaitSync()"));
|
|
1184
|
-
}
|
|
1185
|
-
}
|
|
1186
524
|
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
gl.glDepthRangef(n, f);
|
|
1192
|
-
}
|
|
525
|
+
@Override
|
|
526
|
+
protected String[] loadVertexShader(String filename) {
|
|
527
|
+
return loadVertexShader(filename, getGLSLVersion(), getGLSLVersionSuffix());
|
|
528
|
+
}
|
|
1193
529
|
|
|
1194
|
-
@Override
|
|
1195
|
-
public void viewport(int x, int y, int w, int h) {
|
|
1196
|
-
float scale = getPixelScale();
|
|
1197
|
-
viewportImpl((int) scale * x, (int) (scale * y), (int) (scale * w), (int) (scale * h));
|
|
1198
|
-
}
|
|
1199
530
|
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
531
|
+
@Override
|
|
532
|
+
protected String[] loadFragmentShader(String filename) {
|
|
533
|
+
return loadFragmentShader(filename, getGLSLVersion(), getGLSLVersionSuffix());
|
|
534
|
+
}
|
|
1204
535
|
|
|
1205
|
-
//////////////////////////////////////////////////////////////////////////////
|
|
1206
|
-
// Reading Pixels
|
|
1207
|
-
@Override
|
|
1208
|
-
protected void readPixelsImpl(int x, int y, int width, int height, int format, int type, Buffer buffer) {
|
|
1209
|
-
gl.glReadPixels(x, y, width, height, format, type, buffer);
|
|
1210
|
-
}
|
|
1211
536
|
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
537
|
+
@Override
|
|
538
|
+
protected String[] loadVertexShader(URL url) {
|
|
539
|
+
return loadVertexShader(url, getGLSLVersion(), getGLSLVersionSuffix());
|
|
540
|
+
}
|
|
1216
541
|
|
|
1217
|
-
//////////////////////////////////////////////////////////////////////////////
|
|
1218
|
-
// Vertices
|
|
1219
|
-
@Override
|
|
1220
|
-
public void vertexAttrib1f(int index, float value) {
|
|
1221
|
-
gl2.glVertexAttrib1f(index, value);
|
|
1222
|
-
}
|
|
1223
542
|
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
543
|
+
@Override
|
|
544
|
+
protected String[] loadFragmentShader(URL url) {
|
|
545
|
+
return loadFragmentShader(url, getGLSLVersion(), getGLSLVersionSuffix());
|
|
546
|
+
}
|
|
1228
547
|
|
|
1229
|
-
@Override
|
|
1230
|
-
public void vertexAttrib3f(int index, float value0, float value1, float value2) {
|
|
1231
|
-
gl2.glVertexAttrib3f(index, value0, value1, value2);
|
|
1232
|
-
}
|
|
1233
548
|
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
549
|
+
@Override
|
|
550
|
+
protected String[] loadFragmentShader(String filename, int version, String versionSuffix) {
|
|
551
|
+
String[] fragSrc0 = sketch.loadStrings(filename);
|
|
552
|
+
return preprocessFragmentSource(fragSrc0, version, versionSuffix);
|
|
553
|
+
}
|
|
1238
554
|
|
|
1239
|
-
@Override
|
|
1240
|
-
public void vertexAttrib1fv(int index, FloatBuffer values) {
|
|
1241
|
-
gl2.glVertexAttrib1fv(index, values);
|
|
1242
|
-
}
|
|
1243
555
|
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
556
|
+
@Override
|
|
557
|
+
protected String[] loadVertexShader(String filename, int version, String versionSuffix) {
|
|
558
|
+
String[] vertSrc0 = sketch.loadStrings(filename);
|
|
559
|
+
return preprocessVertexSource(vertSrc0, version, versionSuffix);
|
|
560
|
+
}
|
|
1248
561
|
|
|
1249
|
-
@Override
|
|
1250
|
-
public void vertexAttrib3fv(int index, FloatBuffer values) {
|
|
1251
|
-
gl2.glVertexAttrib3fv(index, values);
|
|
1252
|
-
}
|
|
1253
562
|
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
563
|
+
@Override
|
|
564
|
+
protected String[] loadFragmentShader(URL url, int version, String versionSuffix) {
|
|
565
|
+
try {
|
|
566
|
+
String[] fragSrc0 = PApplet.loadStrings(url.openStream());
|
|
567
|
+
return preprocessFragmentSource(fragSrc0, version, versionSuffix);
|
|
568
|
+
} catch (IOException e) {
|
|
569
|
+
PGraphics.showException("Cannot load fragment shader " + url.getFile());
|
|
1257
570
|
}
|
|
571
|
+
return null;
|
|
572
|
+
}
|
|
1258
573
|
|
|
1259
|
-
@Override
|
|
1260
|
-
public void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, int offset) {
|
|
1261
|
-
gl2.glVertexAttribPointer(index, size, type, normalized, stride, offset);
|
|
1262
|
-
}
|
|
1263
574
|
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
575
|
+
@Override
|
|
576
|
+
protected String[] loadVertexShader(URL url, int version, String versionSuffix) {
|
|
577
|
+
try {
|
|
578
|
+
String[] vertSrc0 = PApplet.loadStrings(url.openStream());
|
|
579
|
+
return preprocessVertexSource(vertSrc0, version, versionSuffix);
|
|
580
|
+
} catch (IOException e) {
|
|
581
|
+
PGraphics.showException("Cannot load vertex shader " + url.getFile());
|
|
1267
582
|
}
|
|
583
|
+
return null;
|
|
584
|
+
}
|
|
1268
585
|
|
|
1269
|
-
@Override
|
|
1270
|
-
public void disableVertexAttribArray(int index) {
|
|
1271
|
-
gl2.glDisableVertexAttribArray(index);
|
|
1272
|
-
}
|
|
1273
586
|
|
|
1274
|
-
|
|
1275
|
-
public void drawArraysImpl(int mode, int first, int count) {
|
|
1276
|
-
gl.glDrawArrays(mode, first, count);
|
|
1277
|
-
}
|
|
587
|
+
///////////////////////////////////////////////////////////
|
|
1278
588
|
|
|
1279
|
-
|
|
1280
|
-
public void drawElementsImpl(int mode, int count, int type, int offset) {
|
|
1281
|
-
gl.glDrawElements(mode, count, type, offset);
|
|
1282
|
-
}
|
|
589
|
+
// Tessellator
|
|
1283
590
|
|
|
1284
|
-
//////////////////////////////////////////////////////////////////////////////
|
|
1285
|
-
// Rasterization
|
|
1286
|
-
@Override
|
|
1287
|
-
public void lineWidth(float width) {
|
|
1288
|
-
gl.glLineWidth(width);
|
|
1289
|
-
}
|
|
1290
591
|
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
592
|
+
@Override
|
|
593
|
+
protected Tessellator createTessellator(TessellatorCallback callback) {
|
|
594
|
+
return new Tessellator(callback);
|
|
595
|
+
}
|
|
1295
596
|
|
|
1296
|
-
@Override
|
|
1297
|
-
public void cullFace(int mode) {
|
|
1298
|
-
gl.glCullFace(mode);
|
|
1299
|
-
}
|
|
1300
597
|
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
598
|
+
protected static class Tessellator implements PGL.Tessellator {
|
|
599
|
+
protected GLUtessellator tess;
|
|
600
|
+
protected TessellatorCallback callback;
|
|
601
|
+
protected GLUCallback gluCallback;
|
|
1305
602
|
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
gl.glPixelStorei(pname, param);
|
|
1311
|
-
}
|
|
603
|
+
public Tessellator(TessellatorCallback callback) {
|
|
604
|
+
this.callback = callback;
|
|
605
|
+
tess = GLU.gluNewTess();
|
|
606
|
+
gluCallback = new GLUCallback();
|
|
1312
607
|
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
608
|
+
GLU.gluTessCallback(tess, GLU.GLU_TESS_BEGIN, gluCallback);
|
|
609
|
+
GLU.gluTessCallback(tess, GLU.GLU_TESS_END, gluCallback);
|
|
610
|
+
GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX, gluCallback);
|
|
611
|
+
GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE, gluCallback);
|
|
612
|
+
GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR, gluCallback);
|
|
1318
613
|
}
|
|
1319
614
|
|
|
1320
615
|
@Override
|
|
1321
|
-
public void
|
|
1322
|
-
|
|
616
|
+
public void setCallback(int flag) {
|
|
617
|
+
GLU.gluTessCallback(tess, flag, gluCallback);
|
|
1323
618
|
}
|
|
1324
619
|
|
|
1325
620
|
@Override
|
|
1326
|
-
public void
|
|
1327
|
-
|
|
621
|
+
public void setWindingRule(int rule) {
|
|
622
|
+
setProperty(GLU.GLU_TESS_WINDING_RULE, rule);
|
|
1328
623
|
}
|
|
1329
624
|
|
|
1330
625
|
@Override
|
|
1331
|
-
public void
|
|
1332
|
-
|
|
626
|
+
public void setProperty(int property, int value) {
|
|
627
|
+
GLU.gluTessProperty(tess, property, value);
|
|
1333
628
|
}
|
|
1334
629
|
|
|
1335
630
|
@Override
|
|
1336
|
-
public void
|
|
1337
|
-
|
|
631
|
+
public void beginPolygon() {
|
|
632
|
+
beginPolygon(null);
|
|
1338
633
|
}
|
|
1339
634
|
|
|
1340
635
|
@Override
|
|
1341
|
-
public void
|
|
1342
|
-
|
|
636
|
+
public void beginPolygon(Object data) {
|
|
637
|
+
GLU.gluTessBeginPolygon(tess, data);
|
|
1343
638
|
}
|
|
1344
639
|
|
|
1345
640
|
@Override
|
|
1346
|
-
public void
|
|
1347
|
-
|
|
641
|
+
public void endPolygon() {
|
|
642
|
+
GLU.gluTessEndPolygon(tess);
|
|
1348
643
|
}
|
|
1349
644
|
|
|
1350
645
|
@Override
|
|
1351
|
-
public void
|
|
1352
|
-
|
|
646
|
+
public void beginContour() {
|
|
647
|
+
GLU.gluTessBeginContour(tess);
|
|
1353
648
|
}
|
|
1354
649
|
|
|
1355
650
|
@Override
|
|
1356
|
-
public void
|
|
1357
|
-
|
|
651
|
+
public void endContour() {
|
|
652
|
+
GLU.gluTessEndContour(tess);
|
|
1358
653
|
}
|
|
1359
654
|
|
|
1360
655
|
@Override
|
|
1361
|
-
public void
|
|
1362
|
-
|
|
656
|
+
public void addVertex(double[] v) {
|
|
657
|
+
addVertex(v, 0, v);
|
|
1363
658
|
}
|
|
1364
659
|
|
|
1365
660
|
@Override
|
|
1366
|
-
public void
|
|
1367
|
-
|
|
661
|
+
public void addVertex(double[] v, int n, Object data) {
|
|
662
|
+
GLU.gluTessVertex(tess, v, n, data);
|
|
1368
663
|
}
|
|
1369
664
|
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
665
|
+
protected class GLUCallback extends GLUtessellatorCallbackAdapter {
|
|
666
|
+
@Override
|
|
667
|
+
public void begin(int type) {
|
|
668
|
+
callback.begin(type);
|
|
669
|
+
}
|
|
1374
670
|
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
671
|
+
@Override
|
|
672
|
+
public void end() {
|
|
673
|
+
callback.end();
|
|
674
|
+
}
|
|
1379
675
|
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
676
|
+
@Override
|
|
677
|
+
public void vertex(Object data) {
|
|
678
|
+
callback.vertex(data);
|
|
679
|
+
}
|
|
1384
680
|
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
681
|
+
@Override
|
|
682
|
+
public void combine(double[] coords, Object[] data,
|
|
683
|
+
float[] weight, Object[] outData) {
|
|
684
|
+
callback.combine(coords, data, weight, outData);
|
|
685
|
+
}
|
|
1389
686
|
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
687
|
+
@Override
|
|
688
|
+
public void error(int errnum) {
|
|
689
|
+
callback.error(errnum);
|
|
690
|
+
}
|
|
1393
691
|
}
|
|
692
|
+
}
|
|
1394
693
|
|
|
1395
|
-
@Override
|
|
1396
|
-
protected void activeTextureImpl(int texture) {
|
|
1397
|
-
gl.glActiveTexture(texture);
|
|
1398
|
-
}
|
|
1399
694
|
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
695
|
+
@Override
|
|
696
|
+
protected String tessError(int err) {
|
|
697
|
+
return glu.gluErrorString(err);
|
|
698
|
+
}
|
|
1404
699
|
|
|
1405
|
-
///////////////////////////////////////////////////////////
|
|
1406
|
-
// Shaders and Programs
|
|
1407
|
-
@Override
|
|
1408
|
-
public int createShader(int type) {
|
|
1409
|
-
return gl2.glCreateShader(type);
|
|
1410
|
-
}
|
|
1411
700
|
|
|
1412
|
-
|
|
1413
|
-
public void shaderSource(int shader, String source) {
|
|
1414
|
-
gl2.glShaderSource(shader, 1, new String[]{source}, (int[]) null, 0);
|
|
1415
|
-
}
|
|
701
|
+
///////////////////////////////////////////////////////////
|
|
1416
702
|
|
|
1417
|
-
|
|
1418
|
-
public void compileShader(int shader) {
|
|
1419
|
-
gl2.glCompileShader(shader);
|
|
1420
|
-
}
|
|
703
|
+
// Font outline
|
|
1421
704
|
|
|
1422
|
-
@Override
|
|
1423
|
-
public void releaseShaderCompiler() {
|
|
1424
|
-
gl2.glReleaseShaderCompiler();
|
|
1425
|
-
}
|
|
1426
705
|
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
706
|
+
static {
|
|
707
|
+
SHAPE_TEXT_SUPPORTED = true;
|
|
708
|
+
SEG_MOVETO = PathIterator.SEG_MOVETO;
|
|
709
|
+
SEG_LINETO = PathIterator.SEG_LINETO;
|
|
710
|
+
SEG_QUADTO = PathIterator.SEG_QUADTO;
|
|
711
|
+
SEG_CUBICTO = PathIterator.SEG_CUBICTO;
|
|
712
|
+
SEG_CLOSE = PathIterator.SEG_CLOSE;
|
|
713
|
+
}
|
|
1431
714
|
|
|
1432
|
-
@Override
|
|
1433
|
-
public void shaderBinary(int count, IntBuffer shaders, int binaryFormat, Buffer binary, int length) {
|
|
1434
|
-
gl2.glShaderBinary(count, shaders, binaryFormat, binary, length);
|
|
1435
|
-
}
|
|
1436
715
|
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
716
|
+
@Override
|
|
717
|
+
protected FontOutline createFontOutline(char ch, Object font) {
|
|
718
|
+
return new FontOutline(ch, (Font) font);
|
|
719
|
+
}
|
|
1441
720
|
|
|
1442
|
-
@Override
|
|
1443
|
-
public void attachShader(int program, int shader) {
|
|
1444
|
-
gl2.glAttachShader(program, shader);
|
|
1445
|
-
}
|
|
1446
721
|
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
gl2.glDetachShader(program, shader);
|
|
1450
|
-
}
|
|
1451
|
-
|
|
1452
|
-
@Override
|
|
1453
|
-
public void linkProgram(int program) {
|
|
1454
|
-
gl2.glLinkProgram(program);
|
|
1455
|
-
}
|
|
1456
|
-
|
|
1457
|
-
@Override
|
|
1458
|
-
public void useProgram(int program) {
|
|
1459
|
-
gl2.glUseProgram(program);
|
|
1460
|
-
}
|
|
1461
|
-
|
|
1462
|
-
@Override
|
|
1463
|
-
public void deleteProgram(int program) {
|
|
1464
|
-
gl2.glDeleteProgram(program);
|
|
1465
|
-
}
|
|
1466
|
-
|
|
1467
|
-
@Override
|
|
1468
|
-
public String getActiveAttrib(int program, int index, IntBuffer size, IntBuffer type) {
|
|
1469
|
-
int[] tmp = {0, 0, 0};
|
|
1470
|
-
byte[] namebuf = new byte[1024];
|
|
1471
|
-
gl2.glGetActiveAttrib(program, index, 1024, tmp, 0, tmp, 1, tmp, 2, namebuf, 0);
|
|
1472
|
-
size.put(tmp[1]);
|
|
1473
|
-
type.put(tmp[2]);
|
|
1474
|
-
String name = new String(namebuf, 0, tmp[0]);
|
|
1475
|
-
return name;
|
|
1476
|
-
}
|
|
1477
|
-
|
|
1478
|
-
@Override
|
|
1479
|
-
public int getAttribLocation(int program, String name) {
|
|
1480
|
-
return gl2.glGetAttribLocation(program, name);
|
|
1481
|
-
}
|
|
1482
|
-
|
|
1483
|
-
@Override
|
|
1484
|
-
public void bindAttribLocation(int program, int index, String name) {
|
|
1485
|
-
gl2.glBindAttribLocation(program, index, name);
|
|
1486
|
-
}
|
|
1487
|
-
|
|
1488
|
-
@Override
|
|
1489
|
-
public int getUniformLocation(int program, String name) {
|
|
1490
|
-
return gl2.glGetUniformLocation(program, name);
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
@Override
|
|
1494
|
-
public String getActiveUniform(int program, int index, IntBuffer size, IntBuffer type) {
|
|
1495
|
-
int[] tmp = {0, 0, 0};
|
|
1496
|
-
byte[] namebuf = new byte[1024];
|
|
1497
|
-
gl2.glGetActiveUniform(program, index, 1024, tmp, 0, tmp, 1, tmp, 2, namebuf, 0);
|
|
1498
|
-
size.put(tmp[1]);
|
|
1499
|
-
type.put(tmp[2]);
|
|
1500
|
-
String name = new String(namebuf, 0, tmp[0]);
|
|
1501
|
-
return name;
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
|
-
@Override
|
|
1505
|
-
public void uniform1i(int location, int value) {
|
|
1506
|
-
gl2.glUniform1i(location, value);
|
|
1507
|
-
}
|
|
1508
|
-
|
|
1509
|
-
@Override
|
|
1510
|
-
public void uniform2i(int location, int value0, int value1) {
|
|
1511
|
-
gl2.glUniform2i(location, value0, value1);
|
|
1512
|
-
}
|
|
1513
|
-
|
|
1514
|
-
@Override
|
|
1515
|
-
public void uniform3i(int location, int value0, int value1, int value2) {
|
|
1516
|
-
gl2.glUniform3i(location, value0, value1, value2);
|
|
1517
|
-
}
|
|
1518
|
-
|
|
1519
|
-
@Override
|
|
1520
|
-
public void uniform4i(int location, int value0, int value1, int value2, int value3) {
|
|
1521
|
-
gl2.glUniform4i(location, value0, value1, value2, value3);
|
|
1522
|
-
}
|
|
1523
|
-
|
|
1524
|
-
@Override
|
|
1525
|
-
public void uniform1f(int location, float value) {
|
|
1526
|
-
gl2.glUniform1f(location, value);
|
|
1527
|
-
}
|
|
1528
|
-
|
|
1529
|
-
@Override
|
|
1530
|
-
public void uniform2f(int location, float value0, float value1) {
|
|
1531
|
-
gl2.glUniform2f(location, value0, value1);
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1534
|
-
@Override
|
|
1535
|
-
public void uniform3f(int location, float value0, float value1, float value2) {
|
|
1536
|
-
gl2.glUniform3f(location, value0, value1, value2);
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
@Override
|
|
1540
|
-
public void uniform4f(int location, float value0, float value1, float value2, float value3) {
|
|
1541
|
-
gl2.glUniform4f(location, value0, value1, value2, value3);
|
|
1542
|
-
}
|
|
1543
|
-
|
|
1544
|
-
@Override
|
|
1545
|
-
public void uniform1iv(int location, int count, IntBuffer v) {
|
|
1546
|
-
gl2.glUniform1iv(location, count, v);
|
|
1547
|
-
}
|
|
1548
|
-
|
|
1549
|
-
@Override
|
|
1550
|
-
public void uniform2iv(int location, int count, IntBuffer v) {
|
|
1551
|
-
gl2.glUniform2iv(location, count, v);
|
|
1552
|
-
}
|
|
722
|
+
protected class FontOutline implements PGL.FontOutline {
|
|
723
|
+
PathIterator iter;
|
|
1553
724
|
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
725
|
+
public FontOutline(char ch, Font font) {
|
|
726
|
+
char[] textArray = new char[] { ch };
|
|
727
|
+
FontRenderContext frc = getFontRenderContext(font);
|
|
728
|
+
GlyphVector gv = font.createGlyphVector(frc, textArray);
|
|
729
|
+
Shape shp = gv.getOutline();
|
|
730
|
+
iter = shp.getPathIterator(null);
|
|
1557
731
|
}
|
|
1558
732
|
|
|
1559
733
|
@Override
|
|
1560
|
-
public
|
|
1561
|
-
|
|
734
|
+
public boolean isDone() {
|
|
735
|
+
return iter.isDone();
|
|
1562
736
|
}
|
|
1563
737
|
|
|
1564
738
|
@Override
|
|
1565
|
-
public
|
|
1566
|
-
|
|
739
|
+
public int currentSegment(float[] coords) {
|
|
740
|
+
return iter.currentSegment(coords);
|
|
1567
741
|
}
|
|
1568
742
|
|
|
1569
743
|
@Override
|
|
1570
|
-
public void
|
|
1571
|
-
|
|
744
|
+
public void next() {
|
|
745
|
+
iter.next();
|
|
1572
746
|
}
|
|
747
|
+
}
|
|
1573
748
|
|
|
1574
|
-
@Override
|
|
1575
|
-
public void uniform3fv(int location, int count, FloatBuffer v) {
|
|
1576
|
-
gl2.glUniform3fv(location, count, v);
|
|
1577
|
-
}
|
|
1578
749
|
|
|
1579
|
-
|
|
1580
|
-
public void uniform4fv(int location, int count, FloatBuffer v) {
|
|
1581
|
-
gl2.glUniform4fv(location, count, v);
|
|
1582
|
-
}
|
|
750
|
+
///////////////////////////////////////////////////////////
|
|
1583
751
|
|
|
1584
|
-
|
|
1585
|
-
public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer mat) {
|
|
1586
|
-
gl2.glUniformMatrix2fv(location, count, transpose, mat);
|
|
1587
|
-
}
|
|
752
|
+
// Constants
|
|
1588
753
|
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
}
|
|
754
|
+
static {
|
|
755
|
+
FALSE = GL.GL_FALSE;
|
|
756
|
+
TRUE = GL.GL_TRUE;
|
|
1593
757
|
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
758
|
+
INT = GL2ES2.GL_INT;
|
|
759
|
+
BYTE = GL.GL_BYTE;
|
|
760
|
+
SHORT = GL.GL_SHORT;
|
|
761
|
+
FLOAT = GL.GL_FLOAT;
|
|
762
|
+
BOOL = GL2ES2.GL_BOOL;
|
|
763
|
+
UNSIGNED_INT = GL.GL_UNSIGNED_INT;
|
|
764
|
+
UNSIGNED_BYTE = GL.GL_UNSIGNED_BYTE;
|
|
765
|
+
UNSIGNED_SHORT = GL.GL_UNSIGNED_SHORT;
|
|
1598
766
|
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
767
|
+
RGB = GL.GL_RGB;
|
|
768
|
+
RGBA = GL.GL_RGBA;
|
|
769
|
+
ALPHA = GL.GL_ALPHA;
|
|
770
|
+
LUMINANCE = GL.GL_LUMINANCE;
|
|
771
|
+
LUMINANCE_ALPHA = GL.GL_LUMINANCE_ALPHA;
|
|
1603
772
|
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
}
|
|
773
|
+
UNSIGNED_SHORT_5_6_5 = GL.GL_UNSIGNED_SHORT_5_6_5;
|
|
774
|
+
UNSIGNED_SHORT_4_4_4_4 = GL.GL_UNSIGNED_SHORT_4_4_4_4;
|
|
775
|
+
UNSIGNED_SHORT_5_5_5_1 = GL.GL_UNSIGNED_SHORT_5_5_5_1;
|
|
1608
776
|
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
777
|
+
RGBA4 = GL.GL_RGBA4;
|
|
778
|
+
RGB5_A1 = GL.GL_RGB5_A1;
|
|
779
|
+
RGB565 = GL.GL_RGB565;
|
|
780
|
+
RGB8 = GL.GL_RGB8;
|
|
781
|
+
RGBA8 = GL.GL_RGBA8;
|
|
782
|
+
ALPHA8 = GL.GL_ALPHA8;
|
|
1613
783
|
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
}
|
|
784
|
+
READ_ONLY = GL2ES3.GL_READ_ONLY;
|
|
785
|
+
WRITE_ONLY = GL.GL_WRITE_ONLY;
|
|
786
|
+
READ_WRITE = GL2ES3.GL_READ_WRITE;
|
|
1618
787
|
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
gl2.glGetShaderiv(shader, GL2ES2.GL_INFO_LOG_LENGTH, val, 0);
|
|
1623
|
-
int length = val[0];
|
|
1624
|
-
|
|
1625
|
-
byte[] log = new byte[length];
|
|
1626
|
-
gl2.glGetShaderInfoLog(shader, length, val, 0, log, 0);
|
|
1627
|
-
return new String(log);
|
|
1628
|
-
}
|
|
788
|
+
TESS_WINDING_NONZERO = GLU.GLU_TESS_WINDING_NONZERO;
|
|
789
|
+
TESS_WINDING_ODD = GLU.GLU_TESS_WINDING_ODD;
|
|
790
|
+
TESS_EDGE_FLAG = GLU.GLU_TESS_EDGE_FLAG;
|
|
1629
791
|
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
gl2.glGetShaderSource(shader, 1024, len, 0, buf, 0);
|
|
1635
|
-
return new String(buf, 0, len[0]);
|
|
1636
|
-
}
|
|
792
|
+
GENERATE_MIPMAP_HINT = GL.GL_GENERATE_MIPMAP_HINT;
|
|
793
|
+
FASTEST = GL.GL_FASTEST;
|
|
794
|
+
NICEST = GL.GL_NICEST;
|
|
795
|
+
DONT_CARE = GL.GL_DONT_CARE;
|
|
1637
796
|
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
797
|
+
VENDOR = GL.GL_VENDOR;
|
|
798
|
+
RENDERER = GL.GL_RENDERER;
|
|
799
|
+
VERSION = GL.GL_VERSION;
|
|
800
|
+
EXTENSIONS = GL.GL_EXTENSIONS;
|
|
801
|
+
SHADING_LANGUAGE_VERSION = GL2ES2.GL_SHADING_LANGUAGE_VERSION;
|
|
1642
802
|
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
gl2.glGetVertexAttribfv(index, pname, params);
|
|
1646
|
-
}
|
|
803
|
+
MAX_SAMPLES = GL.GL_MAX_SAMPLES;
|
|
804
|
+
SAMPLES = GL.GL_SAMPLES;
|
|
1647
805
|
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
gl2.glGetVertexAttribiv(index, pname, params);
|
|
1651
|
-
}
|
|
806
|
+
ALIASED_LINE_WIDTH_RANGE = GL.GL_ALIASED_LINE_WIDTH_RANGE;
|
|
807
|
+
ALIASED_POINT_SIZE_RANGE = GL.GL_ALIASED_POINT_SIZE_RANGE;
|
|
1652
808
|
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glGetVertexAttribPointerv()"));
|
|
1656
|
-
}
|
|
809
|
+
DEPTH_BITS = GL.GL_DEPTH_BITS;
|
|
810
|
+
STENCIL_BITS = GL.GL_STENCIL_BITS;
|
|
1657
811
|
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
gl2.glGetUniformfv(program, location, params);
|
|
1661
|
-
}
|
|
1662
|
-
|
|
1663
|
-
@Override
|
|
1664
|
-
public void getUniformiv(int program, int location, IntBuffer params) {
|
|
1665
|
-
gl2.glGetUniformiv(program, location, params);
|
|
1666
|
-
}
|
|
1667
|
-
|
|
1668
|
-
@Override
|
|
1669
|
-
public boolean isProgram(int program) {
|
|
1670
|
-
return gl2.glIsProgram(program);
|
|
1671
|
-
}
|
|
812
|
+
CCW = GL.GL_CCW;
|
|
813
|
+
CW = GL.GL_CW;
|
|
1672
814
|
|
|
1673
|
-
|
|
1674
|
-
public void getProgramiv(int program, int pname, IntBuffer params) {
|
|
1675
|
-
gl2.glGetProgramiv(program, pname, params);
|
|
1676
|
-
}
|
|
815
|
+
VIEWPORT = GL.GL_VIEWPORT;
|
|
1677
816
|
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
gl2.glGetProgramiv(program, GL2ES2.GL_INFO_LOG_LENGTH, val, 0);
|
|
1682
|
-
int length = val[0];
|
|
1683
|
-
|
|
1684
|
-
if (0 < length) {
|
|
1685
|
-
byte[] log = new byte[length];
|
|
1686
|
-
gl2.glGetProgramInfoLog(program, length, val, 0, log, 0);
|
|
1687
|
-
return new String(log);
|
|
1688
|
-
} else {
|
|
1689
|
-
return "Unknown error";
|
|
1690
|
-
}
|
|
1691
|
-
}
|
|
817
|
+
ARRAY_BUFFER = GL.GL_ARRAY_BUFFER;
|
|
818
|
+
ELEMENT_ARRAY_BUFFER = GL.GL_ELEMENT_ARRAY_BUFFER;
|
|
819
|
+
PIXEL_PACK_BUFFER = GL2ES3.GL_PIXEL_PACK_BUFFER;
|
|
1692
820
|
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
821
|
+
MAX_VERTEX_ATTRIBS = GL2ES2.GL_MAX_VERTEX_ATTRIBS;
|
|
822
|
+
|
|
823
|
+
STATIC_DRAW = GL.GL_STATIC_DRAW;
|
|
824
|
+
DYNAMIC_DRAW = GL.GL_DYNAMIC_DRAW;
|
|
825
|
+
STREAM_DRAW = GL2ES2.GL_STREAM_DRAW;
|
|
826
|
+
STREAM_READ = GL2ES3.GL_STREAM_READ;
|
|
827
|
+
|
|
828
|
+
BUFFER_SIZE = GL.GL_BUFFER_SIZE;
|
|
829
|
+
BUFFER_USAGE = GL.GL_BUFFER_USAGE;
|
|
830
|
+
|
|
831
|
+
POINTS = GL.GL_POINTS;
|
|
832
|
+
LINE_STRIP = GL.GL_LINE_STRIP;
|
|
833
|
+
LINE_LOOP = GL.GL_LINE_LOOP;
|
|
834
|
+
LINES = GL.GL_LINES;
|
|
835
|
+
TRIANGLE_FAN = GL.GL_TRIANGLE_FAN;
|
|
836
|
+
TRIANGLE_STRIP = GL.GL_TRIANGLE_STRIP;
|
|
837
|
+
TRIANGLES = GL.GL_TRIANGLES;
|
|
838
|
+
|
|
839
|
+
CULL_FACE = GL.GL_CULL_FACE;
|
|
840
|
+
FRONT = GL.GL_FRONT;
|
|
841
|
+
BACK = GL.GL_BACK;
|
|
842
|
+
FRONT_AND_BACK = GL.GL_FRONT_AND_BACK;
|
|
843
|
+
|
|
844
|
+
POLYGON_OFFSET_FILL = GL.GL_POLYGON_OFFSET_FILL;
|
|
845
|
+
|
|
846
|
+
UNPACK_ALIGNMENT = GL.GL_UNPACK_ALIGNMENT;
|
|
847
|
+
PACK_ALIGNMENT = GL.GL_PACK_ALIGNMENT;
|
|
848
|
+
|
|
849
|
+
TEXTURE_2D = GL.GL_TEXTURE_2D;
|
|
850
|
+
TEXTURE_RECTANGLE = GL2GL3.GL_TEXTURE_RECTANGLE;
|
|
851
|
+
|
|
852
|
+
TEXTURE_BINDING_2D = GL.GL_TEXTURE_BINDING_2D;
|
|
853
|
+
TEXTURE_BINDING_RECTANGLE = GL2GL3.GL_TEXTURE_BINDING_RECTANGLE;
|
|
854
|
+
|
|
855
|
+
MAX_TEXTURE_SIZE = GL.GL_MAX_TEXTURE_SIZE;
|
|
856
|
+
TEXTURE_MAX_ANISOTROPY = GL.GL_TEXTURE_MAX_ANISOTROPY_EXT;
|
|
857
|
+
MAX_TEXTURE_MAX_ANISOTROPY = GL.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT;
|
|
858
|
+
|
|
859
|
+
MAX_VERTEX_TEXTURE_IMAGE_UNITS = GL2ES2.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS;
|
|
860
|
+
MAX_TEXTURE_IMAGE_UNITS = GL2ES2.GL_MAX_TEXTURE_IMAGE_UNITS;
|
|
861
|
+
MAX_COMBINED_TEXTURE_IMAGE_UNITS = GL2ES2.GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS;
|
|
862
|
+
|
|
863
|
+
NUM_COMPRESSED_TEXTURE_FORMATS = GL.GL_NUM_COMPRESSED_TEXTURE_FORMATS;
|
|
864
|
+
COMPRESSED_TEXTURE_FORMATS = GL.GL_COMPRESSED_TEXTURE_FORMATS;
|
|
865
|
+
|
|
866
|
+
NEAREST = GL.GL_NEAREST;
|
|
867
|
+
LINEAR = GL.GL_LINEAR;
|
|
868
|
+
LINEAR_MIPMAP_NEAREST = GL.GL_LINEAR_MIPMAP_NEAREST;
|
|
869
|
+
LINEAR_MIPMAP_LINEAR = GL.GL_LINEAR_MIPMAP_LINEAR;
|
|
870
|
+
|
|
871
|
+
CLAMP_TO_EDGE = GL.GL_CLAMP_TO_EDGE;
|
|
872
|
+
REPEAT = GL.GL_REPEAT;
|
|
873
|
+
|
|
874
|
+
TEXTURE0 = GL.GL_TEXTURE0;
|
|
875
|
+
TEXTURE1 = GL.GL_TEXTURE1;
|
|
876
|
+
TEXTURE2 = GL.GL_TEXTURE2;
|
|
877
|
+
TEXTURE3 = GL.GL_TEXTURE3;
|
|
878
|
+
TEXTURE_MIN_FILTER = GL.GL_TEXTURE_MIN_FILTER;
|
|
879
|
+
TEXTURE_MAG_FILTER = GL.GL_TEXTURE_MAG_FILTER;
|
|
880
|
+
TEXTURE_WRAP_S = GL.GL_TEXTURE_WRAP_S;
|
|
881
|
+
TEXTURE_WRAP_T = GL.GL_TEXTURE_WRAP_T;
|
|
882
|
+
TEXTURE_WRAP_R = GL2ES2.GL_TEXTURE_WRAP_R;
|
|
883
|
+
|
|
884
|
+
TEXTURE_CUBE_MAP = GL.GL_TEXTURE_CUBE_MAP;
|
|
885
|
+
TEXTURE_CUBE_MAP_POSITIVE_X = GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X;
|
|
886
|
+
TEXTURE_CUBE_MAP_POSITIVE_Y = GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
|
|
887
|
+
TEXTURE_CUBE_MAP_POSITIVE_Z = GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
|
|
888
|
+
TEXTURE_CUBE_MAP_NEGATIVE_X = GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
|
|
889
|
+
TEXTURE_CUBE_MAP_NEGATIVE_Y = GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
|
|
890
|
+
TEXTURE_CUBE_MAP_NEGATIVE_Z = GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
|
|
891
|
+
|
|
892
|
+
VERTEX_SHADER = GL2ES2.GL_VERTEX_SHADER;
|
|
893
|
+
FRAGMENT_SHADER = GL2ES2.GL_FRAGMENT_SHADER;
|
|
894
|
+
INFO_LOG_LENGTH = GL2ES2.GL_INFO_LOG_LENGTH;
|
|
895
|
+
SHADER_SOURCE_LENGTH = GL2ES2.GL_SHADER_SOURCE_LENGTH;
|
|
896
|
+
COMPILE_STATUS = GL2ES2.GL_COMPILE_STATUS;
|
|
897
|
+
LINK_STATUS = GL2ES2.GL_LINK_STATUS;
|
|
898
|
+
VALIDATE_STATUS = GL2ES2.GL_VALIDATE_STATUS;
|
|
899
|
+
SHADER_TYPE = GL2ES2.GL_SHADER_TYPE;
|
|
900
|
+
DELETE_STATUS = GL2ES2.GL_DELETE_STATUS;
|
|
901
|
+
|
|
902
|
+
FLOAT_VEC2 = GL2ES2.GL_FLOAT_VEC2;
|
|
903
|
+
FLOAT_VEC3 = GL2ES2.GL_FLOAT_VEC3;
|
|
904
|
+
FLOAT_VEC4 = GL2ES2.GL_FLOAT_VEC4;
|
|
905
|
+
FLOAT_MAT2 = GL2ES2.GL_FLOAT_MAT2;
|
|
906
|
+
FLOAT_MAT3 = GL2ES2.GL_FLOAT_MAT3;
|
|
907
|
+
FLOAT_MAT4 = GL2ES2.GL_FLOAT_MAT4;
|
|
908
|
+
INT_VEC2 = GL2ES2.GL_INT_VEC2;
|
|
909
|
+
INT_VEC3 = GL2ES2.GL_INT_VEC3;
|
|
910
|
+
INT_VEC4 = GL2ES2.GL_INT_VEC4;
|
|
911
|
+
BOOL_VEC2 = GL2ES2.GL_BOOL_VEC2;
|
|
912
|
+
BOOL_VEC3 = GL2ES2.GL_BOOL_VEC3;
|
|
913
|
+
BOOL_VEC4 = GL2ES2.GL_BOOL_VEC4;
|
|
914
|
+
SAMPLER_2D = GL2ES2.GL_SAMPLER_2D;
|
|
915
|
+
SAMPLER_CUBE = GL2ES2.GL_SAMPLER_CUBE;
|
|
916
|
+
|
|
917
|
+
LOW_FLOAT = GL2ES2.GL_LOW_FLOAT;
|
|
918
|
+
MEDIUM_FLOAT = GL2ES2.GL_MEDIUM_FLOAT;
|
|
919
|
+
HIGH_FLOAT = GL2ES2.GL_HIGH_FLOAT;
|
|
920
|
+
LOW_INT = GL2ES2.GL_LOW_INT;
|
|
921
|
+
MEDIUM_INT = GL2ES2.GL_MEDIUM_INT;
|
|
922
|
+
HIGH_INT = GL2ES2.GL_HIGH_INT;
|
|
923
|
+
|
|
924
|
+
CURRENT_VERTEX_ATTRIB = GL2ES2.GL_CURRENT_VERTEX_ATTRIB;
|
|
925
|
+
|
|
926
|
+
VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING;
|
|
927
|
+
VERTEX_ATTRIB_ARRAY_ENABLED = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_ENABLED;
|
|
928
|
+
VERTEX_ATTRIB_ARRAY_SIZE = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_SIZE;
|
|
929
|
+
VERTEX_ATTRIB_ARRAY_STRIDE = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_STRIDE;
|
|
930
|
+
VERTEX_ATTRIB_ARRAY_TYPE = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_TYPE;
|
|
931
|
+
VERTEX_ATTRIB_ARRAY_NORMALIZED = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_NORMALIZED;
|
|
932
|
+
VERTEX_ATTRIB_ARRAY_POINTER = GL2ES2.GL_VERTEX_ATTRIB_ARRAY_POINTER;
|
|
933
|
+
|
|
934
|
+
BLEND = GL.GL_BLEND;
|
|
935
|
+
ONE = GL.GL_ONE;
|
|
936
|
+
ZERO = GL.GL_ZERO;
|
|
937
|
+
SRC_ALPHA = GL.GL_SRC_ALPHA;
|
|
938
|
+
DST_ALPHA = GL.GL_DST_ALPHA;
|
|
939
|
+
ONE_MINUS_SRC_ALPHA = GL.GL_ONE_MINUS_SRC_ALPHA;
|
|
940
|
+
ONE_MINUS_DST_COLOR = GL.GL_ONE_MINUS_DST_COLOR;
|
|
941
|
+
ONE_MINUS_SRC_COLOR = GL.GL_ONE_MINUS_SRC_COLOR;
|
|
942
|
+
DST_COLOR = GL.GL_DST_COLOR;
|
|
943
|
+
SRC_COLOR = GL.GL_SRC_COLOR;
|
|
944
|
+
|
|
945
|
+
SAMPLE_ALPHA_TO_COVERAGE = GL.GL_SAMPLE_ALPHA_TO_COVERAGE;
|
|
946
|
+
SAMPLE_COVERAGE = GL.GL_SAMPLE_COVERAGE;
|
|
947
|
+
|
|
948
|
+
KEEP = GL.GL_KEEP;
|
|
949
|
+
REPLACE = GL.GL_REPLACE;
|
|
950
|
+
INCR = GL.GL_INCR;
|
|
951
|
+
DECR = GL.GL_DECR;
|
|
952
|
+
INVERT = GL.GL_INVERT;
|
|
953
|
+
INCR_WRAP = GL.GL_INCR_WRAP;
|
|
954
|
+
DECR_WRAP = GL.GL_DECR_WRAP;
|
|
955
|
+
NEVER = GL.GL_NEVER;
|
|
956
|
+
ALWAYS = GL.GL_ALWAYS;
|
|
957
|
+
|
|
958
|
+
EQUAL = GL.GL_EQUAL;
|
|
959
|
+
LESS = GL.GL_LESS;
|
|
960
|
+
LEQUAL = GL.GL_LEQUAL;
|
|
961
|
+
GREATER = GL.GL_GREATER;
|
|
962
|
+
GEQUAL = GL.GL_GEQUAL;
|
|
963
|
+
NOTEQUAL = GL.GL_NOTEQUAL;
|
|
964
|
+
|
|
965
|
+
FUNC_ADD = GL.GL_FUNC_ADD;
|
|
966
|
+
FUNC_MIN = GL2ES3.GL_MIN;
|
|
967
|
+
FUNC_MAX = GL2ES3.GL_MAX;
|
|
968
|
+
FUNC_REVERSE_SUBTRACT = GL.GL_FUNC_REVERSE_SUBTRACT;
|
|
969
|
+
FUNC_SUBTRACT = GL.GL_FUNC_SUBTRACT;
|
|
970
|
+
|
|
971
|
+
DITHER = GL.GL_DITHER;
|
|
972
|
+
|
|
973
|
+
CONSTANT_COLOR = GL2ES2.GL_CONSTANT_COLOR;
|
|
974
|
+
CONSTANT_ALPHA = GL2ES2.GL_CONSTANT_ALPHA;
|
|
975
|
+
ONE_MINUS_CONSTANT_COLOR = GL2ES2.GL_ONE_MINUS_CONSTANT_COLOR;
|
|
976
|
+
ONE_MINUS_CONSTANT_ALPHA = GL2ES2.GL_ONE_MINUS_CONSTANT_ALPHA;
|
|
977
|
+
SRC_ALPHA_SATURATE = GL.GL_SRC_ALPHA_SATURATE;
|
|
978
|
+
|
|
979
|
+
SCISSOR_TEST = GL.GL_SCISSOR_TEST;
|
|
980
|
+
STENCIL_TEST = GL.GL_STENCIL_TEST;
|
|
981
|
+
DEPTH_TEST = GL.GL_DEPTH_TEST;
|
|
982
|
+
DEPTH_WRITEMASK = GL.GL_DEPTH_WRITEMASK;
|
|
983
|
+
|
|
984
|
+
COLOR_BUFFER_BIT = GL.GL_COLOR_BUFFER_BIT;
|
|
985
|
+
DEPTH_BUFFER_BIT = GL.GL_DEPTH_BUFFER_BIT;
|
|
986
|
+
STENCIL_BUFFER_BIT = GL.GL_STENCIL_BUFFER_BIT;
|
|
987
|
+
|
|
988
|
+
FRAMEBUFFER = GL.GL_FRAMEBUFFER;
|
|
989
|
+
COLOR_ATTACHMENT0 = GL.GL_COLOR_ATTACHMENT0;
|
|
990
|
+
COLOR_ATTACHMENT1 = GL2ES2.GL_COLOR_ATTACHMENT1;
|
|
991
|
+
COLOR_ATTACHMENT2 = GL2ES2.GL_COLOR_ATTACHMENT2;
|
|
992
|
+
COLOR_ATTACHMENT3 = GL2ES2.GL_COLOR_ATTACHMENT3;
|
|
993
|
+
RENDERBUFFER = GL.GL_RENDERBUFFER;
|
|
994
|
+
DEPTH_ATTACHMENT = GL.GL_DEPTH_ATTACHMENT;
|
|
995
|
+
STENCIL_ATTACHMENT = GL.GL_STENCIL_ATTACHMENT;
|
|
996
|
+
READ_FRAMEBUFFER = GL.GL_READ_FRAMEBUFFER;
|
|
997
|
+
DRAW_FRAMEBUFFER = GL.GL_DRAW_FRAMEBUFFER;
|
|
998
|
+
|
|
999
|
+
RGBA8 = GL.GL_RGBA8;
|
|
1000
|
+
DEPTH24_STENCIL8 = GL.GL_DEPTH24_STENCIL8;
|
|
1001
|
+
|
|
1002
|
+
DEPTH_COMPONENT = GL2ES2.GL_DEPTH_COMPONENT;
|
|
1003
|
+
DEPTH_COMPONENT16 = GL.GL_DEPTH_COMPONENT16;
|
|
1004
|
+
DEPTH_COMPONENT24 = GL.GL_DEPTH_COMPONENT24;
|
|
1005
|
+
DEPTH_COMPONENT32 = GL.GL_DEPTH_COMPONENT32;
|
|
1006
|
+
|
|
1007
|
+
STENCIL_INDEX = GL2ES2.GL_STENCIL_INDEX;
|
|
1008
|
+
STENCIL_INDEX1 = GL.GL_STENCIL_INDEX1;
|
|
1009
|
+
STENCIL_INDEX4 = GL.GL_STENCIL_INDEX4;
|
|
1010
|
+
STENCIL_INDEX8 = GL.GL_STENCIL_INDEX8;
|
|
1011
|
+
|
|
1012
|
+
DEPTH_STENCIL = GL.GL_DEPTH_STENCIL;
|
|
1013
|
+
|
|
1014
|
+
FRAMEBUFFER_COMPLETE = GL.GL_FRAMEBUFFER_COMPLETE;
|
|
1015
|
+
FRAMEBUFFER_UNDEFINED = GL2ES3.GL_FRAMEBUFFER_UNDEFINED;
|
|
1016
|
+
FRAMEBUFFER_INCOMPLETE_ATTACHMENT = GL.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
|
|
1017
|
+
FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GL.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;
|
|
1018
|
+
FRAMEBUFFER_INCOMPLETE_DIMENSIONS = GL.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS;
|
|
1019
|
+
FRAMEBUFFER_INCOMPLETE_FORMATS = GL.GL_FRAMEBUFFER_INCOMPLETE_FORMATS;
|
|
1020
|
+
FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = GL2GL3.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER;
|
|
1021
|
+
FRAMEBUFFER_INCOMPLETE_READ_BUFFER = GL2GL3.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER;
|
|
1022
|
+
FRAMEBUFFER_UNSUPPORTED = GL.GL_FRAMEBUFFER_UNSUPPORTED;
|
|
1023
|
+
FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = GL.GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE;
|
|
1024
|
+
FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = GL3ES3.GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS;
|
|
1025
|
+
|
|
1026
|
+
FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = GL.GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE;
|
|
1027
|
+
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = GL.GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME;
|
|
1028
|
+
FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = GL.GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL;
|
|
1029
|
+
FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = GL.GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE;
|
|
1030
|
+
|
|
1031
|
+
RENDERBUFFER_WIDTH = GL.GL_RENDERBUFFER_WIDTH;
|
|
1032
|
+
RENDERBUFFER_HEIGHT = GL.GL_RENDERBUFFER_HEIGHT;
|
|
1033
|
+
RENDERBUFFER_RED_SIZE = GL.GL_RENDERBUFFER_RED_SIZE;
|
|
1034
|
+
RENDERBUFFER_GREEN_SIZE = GL.GL_RENDERBUFFER_GREEN_SIZE;
|
|
1035
|
+
RENDERBUFFER_BLUE_SIZE = GL.GL_RENDERBUFFER_BLUE_SIZE;
|
|
1036
|
+
RENDERBUFFER_ALPHA_SIZE = GL.GL_RENDERBUFFER_ALPHA_SIZE;
|
|
1037
|
+
RENDERBUFFER_DEPTH_SIZE = GL.GL_RENDERBUFFER_DEPTH_SIZE;
|
|
1038
|
+
RENDERBUFFER_STENCIL_SIZE = GL.GL_RENDERBUFFER_STENCIL_SIZE;
|
|
1039
|
+
RENDERBUFFER_INTERNAL_FORMAT = GL.GL_RENDERBUFFER_INTERNAL_FORMAT;
|
|
1040
|
+
|
|
1041
|
+
MULTISAMPLE = GL.GL_MULTISAMPLE;
|
|
1042
|
+
LINE_SMOOTH = GL.GL_LINE_SMOOTH;
|
|
1043
|
+
POLYGON_SMOOTH = GL2GL3.GL_POLYGON_SMOOTH;
|
|
1044
|
+
|
|
1045
|
+
SYNC_GPU_COMMANDS_COMPLETE = GL3ES3.GL_SYNC_GPU_COMMANDS_COMPLETE;
|
|
1046
|
+
ALREADY_SIGNALED = GL3ES3.GL_ALREADY_SIGNALED;
|
|
1047
|
+
CONDITION_SATISFIED = GL3ES3.GL_CONDITION_SATISFIED;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
///////////////////////////////////////////////////////////
|
|
1051
|
+
|
|
1052
|
+
// Special Functions
|
|
1053
|
+
|
|
1054
|
+
@Override
|
|
1055
|
+
public void flush() {
|
|
1056
|
+
gl.glFlush();
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
@Override
|
|
1060
|
+
public void finish() {
|
|
1061
|
+
gl.glFinish();
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
@Override
|
|
1065
|
+
public void hint(int target, int hint) {
|
|
1066
|
+
gl.glHint(target, hint);
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
///////////////////////////////////////////////////////////
|
|
1070
|
+
|
|
1071
|
+
// State and State Requests
|
|
1072
|
+
|
|
1073
|
+
@Override
|
|
1074
|
+
public void enable(int value) {
|
|
1075
|
+
if (-1 < value) {
|
|
1076
|
+
gl.glEnable(value);
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
@Override
|
|
1081
|
+
public void disable(int value) {
|
|
1082
|
+
if (-1 < value) {
|
|
1083
|
+
gl.glDisable(value);
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
@Override
|
|
1088
|
+
public void getBooleanv(int value, IntBuffer data) {
|
|
1089
|
+
if (-1 < value) {
|
|
1090
|
+
if (byteBuffer.capacity() < data.capacity()) {
|
|
1091
|
+
byteBuffer = allocateDirectByteBuffer(data.capacity());
|
|
1092
|
+
}
|
|
1093
|
+
gl.glGetBooleanv(value, byteBuffer);
|
|
1094
|
+
for (int i = 0; i < data.capacity(); i++) {
|
|
1095
|
+
data.put(i, byteBuffer.get(i));
|
|
1096
|
+
}
|
|
1097
|
+
} else {
|
|
1098
|
+
fillIntBuffer(data, 0, data.capacity() - 1, 0);
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
@Override
|
|
1103
|
+
public void getIntegerv(int value, IntBuffer data) {
|
|
1104
|
+
if (-1 < value) {
|
|
1105
|
+
gl.glGetIntegerv(value, data);
|
|
1106
|
+
} else {
|
|
1107
|
+
fillIntBuffer(data, 0, data.capacity() - 1, 0);
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
@Override
|
|
1112
|
+
public void getFloatv(int value, FloatBuffer data) {
|
|
1113
|
+
if (-1 < value) {
|
|
1114
|
+
gl.glGetFloatv(value, data);
|
|
1115
|
+
} else {
|
|
1116
|
+
fillFloatBuffer(data, 0, data.capacity() - 1, 0);
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
@Override
|
|
1121
|
+
public boolean isEnabled(int value) {
|
|
1122
|
+
return gl.glIsEnabled(value);
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
@Override
|
|
1126
|
+
public String getString(int name) {
|
|
1127
|
+
if (gl == null) {
|
|
1128
|
+
throw new PGL.GraphicsNotInitializedException("Context not initalized.");
|
|
1129
|
+
}
|
|
1130
|
+
return gl.glGetString(name);
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
///////////////////////////////////////////////////////////
|
|
1134
|
+
|
|
1135
|
+
// Error Handling
|
|
1136
|
+
|
|
1137
|
+
@Override
|
|
1138
|
+
public int getError() {
|
|
1139
|
+
return gl.glGetError();
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
@Override
|
|
1143
|
+
public String errorString(int err) {
|
|
1144
|
+
return glu.gluErrorString(err);
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1148
|
+
|
|
1149
|
+
// Buffer Objects
|
|
1150
|
+
|
|
1151
|
+
@Override
|
|
1152
|
+
public void genBuffers(int n, IntBuffer buffers) {
|
|
1153
|
+
gl.glGenBuffers(n, buffers);
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
@Override
|
|
1157
|
+
public void deleteBuffers(int n, IntBuffer buffers) {
|
|
1158
|
+
gl.glDeleteBuffers(n, buffers);
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
@Override
|
|
1162
|
+
public void bindBuffer(int target, int buffer) {
|
|
1163
|
+
gl.glBindBuffer(target, buffer);
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
@Override
|
|
1167
|
+
public void bufferData(int target, int size, Buffer data, int usage) {
|
|
1168
|
+
gl.glBufferData(target, size, data, usage);
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
@Override
|
|
1172
|
+
public void bufferSubData(int target, int offset, int size, Buffer data) {
|
|
1173
|
+
gl.glBufferSubData(target, offset, size, data);
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
@Override
|
|
1177
|
+
public void isBuffer(int buffer) {
|
|
1178
|
+
gl.glIsBuffer(buffer);
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
@Override
|
|
1182
|
+
public void getBufferParameteriv(int target, int value, IntBuffer data) {
|
|
1183
|
+
gl.glGetBufferParameteriv(target, value, data);
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
@Override
|
|
1187
|
+
public ByteBuffer mapBuffer(int target, int access) {
|
|
1188
|
+
return gl2.glMapBuffer(target, access);
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
@Override
|
|
1192
|
+
public ByteBuffer mapBufferRange(int target, int offset, int length, int access) {
|
|
1193
|
+
if (gl2x != null) {
|
|
1194
|
+
return gl2x.glMapBufferRange(target, offset, length, access);
|
|
1195
|
+
} else if (gl3 != null) {
|
|
1196
|
+
return gl3.glMapBufferRange(target, offset, length, access);
|
|
1197
|
+
} else {
|
|
1198
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glMapBufferRange()"));
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
@Override
|
|
1203
|
+
public void unmapBuffer(int target) {
|
|
1204
|
+
gl2.glUnmapBuffer(target);
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1208
|
+
|
|
1209
|
+
// Synchronization
|
|
1210
|
+
|
|
1211
|
+
@Override
|
|
1212
|
+
public long fenceSync(int condition, int flags) {
|
|
1213
|
+
if (gl3es3 != null) {
|
|
1214
|
+
return gl3es3.glFenceSync(condition, flags);
|
|
1215
|
+
} else {
|
|
1216
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "fenceSync()"));
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
@Override
|
|
1221
|
+
public void deleteSync(long sync) {
|
|
1222
|
+
if (gl3es3 != null) {
|
|
1223
|
+
gl3es3.glDeleteSync(sync);
|
|
1224
|
+
} else {
|
|
1225
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "deleteSync()"));
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
@Override
|
|
1230
|
+
public int clientWaitSync(long sync, int flags, long timeout) {
|
|
1231
|
+
if (gl3es3 != null) {
|
|
1232
|
+
return gl3es3.glClientWaitSync(sync, flags, timeout);
|
|
1233
|
+
} else {
|
|
1234
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "clientWaitSync()"));
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1239
|
+
|
|
1240
|
+
// Viewport and Clipping
|
|
1241
|
+
|
|
1242
|
+
@Override
|
|
1243
|
+
public void depthRangef(float n, float f) {
|
|
1244
|
+
gl.glDepthRangef(n, f);
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
@Override
|
|
1248
|
+
public void viewport(int x, int y, int w, int h) {
|
|
1249
|
+
float scale = getPixelScale();
|
|
1250
|
+
viewportImpl((int)scale * x, (int)(scale * y), (int)(scale * w), (int)(scale * h));
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
@Override
|
|
1254
|
+
protected void viewportImpl(int x, int y, int w, int h) {
|
|
1255
|
+
gl.glViewport(x, y, w, h);
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1259
|
+
|
|
1260
|
+
// Reading Pixels
|
|
1261
|
+
|
|
1262
|
+
@Override
|
|
1263
|
+
protected void readPixelsImpl(int x, int y, int width, int height, int format, int type, Buffer buffer) {
|
|
1264
|
+
gl.glReadPixels(x, y, width, height, format, type, buffer);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
@Override
|
|
1268
|
+
protected void readPixelsImpl(int x, int y, int width, int height, int format, int type, long offset) {
|
|
1269
|
+
gl.glReadPixels(x, y, width, height, format, type, 0);
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1273
|
+
|
|
1274
|
+
// Vertices
|
|
1275
|
+
|
|
1276
|
+
@Override
|
|
1277
|
+
public void vertexAttrib1f(int index, float value) {
|
|
1278
|
+
gl2.glVertexAttrib1f(index, value);
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
@Override
|
|
1282
|
+
public void vertexAttrib2f(int index, float value0, float value1) {
|
|
1283
|
+
gl2.glVertexAttrib2f(index, value0, value1);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
@Override
|
|
1287
|
+
public void vertexAttrib3f(int index, float value0, float value1, float value2) {
|
|
1288
|
+
gl2.glVertexAttrib3f(index, value0, value1, value2);
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
@Override
|
|
1292
|
+
public void vertexAttrib4f(int index, float value0, float value1, float value2, float value3) {
|
|
1293
|
+
gl2.glVertexAttrib4f(index, value0, value1, value2, value3);
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
@Override
|
|
1297
|
+
public void vertexAttrib1fv(int index, FloatBuffer values) {
|
|
1298
|
+
gl2.glVertexAttrib1fv(index, values);
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
@Override
|
|
1302
|
+
public void vertexAttrib2fv(int index, FloatBuffer values) {
|
|
1303
|
+
gl2.glVertexAttrib2fv(index, values);
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
@Override
|
|
1307
|
+
public void vertexAttrib3fv(int index, FloatBuffer values) {
|
|
1308
|
+
gl2.glVertexAttrib3fv(index, values);
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
@Override
|
|
1312
|
+
public void vertexAttrib4fv(int index, FloatBuffer values) {
|
|
1313
|
+
gl2.glVertexAttrib4fv(index, values);
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
@Override
|
|
1317
|
+
public void vertexAttribPointer(int index, int size, int type, boolean normalized, int stride, int offset) {
|
|
1318
|
+
gl2.glVertexAttribPointer(index, size, type, normalized, stride, offset);
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
@Override
|
|
1322
|
+
public void enableVertexAttribArray(int index) {
|
|
1323
|
+
gl2.glEnableVertexAttribArray(index);
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
@Override
|
|
1327
|
+
public void disableVertexAttribArray(int index) {
|
|
1328
|
+
gl2.glDisableVertexAttribArray(index);
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
@Override
|
|
1332
|
+
public void drawArraysImpl(int mode, int first, int count) {
|
|
1333
|
+
gl.glDrawArrays(mode, first, count);
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
@Override
|
|
1337
|
+
public void drawElementsImpl(int mode, int count, int type, int offset) {
|
|
1338
|
+
gl.glDrawElements(mode, count, type, offset);
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1342
|
+
|
|
1343
|
+
// Rasterization
|
|
1344
|
+
|
|
1345
|
+
@Override
|
|
1346
|
+
public void lineWidth(float width) {
|
|
1347
|
+
gl.glLineWidth(width);
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
@Override
|
|
1351
|
+
public void frontFace(int dir) {
|
|
1352
|
+
gl.glFrontFace(dir);
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
@Override
|
|
1356
|
+
public void cullFace(int mode) {
|
|
1357
|
+
gl.glCullFace(mode);
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
@Override
|
|
1361
|
+
public void polygonOffset(float factor, float units) {
|
|
1362
|
+
gl.glPolygonOffset(factor, units);
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1366
|
+
|
|
1367
|
+
// Pixel Rectangles
|
|
1368
|
+
|
|
1369
|
+
@Override
|
|
1370
|
+
public void pixelStorei(int pname, int param) {
|
|
1371
|
+
gl.glPixelStorei(pname, param);
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
///////////////////////////////////////////////////////////
|
|
1375
|
+
|
|
1376
|
+
// Texturing
|
|
1377
|
+
|
|
1378
|
+
@Override
|
|
1379
|
+
public void texImage2D(int target, int level, int internalFormat, int width, int height, int border, int format, int type, Buffer data) {
|
|
1380
|
+
gl.glTexImage2D(target, level, internalFormat, width, height, border, format, type, data);
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
@Override
|
|
1384
|
+
public void copyTexImage2D(int target, int level, int internalFormat, int x, int y, int width, int height, int border) {
|
|
1385
|
+
gl.glCopyTexImage2D(target, level, internalFormat, x, y, width, height, border);
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
@Override
|
|
1389
|
+
public void texSubImage2D(int target, int level, int xOffset, int yOffset, int width, int height, int format, int type, Buffer data) {
|
|
1390
|
+
gl.glTexSubImage2D(target, level, xOffset, yOffset, width, height, format, type, data);
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
@Override
|
|
1394
|
+
public void copyTexSubImage2D(int target, int level, int xOffset, int yOffset, int x, int y, int width, int height) {
|
|
1395
|
+
gl.glCopyTexSubImage2D(target, level, x, y, xOffset, yOffset, width, height);
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
@Override
|
|
1399
|
+
public void compressedTexImage2D(int target, int level, int internalFormat, int width, int height, int border, int imageSize, Buffer data) {
|
|
1400
|
+
gl.glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data);
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
@Override
|
|
1404
|
+
public void compressedTexSubImage2D(int target, int level, int xOffset, int yOffset, int width, int height, int format, int imageSize, Buffer data) {
|
|
1405
|
+
gl.glCompressedTexSubImage2D(target, level, xOffset, yOffset, width, height, format, imageSize, data);
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
@Override
|
|
1409
|
+
public void texParameteri(int target, int pname, int param) {
|
|
1410
|
+
gl.glTexParameteri(target, pname, param);
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
@Override
|
|
1414
|
+
public void texParameterf(int target, int pname, float param) {
|
|
1415
|
+
gl.glTexParameterf(target, pname, param);
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
@Override
|
|
1419
|
+
public void texParameteriv(int target, int pname, IntBuffer params) {
|
|
1420
|
+
gl.glTexParameteriv(target, pname, params);
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
@Override
|
|
1424
|
+
public void texParameterfv(int target, int pname, FloatBuffer params) {
|
|
1425
|
+
gl.glTexParameterfv(target, pname, params);
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
@Override
|
|
1429
|
+
public void generateMipmap(int target) {
|
|
1430
|
+
gl.glGenerateMipmap(target);
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
@Override
|
|
1434
|
+
public void genTextures(int n, IntBuffer textures) {
|
|
1435
|
+
gl.glGenTextures(n, textures);
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
@Override
|
|
1439
|
+
public void deleteTextures(int n, IntBuffer textures) {
|
|
1440
|
+
gl.glDeleteTextures(n, textures);
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
@Override
|
|
1444
|
+
public void getTexParameteriv(int target, int pname, IntBuffer params) {
|
|
1445
|
+
gl.glGetTexParameteriv(target, pname, params);
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
@Override
|
|
1449
|
+
public void getTexParameterfv(int target, int pname, FloatBuffer params) {
|
|
1450
|
+
gl.glGetTexParameterfv(target, pname, params);
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
@Override
|
|
1454
|
+
public boolean isTexture(int texture) {
|
|
1455
|
+
return gl.glIsTexture(texture);
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
@Override
|
|
1459
|
+
protected void activeTextureImpl(int texture) {
|
|
1460
|
+
gl.glActiveTexture(texture);
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
@Override
|
|
1464
|
+
protected void bindTextureImpl(int target, int texture) {
|
|
1465
|
+
gl.glBindTexture(target, texture);
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
///////////////////////////////////////////////////////////
|
|
1469
|
+
|
|
1470
|
+
// Shaders and Programs
|
|
1471
|
+
|
|
1472
|
+
@Override
|
|
1473
|
+
public int createShader(int type) {
|
|
1474
|
+
return gl2.glCreateShader(type);
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
@Override
|
|
1478
|
+
public void shaderSource(int shader, String source) {
|
|
1479
|
+
gl2.glShaderSource(shader, 1, new String[] { source }, null, 0);
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
@Override
|
|
1483
|
+
public void compileShader(int shader) {
|
|
1484
|
+
gl2.glCompileShader(shader);
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
@Override
|
|
1488
|
+
public void releaseShaderCompiler() {
|
|
1489
|
+
gl2.glReleaseShaderCompiler();
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
@Override
|
|
1493
|
+
public void deleteShader(int shader) {
|
|
1494
|
+
gl2.glDeleteShader(shader);
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1497
|
+
@Override
|
|
1498
|
+
public void shaderBinary(int count, IntBuffer shaders, int binaryFormat, Buffer binary, int length) {
|
|
1499
|
+
gl2.glShaderBinary(count, shaders, binaryFormat, binary, length);
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
@Override
|
|
1503
|
+
public int createProgram() {
|
|
1504
|
+
return gl2.glCreateProgram();
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
@Override
|
|
1508
|
+
public void attachShader(int program, int shader) {
|
|
1509
|
+
gl2.glAttachShader(program, shader);
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
@Override
|
|
1513
|
+
public void detachShader(int program, int shader) {
|
|
1514
|
+
gl2.glDetachShader(program, shader);
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
@Override
|
|
1518
|
+
public void linkProgram(int program) {
|
|
1519
|
+
gl2.glLinkProgram(program);
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
@Override
|
|
1523
|
+
public void useProgram(int program) {
|
|
1524
|
+
gl2.glUseProgram(program);
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
@Override
|
|
1528
|
+
public void deleteProgram(int program) {
|
|
1529
|
+
gl2.glDeleteProgram(program);
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
@Override
|
|
1533
|
+
public String getActiveAttrib(int program, int index, IntBuffer size, IntBuffer type) {
|
|
1534
|
+
int[] tmp = {0, 0, 0};
|
|
1535
|
+
byte[] namebuf = new byte[1024];
|
|
1536
|
+
gl2.glGetActiveAttrib(program, index, 1024, tmp, 0, tmp, 1, tmp, 2, namebuf, 0);
|
|
1537
|
+
size.put(tmp[1]);
|
|
1538
|
+
type.put(tmp[2]);
|
|
1539
|
+
String name = new String(namebuf, 0, tmp[0]);
|
|
1540
|
+
return name;
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
@Override
|
|
1544
|
+
public int getAttribLocation(int program, String name) {
|
|
1545
|
+
return gl2.glGetAttribLocation(program, name);
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
@Override
|
|
1549
|
+
public void bindAttribLocation(int program, int index, String name) {
|
|
1550
|
+
gl2.glBindAttribLocation(program, index, name);
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
@Override
|
|
1554
|
+
public int getUniformLocation(int program, String name) {
|
|
1555
|
+
return gl2.glGetUniformLocation(program, name);
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
@Override
|
|
1559
|
+
public String getActiveUniform(int program, int index, IntBuffer size, IntBuffer type) {
|
|
1560
|
+
int[] tmp= {0, 0, 0};
|
|
1561
|
+
byte[] namebuf = new byte[1024];
|
|
1562
|
+
gl2.glGetActiveUniform(program, index, 1024, tmp, 0, tmp, 1, tmp, 2, namebuf, 0);
|
|
1563
|
+
size.put(tmp[1]);
|
|
1564
|
+
type.put(tmp[2]);
|
|
1565
|
+
String name = new String(namebuf, 0, tmp[0]);
|
|
1566
|
+
return name;
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
@Override
|
|
1570
|
+
public void uniform1i(int location, int value) {
|
|
1571
|
+
gl2.glUniform1i(location, value);
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
@Override
|
|
1575
|
+
public void uniform2i(int location, int value0, int value1) {
|
|
1576
|
+
gl2.glUniform2i(location, value0, value1);
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
@Override
|
|
1580
|
+
public void uniform3i(int location, int value0, int value1, int value2) {
|
|
1581
|
+
gl2.glUniform3i(location, value0, value1, value2);
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
@Override
|
|
1585
|
+
public void uniform4i(int location, int value0, int value1, int value2, int value3) {
|
|
1586
|
+
gl2.glUniform4i(location, value0, value1, value2, value3);
|
|
1587
|
+
}
|
|
1588
|
+
|
|
1589
|
+
@Override
|
|
1590
|
+
public void uniform1f(int location, float value) {
|
|
1591
|
+
gl2.glUniform1f(location, value);
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
@Override
|
|
1595
|
+
public void uniform2f(int location, float value0, float value1) {
|
|
1596
|
+
gl2.glUniform2f(location, value0, value1);
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
@Override
|
|
1600
|
+
public void uniform3f(int location, float value0, float value1, float value2) {
|
|
1601
|
+
gl2.glUniform3f(location, value0, value1, value2);
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
@Override
|
|
1605
|
+
public void uniform4f(int location, float value0, float value1, float value2, float value3) {
|
|
1606
|
+
gl2.glUniform4f(location, value0, value1, value2, value3);
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
@Override
|
|
1610
|
+
public void uniform1iv(int location, int count, IntBuffer v) {
|
|
1611
|
+
gl2.glUniform1iv(location, count, v);
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
@Override
|
|
1615
|
+
public void uniform2iv(int location, int count, IntBuffer v) {
|
|
1616
|
+
gl2.glUniform2iv(location, count, v);
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
@Override
|
|
1620
|
+
public void uniform3iv(int location, int count, IntBuffer v) {
|
|
1621
|
+
gl2.glUniform3iv(location, count, v);
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
@Override
|
|
1625
|
+
public void uniform4iv(int location, int count, IntBuffer v) {
|
|
1626
|
+
gl2.glUniform4iv(location, count, v);
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
@Override
|
|
1630
|
+
public void uniform1fv(int location, int count, FloatBuffer v) {
|
|
1631
|
+
gl2.glUniform1fv(location, count, v);
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
@Override
|
|
1635
|
+
public void uniform2fv(int location, int count, FloatBuffer v) {
|
|
1636
|
+
gl2.glUniform2fv(location, count, v);
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
@Override
|
|
1640
|
+
public void uniform3fv(int location, int count, FloatBuffer v) {
|
|
1641
|
+
gl2.glUniform3fv(location, count, v);
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
@Override
|
|
1645
|
+
public void uniform4fv(int location, int count, FloatBuffer v) {
|
|
1646
|
+
gl2.glUniform4fv(location, count, v);
|
|
1647
|
+
}
|
|
1648
|
+
|
|
1649
|
+
@Override
|
|
1650
|
+
public void uniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer mat) {
|
|
1651
|
+
gl2.glUniformMatrix2fv(location, count, transpose, mat);
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
@Override
|
|
1655
|
+
public void uniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer mat) {
|
|
1656
|
+
gl2.glUniformMatrix3fv(location, count, transpose, mat);
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1659
|
+
@Override
|
|
1660
|
+
public void uniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer mat) {
|
|
1661
|
+
gl2.glUniformMatrix4fv(location, count, transpose, mat);
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
@Override
|
|
1665
|
+
public void validateProgram(int program) {
|
|
1666
|
+
gl2.glValidateProgram(program);
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
@Override
|
|
1670
|
+
public boolean isShader(int shader) {
|
|
1671
|
+
return gl2.glIsShader(shader);
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
@Override
|
|
1675
|
+
public void getShaderiv(int shader, int pname, IntBuffer params) {
|
|
1676
|
+
gl2.glGetShaderiv(shader, pname, params);
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
@Override
|
|
1680
|
+
public void getAttachedShaders(int program, int maxCount, IntBuffer count, IntBuffer shaders) {
|
|
1681
|
+
gl2.glGetAttachedShaders(program, maxCount, count, shaders);
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
@Override
|
|
1685
|
+
public String getShaderInfoLog(int shader) {
|
|
1686
|
+
int[] val = { 0 };
|
|
1687
|
+
gl2.glGetShaderiv(shader, GL2ES2.GL_INFO_LOG_LENGTH, val, 0);
|
|
1688
|
+
int length = val[0];
|
|
1689
|
+
|
|
1690
|
+
byte[] log = new byte[length];
|
|
1691
|
+
gl2.glGetShaderInfoLog(shader, length, val, 0, log, 0);
|
|
1692
|
+
return new String(log);
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
@Override
|
|
1696
|
+
public String getShaderSource(int shader) {
|
|
1697
|
+
int[] len = {0};
|
|
1698
|
+
byte[] buf = new byte[1024];
|
|
1699
|
+
gl2.glGetShaderSource(shader, 1024, len, 0, buf, 0);
|
|
1700
|
+
return new String(buf, 0, len[0]);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
@Override
|
|
1704
|
+
public void getShaderPrecisionFormat(int shaderType, int precisionType, IntBuffer range, IntBuffer precision) {
|
|
1705
|
+
gl2.glGetShaderPrecisionFormat(shaderType, precisionType, range, precision);
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
@Override
|
|
1709
|
+
public void getVertexAttribfv(int index, int pname, FloatBuffer params) {
|
|
1710
|
+
gl2.glGetVertexAttribfv(index, pname, params);
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
@Override
|
|
1714
|
+
public void getVertexAttribiv(int index, int pname, IntBuffer params) {
|
|
1715
|
+
gl2.glGetVertexAttribiv(index, pname, params);
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
@Override
|
|
1719
|
+
public void getVertexAttribPointerv(int index, int pname, ByteBuffer data) {
|
|
1720
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glGetVertexAttribPointerv()"));
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
@Override
|
|
1724
|
+
public void getUniformfv(int program, int location, FloatBuffer params) {
|
|
1725
|
+
gl2.glGetUniformfv(program, location, params);
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1728
|
+
@Override
|
|
1729
|
+
public void getUniformiv(int program, int location, IntBuffer params) {
|
|
1730
|
+
gl2.glGetUniformiv(program, location, params);
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
@Override
|
|
1734
|
+
public boolean isProgram(int program) {
|
|
1735
|
+
return gl2.glIsProgram(program);
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
@Override
|
|
1739
|
+
public void getProgramiv(int program, int pname, IntBuffer params) {
|
|
1740
|
+
gl2.glGetProgramiv(program, pname, params);
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
@Override
|
|
1744
|
+
public String getProgramInfoLog(int program) {
|
|
1745
|
+
int[] val = { 0 };
|
|
1746
|
+
gl2.glGetProgramiv(program, GL2ES2.GL_INFO_LOG_LENGTH, val, 0);
|
|
1747
|
+
int length = val[0];
|
|
1748
|
+
|
|
1749
|
+
if (0 < length) {
|
|
1750
|
+
byte[] log = new byte[length];
|
|
1751
|
+
gl2.glGetProgramInfoLog(program, length, val, 0, log, 0);
|
|
1752
|
+
return new String(log);
|
|
1753
|
+
} else {
|
|
1754
|
+
return "Unknown error";
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1758
|
+
///////////////////////////////////////////////////////////
|
|
1759
|
+
|
|
1760
|
+
// Per-Fragment Operations
|
|
1761
|
+
|
|
1762
|
+
@Override
|
|
1763
|
+
public void scissor(int x, int y, int w, int h) {
|
|
1764
|
+
float scale = getPixelScale();
|
|
1765
|
+
gl.glScissor((int)scale * x, (int)(scale * y), (int)(scale * w), (int)(scale * h));
|
|
1699
1766
|
// gl.glScissor(x, y, w, h);
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1769
|
+
@Override
|
|
1770
|
+
public void sampleCoverage(float value, boolean invert) {
|
|
1771
|
+
gl2.glSampleCoverage(value, invert);
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
@Override
|
|
1775
|
+
public void stencilFunc(int func, int ref, int mask) {
|
|
1776
|
+
gl2.glStencilFunc(func, ref, mask);
|
|
1777
|
+
}
|
|
1778
|
+
|
|
1779
|
+
@Override
|
|
1780
|
+
public void stencilFuncSeparate(int face, int func, int ref, int mask) {
|
|
1781
|
+
gl2.glStencilFuncSeparate(face, func, ref, mask);
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1784
|
+
@Override
|
|
1785
|
+
public void stencilOp(int sfail, int dpfail, int dppass) {
|
|
1786
|
+
gl2.glStencilOp(sfail, dpfail, dppass);
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
@Override
|
|
1790
|
+
public void stencilOpSeparate(int face, int sfail, int dpfail, int dppass) {
|
|
1791
|
+
gl2.glStencilOpSeparate(face, sfail, dpfail, dppass);
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
@Override
|
|
1795
|
+
public void depthFunc(int func) {
|
|
1796
|
+
gl.glDepthFunc(func);
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1799
|
+
@Override
|
|
1800
|
+
public void blendEquation(int mode) {
|
|
1801
|
+
gl.glBlendEquation(mode);
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
@Override
|
|
1805
|
+
public void blendEquationSeparate(int modeRGB, int modeAlpha) {
|
|
1806
|
+
gl.glBlendEquationSeparate(modeRGB, modeAlpha);
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
@Override
|
|
1810
|
+
public void blendFunc(int src, int dst) {
|
|
1811
|
+
gl.glBlendFunc(src, dst);
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
@Override
|
|
1815
|
+
public void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) {
|
|
1816
|
+
gl.glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1819
|
+
@Override
|
|
1820
|
+
public void blendColor(float red, float green, float blue, float alpha) {
|
|
1821
|
+
gl2.glBlendColor(red, green, blue, alpha);
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1824
|
+
///////////////////////////////////////////////////////////
|
|
1825
|
+
|
|
1826
|
+
// Whole Framebuffer Operations
|
|
1827
|
+
|
|
1828
|
+
@Override
|
|
1829
|
+
public void colorMask(boolean r, boolean g, boolean b, boolean a) {
|
|
1830
|
+
gl.glColorMask(r, g, b, a);
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
@Override
|
|
1834
|
+
public void depthMask(boolean mask) {
|
|
1835
|
+
gl.glDepthMask(mask);
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
@Override
|
|
1839
|
+
public void stencilMask(int mask) {
|
|
1840
|
+
gl.glStencilMask(mask);
|
|
1841
|
+
}
|
|
1842
|
+
|
|
1843
|
+
@Override
|
|
1844
|
+
public void stencilMaskSeparate(int face, int mask) {
|
|
1845
|
+
gl2.glStencilMaskSeparate(face, mask);
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
@Override
|
|
1849
|
+
public void clearColor(float r, float g, float b, float a) {
|
|
1850
|
+
gl.glClearColor(r, g, b, a);
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
@Override
|
|
1854
|
+
public void clearDepth(float d) {
|
|
1855
|
+
gl.glClearDepth(d);
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
@Override
|
|
1859
|
+
public void clearStencil(int s) {
|
|
1860
|
+
gl.glClearStencil(s);
|
|
1861
|
+
}
|
|
1862
|
+
|
|
1863
|
+
@Override
|
|
1864
|
+
public void clear(int buf) {
|
|
1865
|
+
gl.glClear(buf);
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
///////////////////////////////////////////////////////////
|
|
1869
|
+
|
|
1870
|
+
// Framebuffers Objects
|
|
1871
|
+
|
|
1872
|
+
@Override
|
|
1873
|
+
protected void bindFramebufferImpl(int target, int framebuffer) {
|
|
1874
|
+
gl.glBindFramebuffer(target, framebuffer);
|
|
1875
|
+
}
|
|
1876
|
+
|
|
1877
|
+
@Override
|
|
1878
|
+
public void deleteFramebuffers(int n, IntBuffer framebuffers) {
|
|
1879
|
+
gl.glDeleteFramebuffers(n, framebuffers);
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
@Override
|
|
1883
|
+
public void genFramebuffers(int n, IntBuffer framebuffers) {
|
|
1884
|
+
gl.glGenFramebuffers(n, framebuffers);
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1887
|
+
@Override
|
|
1888
|
+
public void bindRenderbuffer(int target, int renderbuffer) {
|
|
1889
|
+
gl.glBindRenderbuffer(target, renderbuffer);
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
@Override
|
|
1893
|
+
public void deleteRenderbuffers(int n, IntBuffer renderbuffers) {
|
|
1894
|
+
gl.glDeleteRenderbuffers(n, renderbuffers);
|
|
1895
|
+
}
|
|
1896
|
+
|
|
1897
|
+
@Override
|
|
1898
|
+
public void genRenderbuffers(int n, IntBuffer renderbuffers) {
|
|
1899
|
+
gl.glGenRenderbuffers(n, renderbuffers);
|
|
1900
|
+
}
|
|
1901
|
+
|
|
1902
|
+
@Override
|
|
1903
|
+
public void renderbufferStorage(int target, int internalFormat, int width, int height) {
|
|
1904
|
+
gl.glRenderbufferStorage(target, internalFormat, width, height);
|
|
1905
|
+
}
|
|
1906
|
+
|
|
1907
|
+
@Override
|
|
1908
|
+
public void framebufferRenderbuffer(int target, int attachment, int rendbuferfTarget, int renderbuffer) {
|
|
1909
|
+
gl.glFramebufferRenderbuffer(target, attachment, rendbuferfTarget, renderbuffer);
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1912
|
+
@Override
|
|
1913
|
+
public void framebufferTexture2D(int target, int attachment, int texTarget, int texture, int level) {
|
|
1914
|
+
gl.glFramebufferTexture2D(target, attachment, texTarget, texture, level);
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
@Override
|
|
1918
|
+
public int checkFramebufferStatus(int target) {
|
|
1919
|
+
return gl.glCheckFramebufferStatus(target);
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
@Override
|
|
1923
|
+
public boolean isFramebuffer(int framebuffer) {
|
|
1924
|
+
return gl2.glIsFramebuffer(framebuffer);
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
@Override
|
|
1928
|
+
public void getFramebufferAttachmentParameteriv(int target, int attachment, int pname, IntBuffer params) {
|
|
1929
|
+
gl2.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
@Override
|
|
1933
|
+
public boolean isRenderbuffer(int renderbuffer) {
|
|
1934
|
+
return gl2.glIsRenderbuffer(renderbuffer);
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
@Override
|
|
1938
|
+
public void getRenderbufferParameteriv(int target, int pname, IntBuffer params) {
|
|
1939
|
+
gl2.glGetRenderbufferParameteriv(target, pname, params);
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
@Override
|
|
1943
|
+
public void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter) {
|
|
1944
|
+
if (gl2x != null) {
|
|
1945
|
+
gl2x.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
|
1946
|
+
} else if (gl3 != null) {
|
|
1947
|
+
gl3.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
|
1948
|
+
} else if (gl3es3 != null) {
|
|
1949
|
+
gl3es3.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
|
1950
|
+
} else {
|
|
1951
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glBlitFramebuffer()"));
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
@Override
|
|
1956
|
+
public void renderbufferStorageMultisample(int target, int samples, int format, int width, int height) {
|
|
1957
|
+
if (gl2x != null) {
|
|
1958
|
+
gl2x.glRenderbufferStorageMultisample(target, samples, format, width, height);
|
|
1959
|
+
} else if (gl3 != null) {
|
|
1960
|
+
gl3.glRenderbufferStorageMultisample(target, samples, format, width, height);
|
|
1961
|
+
} else if (gl3es3 != null) {
|
|
1962
|
+
gl3es3.glRenderbufferStorageMultisample(target, samples, format, width, height);
|
|
1963
|
+
} else {
|
|
1964
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glRenderbufferStorageMultisample()"));
|
|
1965
|
+
}
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
@Override
|
|
1969
|
+
public void readBuffer(int buf) {
|
|
1970
|
+
if (gl2x != null) {
|
|
1971
|
+
gl2x.glReadBuffer(buf);
|
|
1972
|
+
} else if (gl3 != null) {
|
|
1973
|
+
gl3.glReadBuffer(buf);
|
|
1974
|
+
} else if (gl3es3 != null) {
|
|
1975
|
+
gl3es3.glReadBuffer(buf);
|
|
1976
|
+
} else {
|
|
1977
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glReadBuffer()"));
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
@Override
|
|
1982
|
+
public void drawBuffer(int buf) {
|
|
1983
|
+
if (gl2x != null) {
|
|
1984
|
+
gl2x.glDrawBuffer(buf);
|
|
1985
|
+
} else if (gl3 != null) {
|
|
1986
|
+
gl3.glDrawBuffer(buf);
|
|
1987
|
+
} else if (gl3es3 != null) {
|
|
1988
|
+
IntBuffer intBuffer = IntBuffer.allocate(1);
|
|
1989
|
+
intBuffer.put(buf);
|
|
1990
|
+
intBuffer.rewind();
|
|
1991
|
+
gl3es3.glDrawBuffers(1, intBuffer);
|
|
1992
|
+
} else {
|
|
1993
|
+
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glDrawBuffer()"));
|
|
1994
|
+
}
|
|
1995
|
+
}
|
|
1925
1996
|
}
|