forked from pquiring/javaforce
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGL.java
More file actions
executable file
·255 lines (236 loc) · 11 KB
/
Copy pathGL.java
File metadata and controls
executable file
·255 lines (236 loc) · 11 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
255
package javaforce.gl;
/**
* OpenGL binding for Java
*
* @author pquiring
*
* Created : Sept 16, 2013
*
* Notes:
* - only supports OpenGL 2.0 or better (1.x not supported)
* - only call GL functions from the EDT (event dispatching thread)
* - Supports Windows, Linux and MacOSX.VI or better (aka SnowLeopard)
* - if there are functions or constants missing feel free to add them
* - add constants to end of "GL Constants" list
* - open a bug report and I will add it
*/
import javaforce.*;
import javaforce.jni.*;
public class GL {
static {
JFNative.load();
if (JF.isWindows()) {
os = OS.WINDOWS;
WinNative.load();
} else if (JF.isMac()) {
os = OS.MAC;
MacNative.load();
} else {
os = OS.LINUX;
LnxNative.load();
}
}
/** Loads native code. */
public static void load() {}
/** Loads OpenGL functions.
*
* Windows : must call only when a valid OpenGL Context is set
* Linux : not sure?
* Mac : Call anytime.
*
*/
public static native boolean glInit();
private static final boolean debug = false;
//common data
private enum OS {WINDOWS, LINUX, MAC};
private static OS os;
//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_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_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() {
String str = 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) {
int err;
do {
err = 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) {
float r = (clr & 0xff0000) >> 16;
r /= 256.0f;
float g = (clr & 0xff00) >> 8;
g /= 256.0f;
float b = (clr & 0xff);
b /= 256.0f;
glViewport(0, 0, width, height);
glClearColor(r, g, b, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
}
public static native void glActiveTexture(int i1);
public static native void glAttachShader(int i1, int i2);
public static native void glBindBuffer(int i1, int i2);
public static native void glBindFramebuffer(int i1, int i2);
public static native void glBindRenderbuffer(int i1, int i2);
public static native void glBindTexture(int i1, int i2);
public static native void glBlendFunc(int i1, int i2);
public static native void glBufferData(int i1, int i2, float i3[], int i4);
public static native void glBufferData(int i1, int i2, short i3[], int i4);
public static native void glBufferData(int i1, int i2, int i3[], int i4);
public static native void glBufferData(int i1, int i2, byte i3[], int i4);
public static native void glClear(int flags);
public static native void glClearColor(float r, float g, float b, float a);
public static native void glColorMask(boolean r, boolean g, boolean b, boolean a);
public static native void glCompileShader(int id);
public static native int glCreateProgram();
public static native int glCreateShader(int type);
public static native void glCullFace(int id);
public static native void glDeleteBuffers(int i1, int i2[]);
public static native void glDeleteFramebuffers(int i1, int i2[]);
public static native void glDeleteRenderbuffers(int i1, int i2[]);
public static native void glDeleteTextures(int i1, int i2[]);
public static native void glDrawElements(int i1, int i2, int i3, int i4);
public static native void glDepthFunc(int i1);
public static native void glDisable(int id);
public static native void glDisableVertexAttribArray(int id);
public static native void glDepthMask(boolean state);
public static native void glEnable(int id);
public static native void glEnableVertexAttribArray(int id);
public static native void glFlush();
public static native void glFramebufferTexture2D(int i1, int i2, int i3, int i4, int i5);
public static native void glFramebufferRenderbuffer(int i1, int i2, int i3, int i4);
public static native void glFrontFace(int id);
public static native int glGetAttribLocation(int i1, String str);
public static native int glGetError();
public static native String glGetProgramInfoLog(int id);
public static native String glGetShaderInfoLog(int id);
public static native String glGetString(int type);
public static native void glGetIntegerv(int type, int i[]);
public static native void glGenBuffers(int i1, int i2[]);
public static native void glGenFramebuffers(int i1, int i2[]);
public static native void glGenRenderbuffers(int i1, int i2[]);
public static native void glGenTextures(int i1, int i2[]);
public static native int glGetUniformLocation(int i1, String str);
public static native void glLinkProgram(int id);
public static native void glPixelStorei(int i1, int i2);
public static native void glReadPixels(int i1, int i2, int i3, int i4, int i5, int i6, int px[]);
public static native void glRenderbufferStorage(int i1, int i2, int i3, int i4);
public static native int glShaderSource(int type, int count, String src[], int src_lengths[]);
public static native int glStencilFunc(int func, int ref, int mask);
public static native int glStencilMask(int mask);
public static native int glStencilOp(int sfail, int dpfail, int dppass);
public static native void glTexImage2D(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int px[]);
public static native void glTexSubImage2D(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int px[]);
public static native void glTexParameteri(int i1, int i2, int i3);
public static native void glUseProgram(int id);
public static native void glUniformMatrix4fv(int i1, int i2, int i3, float m[]);
public static native void glUniform4fv(int i1, int i2, float f[]);
public static native void glUniform3fv(int i1, int i2, float f[]);
public static native void glUniform2fv(int i1, int i2, float f[]);
public static native void glUniform1f(int i1, float f);
public static native void glUniform4iv(int i1, int i2, int v[]);
public static native void glUniform3iv(int i1, int i2, int v[]);
public static native void glUniform2iv(int i1, int i2, int v[]);
public static native void glUniform1i(int i1, int i2);
public static native void glVertexAttribPointer(int i1, int i2, int i3, int i4, int i5, int i6);
public static native void glViewport(int x,int y,int w,int h);
}