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