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