-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathGL.java
More file actions
executable file
·254 lines (237 loc) · 10.4 KB
/
Copy pathGL.java
File metadata and controls
executable file
·254 lines (237 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
package javaforce.gl;
import javaforce.*;
import javaforce.ffm.*;
/**
* OpenGL API.
*
* @author pquiring
*
* Created : Sept 16, 2013
*
* Notes:
* - only supports OpenGL 2.0 or better (1.x not supported)
* - targeting OpenGL 3.3 API
* - only call GL functions from the EDT (event dispatching thread)
* - Supports Windows, Linux and MacOS
*/
@NativeLibrary("GL")
public interface GL {
/** Returns OpenGL functions.
*
* Windows : must call only when a valid OpenGL Context is set
* Linux : not sure?
* Mac : Call anytime.
*
*/
public static GL getInstance() {
return GLFFM.getInstance();
}
public static final boolean debug = false; //enable to see lots of debug info
//GL constants
public static final int GL_VERSION = 0x1F02;
public static final int GL_MAX_TEXTURE_SIZE = 0x0D33;
public static final int GL_MAX_VERTEX_ATTRIBS = 0x8869;
public static final int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A;
public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
public static final int GL_CW = 0x900;
public static final int GL_CCW = 0x0901;
public static final int GL_CULL_FACE = 0x0b44;
public static final int GL_BLEND = 0x0be2;
public static final int GL_DEPTH_TEST = 0x0b71;
public static final int GL_NEVER = 0x0200;
public static final int GL_LESS = 0x0201;
public static final int GL_EQUAL = 0x0202;
public static final int GL_LEQUAL = 0x0203;
public static final int GL_GREATER = 0x0204;
public static final int GL_NOTEQUAL = 0x0205;
public static final int GL_GEQUAL = 0x0206;
public static final int GL_ALWAYS = 0x0207;
public static final int GL_SRC_COLOR = 0x0300;
public static final int GL_ONE_MINUS_SRC_COLOR = 0x0301;
public static final int GL_SRC_ALPHA = 0x0302;
public static final int GL_ONE_MINUS_SRC_ALPHA = 0x0303;
public static final int GL_DST_ALPHA = 0x0304;
public static final int GL_ONE_MINUS_DST_ALPHA = 0x0305;
public static final int GL_DST_COLOR = 0x0306;
public static final int GL_ONE_MINUS_DST_COLOR = 0x0307;
public static final int GL_SRC_ALPHA_SATURATE = 0x0308;
public static final int GL_UNPACK_ALIGNMENT = 0x0cf5;
public static final int GL_TEXTURE_2D = 0x0de1;
public static final int GL_TEXTURE_WRAP_S = 0x2802;
public static final int GL_TEXTURE_WRAP_T = 0x2803;
public static final int GL_REPEAT = 0x2901;
public static final int GL_TEXTURE_MAG_FILTER = 0x2800;
public static final int GL_TEXTURE_MIN_FILTER = 0x2801;
public static final int GL_NEAREST_MIPMAP_NEAREST = 0x2700;
public static final int GL_NEAREST = 0x2600;
public static final int GL_TEXTURE_ENV = 0x2300;
public static final int GL_TEXTURE_ENV_MODE = 0x2200;
public static final int GL_MODULATE = 0x2100;
public static final int GL_RGBA = 0x1908;
public static final int GL_BGRA = 0x80e1;
public static final int GL_RGBA8 = 0x8058;
public static final int GL_COLOR_BUFFER_BIT = 0x4000;
public static final int GL_DEPTH_BUFFER_BIT= 0x0100;
public static final int GL_STENCIL_BUFFER_BIT = 0x0400;
public static final int GL_STENCIL_TEST = 0x0B90;
public static final int GL_STENCIL_CLEAR_VALUE = 0x0B91;
public static final int GL_STENCIL_FUNC = 0x0B92;
public static final int GL_STENCIL_VALUE_MASK = 0x0B93;
public static final int GL_STENCIL_FAIL = 0x0B94;
public static final int GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95;
public static final int GL_STENCIL_PASS_DEPTH_PASS = 0x0B96;
public static final int GL_STENCIL_REF = 0x0B97;
public static final int GL_STENCIL_WRITEMASK = 0x0B98;
public static final int GL_ALPHA_TEST = 0x0BC0;
public static final int GL_ARRAY_BUFFER = 0x8892;
public static final int GL_STATIC_DRAW = 0x88e4;
public static final int GL_STREAM_DRAW = 0x88e0;
public static final int GL_ELEMENT_ARRAY_BUFFER = 0x8893;
public static final int GL_FLOAT = 0x1406;
public static final int GL_FALSE = 0;
public static final int GL_TRUE = 1;
public static final int GL_ZERO = 0;
public static final int GL_ONE = 1;
public static final int GL_UNSIGNED_BYTE = 0x1401;
public static final int GL_UNSIGNED_SHORT = 0x1403;
public static final int GL_UNSIGNED_INT = 0x1405;
public static final int GL_POINTS = 0x0000;
public static final int GL_LINES = 0x0001;
public static final int GL_LINE_LOOP = 0x0002;
public static final int GL_LINE_STRIP = 0x0003;
public static final int GL_TRIANGLES = 0x0004;
public static final int GL_TRIANGLE_STRIP = 0x0005;
public static final int GL_TRIANGLE_FAN = 0x0006;
public static final int GL_QUADS = 0x0007;
public static final int GL_QUAD_STRIP = 0x0008;
public static final int GL_POLYGON = 0x0009;
public static final int GL_FRAGMENT_SHADER = 0x8b30;
public static final int GL_VERTEX_SHADER = 0x8b31;
public static final int GL_TEXTURE0 = 0x84c0;
public static final int GL_FRAMEBUFFER = 0x8d40;
public static final int GL_READ_FRAMEBUFFER = 0x8ca8;
public static final int GL_DRAW_FRAMEBUFFER = 0x8ca9;
public static final int GL_COLOR_ATTACHMENT0 = 0x8ce0;
public static final int GL_DEPTH_COMPONENT16 = 0x81a5;
public static final int GL_DEPTH_COMPONENT24 = 0x81a6;
public static final int GL_DEPTH_COMPONENT32 = 0x81a7;
public static final int GL_DEPTH_ATTACHMENT = 0x8d00;
public static final int GL_RENDERBUFFER = 0x8d41;
//glCullFace constants
public static final int GL_FRONT = 0x0404;
public static final int GL_BACK = 0x0405;
public static final int GL_FRONT_AND_BACK = 0x0408;
/** Returns OpenGL version. ie: {3,3,0} */
public static int[] getVersion() {
GL gl = getInstance();
String str = gl.glGetString(GL_VERSION);
if (str == null) {
JFLog.log("Error:glGetString returned NULL");
return new int[] {0,0};
}
int idx = str.indexOf(" ");
if (idx != -1) str = str.substring(0, idx);
String[] parts = str.split("[.]");
int[] ret = new int[parts.length];
for(int a=0;a<parts.length;a++) {
ret[a] = Integer.valueOf(parts[a]);
}
return ret;
}
public static void printError(String msg) {
GL gl = getInstance();
int err;
do {
err = gl.glGetError();
System.out.println(msg + "=" + String.format("%x", err));
} while (err != 0);
}
public static void printError() {
printError("err");
}
/** Clears viewport */
public static void clear(int clr, int width, int height) {
GL gl = getInstance();
float r = (clr & 0xff0000) >> 16;
r /= 256.0f;
float g = (clr & 0xff00) >> 8;
g /= 256.0f;
float b = (clr & 0xff);
b /= 256.0f;
if (debug) {
JFLog.log("clear:" + r + "," + g + "," + b + ":" + width + "x" + height);
}
gl.glViewport(0, 0, width, height);
gl.glClearColor(r, g, b, 0.0f);
gl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
}
public void glActiveTexture(int i1);
public void glAlphaFunc(int i1, int i2);
public void glAttachShader(int i1, int i2);
public void glBindBuffer(int i1, int i2);
public void glBindFramebuffer(int i1, int i2);
public void glBindRenderbuffer(int i1, int i2);
public void glBindTexture(int i1, int i2);
public void glBlendFunc(int i1, int i2);
public void glBufferData(int i1, int i2, float[] i3, int i4);
public void glBufferData(int i1, int i2, short[] i3, int i4);
public void glBufferData(int i1, int i2, int[] i3, int i4);
public void glBufferData(int i1, int i2, byte[] i3, int i4);
public void glClear(int flags);
public void glClearColor(float r, float g, float b, float a);
public void glColorMask(boolean r, boolean g, boolean b, boolean a);
public void glClearStencil(int s);
public void glCompileShader(int id);
public int glCreateProgram();
public int glCreateShader(int type);
public void glCullFace(int id);
public void glDeleteBuffers(int i1, int[] i2);
public void glDeleteFramebuffers(int i1, int[] i2);
public void glDeleteRenderbuffers(int i1, int[] i2);
public void glDeleteTextures(int i1, int[] i2);
public void glDrawElements(int i1, int i2, int i3, int i4);
public void glDepthFunc(int i1);
public void glDisable(int id);
public void glDisableVertexAttribArray(int id);
public void glDepthMask(boolean state);
public void glEnable(int id);
public void glEnableVertexAttribArray(int id);
public void glFlush();
public void glFramebufferTexture2D(int i1, int i2, int i3, int i4, int i5);
public void glFramebufferRenderbuffer(int i1, int i2, int i3, int i4);
public void glFrontFace(int id);
public int glGetAttribLocation(int i1, String str);
public int glGetError();
public String glGetProgramInfoLog(int id);
public String glGetShaderInfoLog(int id);
public String glGetString(int type);
public void glGetIntegerv(int type, int[] i);
public void glGenBuffers(int i1, int[] i2);
public void glGenFramebuffers(int i1, int[] i2);
public void glGenRenderbuffers(int i1, int[] i2);
public void glGenTextures(int i1, int[] i2);
public int glGetUniformLocation(int i1, String str);
public void glLinkProgram(int id);
public void glPixelStorei(int i1, int i2);
public void glReadPixels(int i1, int i2, int i3, int i4, int i5, int i6, int[] px);
public void glRenderbufferStorage(int i1, int i2, int i3, int i4);
public int glShaderSource(int type, int count, String[] src, int[] src_lengths);
public int glStencilFunc(int func, int ref, int mask);
public int glStencilMask(int mask);
public int glStencilOp(int sfail, int dpfail, int dppass);
public void glTexImage2D(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int[] px);
public void glTexSubImage2D(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int[] px);
public void glTexParameteri(int i1, int i2, int i3);
public void glUseProgram(int id);
public void glUniformMatrix4fv(int i1, int i2, int i3, float[] m);
public void glUniform4fv(int i1, int i2, float[] f);
public void glUniform3fv(int i1, int i2, float[] f);
public void glUniform2fv(int i1, int i2, float[] f);
public void glUniform1f(int i1, float f);
public void glUniform4iv(int i1, int i2, int[] v);
public void glUniform3iv(int i1, int i2, int[] v);
public void glUniform2iv(int i1, int i2, int[] v);
public void glUniform1i(int i1, int i2);
public void glVertexAttribPointer(int i1, int i2, int i3, int i4, int i5, int i6);
public void glViewport(int x,int y,int w,int h);
}