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