OSDN Git Service

resolve merge conflicts of 2c53526 to lmp-mr1-dev am: c196526f8e am: 1e8fe12f4e
[android-x86/frameworks-base.git] / core / jni / android_opengl_GLES10.cpp
1 /*
2 **
3 ** Copyright 2009, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17
18 // This source file is automatically generated
19
20 #pragma GCC diagnostic ignored "-Wunused-variable"
21 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
22 #pragma GCC diagnostic ignored "-Wunused-function"
23
24 #include <GLES/gl.h>
25 #include <GLES/glext.h>
26
27 #include <jni.h>
28 #include <JNIHelp.h>
29 #include <android_runtime/AndroidRuntime.h>
30 #include <utils/misc.h>
31 #include <assert.h>
32
33 static int initialized = 0;
34
35 static jclass nioAccessClass;
36 static jclass bufferClass;
37 static jmethodID getBasePointerID;
38 static jmethodID getBaseArrayID;
39 static jmethodID getBaseArrayOffsetID;
40 static jfieldID positionID;
41 static jfieldID limitID;
42 static jfieldID elementSizeShiftID;
43
44
45 /* special calls implemented in Android's GLES wrapper used to more
46  * efficiently bound-check passed arrays */
47 extern "C" {
48 #ifdef GL_VERSION_ES_CM_1_1
49 GL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
50         const GLvoid *ptr, GLsizei count);
51 GL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
52         const GLvoid *pointer, GLsizei count);
53 GL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
54         GLsizei stride, const GLvoid *pointer, GLsizei count);
55 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
56         GLsizei stride, const GLvoid *pointer, GLsizei count);
57 GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
58         GLsizei stride, const GLvoid *pointer, GLsizei count);
59 GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
60         GLsizei stride, const GLvoid *pointer, GLsizei count);
61 GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
62         GLsizei stride, const GLvoid *pointer, GLsizei count);
63 #endif
64 #ifdef GL_ES_VERSION_2_0
65 static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
66         GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
67     glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
68 }
69 #endif
70 #ifdef GL_ES_VERSION_3_0
71 static void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
72         GLsizei stride, const GLvoid *pointer, GLsizei count) {
73     glVertexAttribIPointer(indx, size, type, stride, pointer);
74 }
75 #endif
76 }
77
78 /* Cache method IDs each time the class is loaded. */
79
80 static void
81 nativeClassInit(JNIEnv *_env, jclass glImplClass)
82 {
83     jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
84     nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
85
86     jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
87     bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
88
89     getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
90             "getBasePointer", "(Ljava/nio/Buffer;)J");
91     getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
92             "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
93     getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
94             "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
95
96     positionID = _env->GetFieldID(bufferClass, "position", "I");
97     limitID = _env->GetFieldID(bufferClass, "limit", "I");
98     elementSizeShiftID =
99         _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
100 }
101
102 static void *
103 getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
104 {
105     jint position;
106     jint limit;
107     jint elementSizeShift;
108     jlong pointer;
109
110     position = _env->GetIntField(buffer, positionID);
111     limit = _env->GetIntField(buffer, limitID);
112     elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
113     *remaining = (limit - position) << elementSizeShift;
114     pointer = _env->CallStaticLongMethod(nioAccessClass,
115             getBasePointerID, buffer);
116     if (pointer != 0L) {
117         *array = NULL;
118         return reinterpret_cast<void*>(pointer);
119     }
120
121     *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
122             getBaseArrayID, buffer);
123     *offset = _env->CallStaticIntMethod(nioAccessClass,
124             getBaseArrayOffsetID, buffer);
125
126     return NULL;
127 }
128
129 class ByteArrayGetter {
130 public:
131     static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
132         return _env->GetByteArrayElements(array, is_copy);
133     }
134 };
135 class BooleanArrayGetter {
136 public:
137     static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
138         return _env->GetBooleanArrayElements(array, is_copy);
139     }
140 };
141 class CharArrayGetter {
142 public:
143     static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
144         return _env->GetCharArrayElements(array, is_copy);
145     }
146 };
147 class ShortArrayGetter {
148 public:
149     static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
150         return _env->GetShortArrayElements(array, is_copy);
151     }
152 };
153 class IntArrayGetter {
154 public:
155     static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
156         return _env->GetIntArrayElements(array, is_copy);
157     }
158 };
159 class LongArrayGetter {
160 public:
161     static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
162         return _env->GetLongArrayElements(array, is_copy);
163     }
164 };
165 class FloatArrayGetter {
166 public:
167     static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
168         return _env->GetFloatArrayElements(array, is_copy);
169     }
170 };
171 class DoubleArrayGetter {
172 public:
173     static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
174         return _env->GetDoubleArrayElements(array, is_copy);
175     }
176 };
177
178 template<typename JTYPEARRAY, typename ARRAYGETTER>
179 static void*
180 getArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
181     return ARRAYGETTER::Get(_env, array, is_copy);
182 }
183
184 class ByteArrayReleaser {
185 public:
186     static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
187         _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
188     }
189 };
190 class BooleanArrayReleaser {
191 public:
192     static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
193         _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
194     }
195 };
196 class CharArrayReleaser {
197 public:
198     static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
199         _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
200     }
201 };
202 class ShortArrayReleaser {
203 public:
204     static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
205         _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
206     }
207 };
208 class IntArrayReleaser {
209 public:
210     static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
211         _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
212     }
213 };
214 class LongArrayReleaser {
215 public:
216     static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
217         _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
218     }
219 };
220 class FloatArrayReleaser {
221 public:
222     static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
223         _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
224     }
225 };
226 class DoubleArrayReleaser {
227 public:
228     static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
229         _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
230     }
231 };
232
233 template<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
234 static void
235 releaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
236     ARRAYRELEASER::Release(_env, array, data, commit);
237 }
238
239 static void
240 releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
241 {
242     _env->ReleasePrimitiveArrayCritical(array, data,
243                        commit ? 0 : JNI_ABORT);
244 }
245
246 static void *
247 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
248     char* buf = (char*) _env->GetDirectBufferAddress(buffer);
249     if (buf) {
250         jint position = _env->GetIntField(buffer, positionID);
251         jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
252         buf += position << elementSizeShift;
253     } else {
254         jniThrowException(_env, "java/lang/IllegalArgumentException",
255                           "Must use a native order direct Buffer");
256     }
257     return (void*) buf;
258 }
259
260 // --------------------------------------------------------------------------
261
262 /*
263  * returns the number of values glGet returns for a given pname.
264  *
265  * The code below is written such that pnames requiring only one values
266  * are the default (and are not explicitely tested for). This makes the
267  * checking code much shorter/readable/efficient.
268  *
269  * This means that unknown pnames (e.g.: extensions) will default to 1. If
270  * that unknown pname needs more than 1 value, then the validation check
271  * is incomplete and the app may crash if it passed the wrong number params.
272  */
273 static int getNeededCount(GLint pname) {
274     int needed = 1;
275 #ifdef GL_ES_VERSION_2_0
276     // GLES 2.x pnames
277     switch (pname) {
278         case GL_ALIASED_LINE_WIDTH_RANGE:
279         case GL_ALIASED_POINT_SIZE_RANGE:
280             needed = 2;
281             break;
282
283         case GL_BLEND_COLOR:
284         case GL_COLOR_CLEAR_VALUE:
285         case GL_COLOR_WRITEMASK:
286         case GL_SCISSOR_BOX:
287         case GL_VIEWPORT:
288             needed = 4;
289             break;
290
291         case GL_COMPRESSED_TEXTURE_FORMATS:
292             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
293             break;
294
295         case GL_SHADER_BINARY_FORMATS:
296             glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
297             break;
298     }
299 #endif
300
301 #ifdef GL_VERSION_ES_CM_1_1
302     // GLES 1.x pnames
303     switch (pname) {
304         case GL_ALIASED_LINE_WIDTH_RANGE:
305         case GL_ALIASED_POINT_SIZE_RANGE:
306         case GL_DEPTH_RANGE:
307         case GL_SMOOTH_LINE_WIDTH_RANGE:
308         case GL_SMOOTH_POINT_SIZE_RANGE:
309             needed = 2;
310             break;
311
312         case GL_CURRENT_NORMAL:
313         case GL_POINT_DISTANCE_ATTENUATION:
314             needed = 3;
315             break;
316
317         case GL_COLOR_CLEAR_VALUE:
318         case GL_COLOR_WRITEMASK:
319         case GL_CURRENT_COLOR:
320         case GL_CURRENT_TEXTURE_COORDS:
321         case GL_FOG_COLOR:
322         case GL_LIGHT_MODEL_AMBIENT:
323         case GL_SCISSOR_BOX:
324         case GL_VIEWPORT:
325             needed = 4;
326             break;
327
328         case GL_MODELVIEW_MATRIX:
329         case GL_PROJECTION_MATRIX:
330         case GL_TEXTURE_MATRIX:
331             needed = 16;
332             break;
333
334         case GL_COMPRESSED_TEXTURE_FORMATS:
335             glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
336             break;
337     }
338 #endif
339     return needed;
340 }
341
342 template <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
343           typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
344 static void
345 get
346   (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
347     jint _exception = 0;
348     const char * _exceptionType;
349     const char * _exceptionMessage;
350     CTYPE *params_base = (CTYPE *) 0;
351     jint _remaining;
352     CTYPE *params = (CTYPE *) 0;
353     int _needed = 0;
354
355     if (!params_ref) {
356         _exception = 1;
357         _exceptionType = "java/lang/IllegalArgumentException";
358         _exceptionMessage = "params == null";
359         goto exit;
360     }
361     if (offset < 0) {
362         _exception = 1;
363         _exceptionType = "java/lang/IllegalArgumentException";
364         _exceptionMessage = "offset < 0";
365         goto exit;
366     }
367     _remaining = _env->GetArrayLength(params_ref) - offset;
368     _needed = getNeededCount(pname);
369     // if we didn't find this pname, we just assume the user passed
370     // an array of the right size -- this might happen with extensions
371     // or if we forget an enum here.
372     if (_remaining < _needed) {
373         _exception = 1;
374         _exceptionType = "java/lang/IllegalArgumentException";
375         _exceptionMessage = "length - offset < needed";
376         goto exit;
377     }
378     params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
379         _env, params_ref, (jboolean *)0);
380     params = params_base + offset;
381
382     GET(
383         (GLenum)pname,
384         (CTYPE *)params
385     );
386
387 exit:
388     if (params_base) {
389         releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
390             _env, params_ref, params_base, !_exception);
391     }
392     if (_exception) {
393         jniThrowException(_env, _exceptionType, _exceptionMessage);
394     }
395 }
396
397
398 template <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
399           typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
400 static void
401 getarray
402   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
403     jint _exception = 0;
404     const char * _exceptionType;
405     const char * _exceptionMessage;
406     JTYPEARRAY _array = (JTYPEARRAY) 0;
407     jint _bufferOffset = (jint) 0;
408     jint _remaining;
409     CTYPE *params = (CTYPE *) 0;
410     int _needed = 0;
411
412     params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
413     _remaining /= sizeof(CTYPE);    // convert from bytes to item count
414     _needed = getNeededCount(pname);
415     // if we didn't find this pname, we just assume the user passed
416     // an array of the right size -- this might happen with extensions
417     // or if we forget an enum here.
418     if (_needed>0 && _remaining < _needed) {
419         _exception = 1;
420         _exceptionType = "java/lang/IllegalArgumentException";
421         _exceptionMessage = "remaining() < needed";
422         goto exit;
423     }
424     if (params == NULL) {
425         char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
426             _env, _array, (jboolean *) 0);
427         params = (CTYPE *) (_paramsBase + _bufferOffset);
428     }
429     GET(
430         (GLenum)pname,
431         (CTYPE *)params
432     );
433
434 exit:
435     if (_array) {
436         releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
437             _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
438     }
439     if (_exception) {
440         jniThrowException(_env, _exceptionType, _exceptionMessage);
441     }
442 }
443
444 // --------------------------------------------------------------------------
445 /* void glActiveTexture ( GLenum texture ) */
446 static void
447 android_glActiveTexture__I
448   (JNIEnv *_env, jobject _this, jint texture) {
449     glActiveTexture(
450         (GLenum)texture
451     );
452 }
453
454 /* void glAlphaFunc ( GLenum func, GLclampf ref ) */
455 static void
456 android_glAlphaFunc__IF
457   (JNIEnv *_env, jobject _this, jint func, jfloat ref) {
458     glAlphaFunc(
459         (GLenum)func,
460         (GLclampf)ref
461     );
462 }
463
464 /* void glAlphaFuncx ( GLenum func, GLclampx ref ) */
465 static void
466 android_glAlphaFuncx__II
467   (JNIEnv *_env, jobject _this, jint func, jint ref) {
468     glAlphaFuncx(
469         (GLenum)func,
470         (GLclampx)ref
471     );
472 }
473
474 /* void glBindTexture ( GLenum target, GLuint texture ) */
475 static void
476 android_glBindTexture__II
477   (JNIEnv *_env, jobject _this, jint target, jint texture) {
478     glBindTexture(
479         (GLenum)target,
480         (GLuint)texture
481     );
482 }
483
484 /* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
485 static void
486 android_glBlendFunc__II
487   (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
488     glBlendFunc(
489         (GLenum)sfactor,
490         (GLenum)dfactor
491     );
492 }
493
494 /* void glClear ( GLbitfield mask ) */
495 static void
496 android_glClear__I
497   (JNIEnv *_env, jobject _this, jint mask) {
498     glClear(
499         (GLbitfield)mask
500     );
501 }
502
503 /* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
504 static void
505 android_glClearColor__FFFF
506   (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
507     glClearColor(
508         (GLclampf)red,
509         (GLclampf)green,
510         (GLclampf)blue,
511         (GLclampf)alpha
512     );
513 }
514
515 /* void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) */
516 static void
517 android_glClearColorx__IIII
518   (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
519     glClearColorx(
520         (GLclampx)red,
521         (GLclampx)green,
522         (GLclampx)blue,
523         (GLclampx)alpha
524     );
525 }
526
527 /* void glClearDepthf ( GLclampf depth ) */
528 static void
529 android_glClearDepthf__F
530   (JNIEnv *_env, jobject _this, jfloat depth) {
531     glClearDepthf(
532         (GLclampf)depth
533     );
534 }
535
536 /* void glClearDepthx ( GLclampx depth ) */
537 static void
538 android_glClearDepthx__I
539   (JNIEnv *_env, jobject _this, jint depth) {
540     glClearDepthx(
541         (GLclampx)depth
542     );
543 }
544
545 /* void glClearStencil ( GLint s ) */
546 static void
547 android_glClearStencil__I
548   (JNIEnv *_env, jobject _this, jint s) {
549     glClearStencil(
550         (GLint)s
551     );
552 }
553
554 /* void glClientActiveTexture ( GLenum texture ) */
555 static void
556 android_glClientActiveTexture__I
557   (JNIEnv *_env, jobject _this, jint texture) {
558     glClientActiveTexture(
559         (GLenum)texture
560     );
561 }
562
563 /* void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) */
564 static void
565 android_glColor4f__FFFF
566   (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
567     glColor4f(
568         (GLfloat)red,
569         (GLfloat)green,
570         (GLfloat)blue,
571         (GLfloat)alpha
572     );
573 }
574
575 /* void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) */
576 static void
577 android_glColor4x__IIII
578   (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
579     glColor4x(
580         (GLfixed)red,
581         (GLfixed)green,
582         (GLfixed)blue,
583         (GLfixed)alpha
584     );
585 }
586
587 /* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
588 static void
589 android_glColorMask__ZZZZ
590   (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
591     glColorMask(
592         (GLboolean)red,
593         (GLboolean)green,
594         (GLboolean)blue,
595         (GLboolean)alpha
596     );
597 }
598
599 /* void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
600 static void
601 android_glColorPointerBounds__IIILjava_nio_Buffer_2I
602   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
603     jarray _array = (jarray) 0;
604     jint _bufferOffset = (jint) 0;
605     jint _remaining;
606     GLvoid *pointer = (GLvoid *) 0;
607
608     if (pointer_buf) {
609         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
610         if ( ! pointer ) {
611             return;
612         }
613     }
614     glColorPointerBounds(
615         (GLint)size,
616         (GLenum)type,
617         (GLsizei)stride,
618         (GLvoid *)pointer,
619         (GLsizei)remaining
620     );
621 }
622
623 /* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
624 static void
625 android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
626   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
627     jarray _array = (jarray) 0;
628     jint _bufferOffset = (jint) 0;
629     jint _remaining;
630     GLvoid *data = (GLvoid *) 0;
631
632     data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
633     if (data == NULL) {
634         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
635         data = (GLvoid *) (_dataBase + _bufferOffset);
636     }
637     glCompressedTexImage2D(
638         (GLenum)target,
639         (GLint)level,
640         (GLenum)internalformat,
641         (GLsizei)width,
642         (GLsizei)height,
643         (GLint)border,
644         (GLsizei)imageSize,
645         (GLvoid *)data
646     );
647     if (_array) {
648         releasePointer(_env, _array, data, JNI_FALSE);
649     }
650 }
651
652 /* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
653 static void
654 android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
655   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
656     jarray _array = (jarray) 0;
657     jint _bufferOffset = (jint) 0;
658     jint _remaining;
659     GLvoid *data = (GLvoid *) 0;
660
661     data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
662     if (data == NULL) {
663         char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
664         data = (GLvoid *) (_dataBase + _bufferOffset);
665     }
666     glCompressedTexSubImage2D(
667         (GLenum)target,
668         (GLint)level,
669         (GLint)xoffset,
670         (GLint)yoffset,
671         (GLsizei)width,
672         (GLsizei)height,
673         (GLenum)format,
674         (GLsizei)imageSize,
675         (GLvoid *)data
676     );
677     if (_array) {
678         releasePointer(_env, _array, data, JNI_FALSE);
679     }
680 }
681
682 /* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
683 static void
684 android_glCopyTexImage2D__IIIIIIII
685   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
686     glCopyTexImage2D(
687         (GLenum)target,
688         (GLint)level,
689         (GLenum)internalformat,
690         (GLint)x,
691         (GLint)y,
692         (GLsizei)width,
693         (GLsizei)height,
694         (GLint)border
695     );
696 }
697
698 /* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
699 static void
700 android_glCopyTexSubImage2D__IIIIIIII
701   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
702     glCopyTexSubImage2D(
703         (GLenum)target,
704         (GLint)level,
705         (GLint)xoffset,
706         (GLint)yoffset,
707         (GLint)x,
708         (GLint)y,
709         (GLsizei)width,
710         (GLsizei)height
711     );
712 }
713
714 /* void glCullFace ( GLenum mode ) */
715 static void
716 android_glCullFace__I
717   (JNIEnv *_env, jobject _this, jint mode) {
718     glCullFace(
719         (GLenum)mode
720     );
721 }
722
723 /* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
724 static void
725 android_glDeleteTextures__I_3II
726   (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
727     jint _exception = 0;
728     const char * _exceptionType = NULL;
729     const char * _exceptionMessage = NULL;
730     GLuint *textures_base = (GLuint *) 0;
731     jint _remaining;
732     GLuint *textures = (GLuint *) 0;
733
734     if (!textures_ref) {
735         _exception = 1;
736         _exceptionType = "java/lang/IllegalArgumentException";
737         _exceptionMessage = "textures == null";
738         goto exit;
739     }
740     if (offset < 0) {
741         _exception = 1;
742         _exceptionType = "java/lang/IllegalArgumentException";
743         _exceptionMessage = "offset < 0";
744         goto exit;
745     }
746     _remaining = _env->GetArrayLength(textures_ref) - offset;
747     if (_remaining < n) {
748         _exception = 1;
749         _exceptionType = "java/lang/IllegalArgumentException";
750         _exceptionMessage = "length - offset < n < needed";
751         goto exit;
752     }
753     textures_base = (GLuint *)
754         _env->GetIntArrayElements(textures_ref, (jboolean *)0);
755     textures = textures_base + offset;
756
757     glDeleteTextures(
758         (GLsizei)n,
759         (GLuint *)textures
760     );
761
762 exit:
763     if (textures_base) {
764         _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
765             JNI_ABORT);
766     }
767     if (_exception) {
768         jniThrowException(_env, _exceptionType, _exceptionMessage);
769     }
770 }
771
772 /* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
773 static void
774 android_glDeleteTextures__ILjava_nio_IntBuffer_2
775   (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
776     jint _exception = 0;
777     const char * _exceptionType = NULL;
778     const char * _exceptionMessage = NULL;
779     jintArray _array = (jintArray) 0;
780     jint _bufferOffset = (jint) 0;
781     jint _remaining;
782     GLuint *textures = (GLuint *) 0;
783
784     textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
785     if (_remaining < n) {
786         _exception = 1;
787         _exceptionType = "java/lang/IllegalArgumentException";
788         _exceptionMessage = "remaining() < n < needed";
789         goto exit;
790     }
791     if (textures == NULL) {
792         char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
793         textures = (GLuint *) (_texturesBase + _bufferOffset);
794     }
795     glDeleteTextures(
796         (GLsizei)n,
797         (GLuint *)textures
798     );
799
800 exit:
801     if (_array) {
802         _env->ReleaseIntArrayElements(_array, (jint*)textures, JNI_ABORT);
803     }
804     if (_exception) {
805         jniThrowException(_env, _exceptionType, _exceptionMessage);
806     }
807 }
808
809 /* void glDepthFunc ( GLenum func ) */
810 static void
811 android_glDepthFunc__I
812   (JNIEnv *_env, jobject _this, jint func) {
813     glDepthFunc(
814         (GLenum)func
815     );
816 }
817
818 /* void glDepthMask ( GLboolean flag ) */
819 static void
820 android_glDepthMask__Z
821   (JNIEnv *_env, jobject _this, jboolean flag) {
822     glDepthMask(
823         (GLboolean)flag
824     );
825 }
826
827 /* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
828 static void
829 android_glDepthRangef__FF
830   (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
831     glDepthRangef(
832         (GLclampf)zNear,
833         (GLclampf)zFar
834     );
835 }
836
837 /* void glDepthRangex ( GLclampx zNear, GLclampx zFar ) */
838 static void
839 android_glDepthRangex__II
840   (JNIEnv *_env, jobject _this, jint zNear, jint zFar) {
841     glDepthRangex(
842         (GLclampx)zNear,
843         (GLclampx)zFar
844     );
845 }
846
847 /* void glDisable ( GLenum cap ) */
848 static void
849 android_glDisable__I
850   (JNIEnv *_env, jobject _this, jint cap) {
851     glDisable(
852         (GLenum)cap
853     );
854 }
855
856 /* void glDisableClientState ( GLenum array ) */
857 static void
858 android_glDisableClientState__I
859   (JNIEnv *_env, jobject _this, jint array) {
860     glDisableClientState(
861         (GLenum)array
862     );
863 }
864
865 /* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
866 static void
867 android_glDrawArrays__III
868   (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
869     glDrawArrays(
870         (GLenum)mode,
871         (GLint)first,
872         (GLsizei)count
873     );
874 }
875
876 /* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
877 static void
878 android_glDrawElements__IIILjava_nio_Buffer_2
879   (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
880     jint _exception = 0;
881     const char * _exceptionType = NULL;
882     const char * _exceptionMessage = NULL;
883     jarray _array = (jarray) 0;
884     jint _bufferOffset = (jint) 0;
885     jint _remaining;
886     GLvoid *indices = (GLvoid *) 0;
887
888     indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
889     if (_remaining < count) {
890         _exception = 1;
891         _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
892         _exceptionMessage = "remaining() < count < needed";
893         goto exit;
894     }
895     if (indices == NULL) {
896         char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
897         indices = (GLvoid *) (_indicesBase + _bufferOffset);
898     }
899     glDrawElements(
900         (GLenum)mode,
901         (GLsizei)count,
902         (GLenum)type,
903         (GLvoid *)indices
904     );
905
906 exit:
907     if (_array) {
908         releasePointer(_env, _array, indices, JNI_FALSE);
909     }
910     if (_exception) {
911         jniThrowException(_env, _exceptionType, _exceptionMessage);
912     }
913 }
914
915 /* void glEnable ( GLenum cap ) */
916 static void
917 android_glEnable__I
918   (JNIEnv *_env, jobject _this, jint cap) {
919     glEnable(
920         (GLenum)cap
921     );
922 }
923
924 /* void glEnableClientState ( GLenum array ) */
925 static void
926 android_glEnableClientState__I
927   (JNIEnv *_env, jobject _this, jint array) {
928     glEnableClientState(
929         (GLenum)array
930     );
931 }
932
933 /* void glFinish ( void ) */
934 static void
935 android_glFinish__
936   (JNIEnv *_env, jobject _this) {
937     glFinish();
938 }
939
940 /* void glFlush ( void ) */
941 static void
942 android_glFlush__
943   (JNIEnv *_env, jobject _this) {
944     glFlush();
945 }
946
947 /* void glFogf ( GLenum pname, GLfloat param ) */
948 static void
949 android_glFogf__IF
950   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
951     glFogf(
952         (GLenum)pname,
953         (GLfloat)param
954     );
955 }
956
957 /* void glFogfv ( GLenum pname, const GLfloat *params ) */
958 static void
959 android_glFogfv__I_3FI
960   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
961     jint _exception = 0;
962     const char * _exceptionType = NULL;
963     const char * _exceptionMessage = NULL;
964     GLfloat *params_base = (GLfloat *) 0;
965     jint _remaining;
966     GLfloat *params = (GLfloat *) 0;
967
968     if (!params_ref) {
969         _exception = 1;
970         _exceptionType = "java/lang/IllegalArgumentException";
971         _exceptionMessage = "params == null";
972         goto exit;
973     }
974     if (offset < 0) {
975         _exception = 1;
976         _exceptionType = "java/lang/IllegalArgumentException";
977         _exceptionMessage = "offset < 0";
978         goto exit;
979     }
980     _remaining = _env->GetArrayLength(params_ref) - offset;
981     int _needed;
982     switch (pname) {
983 #if defined(GL_FOG_COLOR)
984         case GL_FOG_COLOR:
985 #endif // defined(GL_FOG_COLOR)
986             _needed = 4;
987             break;
988         default:
989             _needed = 1;
990             break;
991     }
992     if (_remaining < _needed) {
993         _exception = 1;
994         _exceptionType = "java/lang/IllegalArgumentException";
995         _exceptionMessage = "length - offset < needed";
996         goto exit;
997     }
998     params_base = (GLfloat *)
999         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
1000     params = params_base + offset;
1001
1002     glFogfv(
1003         (GLenum)pname,
1004         (GLfloat *)params
1005     );
1006
1007 exit:
1008     if (params_base) {
1009         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
1010             JNI_ABORT);
1011     }
1012     if (_exception) {
1013         jniThrowException(_env, _exceptionType, _exceptionMessage);
1014     }
1015 }
1016
1017 /* void glFogfv ( GLenum pname, const GLfloat *params ) */
1018 static void
1019 android_glFogfv__ILjava_nio_FloatBuffer_2
1020   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1021     jint _exception = 0;
1022     const char * _exceptionType = NULL;
1023     const char * _exceptionMessage = NULL;
1024     jfloatArray _array = (jfloatArray) 0;
1025     jint _bufferOffset = (jint) 0;
1026     jint _remaining;
1027     GLfloat *params = (GLfloat *) 0;
1028
1029     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1030     int _needed;
1031     switch (pname) {
1032 #if defined(GL_FOG_COLOR)
1033         case GL_FOG_COLOR:
1034 #endif // defined(GL_FOG_COLOR)
1035             _needed = 4;
1036             break;
1037         default:
1038             _needed = 1;
1039             break;
1040     }
1041     if (_remaining < _needed) {
1042         _exception = 1;
1043         _exceptionType = "java/lang/IllegalArgumentException";
1044         _exceptionMessage = "remaining() < needed";
1045         goto exit;
1046     }
1047     if (params == NULL) {
1048         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
1049         params = (GLfloat *) (_paramsBase + _bufferOffset);
1050     }
1051     glFogfv(
1052         (GLenum)pname,
1053         (GLfloat *)params
1054     );
1055
1056 exit:
1057     if (_array) {
1058         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
1059     }
1060     if (_exception) {
1061         jniThrowException(_env, _exceptionType, _exceptionMessage);
1062     }
1063 }
1064
1065 /* void glFogx ( GLenum pname, GLfixed param ) */
1066 static void
1067 android_glFogx__II
1068   (JNIEnv *_env, jobject _this, jint pname, jint param) {
1069     glFogx(
1070         (GLenum)pname,
1071         (GLfixed)param
1072     );
1073 }
1074
1075 /* void glFogxv ( GLenum pname, const GLfixed *params ) */
1076 static void
1077 android_glFogxv__I_3II
1078   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
1079     jint _exception = 0;
1080     const char * _exceptionType = NULL;
1081     const char * _exceptionMessage = NULL;
1082     GLfixed *params_base = (GLfixed *) 0;
1083     jint _remaining;
1084     GLfixed *params = (GLfixed *) 0;
1085
1086     if (!params_ref) {
1087         _exception = 1;
1088         _exceptionType = "java/lang/IllegalArgumentException";
1089         _exceptionMessage = "params == null";
1090         goto exit;
1091     }
1092     if (offset < 0) {
1093         _exception = 1;
1094         _exceptionType = "java/lang/IllegalArgumentException";
1095         _exceptionMessage = "offset < 0";
1096         goto exit;
1097     }
1098     _remaining = _env->GetArrayLength(params_ref) - offset;
1099     int _needed;
1100     switch (pname) {
1101 #if defined(GL_FOG_COLOR)
1102         case GL_FOG_COLOR:
1103 #endif // defined(GL_FOG_COLOR)
1104             _needed = 4;
1105             break;
1106         default:
1107             _needed = 1;
1108             break;
1109     }
1110     if (_remaining < _needed) {
1111         _exception = 1;
1112         _exceptionType = "java/lang/IllegalArgumentException";
1113         _exceptionMessage = "length - offset < needed";
1114         goto exit;
1115     }
1116     params_base = (GLfixed *)
1117         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1118     params = params_base + offset;
1119
1120     glFogxv(
1121         (GLenum)pname,
1122         (GLfixed *)params
1123     );
1124
1125 exit:
1126     if (params_base) {
1127         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1128             JNI_ABORT);
1129     }
1130     if (_exception) {
1131         jniThrowException(_env, _exceptionType, _exceptionMessage);
1132     }
1133 }
1134
1135 /* void glFogxv ( GLenum pname, const GLfixed *params ) */
1136 static void
1137 android_glFogxv__ILjava_nio_IntBuffer_2
1138   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1139     jint _exception = 0;
1140     const char * _exceptionType = NULL;
1141     const char * _exceptionMessage = NULL;
1142     jintArray _array = (jintArray) 0;
1143     jint _bufferOffset = (jint) 0;
1144     jint _remaining;
1145     GLfixed *params = (GLfixed *) 0;
1146
1147     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1148     int _needed;
1149     switch (pname) {
1150 #if defined(GL_FOG_COLOR)
1151         case GL_FOG_COLOR:
1152 #endif // defined(GL_FOG_COLOR)
1153             _needed = 4;
1154             break;
1155         default:
1156             _needed = 1;
1157             break;
1158     }
1159     if (_remaining < _needed) {
1160         _exception = 1;
1161         _exceptionType = "java/lang/IllegalArgumentException";
1162         _exceptionMessage = "remaining() < needed";
1163         goto exit;
1164     }
1165     if (params == NULL) {
1166         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1167         params = (GLfixed *) (_paramsBase + _bufferOffset);
1168     }
1169     glFogxv(
1170         (GLenum)pname,
1171         (GLfixed *)params
1172     );
1173
1174 exit:
1175     if (_array) {
1176         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
1177     }
1178     if (_exception) {
1179         jniThrowException(_env, _exceptionType, _exceptionMessage);
1180     }
1181 }
1182
1183 /* void glFrontFace ( GLenum mode ) */
1184 static void
1185 android_glFrontFace__I
1186   (JNIEnv *_env, jobject _this, jint mode) {
1187     glFrontFace(
1188         (GLenum)mode
1189     );
1190 }
1191
1192 /* void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
1193 static void
1194 android_glFrustumf__FFFFFF
1195   (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
1196     glFrustumf(
1197         (GLfloat)left,
1198         (GLfloat)right,
1199         (GLfloat)bottom,
1200         (GLfloat)top,
1201         (GLfloat)zNear,
1202         (GLfloat)zFar
1203     );
1204 }
1205
1206 /* void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
1207 static void
1208 android_glFrustumx__IIIIII
1209   (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
1210     glFrustumx(
1211         (GLfixed)left,
1212         (GLfixed)right,
1213         (GLfixed)bottom,
1214         (GLfixed)top,
1215         (GLfixed)zNear,
1216         (GLfixed)zFar
1217     );
1218 }
1219
1220 /* void glGenTextures ( GLsizei n, GLuint *textures ) */
1221 static void
1222 android_glGenTextures__I_3II
1223   (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
1224     jint _exception = 0;
1225     const char * _exceptionType = NULL;
1226     const char * _exceptionMessage = NULL;
1227     GLuint *textures_base = (GLuint *) 0;
1228     jint _remaining;
1229     GLuint *textures = (GLuint *) 0;
1230
1231     if (!textures_ref) {
1232         _exception = 1;
1233         _exceptionType = "java/lang/IllegalArgumentException";
1234         _exceptionMessage = "textures == null";
1235         goto exit;
1236     }
1237     if (offset < 0) {
1238         _exception = 1;
1239         _exceptionType = "java/lang/IllegalArgumentException";
1240         _exceptionMessage = "offset < 0";
1241         goto exit;
1242     }
1243     _remaining = _env->GetArrayLength(textures_ref) - offset;
1244     if (_remaining < n) {
1245         _exception = 1;
1246         _exceptionType = "java/lang/IllegalArgumentException";
1247         _exceptionMessage = "length - offset < n < needed";
1248         goto exit;
1249     }
1250     textures_base = (GLuint *)
1251         _env->GetIntArrayElements(textures_ref, (jboolean *)0);
1252     textures = textures_base + offset;
1253
1254     glGenTextures(
1255         (GLsizei)n,
1256         (GLuint *)textures
1257     );
1258
1259 exit:
1260     if (textures_base) {
1261         _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
1262             _exception ? JNI_ABORT: 0);
1263     }
1264     if (_exception) {
1265         jniThrowException(_env, _exceptionType, _exceptionMessage);
1266     }
1267 }
1268
1269 /* void glGenTextures ( GLsizei n, GLuint *textures ) */
1270 static void
1271 android_glGenTextures__ILjava_nio_IntBuffer_2
1272   (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
1273     jint _exception = 0;
1274     const char * _exceptionType = NULL;
1275     const char * _exceptionMessage = NULL;
1276     jintArray _array = (jintArray) 0;
1277     jint _bufferOffset = (jint) 0;
1278     jint _remaining;
1279     GLuint *textures = (GLuint *) 0;
1280
1281     textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1282     if (_remaining < n) {
1283         _exception = 1;
1284         _exceptionType = "java/lang/IllegalArgumentException";
1285         _exceptionMessage = "remaining() < n < needed";
1286         goto exit;
1287     }
1288     if (textures == NULL) {
1289         char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1290         textures = (GLuint *) (_texturesBase + _bufferOffset);
1291     }
1292     glGenTextures(
1293         (GLsizei)n,
1294         (GLuint *)textures
1295     );
1296
1297 exit:
1298     if (_array) {
1299         _env->ReleaseIntArrayElements(_array, (jint*)textures, _exception ? JNI_ABORT : 0);
1300     }
1301     if (_exception) {
1302         jniThrowException(_env, _exceptionType, _exceptionMessage);
1303     }
1304 }
1305
1306 /* GLenum glGetError ( void ) */
1307 static jint
1308 android_glGetError__
1309   (JNIEnv *_env, jobject _this) {
1310     GLenum _returnValue;
1311     _returnValue = glGetError();
1312     return (jint)_returnValue;
1313 }
1314
1315 /* void glGetIntegerv ( GLenum pname, GLint *params ) */
1316 static void
1317 android_glGetIntegerv__I_3II
1318   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
1319     get<jintArray, IntArrayGetter, jint*, IntArrayReleaser, GLint, glGetIntegerv>(
1320         _env, _this, pname, params_ref, offset);
1321 }
1322
1323 /* void glGetIntegerv ( GLenum pname, GLint *params ) */
1324 static void
1325 android_glGetIntegerv__ILjava_nio_IntBuffer_2
1326   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1327     getarray<GLint, jintArray, IntArrayGetter, jint*, IntArrayReleaser, glGetIntegerv>(
1328         _env, _this, pname, params_buf);
1329 }
1330 /* const GLubyte * glGetString ( GLenum name ) */
1331 static jstring android_glGetString(JNIEnv* _env, jobject, jint name) {
1332     const char* chars = (const char*) glGetString((GLenum) name);
1333     return _env->NewStringUTF(chars);
1334 }
1335 /* void glHint ( GLenum target, GLenum mode ) */
1336 static void
1337 android_glHint__II
1338   (JNIEnv *_env, jobject _this, jint target, jint mode) {
1339     glHint(
1340         (GLenum)target,
1341         (GLenum)mode
1342     );
1343 }
1344
1345 /* void glLightModelf ( GLenum pname, GLfloat param ) */
1346 static void
1347 android_glLightModelf__IF
1348   (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
1349     glLightModelf(
1350         (GLenum)pname,
1351         (GLfloat)param
1352     );
1353 }
1354
1355 /* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
1356 static void
1357 android_glLightModelfv__I_3FI
1358   (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
1359     jint _exception = 0;
1360     const char * _exceptionType = NULL;
1361     const char * _exceptionMessage = NULL;
1362     GLfloat *params_base = (GLfloat *) 0;
1363     jint _remaining;
1364     GLfloat *params = (GLfloat *) 0;
1365
1366     if (!params_ref) {
1367         _exception = 1;
1368         _exceptionType = "java/lang/IllegalArgumentException";
1369         _exceptionMessage = "params == null";
1370         goto exit;
1371     }
1372     if (offset < 0) {
1373         _exception = 1;
1374         _exceptionType = "java/lang/IllegalArgumentException";
1375         _exceptionMessage = "offset < 0";
1376         goto exit;
1377     }
1378     _remaining = _env->GetArrayLength(params_ref) - offset;
1379     int _needed;
1380     switch (pname) {
1381 #if defined(GL_LIGHT_MODEL_AMBIENT)
1382         case GL_LIGHT_MODEL_AMBIENT:
1383 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1384             _needed = 4;
1385             break;
1386         default:
1387             _needed = 1;
1388             break;
1389     }
1390     if (_remaining < _needed) {
1391         _exception = 1;
1392         _exceptionType = "java/lang/IllegalArgumentException";
1393         _exceptionMessage = "length - offset < needed";
1394         goto exit;
1395     }
1396     params_base = (GLfloat *)
1397         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
1398     params = params_base + offset;
1399
1400     glLightModelfv(
1401         (GLenum)pname,
1402         (GLfloat *)params
1403     );
1404
1405 exit:
1406     if (params_base) {
1407         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
1408             JNI_ABORT);
1409     }
1410     if (_exception) {
1411         jniThrowException(_env, _exceptionType, _exceptionMessage);
1412     }
1413 }
1414
1415 /* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
1416 static void
1417 android_glLightModelfv__ILjava_nio_FloatBuffer_2
1418   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1419     jint _exception = 0;
1420     const char * _exceptionType = NULL;
1421     const char * _exceptionMessage = NULL;
1422     jfloatArray _array = (jfloatArray) 0;
1423     jint _bufferOffset = (jint) 0;
1424     jint _remaining;
1425     GLfloat *params = (GLfloat *) 0;
1426
1427     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1428     int _needed;
1429     switch (pname) {
1430 #if defined(GL_LIGHT_MODEL_AMBIENT)
1431         case GL_LIGHT_MODEL_AMBIENT:
1432 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1433             _needed = 4;
1434             break;
1435         default:
1436             _needed = 1;
1437             break;
1438     }
1439     if (_remaining < _needed) {
1440         _exception = 1;
1441         _exceptionType = "java/lang/IllegalArgumentException";
1442         _exceptionMessage = "remaining() < needed";
1443         goto exit;
1444     }
1445     if (params == NULL) {
1446         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
1447         params = (GLfloat *) (_paramsBase + _bufferOffset);
1448     }
1449     glLightModelfv(
1450         (GLenum)pname,
1451         (GLfloat *)params
1452     );
1453
1454 exit:
1455     if (_array) {
1456         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
1457     }
1458     if (_exception) {
1459         jniThrowException(_env, _exceptionType, _exceptionMessage);
1460     }
1461 }
1462
1463 /* void glLightModelx ( GLenum pname, GLfixed param ) */
1464 static void
1465 android_glLightModelx__II
1466   (JNIEnv *_env, jobject _this, jint pname, jint param) {
1467     glLightModelx(
1468         (GLenum)pname,
1469         (GLfixed)param
1470     );
1471 }
1472
1473 /* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
1474 static void
1475 android_glLightModelxv__I_3II
1476   (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
1477     jint _exception = 0;
1478     const char * _exceptionType = NULL;
1479     const char * _exceptionMessage = NULL;
1480     GLfixed *params_base = (GLfixed *) 0;
1481     jint _remaining;
1482     GLfixed *params = (GLfixed *) 0;
1483
1484     if (!params_ref) {
1485         _exception = 1;
1486         _exceptionType = "java/lang/IllegalArgumentException";
1487         _exceptionMessage = "params == null";
1488         goto exit;
1489     }
1490     if (offset < 0) {
1491         _exception = 1;
1492         _exceptionType = "java/lang/IllegalArgumentException";
1493         _exceptionMessage = "offset < 0";
1494         goto exit;
1495     }
1496     _remaining = _env->GetArrayLength(params_ref) - offset;
1497     int _needed;
1498     switch (pname) {
1499 #if defined(GL_LIGHT_MODEL_AMBIENT)
1500         case GL_LIGHT_MODEL_AMBIENT:
1501 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1502             _needed = 4;
1503             break;
1504         default:
1505             _needed = 1;
1506             break;
1507     }
1508     if (_remaining < _needed) {
1509         _exception = 1;
1510         _exceptionType = "java/lang/IllegalArgumentException";
1511         _exceptionMessage = "length - offset < needed";
1512         goto exit;
1513     }
1514     params_base = (GLfixed *)
1515         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1516     params = params_base + offset;
1517
1518     glLightModelxv(
1519         (GLenum)pname,
1520         (GLfixed *)params
1521     );
1522
1523 exit:
1524     if (params_base) {
1525         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1526             JNI_ABORT);
1527     }
1528     if (_exception) {
1529         jniThrowException(_env, _exceptionType, _exceptionMessage);
1530     }
1531 }
1532
1533 /* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
1534 static void
1535 android_glLightModelxv__ILjava_nio_IntBuffer_2
1536   (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1537     jint _exception = 0;
1538     const char * _exceptionType = NULL;
1539     const char * _exceptionMessage = NULL;
1540     jintArray _array = (jintArray) 0;
1541     jint _bufferOffset = (jint) 0;
1542     jint _remaining;
1543     GLfixed *params = (GLfixed *) 0;
1544
1545     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1546     int _needed;
1547     switch (pname) {
1548 #if defined(GL_LIGHT_MODEL_AMBIENT)
1549         case GL_LIGHT_MODEL_AMBIENT:
1550 #endif // defined(GL_LIGHT_MODEL_AMBIENT)
1551             _needed = 4;
1552             break;
1553         default:
1554             _needed = 1;
1555             break;
1556     }
1557     if (_remaining < _needed) {
1558         _exception = 1;
1559         _exceptionType = "java/lang/IllegalArgumentException";
1560         _exceptionMessage = "remaining() < needed";
1561         goto exit;
1562     }
1563     if (params == NULL) {
1564         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1565         params = (GLfixed *) (_paramsBase + _bufferOffset);
1566     }
1567     glLightModelxv(
1568         (GLenum)pname,
1569         (GLfixed *)params
1570     );
1571
1572 exit:
1573     if (_array) {
1574         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
1575     }
1576     if (_exception) {
1577         jniThrowException(_env, _exceptionType, _exceptionMessage);
1578     }
1579 }
1580
1581 /* void glLightf ( GLenum light, GLenum pname, GLfloat param ) */
1582 static void
1583 android_glLightf__IIF
1584   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloat param) {
1585     glLightf(
1586         (GLenum)light,
1587         (GLenum)pname,
1588         (GLfloat)param
1589     );
1590 }
1591
1592 /* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
1593 static void
1594 android_glLightfv__II_3FI
1595   (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
1596     jint _exception = 0;
1597     const char * _exceptionType = NULL;
1598     const char * _exceptionMessage = NULL;
1599     GLfloat *params_base = (GLfloat *) 0;
1600     jint _remaining;
1601     GLfloat *params = (GLfloat *) 0;
1602
1603     if (!params_ref) {
1604         _exception = 1;
1605         _exceptionType = "java/lang/IllegalArgumentException";
1606         _exceptionMessage = "params == null";
1607         goto exit;
1608     }
1609     if (offset < 0) {
1610         _exception = 1;
1611         _exceptionType = "java/lang/IllegalArgumentException";
1612         _exceptionMessage = "offset < 0";
1613         goto exit;
1614     }
1615     _remaining = _env->GetArrayLength(params_ref) - offset;
1616     int _needed;
1617     switch (pname) {
1618 #if defined(GL_SPOT_DIRECTION)
1619         case GL_SPOT_DIRECTION:
1620 #endif // defined(GL_SPOT_DIRECTION)
1621             _needed = 3;
1622             break;
1623 #if defined(GL_AMBIENT)
1624         case GL_AMBIENT:
1625 #endif // defined(GL_AMBIENT)
1626 #if defined(GL_DIFFUSE)
1627         case GL_DIFFUSE:
1628 #endif // defined(GL_DIFFUSE)
1629 #if defined(GL_SPECULAR)
1630         case GL_SPECULAR:
1631 #endif // defined(GL_SPECULAR)
1632 #if defined(GL_EMISSION)
1633         case GL_EMISSION:
1634 #endif // defined(GL_EMISSION)
1635             _needed = 4;
1636             break;
1637         default:
1638             _needed = 1;
1639             break;
1640     }
1641     if (_remaining < _needed) {
1642         _exception = 1;
1643         _exceptionType = "java/lang/IllegalArgumentException";
1644         _exceptionMessage = "length - offset < needed";
1645         goto exit;
1646     }
1647     params_base = (GLfloat *)
1648         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
1649     params = params_base + offset;
1650
1651     glLightfv(
1652         (GLenum)light,
1653         (GLenum)pname,
1654         (GLfloat *)params
1655     );
1656
1657 exit:
1658     if (params_base) {
1659         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
1660             JNI_ABORT);
1661     }
1662     if (_exception) {
1663         jniThrowException(_env, _exceptionType, _exceptionMessage);
1664     }
1665 }
1666
1667 /* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
1668 static void
1669 android_glLightfv__IILjava_nio_FloatBuffer_2
1670   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
1671     jint _exception = 0;
1672     const char * _exceptionType = NULL;
1673     const char * _exceptionMessage = NULL;
1674     jfloatArray _array = (jfloatArray) 0;
1675     jint _bufferOffset = (jint) 0;
1676     jint _remaining;
1677     GLfloat *params = (GLfloat *) 0;
1678
1679     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1680     int _needed;
1681     switch (pname) {
1682 #if defined(GL_SPOT_DIRECTION)
1683         case GL_SPOT_DIRECTION:
1684 #endif // defined(GL_SPOT_DIRECTION)
1685             _needed = 3;
1686             break;
1687 #if defined(GL_AMBIENT)
1688         case GL_AMBIENT:
1689 #endif // defined(GL_AMBIENT)
1690 #if defined(GL_DIFFUSE)
1691         case GL_DIFFUSE:
1692 #endif // defined(GL_DIFFUSE)
1693 #if defined(GL_SPECULAR)
1694         case GL_SPECULAR:
1695 #endif // defined(GL_SPECULAR)
1696 #if defined(GL_EMISSION)
1697         case GL_EMISSION:
1698 #endif // defined(GL_EMISSION)
1699             _needed = 4;
1700             break;
1701         default:
1702             _needed = 1;
1703             break;
1704     }
1705     if (_remaining < _needed) {
1706         _exception = 1;
1707         _exceptionType = "java/lang/IllegalArgumentException";
1708         _exceptionMessage = "remaining() < needed";
1709         goto exit;
1710     }
1711     if (params == NULL) {
1712         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
1713         params = (GLfloat *) (_paramsBase + _bufferOffset);
1714     }
1715     glLightfv(
1716         (GLenum)light,
1717         (GLenum)pname,
1718         (GLfloat *)params
1719     );
1720
1721 exit:
1722     if (_array) {
1723         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
1724     }
1725     if (_exception) {
1726         jniThrowException(_env, _exceptionType, _exceptionMessage);
1727     }
1728 }
1729
1730 /* void glLightx ( GLenum light, GLenum pname, GLfixed param ) */
1731 static void
1732 android_glLightx__III
1733   (JNIEnv *_env, jobject _this, jint light, jint pname, jint param) {
1734     glLightx(
1735         (GLenum)light,
1736         (GLenum)pname,
1737         (GLfixed)param
1738     );
1739 }
1740
1741 /* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
1742 static void
1743 android_glLightxv__II_3II
1744   (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
1745     jint _exception = 0;
1746     const char * _exceptionType = NULL;
1747     const char * _exceptionMessage = NULL;
1748     GLfixed *params_base = (GLfixed *) 0;
1749     jint _remaining;
1750     GLfixed *params = (GLfixed *) 0;
1751
1752     if (!params_ref) {
1753         _exception = 1;
1754         _exceptionType = "java/lang/IllegalArgumentException";
1755         _exceptionMessage = "params == null";
1756         goto exit;
1757     }
1758     if (offset < 0) {
1759         _exception = 1;
1760         _exceptionType = "java/lang/IllegalArgumentException";
1761         _exceptionMessage = "offset < 0";
1762         goto exit;
1763     }
1764     _remaining = _env->GetArrayLength(params_ref) - offset;
1765     int _needed;
1766     switch (pname) {
1767 #if defined(GL_SPOT_DIRECTION)
1768         case GL_SPOT_DIRECTION:
1769 #endif // defined(GL_SPOT_DIRECTION)
1770             _needed = 3;
1771             break;
1772 #if defined(GL_AMBIENT)
1773         case GL_AMBIENT:
1774 #endif // defined(GL_AMBIENT)
1775 #if defined(GL_DIFFUSE)
1776         case GL_DIFFUSE:
1777 #endif // defined(GL_DIFFUSE)
1778 #if defined(GL_SPECULAR)
1779         case GL_SPECULAR:
1780 #endif // defined(GL_SPECULAR)
1781 #if defined(GL_EMISSION)
1782         case GL_EMISSION:
1783 #endif // defined(GL_EMISSION)
1784             _needed = 4;
1785             break;
1786         default:
1787             _needed = 1;
1788             break;
1789     }
1790     if (_remaining < _needed) {
1791         _exception = 1;
1792         _exceptionType = "java/lang/IllegalArgumentException";
1793         _exceptionMessage = "length - offset < needed";
1794         goto exit;
1795     }
1796     params_base = (GLfixed *)
1797         _env->GetIntArrayElements(params_ref, (jboolean *)0);
1798     params = params_base + offset;
1799
1800     glLightxv(
1801         (GLenum)light,
1802         (GLenum)pname,
1803         (GLfixed *)params
1804     );
1805
1806 exit:
1807     if (params_base) {
1808         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
1809             JNI_ABORT);
1810     }
1811     if (_exception) {
1812         jniThrowException(_env, _exceptionType, _exceptionMessage);
1813     }
1814 }
1815
1816 /* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
1817 static void
1818 android_glLightxv__IILjava_nio_IntBuffer_2
1819   (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
1820     jint _exception = 0;
1821     const char * _exceptionType = NULL;
1822     const char * _exceptionMessage = NULL;
1823     jintArray _array = (jintArray) 0;
1824     jint _bufferOffset = (jint) 0;
1825     jint _remaining;
1826     GLfixed *params = (GLfixed *) 0;
1827
1828     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1829     int _needed;
1830     switch (pname) {
1831 #if defined(GL_SPOT_DIRECTION)
1832         case GL_SPOT_DIRECTION:
1833 #endif // defined(GL_SPOT_DIRECTION)
1834             _needed = 3;
1835             break;
1836 #if defined(GL_AMBIENT)
1837         case GL_AMBIENT:
1838 #endif // defined(GL_AMBIENT)
1839 #if defined(GL_DIFFUSE)
1840         case GL_DIFFUSE:
1841 #endif // defined(GL_DIFFUSE)
1842 #if defined(GL_SPECULAR)
1843         case GL_SPECULAR:
1844 #endif // defined(GL_SPECULAR)
1845 #if defined(GL_EMISSION)
1846         case GL_EMISSION:
1847 #endif // defined(GL_EMISSION)
1848             _needed = 4;
1849             break;
1850         default:
1851             _needed = 1;
1852             break;
1853     }
1854     if (_remaining < _needed) {
1855         _exception = 1;
1856         _exceptionType = "java/lang/IllegalArgumentException";
1857         _exceptionMessage = "remaining() < needed";
1858         goto exit;
1859     }
1860     if (params == NULL) {
1861         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
1862         params = (GLfixed *) (_paramsBase + _bufferOffset);
1863     }
1864     glLightxv(
1865         (GLenum)light,
1866         (GLenum)pname,
1867         (GLfixed *)params
1868     );
1869
1870 exit:
1871     if (_array) {
1872         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
1873     }
1874     if (_exception) {
1875         jniThrowException(_env, _exceptionType, _exceptionMessage);
1876     }
1877 }
1878
1879 /* void glLineWidth ( GLfloat width ) */
1880 static void
1881 android_glLineWidth__F
1882   (JNIEnv *_env, jobject _this, jfloat width) {
1883     glLineWidth(
1884         (GLfloat)width
1885     );
1886 }
1887
1888 /* void glLineWidthx ( GLfixed width ) */
1889 static void
1890 android_glLineWidthx__I
1891   (JNIEnv *_env, jobject _this, jint width) {
1892     glLineWidthx(
1893         (GLfixed)width
1894     );
1895 }
1896
1897 /* void glLoadIdentity ( void ) */
1898 static void
1899 android_glLoadIdentity__
1900   (JNIEnv *_env, jobject _this) {
1901     glLoadIdentity();
1902 }
1903
1904 /* void glLoadMatrixf ( const GLfloat *m ) */
1905 static void
1906 android_glLoadMatrixf___3FI
1907   (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
1908     jint _exception = 0;
1909     const char * _exceptionType = NULL;
1910     const char * _exceptionMessage = NULL;
1911     GLfloat *m_base = (GLfloat *) 0;
1912     jint _remaining;
1913     GLfloat *m = (GLfloat *) 0;
1914
1915     if (!m_ref) {
1916         _exception = 1;
1917         _exceptionType = "java/lang/IllegalArgumentException";
1918         _exceptionMessage = "m == null";
1919         goto exit;
1920     }
1921     if (offset < 0) {
1922         _exception = 1;
1923         _exceptionType = "java/lang/IllegalArgumentException";
1924         _exceptionMessage = "offset < 0";
1925         goto exit;
1926     }
1927     _remaining = _env->GetArrayLength(m_ref) - offset;
1928     m_base = (GLfloat *)
1929         _env->GetFloatArrayElements(m_ref, (jboolean *)0);
1930     m = m_base + offset;
1931
1932     glLoadMatrixf(
1933         (GLfloat *)m
1934     );
1935
1936 exit:
1937     if (m_base) {
1938         _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
1939             JNI_ABORT);
1940     }
1941     if (_exception) {
1942         jniThrowException(_env, _exceptionType, _exceptionMessage);
1943     }
1944 }
1945
1946 /* void glLoadMatrixf ( const GLfloat *m ) */
1947 static void
1948 android_glLoadMatrixf__Ljava_nio_FloatBuffer_2
1949   (JNIEnv *_env, jobject _this, jobject m_buf) {
1950     jfloatArray _array = (jfloatArray) 0;
1951     jint _bufferOffset = (jint) 0;
1952     jint _remaining;
1953     GLfloat *m = (GLfloat *) 0;
1954
1955     m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
1956     if (m == NULL) {
1957         char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
1958         m = (GLfloat *) (_mBase + _bufferOffset);
1959     }
1960     glLoadMatrixf(
1961         (GLfloat *)m
1962     );
1963     if (_array) {
1964         _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
1965     }
1966 }
1967
1968 /* void glLoadMatrixx ( const GLfixed *m ) */
1969 static void
1970 android_glLoadMatrixx___3II
1971   (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
1972     jint _exception = 0;
1973     const char * _exceptionType = NULL;
1974     const char * _exceptionMessage = NULL;
1975     GLfixed *m_base = (GLfixed *) 0;
1976     jint _remaining;
1977     GLfixed *m = (GLfixed *) 0;
1978
1979     if (!m_ref) {
1980         _exception = 1;
1981         _exceptionType = "java/lang/IllegalArgumentException";
1982         _exceptionMessage = "m == null";
1983         goto exit;
1984     }
1985     if (offset < 0) {
1986         _exception = 1;
1987         _exceptionType = "java/lang/IllegalArgumentException";
1988         _exceptionMessage = "offset < 0";
1989         goto exit;
1990     }
1991     _remaining = _env->GetArrayLength(m_ref) - offset;
1992     m_base = (GLfixed *)
1993         _env->GetIntArrayElements(m_ref, (jboolean *)0);
1994     m = m_base + offset;
1995
1996     glLoadMatrixx(
1997         (GLfixed *)m
1998     );
1999
2000 exit:
2001     if (m_base) {
2002         _env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
2003             JNI_ABORT);
2004     }
2005     if (_exception) {
2006         jniThrowException(_env, _exceptionType, _exceptionMessage);
2007     }
2008 }
2009
2010 /* void glLoadMatrixx ( const GLfixed *m ) */
2011 static void
2012 android_glLoadMatrixx__Ljava_nio_IntBuffer_2
2013   (JNIEnv *_env, jobject _this, jobject m_buf) {
2014     jintArray _array = (jintArray) 0;
2015     jint _bufferOffset = (jint) 0;
2016     jint _remaining;
2017     GLfixed *m = (GLfixed *) 0;
2018
2019     m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2020     if (m == NULL) {
2021         char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
2022         m = (GLfixed *) (_mBase + _bufferOffset);
2023     }
2024     glLoadMatrixx(
2025         (GLfixed *)m
2026     );
2027     if (_array) {
2028         _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
2029     }
2030 }
2031
2032 /* void glLogicOp ( GLenum opcode ) */
2033 static void
2034 android_glLogicOp__I
2035   (JNIEnv *_env, jobject _this, jint opcode) {
2036     glLogicOp(
2037         (GLenum)opcode
2038     );
2039 }
2040
2041 /* void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) */
2042 static void
2043 android_glMaterialf__IIF
2044   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloat param) {
2045     glMaterialf(
2046         (GLenum)face,
2047         (GLenum)pname,
2048         (GLfloat)param
2049     );
2050 }
2051
2052 /* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
2053 static void
2054 android_glMaterialfv__II_3FI
2055   (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
2056     jint _exception = 0;
2057     const char * _exceptionType = NULL;
2058     const char * _exceptionMessage = NULL;
2059     GLfloat *params_base = (GLfloat *) 0;
2060     jint _remaining;
2061     GLfloat *params = (GLfloat *) 0;
2062
2063     if (!params_ref) {
2064         _exception = 1;
2065         _exceptionType = "java/lang/IllegalArgumentException";
2066         _exceptionMessage = "params == null";
2067         goto exit;
2068     }
2069     if (offset < 0) {
2070         _exception = 1;
2071         _exceptionType = "java/lang/IllegalArgumentException";
2072         _exceptionMessage = "offset < 0";
2073         goto exit;
2074     }
2075     _remaining = _env->GetArrayLength(params_ref) - offset;
2076     int _needed;
2077     switch (pname) {
2078 #if defined(GL_AMBIENT)
2079         case GL_AMBIENT:
2080 #endif // defined(GL_AMBIENT)
2081 #if defined(GL_DIFFUSE)
2082         case GL_DIFFUSE:
2083 #endif // defined(GL_DIFFUSE)
2084 #if defined(GL_SPECULAR)
2085         case GL_SPECULAR:
2086 #endif // defined(GL_SPECULAR)
2087 #if defined(GL_EMISSION)
2088         case GL_EMISSION:
2089 #endif // defined(GL_EMISSION)
2090 #if defined(GL_AMBIENT_AND_DIFFUSE)
2091         case GL_AMBIENT_AND_DIFFUSE:
2092 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2093             _needed = 4;
2094             break;
2095         default:
2096             _needed = 1;
2097             break;
2098     }
2099     if (_remaining < _needed) {
2100         _exception = 1;
2101         _exceptionType = "java/lang/IllegalArgumentException";
2102         _exceptionMessage = "length - offset < needed";
2103         goto exit;
2104     }
2105     params_base = (GLfloat *)
2106         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
2107     params = params_base + offset;
2108
2109     glMaterialfv(
2110         (GLenum)face,
2111         (GLenum)pname,
2112         (GLfloat *)params
2113     );
2114
2115 exit:
2116     if (params_base) {
2117         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
2118             JNI_ABORT);
2119     }
2120     if (_exception) {
2121         jniThrowException(_env, _exceptionType, _exceptionMessage);
2122     }
2123 }
2124
2125 /* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
2126 static void
2127 android_glMaterialfv__IILjava_nio_FloatBuffer_2
2128   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
2129     jint _exception = 0;
2130     const char * _exceptionType = NULL;
2131     const char * _exceptionMessage = NULL;
2132     jfloatArray _array = (jfloatArray) 0;
2133     jint _bufferOffset = (jint) 0;
2134     jint _remaining;
2135     GLfloat *params = (GLfloat *) 0;
2136
2137     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2138     int _needed;
2139     switch (pname) {
2140 #if defined(GL_AMBIENT)
2141         case GL_AMBIENT:
2142 #endif // defined(GL_AMBIENT)
2143 #if defined(GL_DIFFUSE)
2144         case GL_DIFFUSE:
2145 #endif // defined(GL_DIFFUSE)
2146 #if defined(GL_SPECULAR)
2147         case GL_SPECULAR:
2148 #endif // defined(GL_SPECULAR)
2149 #if defined(GL_EMISSION)
2150         case GL_EMISSION:
2151 #endif // defined(GL_EMISSION)
2152 #if defined(GL_AMBIENT_AND_DIFFUSE)
2153         case GL_AMBIENT_AND_DIFFUSE:
2154 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2155             _needed = 4;
2156             break;
2157         default:
2158             _needed = 1;
2159             break;
2160     }
2161     if (_remaining < _needed) {
2162         _exception = 1;
2163         _exceptionType = "java/lang/IllegalArgumentException";
2164         _exceptionMessage = "remaining() < needed";
2165         goto exit;
2166     }
2167     if (params == NULL) {
2168         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
2169         params = (GLfloat *) (_paramsBase + _bufferOffset);
2170     }
2171     glMaterialfv(
2172         (GLenum)face,
2173         (GLenum)pname,
2174         (GLfloat *)params
2175     );
2176
2177 exit:
2178     if (_array) {
2179         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
2180     }
2181     if (_exception) {
2182         jniThrowException(_env, _exceptionType, _exceptionMessage);
2183     }
2184 }
2185
2186 /* void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) */
2187 static void
2188 android_glMaterialx__III
2189   (JNIEnv *_env, jobject _this, jint face, jint pname, jint param) {
2190     glMaterialx(
2191         (GLenum)face,
2192         (GLenum)pname,
2193         (GLfixed)param
2194     );
2195 }
2196
2197 /* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
2198 static void
2199 android_glMaterialxv__II_3II
2200   (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
2201     jint _exception = 0;
2202     const char * _exceptionType = NULL;
2203     const char * _exceptionMessage = NULL;
2204     GLfixed *params_base = (GLfixed *) 0;
2205     jint _remaining;
2206     GLfixed *params = (GLfixed *) 0;
2207
2208     if (!params_ref) {
2209         _exception = 1;
2210         _exceptionType = "java/lang/IllegalArgumentException";
2211         _exceptionMessage = "params == null";
2212         goto exit;
2213     }
2214     if (offset < 0) {
2215         _exception = 1;
2216         _exceptionType = "java/lang/IllegalArgumentException";
2217         _exceptionMessage = "offset < 0";
2218         goto exit;
2219     }
2220     _remaining = _env->GetArrayLength(params_ref) - offset;
2221     int _needed;
2222     switch (pname) {
2223 #if defined(GL_AMBIENT)
2224         case GL_AMBIENT:
2225 #endif // defined(GL_AMBIENT)
2226 #if defined(GL_DIFFUSE)
2227         case GL_DIFFUSE:
2228 #endif // defined(GL_DIFFUSE)
2229 #if defined(GL_SPECULAR)
2230         case GL_SPECULAR:
2231 #endif // defined(GL_SPECULAR)
2232 #if defined(GL_EMISSION)
2233         case GL_EMISSION:
2234 #endif // defined(GL_EMISSION)
2235 #if defined(GL_AMBIENT_AND_DIFFUSE)
2236         case GL_AMBIENT_AND_DIFFUSE:
2237 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2238             _needed = 4;
2239             break;
2240         default:
2241             _needed = 1;
2242             break;
2243     }
2244     if (_remaining < _needed) {
2245         _exception = 1;
2246         _exceptionType = "java/lang/IllegalArgumentException";
2247         _exceptionMessage = "length - offset < needed";
2248         goto exit;
2249     }
2250     params_base = (GLfixed *)
2251         _env->GetIntArrayElements(params_ref, (jboolean *)0);
2252     params = params_base + offset;
2253
2254     glMaterialxv(
2255         (GLenum)face,
2256         (GLenum)pname,
2257         (GLfixed *)params
2258     );
2259
2260 exit:
2261     if (params_base) {
2262         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
2263             JNI_ABORT);
2264     }
2265     if (_exception) {
2266         jniThrowException(_env, _exceptionType, _exceptionMessage);
2267     }
2268 }
2269
2270 /* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
2271 static void
2272 android_glMaterialxv__IILjava_nio_IntBuffer_2
2273   (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
2274     jint _exception = 0;
2275     const char * _exceptionType = NULL;
2276     const char * _exceptionMessage = NULL;
2277     jintArray _array = (jintArray) 0;
2278     jint _bufferOffset = (jint) 0;
2279     jint _remaining;
2280     GLfixed *params = (GLfixed *) 0;
2281
2282     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2283     int _needed;
2284     switch (pname) {
2285 #if defined(GL_AMBIENT)
2286         case GL_AMBIENT:
2287 #endif // defined(GL_AMBIENT)
2288 #if defined(GL_DIFFUSE)
2289         case GL_DIFFUSE:
2290 #endif // defined(GL_DIFFUSE)
2291 #if defined(GL_SPECULAR)
2292         case GL_SPECULAR:
2293 #endif // defined(GL_SPECULAR)
2294 #if defined(GL_EMISSION)
2295         case GL_EMISSION:
2296 #endif // defined(GL_EMISSION)
2297 #if defined(GL_AMBIENT_AND_DIFFUSE)
2298         case GL_AMBIENT_AND_DIFFUSE:
2299 #endif // defined(GL_AMBIENT_AND_DIFFUSE)
2300             _needed = 4;
2301             break;
2302         default:
2303             _needed = 1;
2304             break;
2305     }
2306     if (_remaining < _needed) {
2307         _exception = 1;
2308         _exceptionType = "java/lang/IllegalArgumentException";
2309         _exceptionMessage = "remaining() < needed";
2310         goto exit;
2311     }
2312     if (params == NULL) {
2313         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
2314         params = (GLfixed *) (_paramsBase + _bufferOffset);
2315     }
2316     glMaterialxv(
2317         (GLenum)face,
2318         (GLenum)pname,
2319         (GLfixed *)params
2320     );
2321
2322 exit:
2323     if (_array) {
2324         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
2325     }
2326     if (_exception) {
2327         jniThrowException(_env, _exceptionType, _exceptionMessage);
2328     }
2329 }
2330
2331 /* void glMatrixMode ( GLenum mode ) */
2332 static void
2333 android_glMatrixMode__I
2334   (JNIEnv *_env, jobject _this, jint mode) {
2335     glMatrixMode(
2336         (GLenum)mode
2337     );
2338 }
2339
2340 /* void glMultMatrixf ( const GLfloat *m ) */
2341 static void
2342 android_glMultMatrixf___3FI
2343   (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
2344     jint _exception = 0;
2345     const char * _exceptionType = NULL;
2346     const char * _exceptionMessage = NULL;
2347     GLfloat *m_base = (GLfloat *) 0;
2348     jint _remaining;
2349     GLfloat *m = (GLfloat *) 0;
2350
2351     if (!m_ref) {
2352         _exception = 1;
2353         _exceptionType = "java/lang/IllegalArgumentException";
2354         _exceptionMessage = "m == null";
2355         goto exit;
2356     }
2357     if (offset < 0) {
2358         _exception = 1;
2359         _exceptionType = "java/lang/IllegalArgumentException";
2360         _exceptionMessage = "offset < 0";
2361         goto exit;
2362     }
2363     _remaining = _env->GetArrayLength(m_ref) - offset;
2364     m_base = (GLfloat *)
2365         _env->GetFloatArrayElements(m_ref, (jboolean *)0);
2366     m = m_base + offset;
2367
2368     glMultMatrixf(
2369         (GLfloat *)m
2370     );
2371
2372 exit:
2373     if (m_base) {
2374         _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
2375             JNI_ABORT);
2376     }
2377     if (_exception) {
2378         jniThrowException(_env, _exceptionType, _exceptionMessage);
2379     }
2380 }
2381
2382 /* void glMultMatrixf ( const GLfloat *m ) */
2383 static void
2384 android_glMultMatrixf__Ljava_nio_FloatBuffer_2
2385   (JNIEnv *_env, jobject _this, jobject m_buf) {
2386     jfloatArray _array = (jfloatArray) 0;
2387     jint _bufferOffset = (jint) 0;
2388     jint _remaining;
2389     GLfloat *m = (GLfloat *) 0;
2390
2391     m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2392     if (m == NULL) {
2393         char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
2394         m = (GLfloat *) (_mBase + _bufferOffset);
2395     }
2396     glMultMatrixf(
2397         (GLfloat *)m
2398     );
2399     if (_array) {
2400         _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
2401     }
2402 }
2403
2404 /* void glMultMatrixx ( const GLfixed *m ) */
2405 static void
2406 android_glMultMatrixx___3II
2407   (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
2408     jint _exception = 0;
2409     const char * _exceptionType = NULL;
2410     const char * _exceptionMessage = NULL;
2411     GLfixed *m_base = (GLfixed *) 0;
2412     jint _remaining;
2413     GLfixed *m = (GLfixed *) 0;
2414
2415     if (!m_ref) {
2416         _exception = 1;
2417         _exceptionType = "java/lang/IllegalArgumentException";
2418         _exceptionMessage = "m == null";
2419         goto exit;
2420     }
2421     if (offset < 0) {
2422         _exception = 1;
2423         _exceptionType = "java/lang/IllegalArgumentException";
2424         _exceptionMessage = "offset < 0";
2425         goto exit;
2426     }
2427     _remaining = _env->GetArrayLength(m_ref) - offset;
2428     m_base = (GLfixed *)
2429         _env->GetIntArrayElements(m_ref, (jboolean *)0);
2430     m = m_base + offset;
2431
2432     glMultMatrixx(
2433         (GLfixed *)m
2434     );
2435
2436 exit:
2437     if (m_base) {
2438         _env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
2439             JNI_ABORT);
2440     }
2441     if (_exception) {
2442         jniThrowException(_env, _exceptionType, _exceptionMessage);
2443     }
2444 }
2445
2446 /* void glMultMatrixx ( const GLfixed *m ) */
2447 static void
2448 android_glMultMatrixx__Ljava_nio_IntBuffer_2
2449   (JNIEnv *_env, jobject _this, jobject m_buf) {
2450     jintArray _array = (jintArray) 0;
2451     jint _bufferOffset = (jint) 0;
2452     jint _remaining;
2453     GLfixed *m = (GLfixed *) 0;
2454
2455     m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2456     if (m == NULL) {
2457         char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
2458         m = (GLfixed *) (_mBase + _bufferOffset);
2459     }
2460     glMultMatrixx(
2461         (GLfixed *)m
2462     );
2463     if (_array) {
2464         _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
2465     }
2466 }
2467
2468 /* void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) */
2469 static void
2470 android_glMultiTexCoord4f__IFFFF
2471   (JNIEnv *_env, jobject _this, jint target, jfloat s, jfloat t, jfloat r, jfloat q) {
2472     glMultiTexCoord4f(
2473         (GLenum)target,
2474         (GLfloat)s,
2475         (GLfloat)t,
2476         (GLfloat)r,
2477         (GLfloat)q
2478     );
2479 }
2480
2481 /* void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) */
2482 static void
2483 android_glMultiTexCoord4x__IIIII
2484   (JNIEnv *_env, jobject _this, jint target, jint s, jint t, jint r, jint q) {
2485     glMultiTexCoord4x(
2486         (GLenum)target,
2487         (GLfixed)s,
2488         (GLfixed)t,
2489         (GLfixed)r,
2490         (GLfixed)q
2491     );
2492 }
2493
2494 /* void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) */
2495 static void
2496 android_glNormal3f__FFF
2497   (JNIEnv *_env, jobject _this, jfloat nx, jfloat ny, jfloat nz) {
2498     glNormal3f(
2499         (GLfloat)nx,
2500         (GLfloat)ny,
2501         (GLfloat)nz
2502     );
2503 }
2504
2505 /* void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) */
2506 static void
2507 android_glNormal3x__III
2508   (JNIEnv *_env, jobject _this, jint nx, jint ny, jint nz) {
2509     glNormal3x(
2510         (GLfixed)nx,
2511         (GLfixed)ny,
2512         (GLfixed)nz
2513     );
2514 }
2515
2516 /* void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
2517 static void
2518 android_glNormalPointerBounds__IILjava_nio_Buffer_2I
2519   (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
2520     jarray _array = (jarray) 0;
2521     jint _bufferOffset = (jint) 0;
2522     jint _remaining;
2523     GLvoid *pointer = (GLvoid *) 0;
2524
2525     if (pointer_buf) {
2526         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2527         if ( ! pointer ) {
2528             return;
2529         }
2530     }
2531     glNormalPointerBounds(
2532         (GLenum)type,
2533         (GLsizei)stride,
2534         (GLvoid *)pointer,
2535         (GLsizei)remaining
2536     );
2537 }
2538
2539 /* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
2540 static void
2541 android_glOrthof__FFFFFF
2542   (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
2543     glOrthof(
2544         (GLfloat)left,
2545         (GLfloat)right,
2546         (GLfloat)bottom,
2547         (GLfloat)top,
2548         (GLfloat)zNear,
2549         (GLfloat)zFar
2550     );
2551 }
2552
2553 /* void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
2554 static void
2555 android_glOrthox__IIIIII
2556   (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
2557     glOrthox(
2558         (GLfixed)left,
2559         (GLfixed)right,
2560         (GLfixed)bottom,
2561         (GLfixed)top,
2562         (GLfixed)zNear,
2563         (GLfixed)zFar
2564     );
2565 }
2566
2567 /* void glPixelStorei ( GLenum pname, GLint param ) */
2568 static void
2569 android_glPixelStorei__II
2570   (JNIEnv *_env, jobject _this, jint pname, jint param) {
2571     glPixelStorei(
2572         (GLenum)pname,
2573         (GLint)param
2574     );
2575 }
2576
2577 /* void glPointSize ( GLfloat size ) */
2578 static void
2579 android_glPointSize__F
2580   (JNIEnv *_env, jobject _this, jfloat size) {
2581     glPointSize(
2582         (GLfloat)size
2583     );
2584 }
2585
2586 /* void glPointSizex ( GLfixed size ) */
2587 static void
2588 android_glPointSizex__I
2589   (JNIEnv *_env, jobject _this, jint size) {
2590     glPointSizex(
2591         (GLfixed)size
2592     );
2593 }
2594
2595 /* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
2596 static void
2597 android_glPolygonOffset__FF
2598   (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
2599     glPolygonOffset(
2600         (GLfloat)factor,
2601         (GLfloat)units
2602     );
2603 }
2604
2605 /* void glPolygonOffsetx ( GLfixed factor, GLfixed units ) */
2606 static void
2607 android_glPolygonOffsetx__II
2608   (JNIEnv *_env, jobject _this, jint factor, jint units) {
2609     glPolygonOffsetx(
2610         (GLfixed)factor,
2611         (GLfixed)units
2612     );
2613 }
2614
2615 /* void glPopMatrix ( void ) */
2616 static void
2617 android_glPopMatrix__
2618   (JNIEnv *_env, jobject _this) {
2619     glPopMatrix();
2620 }
2621
2622 /* void glPushMatrix ( void ) */
2623 static void
2624 android_glPushMatrix__
2625   (JNIEnv *_env, jobject _this) {
2626     glPushMatrix();
2627 }
2628
2629 /* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
2630 static void
2631 android_glReadPixels__IIIIIILjava_nio_Buffer_2
2632   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
2633     jarray _array = (jarray) 0;
2634     jint _bufferOffset = (jint) 0;
2635     jint _remaining;
2636     GLvoid *pixels = (GLvoid *) 0;
2637
2638     pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2639     if (pixels == NULL) {
2640         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
2641         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
2642     }
2643     glReadPixels(
2644         (GLint)x,
2645         (GLint)y,
2646         (GLsizei)width,
2647         (GLsizei)height,
2648         (GLenum)format,
2649         (GLenum)type,
2650         (GLvoid *)pixels
2651     );
2652     if (_array) {
2653         releasePointer(_env, _array, pixels, JNI_TRUE);
2654     }
2655 }
2656
2657 /* void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) */
2658 static void
2659 android_glRotatef__FFFF
2660   (JNIEnv *_env, jobject _this, jfloat angle, jfloat x, jfloat y, jfloat z) {
2661     glRotatef(
2662         (GLfloat)angle,
2663         (GLfloat)x,
2664         (GLfloat)y,
2665         (GLfloat)z
2666     );
2667 }
2668
2669 /* void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) */
2670 static void
2671 android_glRotatex__IIII
2672   (JNIEnv *_env, jobject _this, jint angle, jint x, jint y, jint z) {
2673     glRotatex(
2674         (GLfixed)angle,
2675         (GLfixed)x,
2676         (GLfixed)y,
2677         (GLfixed)z
2678     );
2679 }
2680
2681 /* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
2682 static void
2683 android_glSampleCoverage__FZ
2684   (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
2685     glSampleCoverage(
2686         (GLclampf)value,
2687         (GLboolean)invert
2688     );
2689 }
2690
2691 /* void glSampleCoveragex ( GLclampx value, GLboolean invert ) */
2692 static void
2693 android_glSampleCoveragex__IZ
2694   (JNIEnv *_env, jobject _this, jint value, jboolean invert) {
2695     glSampleCoveragex(
2696         (GLclampx)value,
2697         (GLboolean)invert
2698     );
2699 }
2700
2701 /* void glScalef ( GLfloat x, GLfloat y, GLfloat z ) */
2702 static void
2703 android_glScalef__FFF
2704   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
2705     glScalef(
2706         (GLfloat)x,
2707         (GLfloat)y,
2708         (GLfloat)z
2709     );
2710 }
2711
2712 /* void glScalex ( GLfixed x, GLfixed y, GLfixed z ) */
2713 static void
2714 android_glScalex__III
2715   (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
2716     glScalex(
2717         (GLfixed)x,
2718         (GLfixed)y,
2719         (GLfixed)z
2720     );
2721 }
2722
2723 /* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
2724 static void
2725 android_glScissor__IIII
2726   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
2727     glScissor(
2728         (GLint)x,
2729         (GLint)y,
2730         (GLsizei)width,
2731         (GLsizei)height
2732     );
2733 }
2734
2735 /* void glShadeModel ( GLenum mode ) */
2736 static void
2737 android_glShadeModel__I
2738   (JNIEnv *_env, jobject _this, jint mode) {
2739     glShadeModel(
2740         (GLenum)mode
2741     );
2742 }
2743
2744 /* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
2745 static void
2746 android_glStencilFunc__III
2747   (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
2748     glStencilFunc(
2749         (GLenum)func,
2750         (GLint)ref,
2751         (GLuint)mask
2752     );
2753 }
2754
2755 /* void glStencilMask ( GLuint mask ) */
2756 static void
2757 android_glStencilMask__I
2758   (JNIEnv *_env, jobject _this, jint mask) {
2759     glStencilMask(
2760         (GLuint)mask
2761     );
2762 }
2763
2764 /* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
2765 static void
2766 android_glStencilOp__III
2767   (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
2768     glStencilOp(
2769         (GLenum)fail,
2770         (GLenum)zfail,
2771         (GLenum)zpass
2772     );
2773 }
2774
2775 /* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
2776 static void
2777 android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
2778   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
2779     jarray _array = (jarray) 0;
2780     jint _bufferOffset = (jint) 0;
2781     jint _remaining;
2782     GLvoid *pointer = (GLvoid *) 0;
2783
2784     if (pointer_buf) {
2785         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2786         if ( ! pointer ) {
2787             return;
2788         }
2789     }
2790     glTexCoordPointerBounds(
2791         (GLint)size,
2792         (GLenum)type,
2793         (GLsizei)stride,
2794         (GLvoid *)pointer,
2795         (GLsizei)remaining
2796     );
2797 }
2798
2799 /* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
2800 static void
2801 android_glTexEnvf__IIF
2802   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
2803     glTexEnvf(
2804         (GLenum)target,
2805         (GLenum)pname,
2806         (GLfloat)param
2807     );
2808 }
2809
2810 /* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
2811 static void
2812 android_glTexEnvfv__II_3FI
2813   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
2814     jint _exception = 0;
2815     const char * _exceptionType = NULL;
2816     const char * _exceptionMessage = NULL;
2817     GLfloat *params_base = (GLfloat *) 0;
2818     jint _remaining;
2819     GLfloat *params = (GLfloat *) 0;
2820
2821     if (!params_ref) {
2822         _exception = 1;
2823         _exceptionType = "java/lang/IllegalArgumentException";
2824         _exceptionMessage = "params == null";
2825         goto exit;
2826     }
2827     if (offset < 0) {
2828         _exception = 1;
2829         _exceptionType = "java/lang/IllegalArgumentException";
2830         _exceptionMessage = "offset < 0";
2831         goto exit;
2832     }
2833     _remaining = _env->GetArrayLength(params_ref) - offset;
2834     int _needed;
2835     switch (pname) {
2836 #if defined(GL_TEXTURE_ENV_COLOR)
2837         case GL_TEXTURE_ENV_COLOR:
2838 #endif // defined(GL_TEXTURE_ENV_COLOR)
2839             _needed = 4;
2840             break;
2841         default:
2842             _needed = 1;
2843             break;
2844     }
2845     if (_remaining < _needed) {
2846         _exception = 1;
2847         _exceptionType = "java/lang/IllegalArgumentException";
2848         _exceptionMessage = "length - offset < needed";
2849         goto exit;
2850     }
2851     params_base = (GLfloat *)
2852         _env->GetFloatArrayElements(params_ref, (jboolean *)0);
2853     params = params_base + offset;
2854
2855     glTexEnvfv(
2856         (GLenum)target,
2857         (GLenum)pname,
2858         (GLfloat *)params
2859     );
2860
2861 exit:
2862     if (params_base) {
2863         _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
2864             JNI_ABORT);
2865     }
2866     if (_exception) {
2867         jniThrowException(_env, _exceptionType, _exceptionMessage);
2868     }
2869 }
2870
2871 /* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
2872 static void
2873 android_glTexEnvfv__IILjava_nio_FloatBuffer_2
2874   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
2875     jint _exception = 0;
2876     const char * _exceptionType = NULL;
2877     const char * _exceptionMessage = NULL;
2878     jfloatArray _array = (jfloatArray) 0;
2879     jint _bufferOffset = (jint) 0;
2880     jint _remaining;
2881     GLfloat *params = (GLfloat *) 0;
2882
2883     params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
2884     int _needed;
2885     switch (pname) {
2886 #if defined(GL_TEXTURE_ENV_COLOR)
2887         case GL_TEXTURE_ENV_COLOR:
2888 #endif // defined(GL_TEXTURE_ENV_COLOR)
2889             _needed = 4;
2890             break;
2891         default:
2892             _needed = 1;
2893             break;
2894     }
2895     if (_remaining < _needed) {
2896         _exception = 1;
2897         _exceptionType = "java/lang/IllegalArgumentException";
2898         _exceptionMessage = "remaining() < needed";
2899         goto exit;
2900     }
2901     if (params == NULL) {
2902         char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
2903         params = (GLfloat *) (_paramsBase + _bufferOffset);
2904     }
2905     glTexEnvfv(
2906         (GLenum)target,
2907         (GLenum)pname,
2908         (GLfloat *)params
2909     );
2910
2911 exit:
2912     if (_array) {
2913         _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
2914     }
2915     if (_exception) {
2916         jniThrowException(_env, _exceptionType, _exceptionMessage);
2917     }
2918 }
2919
2920 /* void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) */
2921 static void
2922 android_glTexEnvx__III
2923   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
2924     glTexEnvx(
2925         (GLenum)target,
2926         (GLenum)pname,
2927         (GLfixed)param
2928     );
2929 }
2930
2931 /* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
2932 static void
2933 android_glTexEnvxv__II_3II
2934   (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
2935     jint _exception = 0;
2936     const char * _exceptionType = NULL;
2937     const char * _exceptionMessage = NULL;
2938     GLfixed *params_base = (GLfixed *) 0;
2939     jint _remaining;
2940     GLfixed *params = (GLfixed *) 0;
2941
2942     if (!params_ref) {
2943         _exception = 1;
2944         _exceptionType = "java/lang/IllegalArgumentException";
2945         _exceptionMessage = "params == null";
2946         goto exit;
2947     }
2948     if (offset < 0) {
2949         _exception = 1;
2950         _exceptionType = "java/lang/IllegalArgumentException";
2951         _exceptionMessage = "offset < 0";
2952         goto exit;
2953     }
2954     _remaining = _env->GetArrayLength(params_ref) - offset;
2955     int _needed;
2956     switch (pname) {
2957 #if defined(GL_TEXTURE_ENV_COLOR)
2958         case GL_TEXTURE_ENV_COLOR:
2959 #endif // defined(GL_TEXTURE_ENV_COLOR)
2960             _needed = 4;
2961             break;
2962         default:
2963             _needed = 1;
2964             break;
2965     }
2966     if (_remaining < _needed) {
2967         _exception = 1;
2968         _exceptionType = "java/lang/IllegalArgumentException";
2969         _exceptionMessage = "length - offset < needed";
2970         goto exit;
2971     }
2972     params_base = (GLfixed *)
2973         _env->GetIntArrayElements(params_ref, (jboolean *)0);
2974     params = params_base + offset;
2975
2976     glTexEnvxv(
2977         (GLenum)target,
2978         (GLenum)pname,
2979         (GLfixed *)params
2980     );
2981
2982 exit:
2983     if (params_base) {
2984         _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
2985             JNI_ABORT);
2986     }
2987     if (_exception) {
2988         jniThrowException(_env, _exceptionType, _exceptionMessage);
2989     }
2990 }
2991
2992 /* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
2993 static void
2994 android_glTexEnvxv__IILjava_nio_IntBuffer_2
2995   (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
2996     jint _exception = 0;
2997     const char * _exceptionType = NULL;
2998     const char * _exceptionMessage = NULL;
2999     jintArray _array = (jintArray) 0;
3000     jint _bufferOffset = (jint) 0;
3001     jint _remaining;
3002     GLfixed *params = (GLfixed *) 0;
3003
3004     params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
3005     int _needed;
3006     switch (pname) {
3007 #if defined(GL_TEXTURE_ENV_COLOR)
3008         case GL_TEXTURE_ENV_COLOR:
3009 #endif // defined(GL_TEXTURE_ENV_COLOR)
3010             _needed = 4;
3011             break;
3012         default:
3013             _needed = 1;
3014             break;
3015     }
3016     if (_remaining < _needed) {
3017         _exception = 1;
3018         _exceptionType = "java/lang/IllegalArgumentException";
3019         _exceptionMessage = "remaining() < needed";
3020         goto exit;
3021     }
3022     if (params == NULL) {
3023         char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
3024         params = (GLfixed *) (_paramsBase + _bufferOffset);
3025     }
3026     glTexEnvxv(
3027         (GLenum)target,
3028         (GLenum)pname,
3029         (GLfixed *)params
3030     );
3031
3032 exit:
3033     if (_array) {
3034         _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
3035     }
3036     if (_exception) {
3037         jniThrowException(_env, _exceptionType, _exceptionMessage);
3038     }
3039 }
3040
3041 /* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
3042 static void
3043 android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
3044   (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
3045     jarray _array = (jarray) 0;
3046     jint _bufferOffset = (jint) 0;
3047     jint _remaining;
3048     GLvoid *pixels = (GLvoid *) 0;
3049
3050     if (pixels_buf) {
3051         pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
3052     }
3053     if (pixels_buf && pixels == NULL) {
3054         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3055         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
3056     }
3057     glTexImage2D(
3058         (GLenum)target,
3059         (GLint)level,
3060         (GLint)internalformat,
3061         (GLsizei)width,
3062         (GLsizei)height,
3063         (GLint)border,
3064         (GLenum)format,
3065         (GLenum)type,
3066         (GLvoid *)pixels
3067     );
3068     if (_array) {
3069         releasePointer(_env, _array, pixels, JNI_FALSE);
3070     }
3071 }
3072
3073 /* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
3074 static void
3075 android_glTexParameterf__IIF
3076   (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
3077     glTexParameterf(
3078         (GLenum)target,
3079         (GLenum)pname,
3080         (GLfloat)param
3081     );
3082 }
3083
3084 /* void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) */
3085 static void
3086 android_glTexParameterx__III
3087   (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
3088     glTexParameterx(
3089         (GLenum)target,
3090         (GLenum)pname,
3091         (GLfixed)param
3092     );
3093 }
3094
3095 /* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
3096 static void
3097 android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
3098   (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
3099     jarray _array = (jarray) 0;
3100     jint _bufferOffset = (jint) 0;
3101     jint _remaining;
3102     GLvoid *pixels = (GLvoid *) 0;
3103
3104     if (pixels_buf) {
3105         pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
3106     }
3107     if (pixels_buf && pixels == NULL) {
3108         char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
3109         pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
3110     }
3111     glTexSubImage2D(
3112         (GLenum)target,
3113         (GLint)level,
3114         (GLint)xoffset,
3115         (GLint)yoffset,
3116         (GLsizei)width,
3117         (GLsizei)height,
3118         (GLenum)format,
3119         (GLenum)type,
3120         (GLvoid *)pixels
3121     );
3122     if (_array) {
3123         releasePointer(_env, _array, pixels, JNI_FALSE);
3124     }
3125 }
3126
3127 /* void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) */
3128 static void
3129 android_glTranslatef__FFF
3130   (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
3131     glTranslatef(
3132         (GLfloat)x,
3133         (GLfloat)y,
3134         (GLfloat)z
3135     );
3136 }
3137
3138 /* void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) */
3139 static void
3140 android_glTranslatex__III
3141   (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
3142     glTranslatex(
3143         (GLfixed)x,
3144         (GLfixed)y,
3145         (GLfixed)z
3146     );
3147 }
3148
3149 /* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
3150 static void
3151 android_glVertexPointerBounds__IIILjava_nio_Buffer_2I
3152   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
3153     jarray _array = (jarray) 0;
3154     jint _bufferOffset = (jint) 0;
3155     jint _remaining;
3156     GLvoid *pointer = (GLvoid *) 0;
3157
3158     if (pointer_buf) {
3159         pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
3160         if ( ! pointer ) {
3161             return;
3162         }
3163     }
3164     glVertexPointerBounds(
3165         (GLint)size,
3166         (GLenum)type,
3167         (GLsizei)stride,
3168         (GLvoid *)pointer,
3169         (GLsizei)remaining
3170     );
3171 }
3172
3173 /* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
3174 static void
3175 android_glViewport__IIII
3176   (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
3177     glViewport(
3178         (GLint)x,
3179         (GLint)y,
3180         (GLsizei)width,
3181         (GLsizei)height
3182     );
3183 }
3184
3185 static const char *classPathName = "android/opengl/GLES10";
3186
3187 static JNINativeMethod methods[] = {
3188 {"_nativeClassInit", "()V", (void*)nativeClassInit },
3189 {"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
3190 {"glAlphaFunc", "(IF)V", (void *) android_glAlphaFunc__IF },
3191 {"glAlphaFuncx", "(II)V", (void *) android_glAlphaFuncx__II },
3192 {"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
3193 {"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
3194 {"glClear", "(I)V", (void *) android_glClear__I },
3195 {"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
3196 {"glClearColorx", "(IIII)V", (void *) android_glClearColorx__IIII },
3197 {"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
3198 {"glClearDepthx", "(I)V", (void *) android_glClearDepthx__I },
3199 {"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
3200 {"glClientActiveTexture", "(I)V", (void *) android_glClientActiveTexture__I },
3201 {"glColor4f", "(FFFF)V", (void *) android_glColor4f__FFFF },
3202 {"glColor4x", "(IIII)V", (void *) android_glColor4x__IIII },
3203 {"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
3204 {"glColorPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glColorPointerBounds__IIILjava_nio_Buffer_2I },
3205 {"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
3206 {"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
3207 {"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
3208 {"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
3209 {"glCullFace", "(I)V", (void *) android_glCullFace__I },
3210 {"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
3211 {"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
3212 {"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
3213 {"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
3214 {"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
3215 {"glDepthRangex", "(II)V", (void *) android_glDepthRangex__II },
3216 {"glDisable", "(I)V", (void *) android_glDisable__I },
3217 {"glDisableClientState", "(I)V", (void *) android_glDisableClientState__I },
3218 {"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
3219 {"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
3220 {"glEnable", "(I)V", (void *) android_glEnable__I },
3221 {"glEnableClientState", "(I)V", (void *) android_glEnableClientState__I },
3222 {"glFinish", "()V", (void *) android_glFinish__ },
3223 {"glFlush", "()V", (void *) android_glFlush__ },
3224 {"glFogf", "(IF)V", (void *) android_glFogf__IF },
3225 {"glFogfv", "(I[FI)V", (void *) android_glFogfv__I_3FI },
3226 {"glFogfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glFogfv__ILjava_nio_FloatBuffer_2 },
3227 {"glFogx", "(II)V", (void *) android_glFogx__II },
3228 {"glFogxv", "(I[II)V", (void *) android_glFogxv__I_3II },
3229 {"glFogxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glFogxv__ILjava_nio_IntBuffer_2 },
3230 {"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
3231 {"glFrustumf", "(FFFFFF)V", (void *) android_glFrustumf__FFFFFF },
3232 {"glFrustumx", "(IIIIII)V", (void *) android_glFrustumx__IIIIII },
3233 {"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
3234 {"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
3235 {"glGetError", "()I", (void *) android_glGetError__ },
3236 {"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
3237 {"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
3238 {"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
3239 {"glHint", "(II)V", (void *) android_glHint__II },
3240 {"glLightModelf", "(IF)V", (void *) android_glLightModelf__IF },
3241 {"glLightModelfv", "(I[FI)V", (void *) android_glLightModelfv__I_3FI },
3242 {"glLightModelfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glLightModelfv__ILjava_nio_FloatBuffer_2 },
3243 {"glLightModelx", "(II)V", (void *) android_glLightModelx__II },
3244 {"glLightModelxv", "(I[II)V", (void *) android_glLightModelxv__I_3II },
3245 {"glLightModelxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glLightModelxv__ILjava_nio_IntBuffer_2 },
3246 {"glLightf", "(IIF)V", (void *) android_glLightf__IIF },
3247 {"glLightfv", "(II[FI)V", (void *) android_glLightfv__II_3FI },
3248 {"glLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glLightfv__IILjava_nio_FloatBuffer_2 },
3249 {"glLightx", "(III)V", (void *) android_glLightx__III },
3250 {"glLightxv", "(II[II)V", (void *) android_glLightxv__II_3II },
3251 {"glLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glLightxv__IILjava_nio_IntBuffer_2 },
3252 {"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
3253 {"glLineWidthx", "(I)V", (void *) android_glLineWidthx__I },
3254 {"glLoadIdentity", "()V", (void *) android_glLoadIdentity__ },
3255 {"glLoadMatrixf", "([FI)V", (void *) android_glLoadMatrixf___3FI },
3256 {"glLoadMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 },
3257 {"glLoadMatrixx", "([II)V", (void *) android_glLoadMatrixx___3II },
3258 {"glLoadMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glLoadMatrixx__Ljava_nio_IntBuffer_2 },
3259 {"glLogicOp", "(I)V", (void *) android_glLogicOp__I },
3260 {"glMaterialf", "(IIF)V", (void *) android_glMaterialf__IIF },
3261 {"glMaterialfv", "(II[FI)V", (void *) android_glMaterialfv__II_3FI },
3262 {"glMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glMaterialfv__IILjava_nio_FloatBuffer_2 },
3263 {"glMaterialx", "(III)V", (void *) android_glMaterialx__III },
3264 {"glMaterialxv", "(II[II)V", (void *) android_glMaterialxv__II_3II },
3265 {"glMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glMaterialxv__IILjava_nio_IntBuffer_2 },
3266 {"glMatrixMode", "(I)V", (void *) android_glMatrixMode__I },
3267 {"glMultMatrixf", "([FI)V", (void *) android_glMultMatrixf___3FI },
3268 {"glMultMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glMultMatrixf__Ljava_nio_FloatBuffer_2 },
3269 {"glMultMatrixx", "([II)V", (void *) android_glMultMatrixx___3II },
3270 {"glMultMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glMultMatrixx__Ljava_nio_IntBuffer_2 },
3271 {"glMultiTexCoord4f", "(IFFFF)V", (void *) android_glMultiTexCoord4f__IFFFF },
3272 {"glMultiTexCoord4x", "(IIIII)V", (void *) android_glMultiTexCoord4x__IIIII },
3273 {"glNormal3f", "(FFF)V", (void *) android_glNormal3f__FFF },
3274 {"glNormal3x", "(III)V", (void *) android_glNormal3x__III },
3275 {"glNormalPointerBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glNormalPointerBounds__IILjava_nio_Buffer_2I },
3276 {"glOrthof", "(FFFFFF)V", (void *) android_glOrthof__FFFFFF },
3277 {"glOrthox", "(IIIIII)V", (void *) android_glOrthox__IIIIII },
3278 {"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
3279 {"glPointSize", "(F)V", (void *) android_glPointSize__F },
3280 {"glPointSizex", "(I)V", (void *) android_glPointSizex__I },
3281 {"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
3282 {"glPolygonOffsetx", "(II)V", (void *) android_glPolygonOffsetx__II },
3283 {"glPopMatrix", "()V", (void *) android_glPopMatrix__ },
3284 {"glPushMatrix", "()V", (void *) android_glPushMatrix__ },
3285 {"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
3286 {"glRotatef", "(FFFF)V", (void *) android_glRotatef__FFFF },
3287 {"glRotatex", "(IIII)V", (void *) android_glRotatex__IIII },
3288 {"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
3289 {"glSampleCoveragex", "(IZ)V", (void *) android_glSampleCoveragex__IZ },
3290 {"glScalef", "(FFF)V", (void *) android_glScalef__FFF },
3291 {"glScalex", "(III)V", (void *) android_glScalex__III },
3292 {"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
3293 {"glShadeModel", "(I)V", (void *) android_glShadeModel__I },
3294 {"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
3295 {"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
3296 {"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
3297 {"glTexCoordPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I },
3298 {"glTexEnvf", "(IIF)V", (void *) android_glTexEnvf__IIF },
3299 {"glTexEnvfv", "(II[FI)V", (void *) android_glTexEnvfv__II_3FI },
3300 {"glTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexEnvfv__IILjava_nio_FloatBuffer_2 },
3301 {"glTexEnvx", "(III)V", (void *) android_glTexEnvx__III },
3302 {"glTexEnvxv", "(II[II)V", (void *) android_glTexEnvxv__II_3II },
3303 {"glTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnvxv__IILjava_nio_IntBuffer_2 },
3304 {"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
3305 {"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
3306 {"glTexParameterx", "(III)V", (void *) android_glTexParameterx__III },
3307 {"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
3308 {"glTranslatef", "(FFF)V", (void *) android_glTranslatef__FFF },
3309 {"glTranslatex", "(III)V", (void *) android_glTranslatex__III },
3310 {"glVertexPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glVertexPointerBounds__IIILjava_nio_Buffer_2I },
3311 {"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
3312 };
3313
3314 int register_android_opengl_jni_GLES10(JNIEnv *_env)
3315 {
3316     int err;
3317     err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
3318     return err;
3319 }