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