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