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