/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_badlogic_gdx_backends_iosrobovm_IOSGLES10 */

#ifndef _Included_com_badlogic_gdx_backends_iosrobovm_IOSGLES10
#define _Included_com_badlogic_gdx_backends_iosrobovm_IOSGLES10
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glActiveTexture
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glActiveTexture
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glBindTexture
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glBindTexture
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glBlendFunc
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glBlendFunc
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClear
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClear
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClearColor
 * Signature: (FFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClearColor
  (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClearDepthf
 * Signature: (F)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClearDepthf
  (JNIEnv *, jobject, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClearStencil
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClearStencil
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glColorMask
 * Signature: (ZZZZ)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glColorMask
  (JNIEnv *, jobject, jboolean, jboolean, jboolean, jboolean);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glCompressedTexImage2D
 * Signature: (IIIIIIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glCompressedTexImage2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glCompressedTexSubImage2D
 * Signature: (IIIIIIIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glCompressedTexSubImage2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glCopyTexImage2D
 * Signature: (IIIIIIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glCopyTexImage2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glCopyTexSubImage2D
 * Signature: (IIIIIIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glCopyTexSubImage2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glCullFace
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glCullFace
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDeleteTextures
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDeleteTextures__ILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDepthFunc
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDepthFunc
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDepthMask
 * Signature: (Z)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDepthMask
  (JNIEnv *, jobject, jboolean);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDepthRangef
 * Signature: (FF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDepthRangef
  (JNIEnv *, jobject, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDisable
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDisable
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDrawArrays
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDrawArrays
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDrawElements
 * Signature: (IIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDrawElements__IIILjava_nio_Buffer_2
  (JNIEnv *, jobject, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glEnable
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glEnable
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFinish
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFinish
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFlush
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFlush
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFrontFace
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFrontFace
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGenTextures
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGenTextures__ILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetError
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetError
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetIntegerv
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetIntegerv__ILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetString
 * Signature: (I)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetString
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glHint
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glHint
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLineWidth
 * Signature: (F)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLineWidth
  (JNIEnv *, jobject, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPixelStorei
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPixelStorei
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPolygonOffset
 * Signature: (FF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPolygonOffset
  (JNIEnv *, jobject, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glReadPixels
 * Signature: (IIIIIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glReadPixels
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glScissor
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glScissor
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glStencilFunc
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glStencilFunc
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glStencilMask
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glStencilMask
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glStencilOp
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glStencilOp
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexImage2D
 * Signature: (IIIIIIIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexImage2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexParameterf
 * Signature: (IIF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexParameterf
  (JNIEnv *, jobject, jint, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexSubImage2D
 * Signature: (IIIIIIIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexSubImage2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glViewport
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glViewport
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClipPlanef
 * Signature: (I[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClipPlanef__I_3FI
  (JNIEnv *, jobject, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClipPlanef
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClipPlanef__ILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetClipPlanef
 * Signature: (I[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetClipPlanef__I_3FI
  (JNIEnv *, jobject, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetClipPlanef
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetClipPlanef__ILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetFloatv
 * Signature: (I[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetFloatv__I_3FI
  (JNIEnv *, jobject, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetFloatv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetFloatv__ILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetLightfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetLightfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetLightfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetLightfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetMaterialfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetMaterialfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetMaterialfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetMaterialfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetTexParameterfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetTexParameterfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetTexParameterfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPointParameterf
 * Signature: (IF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPointParameterf
  (JNIEnv *, jobject, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPointParameterfv
 * Signature: (I[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPointParameterfv__I_3FI
  (JNIEnv *, jobject, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPointParameterfv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPointParameterfv__ILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexParameterfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexParameterfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexParameterfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexParameterfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glBindBuffer
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glBindBuffer
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glBufferData
 * Signature: (IILjava/nio/Buffer;I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glBufferData
  (JNIEnv *, jobject, jint, jint, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glBufferSubData
 * Signature: (IIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glBufferSubData
  (JNIEnv *, jobject, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glColor4ub
 * Signature: (BBBB)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glColor4ub
  (JNIEnv *, jobject, jbyte, jbyte, jbyte, jbyte);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDeleteBuffers
 * Signature: (I[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDeleteBuffers__I_3II
  (JNIEnv *, jobject, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDeleteBuffers
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDeleteBuffers__ILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetBooleanv
 * Signature: (I[ZI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetBooleanv__I_3ZI
  (JNIEnv *, jobject, jint, jbooleanArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetBooleanv
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetBooleanv__ILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetBufferParameteriv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetBufferParameteriv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetBufferParameteriv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGenBuffers
 * Signature: (I[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGenBuffers__I_3II
  (JNIEnv *, jobject, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGenBuffers
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGenBuffers__ILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetTexEnviv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetTexEnviv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetTexEnviv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetTexEnviv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetTexParameteriv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetTexParameteriv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetTexParameteriv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetTexParameteriv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glIsBuffer
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glIsBuffer
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glIsEnabled
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glIsEnabled
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glIsTexture
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glIsTexture
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexEnvi
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexEnvi
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexEnviv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexEnviv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexEnviv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexEnviv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexParameteri
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexParameteri
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexParameteriv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexParameteriv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexParameteriv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexParameteriv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPointSizePointerOES
 * Signature: (IILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPointSizePointerOES
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glVertexPointer
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glVertexPointer__IIII
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glColorPointer
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glColorPointer__IIII
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glNormalPointer
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glNormalPointer__III
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexCoordPointer
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexCoordPointer__IIII
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDrawElements
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDrawElements__IIII
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glAlphaFunc
 * Signature: (IF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glAlphaFunc
  (JNIEnv *, jobject, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glClientActiveTexture
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glClientActiveTexture
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glColor4f
 * Signature: (FFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glColor4f
  (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glColorPointer
 * Signature: (IIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glColorPointer__IIILjava_nio_Buffer_2
  (JNIEnv *, jobject, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDeleteTextures
 * Signature: (I[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDeleteTextures__I_3II
  (JNIEnv *, jobject, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glDisableClientState
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glDisableClientState
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glEnableClientState
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glEnableClientState
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFogf
 * Signature: (IF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFogf
  (JNIEnv *, jobject, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFogfv
 * Signature: (I[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFogfv__I_3FI
  (JNIEnv *, jobject, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFogfv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFogfv__ILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glFrustumf
 * Signature: (FFFFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glFrustumf
  (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGenTextures
 * Signature: (I[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGenTextures__I_3II
  (JNIEnv *, jobject, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glGetIntegerv
 * Signature: (I[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glGetIntegerv__I_3II
  (JNIEnv *, jobject, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLightModelf
 * Signature: (IF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLightModelf
  (JNIEnv *, jobject, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLightModelfv
 * Signature: (I[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLightModelfv__I_3FI
  (JNIEnv *, jobject, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLightModelfv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLightModelfv__ILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLightf
 * Signature: (IIF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLightf
  (JNIEnv *, jobject, jint, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLightfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLightfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLightfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLightfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLoadIdentity
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLoadIdentity
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLoadMatrixf
 * Signature: ([FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLoadMatrixf___3FI
  (JNIEnv *, jobject, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLoadMatrixf
 * Signature: (Ljava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLoadMatrixf__Ljava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glLogicOp
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glLogicOp
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMaterialf
 * Signature: (IIF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMaterialf
  (JNIEnv *, jobject, jint, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMaterialfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMaterialfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMaterialfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMaterialfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMatrixMode
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMatrixMode
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMultMatrixf
 * Signature: ([FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMultMatrixf___3FI
  (JNIEnv *, jobject, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMultMatrixf
 * Signature: (Ljava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMultMatrixf__Ljava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glMultiTexCoord4f
 * Signature: (IFFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glMultiTexCoord4f
  (JNIEnv *, jobject, jint, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glNormal3f
 * Signature: (FFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glNormal3f
  (JNIEnv *, jobject, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glNormalPointer
 * Signature: (IILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glNormalPointer__IILjava_nio_Buffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glOrthof
 * Signature: (FFFFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glOrthof
  (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPointSize
 * Signature: (F)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPointSize
  (JNIEnv *, jobject, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPopMatrix
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPopMatrix
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPushMatrix
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPushMatrix
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glRotatef
 * Signature: (FFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glRotatef
  (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glSampleCoverage
 * Signature: (FZ)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glSampleCoverage
  (JNIEnv *, jobject, jfloat, jboolean);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glScalef
 * Signature: (FFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glScalef
  (JNIEnv *, jobject, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glShadeModel
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glShadeModel
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexCoordPointer
 * Signature: (IIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexCoordPointer__IIILjava_nio_Buffer_2
  (JNIEnv *, jobject, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexEnvf
 * Signature: (IIF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexEnvf
  (JNIEnv *, jobject, jint, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexEnvfv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexEnvfv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTexEnvfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTexEnvfv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glTranslatef
 * Signature: (FFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glTranslatef
  (JNIEnv *, jobject, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glVertexPointer
 * Signature: (IIILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glVertexPointer__IIILjava_nio_Buffer_2
  (JNIEnv *, jobject, jint, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES10
 * Method:    glPolygonMode
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES10_glPolygonMode
  (JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif
