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

#ifndef _Included_com_badlogic_gdx_backends_iosrobovm_IOSGLES20
#define _Included_com_badlogic_gdx_backends_iosrobovm_IOSGLES20
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    init
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_init
  (JNIEnv *, jclass);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glActiveTexture
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glActiveTexture
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glAttachShader
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glAttachShader
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBindAttribLocation
 * Signature: (IILjava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBindAttribLocation
  (JNIEnv *, jobject, jint, jint, jstring);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBindFramebuffer
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBindFramebuffer
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBindRenderbuffer
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBindRenderbuffer
  (JNIEnv *, jobject, jint, jint);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBlendColor
 * Signature: (FFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBlendColor
  (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBlendEquation
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBlendEquation
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBlendEquationSeparate
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBlendEquationSeparate
  (JNIEnv *, jobject, jint, jint);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glBlendFuncSeparate
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glBlendFuncSeparate
  (JNIEnv *, jobject, jint, jint, jint, jint);

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glCheckFramebufferStatus
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glCheckFramebufferStatus
  (JNIEnv *, jobject, jint);

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

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

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glCompileShader
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glCompileShader
  (JNIEnv *, jobject, jint);

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

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glCreateProgram
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glCreateProgram
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glCreateShader
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glCreateShader
  (JNIEnv *, jobject, jint);

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteBuffer
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteBuffer
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteFramebuffers
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteFramebuffers
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteFramebuffer
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteFramebuffer
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteProgram
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteProgram
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteRenderbuffers
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteRenderbuffers
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteRenderbuffer
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteRenderbuffer
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteShader
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteShader
  (JNIEnv *, jobject, jint);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDeleteTexture
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDeleteTexture
  (JNIEnv *, jobject, jint);

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDetachShader
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDetachShader
  (JNIEnv *, jobject, jint, jint);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glDisableVertexAttribArray
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glDisableVertexAttribArray
  (JNIEnv *, jobject, jint);

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

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glEnableVertexAttribArray
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glEnableVertexAttribArray
  (JNIEnv *, jobject, jint);

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glFramebufferRenderbuffer
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glFramebufferRenderbuffer
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glFramebufferTexture2D
 * Signature: (IIIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glFramebufferTexture2D
  (JNIEnv *, jobject, jint, jint, jint, jint, jint);

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenBuffer
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenBuffer
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenerateMipmap
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenerateMipmap
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenFramebuffers
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenFramebuffers
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenFramebuffer
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenFramebuffer
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenRenderbuffers
 * Signature: (ILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenRenderbuffers
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenRenderbuffer
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenRenderbuffer
  (JNIEnv *, jobject);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGenTexture
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGenTexture
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetActiveAttrib
 * Signature: (IILjava/nio/IntBuffer;Ljava/nio/Buffer;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetActiveAttrib
  (JNIEnv *, jobject, jint, jint, jobject, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetActiveUniform
 * Signature: (IILjava/nio/IntBuffer;Ljava/nio/Buffer;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetActiveUniform
  (JNIEnv *, jobject, jint, jint, jobject, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetAttachedShaders
 * Signature: (IILjava/nio/Buffer;Ljava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetAttachedShaders
  (JNIEnv *, jobject, jint, jint, jobject, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetAttribLocation
 * Signature: (ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetAttribLocation
  (JNIEnv *, jobject, jint, jstring);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetBooleanv
 * Signature: (ILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetBooleanv
  (JNIEnv *, jobject, jint, jobject);

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetFramebufferAttachmentParameteriv
 * Signature: (IIILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetFramebufferAttachmentParameteriv
  (JNIEnv *, jobject, jint, jint, jint, jobject);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetProgramiv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetProgramiv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetProgramInfoLog
 * Signature: (I)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetProgramInfoLog
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetRenderbufferParameteriv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetRenderbufferParameteriv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetShaderiv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetShaderiv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetShaderInfoLog
 * Signature: (I)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetShaderInfoLog
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetShaderPrecisionFormat
 * Signature: (IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetShaderPrecisionFormat
  (JNIEnv *, jobject, jint, jint, jobject, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetShaderSource
 * Signature: (IILjava/nio/Buffer;Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetShaderSource
  (JNIEnv *, jobject, jint, jint, jobject, jstring);

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetUniformfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetUniformfv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetUniformiv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetUniformiv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetUniformLocation
 * Signature: (ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetUniformLocation
  (JNIEnv *, jobject, jint, jstring);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetVertexAttribfv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetVertexAttribfv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetVertexAttribiv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetVertexAttribiv
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glGetVertexAttribPointerv
 * Signature: (IILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glGetVertexAttribPointerv
  (JNIEnv *, jobject, jint, jint, jobject);

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glIsFramebuffer
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glIsFramebuffer
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glIsProgram
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glIsProgram
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glIsRenderbuffer
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glIsRenderbuffer
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glIsShader
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glIsShader
  (JNIEnv *, jobject, jint);

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glLinkProgram
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glLinkProgram
  (JNIEnv *, jobject, jint);

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glReleaseShaderCompiler
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glReleaseShaderCompiler
  (JNIEnv *, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glRenderbufferStorage
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glRenderbufferStorage
  (JNIEnv *, jobject, jint, jint, jint, jint);

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glShaderBinary
 * Signature: (ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glShaderBinary
  (JNIEnv *, jobject, jint, jobject, jint, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glShaderSource
 * Signature: (ILjava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glShaderSource
  (JNIEnv *, jobject, jint, jstring);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glStencilFuncSeparate
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glStencilFuncSeparate
  (JNIEnv *, jobject, jint, jint, jint, jint);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glStencilMaskSeparate
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glStencilMaskSeparate
  (JNIEnv *, jobject, jint, jint);

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glStencilOpSeparate
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glStencilOpSeparate
  (JNIEnv *, jobject, jint, jint, jint, jint);

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

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

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

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

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

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

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform1f
 * Signature: (IF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform1f
  (JNIEnv *, jobject, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform1fv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform1fv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform1fv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform1fv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform1i
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform1i
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform1iv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform1iv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform1iv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform1iv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform2f
 * Signature: (IFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform2f
  (JNIEnv *, jobject, jint, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform2fv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform2fv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform2fv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform2fv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform2i
 * Signature: (III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform2i
  (JNIEnv *, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform2iv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform2iv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform2iv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform2iv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform3f
 * Signature: (IFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform3f
  (JNIEnv *, jobject, jint, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform3fv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform3fv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform3fv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform3fv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform3i
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform3i
  (JNIEnv *, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform3iv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform3iv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform3iv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform3iv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform4f
 * Signature: (IFFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform4f
  (JNIEnv *, jobject, jint, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform4fv
 * Signature: (IILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform4fv__IILjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform4fv
 * Signature: (II[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform4fv__II_3FI
  (JNIEnv *, jobject, jint, jint, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform4i
 * Signature: (IIIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform4i
  (JNIEnv *, jobject, jint, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform4iv
 * Signature: (IILjava/nio/IntBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform4iv__IILjava_nio_IntBuffer_2
  (JNIEnv *, jobject, jint, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniform4iv
 * Signature: (II[II)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniform4iv__II_3II
  (JNIEnv *, jobject, jint, jint, jintArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniformMatrix2fv
 * Signature: (IIZLjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jboolean, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniformMatrix2fv
 * Signature: (IIZ[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniformMatrix2fv__IIZ_3FI
  (JNIEnv *, jobject, jint, jint, jboolean, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniformMatrix3fv
 * Signature: (IIZLjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jboolean, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniformMatrix3fv
 * Signature: (IIZ[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniformMatrix3fv__IIZ_3FI
  (JNIEnv *, jobject, jint, jint, jboolean, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniformMatrix4fv
 * Signature: (IIZLjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2
  (JNIEnv *, jobject, jint, jint, jboolean, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUniformMatrix4fv
 * Signature: (IIZ[FI)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUniformMatrix4fv__IIZ_3FI
  (JNIEnv *, jobject, jint, jint, jboolean, jfloatArray, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glUseProgram
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glUseProgram
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glValidateProgram
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glValidateProgram
  (JNIEnv *, jobject, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib1f
 * Signature: (IF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib1f
  (JNIEnv *, jobject, jint, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib1fv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib1fv
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib2f
 * Signature: (IFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib2f
  (JNIEnv *, jobject, jint, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib2fv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib2fv
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib3f
 * Signature: (IFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib3f
  (JNIEnv *, jobject, jint, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib3fv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib3fv
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib4f
 * Signature: (IFFFF)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib4f
  (JNIEnv *, jobject, jint, jfloat, jfloat, jfloat, jfloat);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttrib4fv
 * Signature: (ILjava/nio/FloatBuffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttrib4fv
  (JNIEnv *, jobject, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttribPointer
 * Signature: (IIIZILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttribPointer__IIIZILjava_nio_Buffer_2
  (JNIEnv *, jobject, jint, jint, jint, jboolean, jint, jobject);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glVertexAttribPointer
 * Signature: (IIIZII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glVertexAttribPointer__IIIZII
  (JNIEnv *, jobject, jint, jint, jint, jboolean, jint, jint);

/*
 * Class:     com_badlogic_gdx_backends_iosrobovm_IOSGLES20
 * Method:    glViewportJni
 * Signature: (IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES20_glViewportJni
  (JNIEnv *, jobject, jint, jint, jint, jint);

#ifdef __cplusplus
}
#endif
#endif
