Home | History | Annotate | Download | only in iosgl
      1 #ifdef __APPLE__
      2 #include <TargetConditionals.h>
      3 
      4 #if TARGET_OS_IPHONE
      5 #include "iosgl30.h"
      6 #include <OpenGLES/ES3/gl.h>
      7 #include <OpenGLES/ES3/glext.h>
      8 #include <stdio.h>
      9 
     10 static jclass bufferClass;
     11 static jclass byteBufferClass;
     12 static jclass charBufferClass;
     13 static jclass shortBufferClass;
     14 static jclass intBufferClass;
     15 static jclass longBufferClass;
     16 static jclass floatBufferClass;
     17 static jclass doubleBufferClass;
     18 static jclass OOMEClass;
     19 static jclass UOEClass;
     20 static jclass IAEClass;
     21 
     22 static jmethodID positionID;
     23 
     24 
     25 static void
     26 nativeClassInitBuffer(JNIEnv *_env)
     27 {
     28     jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
     29     bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
     30 
     31     byteBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/ByteBuffer"));
     32     charBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/CharBuffer"));
     33     shortBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/ShortBuffer"));
     34     intBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/IntBuffer"));
     35     longBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/LongBuffer"));
     36     floatBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/FloatBuffer"));
     37     doubleBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/DoubleBuffer"));
     38 
     39     positionID = _env->GetMethodID(bufferClass, "position","()I");
     40     if(positionID == 0) _env->ThrowNew(IAEClass, "Couldn't fetch position() method");
     41 }
     42 
     43 static void
     44 nativeClassInit(JNIEnv *_env)
     45 {
     46     nativeClassInitBuffer(_env);
     47 
     48     jclass IAEClassLocal =
     49         _env->FindClass("java/lang/IllegalArgumentException");
     50     jclass OOMEClassLocal =
     51          _env->FindClass("java/lang/OutOfMemoryError");
     52     jclass UOEClassLocal =
     53          _env->FindClass("java/lang/UnsupportedOperationException");
     54 
     55     IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
     56     OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
     57     UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
     58 }
     59 
     60 static jint getElementSizeShift(JNIEnv *_env, jobject buffer) {
     61 	if(_env->IsInstanceOf(buffer, byteBufferClass)) return 0;
     62 	if(_env->IsInstanceOf(buffer, floatBufferClass)) return 2;
     63 	if(_env->IsInstanceOf(buffer, shortBufferClass)) return 1;
     64 
     65 	if(_env->IsInstanceOf(buffer, charBufferClass)) return 1;
     66 	if(_env->IsInstanceOf(buffer, intBufferClass)) return 2;
     67 	if(_env->IsInstanceOf(buffer, longBufferClass)) return 3;
     68 	if(_env->IsInstanceOf(buffer, doubleBufferClass)) return 3;
     69 
     70 	_env->ThrowNew(IAEClass, "buffer type unkown! (Not a ByteBuffer, ShortBuffer, etc.)");
     71 	return 0;
     72 }
     73 
     74 inline jint getBufferPosition(JNIEnv *env, jobject buffer)
     75 {
     76 	jint ret = env->CallIntMethodA(buffer, positionID, 0);
     77 	return  ret;
     78 }
     79 
     80 static void *
     81 getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
     82     if (!buffer) {
     83         return NULL;
     84     }
     85     void* buf = _env->GetDirectBufferAddress(buffer);
     86     if (buf) {
     87         jint position = getBufferPosition(_env, buffer);
     88         jint elementSizeShift = getElementSizeShift(_env, buffer);
     89         buf = ((char*) buf) + (position << elementSizeShift);
     90     } else {
     91         _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
     92     }
     93     return buf;
     94 }
     95 
     96 static const char* getString( JNIEnv *env, jstring string )
     97 {
     98 	return (const char*)env->GetStringUTFChars(string, NULL);
     99 }
    100 
    101 static void releaseString( JNIEnv *env, jstring string, const char* cString )
    102 {
    103 	env->ReleaseStringUTFChars(string, cString);
    104 }
    105 
    106 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_init
    107   (JNIEnv *env, jclass)
    108 {
    109 	nativeClassInit( env );
    110 }
    111 
    112 /*
    113  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    114  * Method:    glReadBuffer
    115  * Signature: (I)V
    116  */
    117 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glReadBuffer
    118   (JNIEnv *env, jobject, jint mode) {
    119       glReadBuffer(mode);
    120 }
    121 
    122 /*
    123  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    124  * Method:    glDrawRangeElements
    125  * Signature: (IIIIILjava/nio/Buffer;)V
    126  */
    127 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawRangeElements__IIIIILjava_nio_Buffer_2
    128   (JNIEnv *env, jobject, jint mode, jint start, jint end, jint count, jint type, jobject indices) {
    129   void* dataPtr = getDirectBufferPointer( env, indices );
    130   glDrawRangeElements(mode, start, end, count, type, dataPtr);
    131 }
    132 
    133 /*
    134  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    135  * Method:    glDrawRangeElements
    136  * Signature: (IIIIII)V
    137  */
    138 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawRangeElements__IIIIII
    139   (JNIEnv *env, jobject, jint mode, jint start, jint end, jint count, jint type, jint offset) {
    140     glDrawRangeElements(mode, start, end, count, type, (void*)offset);
    141 }
    142 
    143 /*
    144  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    145  * Method:    glTexImage3D
    146  * Signature: (IIIIIIIIILjava/nio/Buffer;)V
    147  */
    148 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2
    149   (JNIEnv *env, jobject, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jobject pixels) {
    150     void* dataPtr = getDirectBufferPointer( env, pixels );
    151     glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, dataPtr);
    152 }
    153 
    154 /*
    155  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    156  * Method:    glTexImage3D
    157  * Signature: (IIIIIIIIII)V
    158  */
    159 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexImage3D__IIIIIIIIII
    160   (JNIEnv *env, jobject, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jint offset) {
    161     glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (void*)offset);
    162 }
    163 
    164 /*
    165  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    166  * Method:    glTexSubImage3D
    167  * Signature: (IIIIIIIIIILjava/nio/Buffer;)V
    168  */
    169 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2
    170   (JNIEnv *env, jobject, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jobject pixels) {
    171     void* dataPtr = getDirectBufferPointer( env, pixels );
    172     glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, dataPtr);
    173 }
    174 
    175 /*
    176  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    177  * Method:    glTexSubImage3D
    178  * Signature: (IIIIIIIIIII)V
    179  */
    180 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexSubImage3D__IIIIIIIIIII
    181   (JNIEnv *env, jobject, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jint offset) {
    182     glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (void*)offset);
    183 }
    184 
    185 /*
    186  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    187  * Method:    glCopyTexSubImage3D
    188  * Signature: (IIIIIIIII)V
    189  */
    190 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glCopyTexSubImage3D
    191   (JNIEnv *env, jobject, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) {
    192     glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
    193 }
    194 
    195 /*
    196  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    197  * Method:    glGenQueries
    198  * Signature: (I[II)V
    199  */
    200 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenQueries__I_3II
    201   (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) {
    202     int* v = (int*)env->GetPrimitiveArrayCritical(ids, 0);
    203     glGenQueries(n, (GLuint*)&v[offset]);
    204     env->ReleasePrimitiveArrayCritical(ids, v, 0);
    205 }
    206 
    207 /*
    208  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    209  * Method:    glGenQueries
    210  * Signature: (ILjava/nio/IntBuffer;)V
    211  */
    212 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenQueries__ILjava_nio_IntBuffer_2
    213   (JNIEnv *env, jobject, jint n, jobject ids) {
    214     void* dataPtr = getDirectBufferPointer( env, ids );
    215     glGenQueries(n, (GLuint*)dataPtr);
    216 }
    217 
    218 /*
    219  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    220  * Method:    glDeleteQueries
    221  * Signature: (I[II)V
    222  */
    223 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteQueries__I_3II
    224   (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) {
    225     void* dataPtr = getDirectBufferPointer( env, ids );
    226     glDeleteQueries(n, (GLuint*)dataPtr);
    227 }
    228 
    229 /*
    230  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    231  * Method:    glDeleteQueries
    232  * Signature: (ILjava/nio/IntBuffer;)V
    233  */
    234 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteQueries__ILjava_nio_IntBuffer_2
    235   (JNIEnv *env, jobject, jint n, jobject ids) {
    236     void* dataPtr = getDirectBufferPointer( env, ids );
    237     glDeleteQueries(n, (GLuint*)dataPtr);
    238 }
    239 
    240 /*
    241  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    242  * Method:    glIsQuery
    243  * Signature: (I)Z
    244  */
    245 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsQuery
    246   (JNIEnv *env, jobject, jint id) {
    247   return glIsQuery(id);
    248 }
    249 
    250 /*
    251  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    252  * Method:    glBeginQuery
    253  * Signature: (II)V
    254  */
    255 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBeginQuery
    256   (JNIEnv *env, jobject, jint target, jint id) {
    257     glBeginQuery(target, id);
    258 }
    259 
    260 /*
    261  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    262  * Method:    glEndQuery
    263  * Signature: (I)V
    264  */
    265 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glEndQuery
    266   (JNIEnv *env, jobject, jint target) {
    267     glEndQuery(target);
    268 }
    269 
    270 /*
    271  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    272  * Method:    glGetQueryiv
    273  * Signature: (IILjava/nio/IntBuffer;)V
    274  */
    275 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetQueryiv
    276   (JNIEnv *env, jobject, jint target, jint pname, jobject params) {
    277     void* dataPtr = getDirectBufferPointer( env, params );
    278     glGetQueryiv(target, pname, (GLint*)dataPtr);
    279 }
    280 
    281 /*
    282  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    283  * Method:    glGetQueryObjectuiv
    284  * Signature: (IILjava/nio/IntBuffer;)V
    285  */
    286 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetQueryObjectuiv
    287   (JNIEnv *env, jobject, jint target, jint pname, jobject params) {
    288     void* dataPtr = getDirectBufferPointer( env, params );
    289     glGetQueryObjectuiv(target, pname, (GLuint*)dataPtr);
    290 }
    291 
    292 /*
    293  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    294  * Method:    glUnmapBuffer
    295  * Signature: (I)Z
    296  */
    297 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUnmapBuffer
    298   (JNIEnv *env, jobject, jint target) {
    299     return glUnmapBuffer(target);
    300 }
    301 
    302 /*
    303  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    304  * Method:    glGetBufferPointerv
    305  * Signature: (II)Ljava/nio/Buffer;
    306  */
    307 JNIEXPORT jobject JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetBufferPointerv
    308   (JNIEnv *env, jobject, jint target, jint pname) {
    309 //FIXME glGetBufferPointerv (GLenum target, GLenum pname, void **params);
    310     env->ThrowNew(IAEClass, "Unsupported method");
    311 }
    312 
    313 /*
    314  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    315  * Method:    glDrawBuffers
    316  * Signature: (ILjava/nio/IntBuffer;)V
    317  */
    318 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawBuffers
    319   (JNIEnv *env, jobject, jint n, jobject bufs) {
    320     void* dataPtr = getDirectBufferPointer( env, bufs );
    321     glDrawBuffers(n, (GLenum*)dataPtr);
    322 }
    323 
    324 /*
    325  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    326  * Method:    glUniformMatrix2x3fv
    327  * Signature: (IIZLjava/nio/FloatBuffer;)V
    328  */
    329 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix2x3fv
    330   (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) {
    331     void* dataPtr = getDirectBufferPointer( env, value );
    332     glUniformMatrix2x3fv(location, count, transpose, (GLfloat*)dataPtr);
    333 }
    334 
    335 /*
    336  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    337  * Method:    glUniformMatrix3x2fv
    338  * Signature: (IIZLjava/nio/FloatBuffer;)V
    339  */
    340 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix3x2fv
    341   (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) {
    342     void* dataPtr = getDirectBufferPointer( env, value );
    343     glUniformMatrix3x2fv(location, count, transpose, (GLfloat*)dataPtr);
    344 }
    345 
    346 /*
    347  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    348  * Method:    glUniformMatrix2x4fv
    349  * Signature: (IIZLjava/nio/FloatBuffer;)V
    350  */
    351 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix2x4fv
    352   (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) {
    353     void* dataPtr = getDirectBufferPointer( env, value );
    354     glUniformMatrix2x4fv(location, count, transpose, (GLfloat*)dataPtr);
    355 }
    356 
    357 /*
    358  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    359  * Method:    glUniformMatrix4x2fv
    360  * Signature: (IIZLjava/nio/FloatBuffer;)V
    361  */
    362 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix4x2fv
    363   (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) {
    364     void* dataPtr = getDirectBufferPointer( env, value );
    365     glUniformMatrix4x2fv(location, count, transpose, (GLfloat*)dataPtr);
    366 }
    367 
    368 /*
    369  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    370  * Method:    glUniformMatrix3x4fv
    371  * Signature: (IIZLjava/nio/FloatBuffer;)V
    372  */
    373 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix3x4fv
    374   (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) {
    375     void* dataPtr = getDirectBufferPointer( env, value );
    376     glUniformMatrix3x4fv(location, count, transpose, (GLfloat*)dataPtr);
    377 }
    378 
    379 /*
    380  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    381  * Method:    glUniformMatrix4x3fv
    382  * Signature: (IIZLjava/nio/FloatBuffer;)V
    383  */
    384 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix4x3fv
    385   (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) {
    386     void* dataPtr = getDirectBufferPointer( env, value );
    387     glUniformMatrix4x3fv(location, count, transpose, (GLfloat*)dataPtr);
    388 }
    389 
    390 /*
    391  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    392  * Method:    glBlitFramebuffer
    393  * Signature: (IIIIIIIIII)V
    394  */
    395 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBlitFramebuffer
    396   (JNIEnv *env, jobject, jint srcX0, jint srcY0, jint srcX1, jint srcY1, jint dstX0, jint dstY0, jint dstX1, jint dstY1, jint mask, jint filter) {
    397     glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
    398 }
    399 
    400 /*
    401  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    402  * Method:    glRenderbufferStorageMultisample
    403  * Signature: (IIIII)V
    404  */
    405 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glRenderbufferStorageMultisample
    406   (JNIEnv *env, jobject, jint target, jint samples, jint internalformat, jint width, jint height) {
    407     glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
    408 }
    409 
    410 /*
    411  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    412  * Method:    glFramebufferTextureLayer
    413  * Signature: (IIIII)V
    414  */
    415 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glFramebufferTextureLayer
    416   (JNIEnv *env, jobject, jint target, jint attachment, jint texture, jint level, jint layer) {
    417     glFramebufferTextureLayer(target, attachment, texture, level, layer);
    418 }
    419 
    420 /*
    421  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    422  * Method:    glFlushMappedBufferRange
    423  * Signature: (III)V
    424  */
    425 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glFlushMappedBufferRange
    426   (JNIEnv *env, jobject, jint target, jint offset, jint length) {
    427     glFlushMappedBufferRange(target, offset, length);
    428 }
    429 
    430 /*
    431  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    432  * Method:    glBindVertexArray
    433  * Signature: (I)V
    434  */
    435 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindVertexArray
    436   (JNIEnv *env, jobject, jint array) {
    437     glBindVertexArray(array);
    438 }
    439 
    440 /*
    441  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    442  * Method:    glDeleteVertexArrays
    443  * Signature: (I[II)V
    444  */
    445 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteVertexArrays__I_3II
    446   (JNIEnv *env, jobject, jint n, jintArray arrays, jint offset) {
    447     int* v = (int*)env->GetPrimitiveArrayCritical(arrays, 0);
    448     glDeleteVertexArrays(n, (GLuint*)&v[offset]);
    449     env->ReleasePrimitiveArrayCritical(arrays, v, 0);
    450 }
    451 
    452 /*
    453  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    454  * Method:    glDeleteVertexArrays
    455  * Signature: (ILjava/nio/IntBuffer;)V
    456  */
    457 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteVertexArrays__ILjava_nio_IntBuffer_2
    458   (JNIEnv *env, jobject, jint n, jobject arrays) {
    459     void* dataPtr = getDirectBufferPointer( env, arrays );
    460     glDeleteVertexArrays(n, (GLuint*)dataPtr);
    461 }
    462 
    463 /*
    464  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    465  * Method:    glGenVertexArrays
    466  * Signature: (I[II)V
    467  */
    468 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenVertexArrays__I_3II
    469   (JNIEnv *env, jobject, jint n, jintArray arrays, jint offset) {
    470     int* v = (int*)env->GetPrimitiveArrayCritical(arrays, 0);
    471     glGenVertexArrays(n, (GLuint*)&v[offset]);
    472     env->ReleasePrimitiveArrayCritical(arrays, v, 0);
    473 }
    474 
    475 /*
    476  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    477  * Method:    glGenVertexArrays
    478  * Signature: (ILjava/nio/IntBuffer;)V
    479  */
    480 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenVertexArrays__ILjava_nio_IntBuffer_2
    481   (JNIEnv *env, jobject, jint n, jobject arrays) {
    482     void* dataPtr = getDirectBufferPointer( env, arrays );
    483     glGenVertexArrays(n, (GLuint*)dataPtr);
    484 }
    485 
    486 /*
    487  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    488  * Method:    glIsVertexArray
    489  * Signature: (I)Z
    490  */
    491 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsVertexArray
    492   (JNIEnv *env, jobject, jint array) {
    493     return glIsVertexArray(array);
    494 }
    495 
    496 /*
    497  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    498  * Method:    glBeginTransformFeedback
    499  * Signature: (I)V
    500  */
    501 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBeginTransformFeedback
    502   (JNIEnv *env, jobject, jint primitiveMode) {
    503     glBeginTransformFeedback(primitiveMode);
    504 }
    505 
    506 /*
    507  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    508  * Method:    glEndTransformFeedback
    509  * Signature: ()V
    510  */
    511 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glEndTransformFeedback
    512   (JNIEnv *env, jobject) {
    513     glEndTransformFeedback();
    514 }
    515 
    516 /*
    517  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    518  * Method:    glBindBufferRange
    519  * Signature: (IIIII)V
    520  */
    521 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindBufferRange
    522   (JNIEnv *env, jobject, jint target, jint index, jint buffer, jint offset, jint size) {
    523     glBindBufferRange(target, index, buffer, offset, size);
    524 }
    525 
    526 /*
    527  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    528  * Method:    glBindBufferBase
    529  * Signature: (III)V
    530  */
    531 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindBufferBase
    532   (JNIEnv *env, jobject, jint target, jint index, jint buffer) {
    533     glBindBufferBase(target, index, buffer);
    534 }
    535 
    536 /*
    537  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    538  * Method:    glTransformFeedbackVaryings
    539  * Signature: (I[Ljava/lang/String;I)V
    540  */
    541 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTransformFeedbackVaryings
    542   (JNIEnv *env, jobject, jint program, jobjectArray varyings, jint buffermode) {
    543 //FIXME: convert String[] to char**
    544     env->ThrowNew(IAEClass, "Unsupported method");
    545 }
    546 
    547 /*
    548  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    549  * Method:    glVertexAttribIPointer
    550  * Signature: (IIIII)V
    551  */
    552 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribIPointer
    553   (JNIEnv *env, jobject, jint index, jint size, jint type, jint stride, jint offset) {
    554     glVertexAttribIPointer(index, size, type, stride, (void*)offset);
    555 }
    556 
    557 /*
    558  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    559  * Method:    glGetVertexAttribIiv
    560  * Signature: (IILjava/nio/IntBuffer;)V
    561  */
    562 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetVertexAttribIiv
    563   (JNIEnv *env, jobject, jint index, jint pname, jobject params) {
    564     void* dataPtr = getDirectBufferPointer( env, params );
    565     glGetVertexAttribIiv(index, pname, (GLint*)dataPtr);
    566 }
    567 
    568 /*
    569  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    570  * Method:    glGetVertexAttribIuiv
    571  * Signature: (IILjava/nio/IntBuffer;)V
    572  */
    573 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetVertexAttribIuiv
    574   (JNIEnv *env, jobject, jint index, jint pname, jobject params) {
    575     void* dataPtr = getDirectBufferPointer( env, params );
    576     glGetVertexAttribIuiv(index, pname, (GLuint*)dataPtr);
    577 }
    578 
    579 /*
    580  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    581  * Method:    glVertexAttribI4i
    582  * Signature: (IIIII)V
    583  */
    584 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribI4i
    585   (JNIEnv *env, jobject, jint index, jint x, jint y, jint z, jint w) {
    586     glVertexAttribI4i(index, x, y, z, w);
    587 }
    588 
    589 /*
    590  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    591  * Method:    glVertexAttribI4ui
    592  * Signature: (IIIII)V
    593  */
    594 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribI4ui
    595   (JNIEnv *env, jobject, jint index, jint x, jint y, jint z, jint w) {
    596     glVertexAttribI4ui(index, x, y, z, w);
    597 }
    598 
    599 /*
    600  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    601  * Method:    glGetUniformuiv
    602  * Signature: (IILjava/nio/IntBuffer;)V
    603  */
    604 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetUniformuiv
    605   (JNIEnv *env, jobject, jint program, jint location, jobject params) {
    606     void* dataPtr = getDirectBufferPointer( env, params );
    607     glGetUniformuiv(program, location, (GLuint*)dataPtr);
    608 }
    609 
    610 /*
    611  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    612  * Method:    glGetFragDataLocation
    613  * Signature: (ILjava/lang/String;)I
    614  */
    615 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetFragDataLocation
    616   (JNIEnv *env, jobject, jint program, jstring name) {
    617     const char* cname = getString( env, name );
    618     int loc = glGetFragDataLocation(program, cname);
    619     releaseString( env, name, cname );
    620 }
    621 
    622 /*
    623  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    624  * Method:    glUniform1uiv
    625  * Signature: (IILjava/nio/IntBuffer;)V
    626  */
    627 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniform1uiv
    628   (JNIEnv *env, jobject, jint location, jint count, jobject value) {
    629     void* dataPtr = getDirectBufferPointer( env, value );
    630     glUniform1uiv(location, count, (GLuint*)dataPtr);
    631 }
    632 
    633 /*
    634  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    635  * Method:    glUniform3uiv
    636  * Signature: (IILjava/nio/IntBuffer;)V
    637  */
    638 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniform3uiv
    639   (JNIEnv *env, jobject, jint location, jint count, jobject value) {
    640     void* dataPtr = getDirectBufferPointer( env, value );
    641     glUniform3uiv(location, count, (GLuint*)dataPtr);
    642 }
    643 
    644 /*
    645  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    646  * Method:    glUniform4uiv
    647  * Signature: (IILjava/nio/IntBuffer;)V
    648  */
    649 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniform4uiv
    650   (JNIEnv *env, jobject, jint location, jint count, jobject value) {
    651     void* dataPtr = getDirectBufferPointer( env, value );
    652     glUniform4uiv(location, count, (GLuint*)dataPtr);
    653 }
    654 
    655 /*
    656  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    657  * Method:    glClearBufferiv
    658  * Signature: (IILjava/nio/IntBuffer;)V
    659  */
    660 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferiv
    661   (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jobject value) {
    662     void* dataPtr = getDirectBufferPointer( env, value );
    663     glClearBufferiv(buffer, drawbuffer, (GLint*)dataPtr);
    664 }
    665 
    666 /*
    667  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    668  * Method:    glClearBufferuiv
    669  * Signature: (IILjava/nio/IntBuffer;)V
    670  */
    671 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferuiv
    672   (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jobject value) {
    673     void* dataPtr = getDirectBufferPointer( env, value );
    674     glClearBufferuiv(buffer, drawbuffer, (GLuint*)dataPtr);
    675 }
    676 
    677 /*
    678  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    679  * Method:    glClearBufferfv
    680  * Signature: (IILjava/nio/FloatBuffer;)V
    681  */
    682 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferfv
    683   (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jobject value) {
    684     void* dataPtr = getDirectBufferPointer( env, value );
    685     glClearBufferfv(buffer, drawbuffer, (GLfloat*)dataPtr);
    686 }
    687 
    688 /*
    689  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    690  * Method:    glClearBufferfi
    691  * Signature: (IIFI)V
    692  */
    693 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferfi
    694   (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jfloat depth, jint stencil) {
    695     glClearBufferfi(buffer, drawbuffer, depth, stencil);
    696 }
    697 
    698 /*
    699  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    700  * Method:    glGetStringi
    701  * Signature: (II)Ljava/lang/String;
    702  */
    703 JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetStringi
    704   (JNIEnv *env, jobject, jint name, jint index) {
    705     return env->NewStringUTF((const char *)glGetStringi(name, index));
    706 }
    707 
    708 /*
    709  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    710  * Method:    glCopyBufferSubData
    711  * Signature: (IIIII)V
    712  */
    713 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glCopyBufferSubData
    714   (JNIEnv *env, jobject, jint readTarget, jint writeTarget, jint readOffset, jint writeOffset, jint size) {
    715     glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
    716 }
    717 
    718 /*
    719  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    720  * Method:    glGetUniformIndices
    721  * Signature: (I[Ljava/lang/String;Ljava/nio/IntBuffer;)V
    722  */
    723 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetUniformIndices
    724   (JNIEnv *env, jobject, jint, jobjectArray, jobject) {
    725 //FIXME: glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
    726     env->ThrowNew(IAEClass, "Unsupported method");
    727 }
    728 
    729 /*
    730  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    731  * Method:    glGetActiveUniformsiv
    732  * Signature: (IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V
    733  */
    734 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformsiv
    735   (JNIEnv *env, jobject, jint program, jint uniformCount, jobject indices, jint pname, jobject params) {
    736     void* indicesPtr = getDirectBufferPointer( env, indices );
    737     void* paramsPtr = getDirectBufferPointer( env, params );
    738     glGetActiveUniformsiv(program, uniformCount, (GLuint*)indicesPtr, pname, (GLint*)paramsPtr);
    739 }
    740 
    741 /*
    742  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    743  * Method:    glGetUniformBlockIndex
    744  * Signature: (ILjava/lang/String;)I
    745  */
    746 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetUniformBlockIndex
    747   (JNIEnv *env, jobject, jint program, jstring uniformBlockName) {
    748     const char* cname = getString( env, uniformBlockName );
    749     int loc = glGetUniformBlockIndex(program, cname);
    750     releaseString( env, uniformBlockName, cname );
    751     return loc;
    752 }
    753 
    754 /*
    755  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    756  * Method:    glGetActiveUniformBlockiv
    757  * Signature: (IIILjava/nio/IntBuffer;)V
    758  */
    759 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformBlockiv
    760   (JNIEnv *env, jobject, jint program, jint uniformBlockIndex, jint pname, jobject params) {
    761     void* dataPtr = getDirectBufferPointer( env, params );
    762     glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, (GLint*)dataPtr);
    763 }
    764 
    765 /*
    766  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    767  * Method:    glGetActiveUniformBlockName
    768  * Signature: (IILjava/nio/Buffer;Ljava/nio/Buffer;)V
    769  */
    770 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformBlockName__IILjava_nio_Buffer_2Ljava_nio_Buffer_2
    771   (JNIEnv *env, jobject, jint, jint, jobject, jobject) {
    772 //FIXME: glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
    773     env->ThrowNew(IAEClass, "Unsupported method");
    774 }
    775 
    776 /*
    777  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    778  * Method:    glGetActiveUniformBlockName
    779  * Signature: (II)Ljava/lang/String;
    780  */
    781 JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformBlockName__II
    782   (JNIEnv *env, jobject, jint, jint) {
    783 //FIXME: glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
    784     env->ThrowNew(IAEClass, "Unsupported method");
    785 }
    786 
    787 /*
    788  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    789  * Method:    glUniformBlockBinding
    790  * Signature: (III)V
    791  */
    792 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformBlockBinding
    793   (JNIEnv *env, jobject, jint program, jint uniformBlockIndex, jint uniformBlockBinding) {
    794     glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
    795 }
    796 
    797 /*
    798  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    799  * Method:    glDrawArraysInstanced
    800  * Signature: (IIII)V
    801  */
    802 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawArraysInstanced
    803   (JNIEnv *env, jobject, jint mode, jint first, jint count, jint instancecount) {
    804     glDrawArraysInstanced(mode, first, count, instancecount);
    805 }
    806 
    807 /*
    808  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    809  * Method:    glDrawElementsInstanced
    810  * Signature: (IIIII)V
    811  */
    812 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawElementsInstanced
    813   (JNIEnv *env, jobject, jint mode, jint count, jint type, jint indicesOffset, jint instancecount) {
    814     glDrawElementsInstanced(mode, count, type, (GLvoid*)indicesOffset, instancecount);
    815 }
    816 
    817 /*
    818  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    819  * Method:    glGetInteger64v
    820  * Signature: (ILjava/nio/LongBuffer;)V
    821  */
    822 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetInteger64v
    823   (JNIEnv *env, jobject, jint pname, jobject data) {
    824     void* dataPtr = getDirectBufferPointer( env, data );
    825     glGetInteger64v(pname, (GLint64*)dataPtr);
    826 }
    827 
    828 /*
    829  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    830  * Method:    glGetBufferParameteri64v
    831  * Signature: (IILjava/nio/LongBuffer;)V
    832  */
    833 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetBufferParameteri64v
    834   (JNIEnv *env, jobject, jint target, jint pname, jobject params) {
    835     void* dataPtr = getDirectBufferPointer( env, params );
    836     glGetBufferParameteri64v(target, pname, (GLint64*)dataPtr);
    837 }
    838 
    839 /*
    840  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    841  * Method:    glGenSamplers
    842  * Signature: (I[II)V
    843  */
    844 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenSamplers__I_3II
    845   (JNIEnv *env, jobject, jint count, jintArray samplers, jint offset) {
    846     int* v = (int*)env->GetPrimitiveArrayCritical(samplers, 0);
    847     glGenSamplers(count, (GLuint*)&v[offset]);
    848     env->ReleasePrimitiveArrayCritical(samplers, v, 0);
    849 }
    850 
    851 /*
    852  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    853  * Method:    glGenSamplers
    854  * Signature: (ILjava/nio/IntBuffer;)V
    855  */
    856 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenSamplers__ILjava_nio_IntBuffer_2
    857   (JNIEnv *env, jobject, jint count, jobject samplers) {
    858     void* dataPtr = getDirectBufferPointer( env, samplers );
    859     glGenSamplers(count, (GLuint*)dataPtr);
    860 }
    861 
    862 /*
    863  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    864  * Method:    glDeleteSamplers
    865  * Signature: (I[II)V
    866  */
    867 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteSamplers__I_3II
    868   (JNIEnv *env, jobject, jint count, jintArray samplers, jint offset) {
    869     int* v = (int*)env->GetPrimitiveArrayCritical(samplers, 0);
    870     glDeleteSamplers(count, (GLuint*)&v[offset]);
    871     env->ReleasePrimitiveArrayCritical(samplers, v, 0);
    872 }
    873 
    874 /*
    875  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    876  * Method:    glDeleteSamplers
    877  * Signature: (ILjava/nio/IntBuffer;)V
    878  */
    879 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteSamplers__ILjava_nio_IntBuffer_2
    880   (JNIEnv *env, jobject, jint count, jobject samplers) {
    881     void* dataPtr = getDirectBufferPointer( env, samplers );
    882     glDeleteSamplers(count, (GLuint*)dataPtr);
    883 }
    884 
    885 /*
    886  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    887  * Method:    glIsSampler
    888  * Signature: (I)Z
    889  */
    890 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsSampler
    891   (JNIEnv *env, jobject, jint sampler) {
    892     return glIsSampler(sampler);
    893 }
    894 
    895 /*
    896  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    897  * Method:    glBindSampler
    898  * Signature: (II)V
    899  */
    900 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindSampler
    901   (JNIEnv *env, jobject, jint unit, jint sampler) {
    902     glBindSampler(unit, sampler);
    903 }
    904 
    905 /*
    906  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    907  * Method:    glSamplerParameteri
    908  * Signature: (III)V
    909  */
    910 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameteri
    911   (JNIEnv *env, jobject, jint sampler, jint pname, jint param) {
    912     glSamplerParameteri(sampler, pname, param);
    913 }
    914 
    915 /*
    916  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    917  * Method:    glSamplerParameteriv
    918  * Signature: (IILjava/nio/IntBuffer;)V
    919  */
    920 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameteriv
    921   (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) {
    922     void* dataPtr = getDirectBufferPointer( env, params );
    923     glSamplerParameteriv(sampler, pname, (GLint*)dataPtr);
    924 }
    925 
    926 /*
    927  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    928  * Method:    glSamplerParameterf
    929  * Signature: (IIF)V
    930  */
    931 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameterf
    932   (JNIEnv *env, jobject, jint sampler, jint pname, jfloat param) {
    933     glSamplerParameterf(sampler, pname, param);
    934 }
    935 
    936 /*
    937  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    938  * Method:    glSamplerParameterfv
    939  * Signature: (IILjava/nio/FloatBuffer;)V
    940  */
    941 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameterfv
    942   (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) {
    943     void* dataPtr = getDirectBufferPointer( env, params );
    944     glSamplerParameterfv(sampler, pname, (GLfloat*)dataPtr);
    945 }
    946 
    947 /*
    948  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    949  * Method:    glGetSamplerParameteriv
    950  * Signature: (IILjava/nio/IntBuffer;)V
    951  */
    952 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetSamplerParameteriv
    953   (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) {
    954     void* dataPtr = getDirectBufferPointer( env, params );
    955     glGetSamplerParameteriv(sampler, pname, (GLint*)dataPtr);
    956 }
    957 
    958 /*
    959  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    960  * Method:    glGetSamplerParameterfv
    961  * Signature: (IILjava/nio/FloatBuffer;)V
    962  */
    963 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetSamplerParameterfv
    964   (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) {
    965     void* dataPtr = getDirectBufferPointer( env, params );
    966     glGetSamplerParameterfv(sampler, pname, (GLfloat*)dataPtr);
    967 }
    968 
    969 /*
    970  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    971  * Method:    glVertexAttribDivisor
    972  * Signature: (II)V
    973  */
    974 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribDivisor
    975   (JNIEnv *env, jobject, jint index, jint divisor) {
    976     glVertexAttribDivisor(index, divisor);
    977 }
    978 
    979 /*
    980  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    981  * Method:    glBindTransformFeedback
    982  * Signature: (II)V
    983  */
    984 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindTransformFeedback
    985   (JNIEnv *env, jobject, jint target, jint id) {
    986     glBindTransformFeedback(target, id);
    987 }
    988 
    989 /*
    990  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
    991  * Method:    glDeleteTransformFeedbacks
    992  * Signature: (I[II)V
    993  */
    994 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteTransformFeedbacks__I_3II
    995   (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) {
    996     int* v = (int*)env->GetPrimitiveArrayCritical(ids, 0);
    997     glDeleteTransformFeedbacks(n, (GLuint*)&v[offset]);
    998     env->ReleasePrimitiveArrayCritical(ids, v, 0);
    999 }
   1000 
   1001 /*
   1002  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1003  * Method:    glDeleteTransformFeedbacks
   1004  * Signature: (ILjava/nio/IntBuffer;)V
   1005  */
   1006 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2
   1007   (JNIEnv *env, jobject, jint n, jobject ids) {
   1008     void* dataPtr = getDirectBufferPointer( env, ids );
   1009     glDeleteTransformFeedbacks(n, (GLuint*)dataPtr);
   1010 }
   1011 
   1012 /*
   1013  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1014  * Method:    glGenTransformFeedbacks
   1015  * Signature: (I[II)V
   1016  */
   1017 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenTransformFeedbacks__I_3II
   1018   (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) {
   1019     int* v = (int*)env->GetPrimitiveArrayCritical(ids, 0);
   1020     glGenTransformFeedbacks(n, (GLuint*)&v[offset]);
   1021     env->ReleasePrimitiveArrayCritical(ids, v, 0);
   1022 }
   1023 
   1024 /*
   1025  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1026  * Method:    glGenTransformFeedbacks
   1027  * Signature: (ILjava/nio/IntBuffer;)V
   1028  */
   1029 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2
   1030   (JNIEnv *env, jobject, jint n, jobject ids) {
   1031     void* dataPtr = getDirectBufferPointer( env, ids );
   1032     glGenTransformFeedbacks(n, (GLuint*)dataPtr);
   1033 }
   1034 
   1035 /*
   1036  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1037  * Method:    glIsTransformFeedback
   1038  * Signature: (I)Z
   1039  */
   1040 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsTransformFeedback
   1041   (JNIEnv *env, jobject, jint id) {
   1042     return glIsTransformFeedback(id);
   1043 }
   1044 
   1045 /*
   1046  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1047  * Method:    glPauseTransformFeedback
   1048  * Signature: ()V
   1049  */
   1050 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glPauseTransformFeedback
   1051   (JNIEnv *env, jobject) {
   1052     glPauseTransformFeedback();
   1053 }
   1054 /*
   1055  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1056  * Method:    glResumeTransformFeedback
   1057  * Signature: ()V
   1058  */
   1059 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glResumeTransformFeedback
   1060   (JNIEnv *env, jobject) {
   1061     glResumeTransformFeedback();
   1062 }
   1063 
   1064 /*
   1065  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1066  * Method:    glProgramParameteri
   1067  * Signature: (III)V
   1068  */
   1069 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glProgramParameteri
   1070   (JNIEnv *env, jobject, jint program, jint pname, jint value) {
   1071     glProgramParameteri(program, pname, value);
   1072 }
   1073 
   1074 /*
   1075  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1076  * Method:    glInvalidateFramebuffer
   1077  * Signature: (IILjava/nio/IntBuffer;)V
   1078  */
   1079 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glInvalidateFramebuffer
   1080   (JNIEnv *env, jobject, jint target, jint numAttachments, jobject attachments) {
   1081     void* dataPtr = getDirectBufferPointer( env, attachments );
   1082     glInvalidateFramebuffer(target, numAttachments, (GLenum*)dataPtr);
   1083 }
   1084 
   1085 /*
   1086  * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES30
   1087  * Method:    glInvalidateSubFramebuffer
   1088  * Signature: (IILjava/nio/IntBuffer;IIII)V
   1089  */
   1090 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glInvalidateSubFramebuffer
   1091   (JNIEnv *env, jobject, jint target, jint numAttachments, jobject attachments, jint x, jint y, jint width, jint height) {
   1092     void* dataPtr = getDirectBufferPointer( env, attachments );
   1093     glInvalidateSubFramebuffer(target, numAttachments, (GLenum*)dataPtr, x, y, width, height);
   1094 }
   1095 
   1096 
   1097 #endif
   1098 #endif