'''
OpenGL binding For python
WARNING - This is generated code, do not modify directly.
'''
import ctypes as ct

from opengl.bindutils import gl_func
from opengl import gltypes as t

def set_func(name, returnType, paramTypes):
    '''gl_func wrapper that inserts function in globals.'''
    globals()[name] = gl_func(name, returnType, paramTypes)

def set_enum(name, value):
    globals()[name] = value

noParms = ()
# GLenum = t.UINT
# GLboolean = t.UCHAR
# GLbitfield = t.UINT
# GLvoid = t.void
# GLbyte = t.SCHAR
# GLshort = t.short
# GLint = t.INT
# GLclampx = t.INT
# GLubyte = t.UCHAR
# GLushort = t.USHORT
# GLuint = t.UINT
# GLsizei = t.INT
# GLfloat = t.FLOAT
# GLclampf = t.FLOAT
# GLdouble = t.double
# GLclampd = t.double
# GLeglImageOES = ct.POINTER(t.void)
# GLchar = t.CHAR
# GLcharARB = t.CHAR
# GLhalfARB = t.USHORT
# GLhalf = t.USHORT
# GLfixed = t.GLint
# GLsync = ct.POINTER(t._GLsync)
# GLhalfNV = t.USHORT

#### GLES2 VERSION 2.0 ####
def init_gl_es_version_2_0():
    set_func('glActiveTexture', t.void, (t.GLenum,))
    set_func('glAttachShader', t.void, (t.GLuint, t.GLuint))
    set_func('glBindAttribLocation', t.void, (t.GLuint, t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glBindBuffer', t.void, (t.GLenum, t.GLuint))
    set_func('glBindFramebuffer', t.void, (t.GLenum, t.GLuint))
    set_func('glBindRenderbuffer', t.void, (t.GLenum, t.GLuint))
    set_func('glBindTexture', t.void, (t.GLenum, t.GLuint))
    set_func('glBlendColor', t.void, (t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glBlendEquation', t.void, (t.GLenum,))
    set_func('glBlendEquationSeparate', t.void, (t.GLenum, t.GLenum))
    set_func('glBlendFunc', t.void, (t.GLenum, t.GLenum))
    set_func('glBlendFuncSeparate', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLenum))
    set_func('glBufferData', t.void, (t.GLenum, t.GLsizeiptr, ct.POINTER(t.void), t.GLenum))
    set_func('glBufferSubData', t.void, (t.GLenum, t.GLintptr, t.GLsizeiptr, ct.POINTER(t.void)))
    set_func('glCheckFramebufferStatus', t.GLenum, (t.GLenum,))
    set_func('glClear', t.void, (t.GLbitfield,))
    set_func('glClearColor', t.void, (t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glClearDepthf', t.void, (t.GLfloat,))
    set_func('glClearStencil', t.void, (t.GLint,))
    set_func('glColorMask', t.void, (t.GLboolean, t.GLboolean, t.GLboolean, t.GLboolean))
    set_func('glCompileShader', t.void, (t.GLuint,))
    set_func('glCompressedTexImage2D', t.void, (t.GLenum, t.GLint, t.GLenum, t.GLsizei, t.GLsizei, t.GLint, t.GLsizei, ct.POINTER(t.void)))
    set_func('glCompressedTexSubImage2D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glCopyTexImage2D', t.void, (t.GLenum, t.GLint, t.GLenum, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLint))
    set_func('glCopyTexSubImage2D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glCreateProgram', t.GLuint, ())
    set_func('glCreateShader', t.GLuint, (t.GLenum,))
    set_func('glCullFace', t.void, (t.GLenum,))
    set_func('glDeleteBuffers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteFramebuffers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteProgram', t.void, (t.GLuint,))
    set_func('glDeleteRenderbuffers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteShader', t.void, (t.GLuint,))
    set_func('glDeleteTextures', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDepthFunc', t.void, (t.GLenum,))
    set_func('glDepthMask', t.void, (t.GLboolean,))
    set_func('glDepthRangef', t.void, (t.GLfloat, t.GLfloat))
    set_func('glDetachShader', t.void, (t.GLuint, t.GLuint))
    set_func('glDisable', t.void, (t.GLenum,))
    set_func('glDisableVertexAttribArray', t.void, (t.GLuint,))
    set_func('glDrawArrays', t.void, (t.GLenum, t.GLint, t.GLsizei))
    set_func('glDrawElements', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void)))
    set_func('glEnable', t.void, (t.GLenum,))
    set_func('glEnableVertexAttribArray', t.void, (t.GLuint,))
    set_func('glFinish', t.void, ())
    set_func('glFlush', t.void, ())
    set_func('glFramebufferRenderbuffer', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLuint))
    set_func('glFramebufferTexture2D', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLuint, t.GLint))
    set_func('glFrontFace', t.void, (t.GLenum,))
    set_func('glGenBuffers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenerateMipmap', t.void, (t.GLenum,))
    set_func('glGenFramebuffers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenRenderbuffers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenTextures', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGetActiveAttrib', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLint), ct.POINTER(t.GLenum), ct.POINTER(t.GLchar)))
    set_func('glGetActiveUniform', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLint), ct.POINTER(t.GLenum), ct.POINTER(t.GLchar)))
    set_func('glGetAttachedShaders', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLuint)))
    set_func('glGetAttribLocation', t.GLint, (t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glGetBooleanv', t.void, (t.GLenum, ct.POINTER(t.GLboolean)))
    set_func('glGetBufferParameteriv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetError', t.GLenum, ())
    set_func('glGetFloatv', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glGetFramebufferAttachmentParameteriv', t.void, (t.GLenum, t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetIntegerv', t.void, (t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetProgramiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetProgramInfoLog', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetRenderbufferParameteriv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetShaderiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetShaderInfoLog', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetShaderPrecisionFormat', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint), ct.POINTER(t.GLint)))
    set_func('glGetShaderSource', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetString', ct.POINTER(t.GLubyte), (t.GLenum,))
    set_func('glGetTexParameterfv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glGetTexParameteriv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetUniformfv', t.void, (t.GLuint, t.GLint, ct.POINTER(t.GLfloat)))
    set_func('glGetUniformiv', t.void, (t.GLuint, t.GLint, ct.POINTER(t.GLint)))
    set_func('glGetUniformLocation', t.GLint, (t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glGetVertexAttribfv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glGetVertexAttribiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetVertexAttribPointerv', t.void, (t.GLuint, t.GLenum, ct.POINTER(ct.POINTER(t.void))))
    set_func('glHint', t.void, (t.GLenum, t.GLenum))
    set_func('glIsBuffer', t.GLboolean, (t.GLuint,))
    set_func('glIsEnabled', t.GLboolean, (t.GLenum,))
    set_func('glIsFramebuffer', t.GLboolean, (t.GLuint,))
    set_func('glIsProgram', t.GLboolean, (t.GLuint,))
    set_func('glIsRenderbuffer', t.GLboolean, (t.GLuint,))
    set_func('glIsShader', t.GLboolean, (t.GLuint,))
    set_func('glIsTexture', t.GLboolean, (t.GLuint,))
    set_func('glLineWidth', t.void, (t.GLfloat,))
    set_func('glLinkProgram', t.void, (t.GLuint,))
    set_func('glPixelStorei', t.void, (t.GLenum, t.GLint))
    set_func('glPolygonOffset', t.void, (t.GLfloat, t.GLfloat))
    set_func('glReadPixels', t.void, (t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glReleaseShaderCompiler', t.void, ())
    set_func('glRenderbufferStorage', t.void, (t.GLenum, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glSampleCoverage', t.void, (t.GLfloat, t.GLboolean))
    set_func('glScissor', t.void, (t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glShaderBinary', t.void, (t.GLsizei, ct.POINTER(t.GLuint), t.GLenum, ct.POINTER(t.void), t.GLsizei))
    set_func('glShaderSource', t.void, (t.GLuint, t.GLsizei, ct.POINTER(ct.POINTER(t.GLchar)), ct.POINTER(t.GLint)))
    set_func('glStencilFunc', t.void, (t.GLenum, t.GLint, t.GLuint))
    set_func('glStencilFuncSeparate', t.void, (t.GLenum, t.GLenum, t.GLint, t.GLuint))
    set_func('glStencilMask', t.void, (t.GLuint,))
    set_func('glStencilMaskSeparate', t.void, (t.GLenum, t.GLuint))
    set_func('glStencilOp', t.void, (t.GLenum, t.GLenum, t.GLenum))
    set_func('glStencilOpSeparate', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLenum))
    set_func('glTexImage2D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLint, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glTexParameterf', t.void, (t.GLenum, t.GLenum, t.GLfloat))
    set_func('glTexParameterfv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glTexParameteri', t.void, (t.GLenum, t.GLenum, t.GLint))
    set_func('glTexParameteriv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glTexSubImage2D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glUniform1f', t.void, (t.GLint, t.GLfloat))
    set_func('glUniform1fv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glUniform1i', t.void, (t.GLint, t.GLint))
    set_func('glUniform1iv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glUniform2f', t.void, (t.GLint, t.GLfloat, t.GLfloat))
    set_func('glUniform2fv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glUniform2i', t.void, (t.GLint, t.GLint, t.GLint))
    set_func('glUniform2iv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glUniform3f', t.void, (t.GLint, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glUniform3fv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glUniform3i', t.void, (t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glUniform3iv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glUniform4f', t.void, (t.GLint, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glUniform4fv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glUniform4i', t.void, (t.GLint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glUniform4iv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glUniformMatrix2fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix3fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix4fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUseProgram', t.void, (t.GLuint,))
    set_func('glValidateProgram', t.void, (t.GLuint,))
    set_func('glVertexAttrib1f', t.void, (t.GLuint, t.GLfloat))
    set_func('glVertexAttrib1fv', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glVertexAttrib2f', t.void, (t.GLuint, t.GLfloat, t.GLfloat))
    set_func('glVertexAttrib2fv', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glVertexAttrib3f', t.void, (t.GLuint, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glVertexAttrib3fv', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glVertexAttrib4f', t.void, (t.GLuint, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glVertexAttrib4fv', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glVertexAttribPointer', t.void, (t.GLuint, t.GLint, t.GLenum, t.GLboolean, t.GLsizei, ct.POINTER(t.void)))
    set_func('glViewport', t.void, (t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_enum("GL_DEPTH_BUFFER_BIT", 0x00000100)
    set_enum("GL_STENCIL_BUFFER_BIT", 0x00000400)
    set_enum("GL_COLOR_BUFFER_BIT", 0x00004000)
    set_enum("GL_FALSE", 0)
    set_enum("GL_TRUE", 1)
    set_enum("GL_POINTS", 0x0000)
    set_enum("GL_LINES", 0x0001)
    set_enum("GL_LINE_LOOP", 0x0002)
    set_enum("GL_LINE_STRIP", 0x0003)
    set_enum("GL_TRIANGLES", 0x0004)
    set_enum("GL_TRIANGLE_STRIP", 0x0005)
    set_enum("GL_TRIANGLE_FAN", 0x0006)
    set_enum("GL_ZERO", 0)
    set_enum("GL_ONE", 1)
    set_enum("GL_SRC_COLOR", 0x0300)
    set_enum("GL_ONE_MINUS_SRC_COLOR", 0x0301)
    set_enum("GL_SRC_ALPHA", 0x0302)
    set_enum("GL_ONE_MINUS_SRC_ALPHA", 0x0303)
    set_enum("GL_DST_ALPHA", 0x0304)
    set_enum("GL_ONE_MINUS_DST_ALPHA", 0x0305)
    set_enum("GL_DST_COLOR", 0x0306)
    set_enum("GL_ONE_MINUS_DST_COLOR", 0x0307)
    set_enum("GL_SRC_ALPHA_SATURATE", 0x0308)
    set_enum("GL_FUNC_ADD", 0x8006)
    set_enum("GL_BLEND_EQUATION", 0x8009)
    set_enum("GL_BLEND_EQUATION_RGB", 0x8009)
    set_enum("GL_BLEND_EQUATION_ALPHA", 0x883D)
    set_enum("GL_FUNC_SUBTRACT", 0x800A)
    set_enum("GL_FUNC_REVERSE_SUBTRACT", 0x800B)
    set_enum("GL_BLEND_DST_RGB", 0x80C8)
    set_enum("GL_BLEND_SRC_RGB", 0x80C9)
    set_enum("GL_BLEND_DST_ALPHA", 0x80CA)
    set_enum("GL_BLEND_SRC_ALPHA", 0x80CB)
    set_enum("GL_CONSTANT_COLOR", 0x8001)
    set_enum("GL_ONE_MINUS_CONSTANT_COLOR", 0x8002)
    set_enum("GL_CONSTANT_ALPHA", 0x8003)
    set_enum("GL_ONE_MINUS_CONSTANT_ALPHA", 0x8004)
    set_enum("GL_BLEND_COLOR", 0x8005)
    set_enum("GL_ARRAY_BUFFER", 0x8892)
    set_enum("GL_ELEMENT_ARRAY_BUFFER", 0x8893)
    set_enum("GL_ARRAY_BUFFER_BINDING", 0x8894)
    set_enum("GL_ELEMENT_ARRAY_BUFFER_BINDING", 0x8895)
    set_enum("GL_STREAM_DRAW", 0x88E0)
    set_enum("GL_STATIC_DRAW", 0x88E4)
    set_enum("GL_DYNAMIC_DRAW", 0x88E8)
    set_enum("GL_BUFFER_SIZE", 0x8764)
    set_enum("GL_BUFFER_USAGE", 0x8765)
    set_enum("GL_CURRENT_VERTEX_ATTRIB", 0x8626)
    set_enum("GL_FRONT", 0x0404)
    set_enum("GL_BACK", 0x0405)
    set_enum("GL_FRONT_AND_BACK", 0x0408)
    set_enum("GL_TEXTURE_2D", 0x0DE1)
    set_enum("GL_CULL_FACE", 0x0B44)
    set_enum("GL_BLEND", 0x0BE2)
    set_enum("GL_DITHER", 0x0BD0)
    set_enum("GL_STENCIL_TEST", 0x0B90)
    set_enum("GL_DEPTH_TEST", 0x0B71)
    set_enum("GL_SCISSOR_TEST", 0x0C11)
    set_enum("GL_POLYGON_OFFSET_FILL", 0x8037)
    set_enum("GL_SAMPLE_ALPHA_TO_COVERAGE", 0x809E)
    set_enum("GL_SAMPLE_COVERAGE", 0x80A0)
    set_enum("GL_NO_ERROR", 0)
    set_enum("GL_INVALID_ENUM", 0x0500)
    set_enum("GL_INVALID_VALUE", 0x0501)
    set_enum("GL_INVALID_OPERATION", 0x0502)
    set_enum("GL_OUT_OF_MEMORY", 0x0505)
    set_enum("GL_CW", 0x0900)
    set_enum("GL_CCW", 0x0901)
    set_enum("GL_LINE_WIDTH", 0x0B21)
    set_enum("GL_ALIASED_POINT_SIZE_RANGE", 0x846D)
    set_enum("GL_ALIASED_LINE_WIDTH_RANGE", 0x846E)
    set_enum("GL_CULL_FACE_MODE", 0x0B45)
    set_enum("GL_FRONT_FACE", 0x0B46)
    set_enum("GL_DEPTH_RANGE", 0x0B70)
    set_enum("GL_DEPTH_WRITEMASK", 0x0B72)
    set_enum("GL_DEPTH_CLEAR_VALUE", 0x0B73)
    set_enum("GL_DEPTH_FUNC", 0x0B74)
    set_enum("GL_STENCIL_CLEAR_VALUE", 0x0B91)
    set_enum("GL_STENCIL_FUNC", 0x0B92)
    set_enum("GL_STENCIL_FAIL", 0x0B94)
    set_enum("GL_STENCIL_PASS_DEPTH_FAIL", 0x0B95)
    set_enum("GL_STENCIL_PASS_DEPTH_PASS", 0x0B96)
    set_enum("GL_STENCIL_REF", 0x0B97)
    set_enum("GL_STENCIL_VALUE_MASK", 0x0B93)
    set_enum("GL_STENCIL_WRITEMASK", 0x0B98)
    set_enum("GL_STENCIL_BACK_FUNC", 0x8800)
    set_enum("GL_STENCIL_BACK_FAIL", 0x8801)
    set_enum("GL_STENCIL_BACK_PASS_DEPTH_FAIL", 0x8802)
    set_enum("GL_STENCIL_BACK_PASS_DEPTH_PASS", 0x8803)
    set_enum("GL_STENCIL_BACK_REF", 0x8CA3)
    set_enum("GL_STENCIL_BACK_VALUE_MASK", 0x8CA4)
    set_enum("GL_STENCIL_BACK_WRITEMASK", 0x8CA5)
    set_enum("GL_VIEWPORT", 0x0BA2)
    set_enum("GL_SCISSOR_BOX", 0x0C10)
    set_enum("GL_COLOR_CLEAR_VALUE", 0x0C22)
    set_enum("GL_COLOR_WRITEMASK", 0x0C23)
    set_enum("GL_UNPACK_ALIGNMENT", 0x0CF5)
    set_enum("GL_PACK_ALIGNMENT", 0x0D05)
    set_enum("GL_MAX_TEXTURE_SIZE", 0x0D33)
    set_enum("GL_MAX_VIEWPORT_DIMS", 0x0D3A)
    set_enum("GL_SUBPIXEL_BITS", 0x0D50)
    set_enum("GL_RED_BITS", 0x0D52)
    set_enum("GL_GREEN_BITS", 0x0D53)
    set_enum("GL_BLUE_BITS", 0x0D54)
    set_enum("GL_ALPHA_BITS", 0x0D55)
    set_enum("GL_DEPTH_BITS", 0x0D56)
    set_enum("GL_STENCIL_BITS", 0x0D57)
    set_enum("GL_POLYGON_OFFSET_UNITS", 0x2A00)
    set_enum("GL_POLYGON_OFFSET_FACTOR", 0x8038)
    set_enum("GL_TEXTURE_BINDING_2D", 0x8069)
    set_enum("GL_SAMPLE_BUFFERS", 0x80A8)
    set_enum("GL_SAMPLES", 0x80A9)
    set_enum("GL_SAMPLE_COVERAGE_VALUE", 0x80AA)
    set_enum("GL_SAMPLE_COVERAGE_INVERT", 0x80AB)
    set_enum("GL_NUM_COMPRESSED_TEXTURE_FORMATS", 0x86A2)
    set_enum("GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3)
    set_enum("GL_DONT_CARE", 0x1100)
    set_enum("GL_FASTEST", 0x1101)
    set_enum("GL_NICEST", 0x1102)
    set_enum("GL_GENERATE_MIPMAP_HINT", 0x8192)
    set_enum("GL_BYTE", 0x1400)
    set_enum("GL_UNSIGNED_BYTE", 0x1401)
    set_enum("GL_SHORT", 0x1402)
    set_enum("GL_UNSIGNED_SHORT", 0x1403)
    set_enum("GL_INT", 0x1404)
    set_enum("GL_UNSIGNED_INT", 0x1405)
    set_enum("GL_FLOAT", 0x1406)
    set_enum("GL_FIXED", 0x140C)
    set_enum("GL_DEPTH_COMPONENT", 0x1902)
    set_enum("GL_ALPHA", 0x1906)
    set_enum("GL_RGB", 0x1907)
    set_enum("GL_RGBA", 0x1908)
    set_enum("GL_LUMINANCE", 0x1909)
    set_enum("GL_LUMINANCE_ALPHA", 0x190A)
    set_enum("GL_UNSIGNED_SHORT_4_4_4_4", 0x8033)
    set_enum("GL_UNSIGNED_SHORT_5_5_5_1", 0x8034)
    set_enum("GL_UNSIGNED_SHORT_5_6_5", 0x8363)
    set_enum("GL_FRAGMENT_SHADER", 0x8B30)
    set_enum("GL_VERTEX_SHADER", 0x8B31)
    set_enum("GL_MAX_VERTEX_ATTRIBS", 0x8869)
    set_enum("GL_MAX_VERTEX_UNIFORM_VECTORS", 0x8DFB)
    set_enum("GL_MAX_VARYING_VECTORS", 0x8DFC)
    set_enum("GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS", 0x8B4D)
    set_enum("GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS", 0x8B4C)
    set_enum("GL_MAX_TEXTURE_IMAGE_UNITS", 0x8872)
    set_enum("GL_MAX_FRAGMENT_UNIFORM_VECTORS", 0x8DFD)
    set_enum("GL_SHADER_TYPE", 0x8B4F)
    set_enum("GL_DELETE_STATUS", 0x8B80)
    set_enum("GL_LINK_STATUS", 0x8B82)
    set_enum("GL_VALIDATE_STATUS", 0x8B83)
    set_enum("GL_ATTACHED_SHADERS", 0x8B85)
    set_enum("GL_ACTIVE_UNIFORMS", 0x8B86)
    set_enum("GL_ACTIVE_UNIFORM_MAX_LENGTH", 0x8B87)
    set_enum("GL_ACTIVE_ATTRIBUTES", 0x8B89)
    set_enum("GL_ACTIVE_ATTRIBUTE_MAX_LENGTH", 0x8B8A)
    set_enum("GL_SHADING_LANGUAGE_VERSION", 0x8B8C)
    set_enum("GL_CURRENT_PROGRAM", 0x8B8D)
    set_enum("GL_NEVER", 0x0200)
    set_enum("GL_LESS", 0x0201)
    set_enum("GL_EQUAL", 0x0202)
    set_enum("GL_LEQUAL", 0x0203)
    set_enum("GL_GREATER", 0x0204)
    set_enum("GL_NOTEQUAL", 0x0205)
    set_enum("GL_GEQUAL", 0x0206)
    set_enum("GL_ALWAYS", 0x0207)
    set_enum("GL_KEEP", 0x1E00)
    set_enum("GL_REPLACE", 0x1E01)
    set_enum("GL_INCR", 0x1E02)
    set_enum("GL_DECR", 0x1E03)
    set_enum("GL_INVERT", 0x150A)
    set_enum("GL_INCR_WRAP", 0x8507)
    set_enum("GL_DECR_WRAP", 0x8508)
    set_enum("GL_VENDOR", 0x1F00)
    set_enum("GL_RENDERER", 0x1F01)
    set_enum("GL_VERSION", 0x1F02)
    set_enum("GL_EXTENSIONS", 0x1F03)
    set_enum("GL_NEAREST", 0x2600)
    set_enum("GL_LINEAR", 0x2601)
    set_enum("GL_NEAREST_MIPMAP_NEAREST", 0x2700)
    set_enum("GL_LINEAR_MIPMAP_NEAREST", 0x2701)
    set_enum("GL_NEAREST_MIPMAP_LINEAR", 0x2702)
    set_enum("GL_LINEAR_MIPMAP_LINEAR", 0x2703)
    set_enum("GL_TEXTURE_MAG_FILTER", 0x2800)
    set_enum("GL_TEXTURE_MIN_FILTER", 0x2801)
    set_enum("GL_TEXTURE_WRAP_S", 0x2802)
    set_enum("GL_TEXTURE_WRAP_T", 0x2803)
    set_enum("GL_TEXTURE", 0x1702)
    set_enum("GL_TEXTURE_CUBE_MAP", 0x8513)
    set_enum("GL_TEXTURE_BINDING_CUBE_MAP", 0x8514)
    set_enum("GL_TEXTURE_CUBE_MAP_POSITIVE_X", 0x8515)
    set_enum("GL_TEXTURE_CUBE_MAP_NEGATIVE_X", 0x8516)
    set_enum("GL_TEXTURE_CUBE_MAP_POSITIVE_Y", 0x8517)
    set_enum("GL_TEXTURE_CUBE_MAP_NEGATIVE_Y", 0x8518)
    set_enum("GL_TEXTURE_CUBE_MAP_POSITIVE_Z", 0x8519)
    set_enum("GL_TEXTURE_CUBE_MAP_NEGATIVE_Z", 0x851A)
    set_enum("GL_MAX_CUBE_MAP_TEXTURE_SIZE", 0x851C)
    set_enum("GL_TEXTURE0", 0x84C0)
    set_enum("GL_TEXTURE1", 0x84C1)
    set_enum("GL_TEXTURE2", 0x84C2)
    set_enum("GL_TEXTURE3", 0x84C3)
    set_enum("GL_TEXTURE4", 0x84C4)
    set_enum("GL_TEXTURE5", 0x84C5)
    set_enum("GL_TEXTURE6", 0x84C6)
    set_enum("GL_TEXTURE7", 0x84C7)
    set_enum("GL_TEXTURE8", 0x84C8)
    set_enum("GL_TEXTURE9", 0x84C9)
    set_enum("GL_TEXTURE10", 0x84CA)
    set_enum("GL_TEXTURE11", 0x84CB)
    set_enum("GL_TEXTURE12", 0x84CC)
    set_enum("GL_TEXTURE13", 0x84CD)
    set_enum("GL_TEXTURE14", 0x84CE)
    set_enum("GL_TEXTURE15", 0x84CF)
    set_enum("GL_TEXTURE16", 0x84D0)
    set_enum("GL_TEXTURE17", 0x84D1)
    set_enum("GL_TEXTURE18", 0x84D2)
    set_enum("GL_TEXTURE19", 0x84D3)
    set_enum("GL_TEXTURE20", 0x84D4)
    set_enum("GL_TEXTURE21", 0x84D5)
    set_enum("GL_TEXTURE22", 0x84D6)
    set_enum("GL_TEXTURE23", 0x84D7)
    set_enum("GL_TEXTURE24", 0x84D8)
    set_enum("GL_TEXTURE25", 0x84D9)
    set_enum("GL_TEXTURE26", 0x84DA)
    set_enum("GL_TEXTURE27", 0x84DB)
    set_enum("GL_TEXTURE28", 0x84DC)
    set_enum("GL_TEXTURE29", 0x84DD)
    set_enum("GL_TEXTURE30", 0x84DE)
    set_enum("GL_TEXTURE31", 0x84DF)
    set_enum("GL_ACTIVE_TEXTURE", 0x84E0)
    set_enum("GL_REPEAT", 0x2901)
    set_enum("GL_CLAMP_TO_EDGE", 0x812F)
    set_enum("GL_MIRRORED_REPEAT", 0x8370)
    set_enum("GL_FLOAT_VEC2", 0x8B50)
    set_enum("GL_FLOAT_VEC3", 0x8B51)
    set_enum("GL_FLOAT_VEC4", 0x8B52)
    set_enum("GL_INT_VEC2", 0x8B53)
    set_enum("GL_INT_VEC3", 0x8B54)
    set_enum("GL_INT_VEC4", 0x8B55)
    set_enum("GL_BOOL", 0x8B56)
    set_enum("GL_BOOL_VEC2", 0x8B57)
    set_enum("GL_BOOL_VEC3", 0x8B58)
    set_enum("GL_BOOL_VEC4", 0x8B59)
    set_enum("GL_FLOAT_MAT2", 0x8B5A)
    set_enum("GL_FLOAT_MAT3", 0x8B5B)
    set_enum("GL_FLOAT_MAT4", 0x8B5C)
    set_enum("GL_SAMPLER_2D", 0x8B5E)
    set_enum("GL_SAMPLER_CUBE", 0x8B60)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_ENABLED", 0x8622)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_SIZE", 0x8623)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_STRIDE", 0x8624)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_TYPE", 0x8625)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_NORMALIZED", 0x886A)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_POINTER", 0x8645)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", 0x889F)
    set_enum("GL_IMPLEMENTATION_COLOR_READ_TYPE", 0x8B9A)
    set_enum("GL_IMPLEMENTATION_COLOR_READ_FORMAT", 0x8B9B)
    set_enum("GL_COMPILE_STATUS", 0x8B81)
    set_enum("GL_INFO_LOG_LENGTH", 0x8B84)
    set_enum("GL_SHADER_SOURCE_LENGTH", 0x8B88)
    set_enum("GL_SHADER_COMPILER", 0x8DFA)
    set_enum("GL_SHADER_BINARY_FORMATS", 0x8DF8)
    set_enum("GL_NUM_SHADER_BINARY_FORMATS", 0x8DF9)
    set_enum("GL_LOW_FLOAT", 0x8DF0)
    set_enum("GL_MEDIUM_FLOAT", 0x8DF1)
    set_enum("GL_HIGH_FLOAT", 0x8DF2)
    set_enum("GL_LOW_INT", 0x8DF3)
    set_enum("GL_MEDIUM_INT", 0x8DF4)
    set_enum("GL_HIGH_INT", 0x8DF5)
    set_enum("GL_FRAMEBUFFER", 0x8D40)
    set_enum("GL_RENDERBUFFER", 0x8D41)
    set_enum("GL_RGBA4", 0x8056)
    set_enum("GL_RGB5_A1", 0x8057)
    set_enum("GL_RGB565", 0x8D62)
    set_enum("GL_DEPTH_COMPONENT16", 0x81A5)
    set_enum("GL_STENCIL_INDEX8", 0x8D48)
    set_enum("GL_RENDERBUFFER_WIDTH", 0x8D42)
    set_enum("GL_RENDERBUFFER_HEIGHT", 0x8D43)
    set_enum("GL_RENDERBUFFER_INTERNAL_FORMAT", 0x8D44)
    set_enum("GL_RENDERBUFFER_RED_SIZE", 0x8D50)
    set_enum("GL_RENDERBUFFER_GREEN_SIZE", 0x8D51)
    set_enum("GL_RENDERBUFFER_BLUE_SIZE", 0x8D52)
    set_enum("GL_RENDERBUFFER_ALPHA_SIZE", 0x8D53)
    set_enum("GL_RENDERBUFFER_DEPTH_SIZE", 0x8D54)
    set_enum("GL_RENDERBUFFER_STENCIL_SIZE", 0x8D55)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", 0x8CD0)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", 0x8CD1)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", 0x8CD2)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", 0x8CD3)
    set_enum("GL_COLOR_ATTACHMENT0", 0x8CE0)
    set_enum("GL_DEPTH_ATTACHMENT", 0x8D00)
    set_enum("GL_STENCIL_ATTACHMENT", 0x8D20)
    set_enum("GL_NONE", 0)
    set_enum("GL_FRAMEBUFFER_COMPLETE", 0x8CD5)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT", 0x8CD6)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", 0x8CD7)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS", 0x8CD9)
    set_enum("GL_FRAMEBUFFER_UNSUPPORTED", 0x8CDD)
    set_enum("GL_FRAMEBUFFER_BINDING", 0x8CA6)
    set_enum("GL_RENDERBUFFER_BINDING", 0x8CA7)
    set_enum("GL_MAX_RENDERBUFFER_SIZE", 0x84E8)
    set_enum("GL_INVALID_FRAMEBUFFER_OPERATION", 0x0506)


#### GLES2 VERSION 3.0 ####
def init_gl_es_version_3_0():
    set_func('glReadBuffer', t.void, (t.GLenum,))
    set_func('glDrawRangeElements', t.void, (t.GLenum, t.GLuint, t.GLuint, t.GLsizei, t.GLenum, ct.POINTER(t.void)))
    set_func('glTexImage3D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLint, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glTexSubImage3D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glCopyTexSubImage3D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glCompressedTexImage3D', t.void, (t.GLenum, t.GLint, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei, t.GLint, t.GLsizei, ct.POINTER(t.void)))
    set_func('glCompressedTexSubImage3D', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glGenQueries', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteQueries', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsQuery', t.GLboolean, (t.GLuint,))
    set_func('glBeginQuery', t.void, (t.GLenum, t.GLuint))
    set_func('glEndQuery', t.void, (t.GLenum,))
    set_func('glGetQueryiv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetQueryObjectuiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glUnmapBuffer', t.GLboolean, (t.GLenum,))
    set_func('glGetBufferPointerv', t.void, (t.GLenum, t.GLenum, ct.POINTER(ct.POINTER(t.void))))
    set_func('glDrawBuffers', t.void, (t.GLsizei, ct.POINTER(t.GLenum)))
    set_func('glUniformMatrix2x3fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix3x2fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix2x4fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix4x2fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix3x4fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix4x3fv', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glBlitFramebuffer', t.void, (t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLbitfield, t.GLenum))
    set_func('glRenderbufferStorageMultisample', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glFramebufferTextureLayer', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLint))
    set_func('glMapBufferRange', ct.POINTER(t.void), (t.GLenum, t.GLintptr, t.GLsizeiptr, t.GLbitfield))
    set_func('glFlushMappedBufferRange', t.void, (t.GLenum, t.GLintptr, t.GLsizeiptr))
    set_func('glBindVertexArray', t.void, (t.GLuint,))
    set_func('glDeleteVertexArrays', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenVertexArrays', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsVertexArray', t.GLboolean, (t.GLuint,))
    set_func('glGetIntegeri_v', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLint)))
    set_func('glBeginTransformFeedback', t.void, (t.GLenum,))
    set_func('glEndTransformFeedback', t.void, ())
    set_func('glBindBufferRange', t.void, (t.GLenum, t.GLuint, t.GLuint, t.GLintptr, t.GLsizeiptr))
    set_func('glBindBufferBase', t.void, (t.GLenum, t.GLuint, t.GLuint))
    set_func('glTransformFeedbackVaryings', t.void, (t.GLuint, t.GLsizei, ct.POINTER(ct.POINTER(t.GLchar)), t.GLenum))
    set_func('glGetTransformFeedbackVarying', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLsizei), ct.POINTER(t.GLenum), ct.POINTER(t.GLchar)))
    set_func('glVertexAttribIPointer', t.void, (t.GLuint, t.GLint, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glGetVertexAttribIiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetVertexAttribIuiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glVertexAttribI4i', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glVertexAttribI4ui', t.void, (t.GLuint, t.GLuint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glVertexAttribI4iv', t.void, (t.GLuint, ct.POINTER(t.GLint)))
    set_func('glVertexAttribI4uiv', t.void, (t.GLuint, ct.POINTER(t.GLuint)))
    set_func('glGetUniformuiv', t.void, (t.GLuint, t.GLint, ct.POINTER(t.GLuint)))
    set_func('glGetFragDataLocation', t.GLint, (t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glUniform1ui', t.void, (t.GLint, t.GLuint))
    set_func('glUniform2ui', t.void, (t.GLint, t.GLuint, t.GLuint))
    set_func('glUniform3ui', t.void, (t.GLint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glUniform4ui', t.void, (t.GLint, t.GLuint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glUniform1uiv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glUniform2uiv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glUniform3uiv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glUniform4uiv', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glClearBufferiv', t.void, (t.GLenum, t.GLint, ct.POINTER(t.GLint)))
    set_func('glClearBufferuiv', t.void, (t.GLenum, t.GLint, ct.POINTER(t.GLuint)))
    set_func('glClearBufferfv', t.void, (t.GLenum, t.GLint, ct.POINTER(t.GLfloat)))
    set_func('glClearBufferfi', t.void, (t.GLenum, t.GLint, t.GLfloat, t.GLint))
    set_func('glGetStringi', ct.POINTER(t.GLubyte), (t.GLenum, t.GLuint))
    set_func('glCopyBufferSubData', t.void, (t.GLenum, t.GLenum, t.GLintptr, t.GLintptr, t.GLsizeiptr))
    set_func('glGetUniformIndices', t.void, (t.GLuint, t.GLsizei, ct.POINTER(ct.POINTER(t.GLchar)), ct.POINTER(t.GLuint)))
    set_func('glGetActiveUniformsiv', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLuint), t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetUniformBlockIndex', t.GLuint, (t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glGetActiveUniformBlockiv', t.void, (t.GLuint, t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetActiveUniformBlockName', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glUniformBlockBinding', t.void, (t.GLuint, t.GLuint, t.GLuint))
    set_func('glDrawArraysInstanced', t.void, (t.GLenum, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glDrawElementsInstanced', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei))
    set_func('glFenceSync', t.GLsync, (t.GLenum, t.GLbitfield))
    set_func('glIsSync', t.GLboolean, (t.GLsync,))
    set_func('glDeleteSync', t.void, (t.GLsync,))
    set_func('glClientWaitSync', t.GLenum, (t.GLsync, t.GLbitfield, t.GLuint64))
    set_func('glWaitSync', t.void, (t.GLsync, t.GLbitfield, t.GLuint64))
    set_func('glGetInteger64v', t.void, (t.GLenum, ct.POINTER(t.GLint64)))
    set_func('glGetSynciv', t.void, (t.GLsync, t.GLenum, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLint)))
    set_func('glGetInteger64i_v', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLint64)))
    set_func('glGetBufferParameteri64v', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint64)))
    set_func('glGenSamplers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteSamplers', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsSampler', t.GLboolean, (t.GLuint,))
    set_func('glBindSampler', t.void, (t.GLuint, t.GLuint))
    set_func('glSamplerParameteri', t.void, (t.GLuint, t.GLenum, t.GLint))
    set_func('glSamplerParameteriv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glSamplerParameterf', t.void, (t.GLuint, t.GLenum, t.GLfloat))
    set_func('glSamplerParameterfv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glGetSamplerParameteriv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetSamplerParameterfv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glVertexAttribDivisor', t.void, (t.GLuint, t.GLuint))
    set_func('glBindTransformFeedback', t.void, (t.GLenum, t.GLuint))
    set_func('glDeleteTransformFeedbacks', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenTransformFeedbacks', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsTransformFeedback', t.GLboolean, (t.GLuint,))
    set_func('glPauseTransformFeedback', t.void, ())
    set_func('glResumeTransformFeedback', t.void, ())
    set_func('glGetProgramBinary', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLenum), ct.POINTER(t.void)))
    set_func('glProgramBinary', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.void), t.GLsizei))
    set_func('glProgramParameteri', t.void, (t.GLuint, t.GLenum, t.GLint))
    set_func('glInvalidateFramebuffer', t.void, (t.GLenum, t.GLsizei, ct.POINTER(t.GLenum)))
    set_func('glInvalidateSubFramebuffer', t.void, (t.GLenum, t.GLsizei, ct.POINTER(t.GLenum), t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glTexStorage2D', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glTexStorage3D', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei))
    set_func('glGetInternalformativ', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLsizei, ct.POINTER(t.GLint)))
    set_enum("GL_READ_BUFFER", 0x0C02)
    set_enum("GL_UNPACK_ROW_LENGTH", 0x0CF2)
    set_enum("GL_UNPACK_SKIP_ROWS", 0x0CF3)
    set_enum("GL_UNPACK_SKIP_PIXELS", 0x0CF4)
    set_enum("GL_PACK_ROW_LENGTH", 0x0D02)
    set_enum("GL_PACK_SKIP_ROWS", 0x0D03)
    set_enum("GL_PACK_SKIP_PIXELS", 0x0D04)
    set_enum("GL_COLOR", 0x1800)
    set_enum("GL_DEPTH", 0x1801)
    set_enum("GL_STENCIL", 0x1802)
    set_enum("GL_RED", 0x1903)
    set_enum("GL_RGB8", 0x8051)
    set_enum("GL_RGBA8", 0x8058)
    set_enum("GL_RGB10_A2", 0x8059)
    set_enum("GL_TEXTURE_BINDING_3D", 0x806A)
    set_enum("GL_UNPACK_SKIP_IMAGES", 0x806D)
    set_enum("GL_UNPACK_IMAGE_HEIGHT", 0x806E)
    set_enum("GL_TEXTURE_3D", 0x806F)
    set_enum("GL_TEXTURE_WRAP_R", 0x8072)
    set_enum("GL_MAX_3D_TEXTURE_SIZE", 0x8073)
    set_enum("GL_UNSIGNED_INT_2_10_10_10_REV", 0x8368)
    set_enum("GL_MAX_ELEMENTS_VERTICES", 0x80E8)
    set_enum("GL_MAX_ELEMENTS_INDICES", 0x80E9)
    set_enum("GL_TEXTURE_MIN_LOD", 0x813A)
    set_enum("GL_TEXTURE_MAX_LOD", 0x813B)
    set_enum("GL_TEXTURE_BASE_LEVEL", 0x813C)
    set_enum("GL_TEXTURE_MAX_LEVEL", 0x813D)
    set_enum("GL_MIN", 0x8007)
    set_enum("GL_MAX", 0x8008)
    set_enum("GL_DEPTH_COMPONENT24", 0x81A6)
    set_enum("GL_MAX_TEXTURE_LOD_BIAS", 0x84FD)
    set_enum("GL_TEXTURE_COMPARE_MODE", 0x884C)
    set_enum("GL_TEXTURE_COMPARE_FUNC", 0x884D)
    set_enum("GL_CURRENT_QUERY", 0x8865)
    set_enum("GL_QUERY_RESULT", 0x8866)
    set_enum("GL_QUERY_RESULT_AVAILABLE", 0x8867)
    set_enum("GL_BUFFER_MAPPED", 0x88BC)
    set_enum("GL_BUFFER_MAP_POINTER", 0x88BD)
    set_enum("GL_STREAM_READ", 0x88E1)
    set_enum("GL_STREAM_COPY", 0x88E2)
    set_enum("GL_STATIC_READ", 0x88E5)
    set_enum("GL_STATIC_COPY", 0x88E6)
    set_enum("GL_DYNAMIC_READ", 0x88E9)
    set_enum("GL_DYNAMIC_COPY", 0x88EA)
    set_enum("GL_MAX_DRAW_BUFFERS", 0x8824)
    set_enum("GL_DRAW_BUFFER0", 0x8825)
    set_enum("GL_DRAW_BUFFER1", 0x8826)
    set_enum("GL_DRAW_BUFFER2", 0x8827)
    set_enum("GL_DRAW_BUFFER3", 0x8828)
    set_enum("GL_DRAW_BUFFER4", 0x8829)
    set_enum("GL_DRAW_BUFFER5", 0x882A)
    set_enum("GL_DRAW_BUFFER6", 0x882B)
    set_enum("GL_DRAW_BUFFER7", 0x882C)
    set_enum("GL_DRAW_BUFFER8", 0x882D)
    set_enum("GL_DRAW_BUFFER9", 0x882E)
    set_enum("GL_DRAW_BUFFER10", 0x882F)
    set_enum("GL_DRAW_BUFFER11", 0x8830)
    set_enum("GL_DRAW_BUFFER12", 0x8831)
    set_enum("GL_DRAW_BUFFER13", 0x8832)
    set_enum("GL_DRAW_BUFFER14", 0x8833)
    set_enum("GL_DRAW_BUFFER15", 0x8834)
    set_enum("GL_MAX_FRAGMENT_UNIFORM_COMPONENTS", 0x8B49)
    set_enum("GL_MAX_VERTEX_UNIFORM_COMPONENTS", 0x8B4A)
    set_enum("GL_SAMPLER_3D", 0x8B5F)
    set_enum("GL_SAMPLER_2D_SHADOW", 0x8B62)
    set_enum("GL_FRAGMENT_SHADER_DERIVATIVE_HINT", 0x8B8B)
    set_enum("GL_PIXEL_PACK_BUFFER", 0x88EB)
    set_enum("GL_PIXEL_UNPACK_BUFFER", 0x88EC)
    set_enum("GL_PIXEL_PACK_BUFFER_BINDING", 0x88ED)
    set_enum("GL_PIXEL_UNPACK_BUFFER_BINDING", 0x88EF)
    set_enum("GL_FLOAT_MAT2x3", 0x8B65)
    set_enum("GL_FLOAT_MAT2x4", 0x8B66)
    set_enum("GL_FLOAT_MAT3x2", 0x8B67)
    set_enum("GL_FLOAT_MAT3x4", 0x8B68)
    set_enum("GL_FLOAT_MAT4x2", 0x8B69)
    set_enum("GL_FLOAT_MAT4x3", 0x8B6A)
    set_enum("GL_SRGB", 0x8C40)
    set_enum("GL_SRGB8", 0x8C41)
    set_enum("GL_SRGB8_ALPHA8", 0x8C43)
    set_enum("GL_COMPARE_REF_TO_TEXTURE", 0x884E)
    set_enum("GL_MAJOR_VERSION", 0x821B)
    set_enum("GL_MINOR_VERSION", 0x821C)
    set_enum("GL_NUM_EXTENSIONS", 0x821D)
    set_enum("GL_RGBA32F", 0x8814)
    set_enum("GL_RGB32F", 0x8815)
    set_enum("GL_RGBA16F", 0x881A)
    set_enum("GL_RGB16F", 0x881B)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_INTEGER", 0x88FD)
    set_enum("GL_MAX_ARRAY_TEXTURE_LAYERS", 0x88FF)
    set_enum("GL_MIN_PROGRAM_TEXEL_OFFSET", 0x8904)
    set_enum("GL_MAX_PROGRAM_TEXEL_OFFSET", 0x8905)
    set_enum("GL_MAX_VARYING_COMPONENTS", 0x8B4B)
    set_enum("GL_TEXTURE_2D_ARRAY", 0x8C1A)
    set_enum("GL_TEXTURE_BINDING_2D_ARRAY", 0x8C1D)
    set_enum("GL_R11F_G11F_B10F", 0x8C3A)
    set_enum("GL_UNSIGNED_INT_10F_11F_11F_REV", 0x8C3B)
    set_enum("GL_RGB9_E5", 0x8C3D)
    set_enum("GL_UNSIGNED_INT_5_9_9_9_REV", 0x8C3E)
    set_enum("GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH", 0x8C76)
    set_enum("GL_TRANSFORM_FEEDBACK_BUFFER_MODE", 0x8C7F)
    set_enum("GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", 0x8C80)
    set_enum("GL_TRANSFORM_FEEDBACK_VARYINGS", 0x8C83)
    set_enum("GL_TRANSFORM_FEEDBACK_BUFFER_START", 0x8C84)
    set_enum("GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", 0x8C85)
    set_enum("GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN", 0x8C88)
    set_enum("GL_RASTERIZER_DISCARD", 0x8C89)
    set_enum("GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", 0x8C8A)
    set_enum("GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", 0x8C8B)
    set_enum("GL_INTERLEAVED_ATTRIBS", 0x8C8C)
    set_enum("GL_SEPARATE_ATTRIBS", 0x8C8D)
    set_enum("GL_TRANSFORM_FEEDBACK_BUFFER", 0x8C8E)
    set_enum("GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", 0x8C8F)
    set_enum("GL_RGBA32UI", 0x8D70)
    set_enum("GL_RGB32UI", 0x8D71)
    set_enum("GL_RGBA16UI", 0x8D76)
    set_enum("GL_RGB16UI", 0x8D77)
    set_enum("GL_RGBA8UI", 0x8D7C)
    set_enum("GL_RGB8UI", 0x8D7D)
    set_enum("GL_RGBA32I", 0x8D82)
    set_enum("GL_RGB32I", 0x8D83)
    set_enum("GL_RGBA16I", 0x8D88)
    set_enum("GL_RGB16I", 0x8D89)
    set_enum("GL_RGBA8I", 0x8D8E)
    set_enum("GL_RGB8I", 0x8D8F)
    set_enum("GL_RED_INTEGER", 0x8D94)
    set_enum("GL_RGB_INTEGER", 0x8D98)
    set_enum("GL_RGBA_INTEGER", 0x8D99)
    set_enum("GL_SAMPLER_2D_ARRAY", 0x8DC1)
    set_enum("GL_SAMPLER_2D_ARRAY_SHADOW", 0x8DC4)
    set_enum("GL_SAMPLER_CUBE_SHADOW", 0x8DC5)
    set_enum("GL_UNSIGNED_INT_VEC2", 0x8DC6)
    set_enum("GL_UNSIGNED_INT_VEC3", 0x8DC7)
    set_enum("GL_UNSIGNED_INT_VEC4", 0x8DC8)
    set_enum("GL_INT_SAMPLER_2D", 0x8DCA)
    set_enum("GL_INT_SAMPLER_3D", 0x8DCB)
    set_enum("GL_INT_SAMPLER_CUBE", 0x8DCC)
    set_enum("GL_INT_SAMPLER_2D_ARRAY", 0x8DCF)
    set_enum("GL_UNSIGNED_INT_SAMPLER_2D", 0x8DD2)
    set_enum("GL_UNSIGNED_INT_SAMPLER_3D", 0x8DD3)
    set_enum("GL_UNSIGNED_INT_SAMPLER_CUBE", 0x8DD4)
    set_enum("GL_UNSIGNED_INT_SAMPLER_2D_ARRAY", 0x8DD7)
    set_enum("GL_BUFFER_ACCESS_FLAGS", 0x911F)
    set_enum("GL_BUFFER_MAP_LENGTH", 0x9120)
    set_enum("GL_BUFFER_MAP_OFFSET", 0x9121)
    set_enum("GL_DEPTH_COMPONENT32F", 0x8CAC)
    set_enum("GL_DEPTH32F_STENCIL8", 0x8CAD)
    set_enum("GL_FLOAT_32_UNSIGNED_INT_24_8_REV", 0x8DAD)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", 0x8210)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE", 0x8211)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE", 0x8212)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", 0x8213)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE", 0x8214)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", 0x8215)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE", 0x8216)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", 0x8217)
    set_enum("GL_FRAMEBUFFER_DEFAULT", 0x8218)
    set_enum("GL_FRAMEBUFFER_UNDEFINED", 0x8219)
    set_enum("GL_DEPTH_STENCIL_ATTACHMENT", 0x821A)
    set_enum("GL_DEPTH_STENCIL", 0x84F9)
    set_enum("GL_UNSIGNED_INT_24_8", 0x84FA)
    set_enum("GL_DEPTH24_STENCIL8", 0x88F0)
    set_enum("GL_UNSIGNED_NORMALIZED", 0x8C17)
    set_enum("GL_DRAW_FRAMEBUFFER_BINDING", 0x8CA6)
    set_enum("GL_READ_FRAMEBUFFER", 0x8CA8)
    set_enum("GL_DRAW_FRAMEBUFFER", 0x8CA9)
    set_enum("GL_READ_FRAMEBUFFER_BINDING", 0x8CAA)
    set_enum("GL_RENDERBUFFER_SAMPLES", 0x8CAB)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", 0x8CD4)
    set_enum("GL_MAX_COLOR_ATTACHMENTS", 0x8CDF)
    set_enum("GL_COLOR_ATTACHMENT1", 0x8CE1)
    set_enum("GL_COLOR_ATTACHMENT2", 0x8CE2)
    set_enum("GL_COLOR_ATTACHMENT3", 0x8CE3)
    set_enum("GL_COLOR_ATTACHMENT4", 0x8CE4)
    set_enum("GL_COLOR_ATTACHMENT5", 0x8CE5)
    set_enum("GL_COLOR_ATTACHMENT6", 0x8CE6)
    set_enum("GL_COLOR_ATTACHMENT7", 0x8CE7)
    set_enum("GL_COLOR_ATTACHMENT8", 0x8CE8)
    set_enum("GL_COLOR_ATTACHMENT9", 0x8CE9)
    set_enum("GL_COLOR_ATTACHMENT10", 0x8CEA)
    set_enum("GL_COLOR_ATTACHMENT11", 0x8CEB)
    set_enum("GL_COLOR_ATTACHMENT12", 0x8CEC)
    set_enum("GL_COLOR_ATTACHMENT13", 0x8CED)
    set_enum("GL_COLOR_ATTACHMENT14", 0x8CEE)
    set_enum("GL_COLOR_ATTACHMENT15", 0x8CEF)
    set_enum("GL_COLOR_ATTACHMENT16", 0x8CF0)
    set_enum("GL_COLOR_ATTACHMENT17", 0x8CF1)
    set_enum("GL_COLOR_ATTACHMENT18", 0x8CF2)
    set_enum("GL_COLOR_ATTACHMENT19", 0x8CF3)
    set_enum("GL_COLOR_ATTACHMENT20", 0x8CF4)
    set_enum("GL_COLOR_ATTACHMENT21", 0x8CF5)
    set_enum("GL_COLOR_ATTACHMENT22", 0x8CF6)
    set_enum("GL_COLOR_ATTACHMENT23", 0x8CF7)
    set_enum("GL_COLOR_ATTACHMENT24", 0x8CF8)
    set_enum("GL_COLOR_ATTACHMENT25", 0x8CF9)
    set_enum("GL_COLOR_ATTACHMENT26", 0x8CFA)
    set_enum("GL_COLOR_ATTACHMENT27", 0x8CFB)
    set_enum("GL_COLOR_ATTACHMENT28", 0x8CFC)
    set_enum("GL_COLOR_ATTACHMENT29", 0x8CFD)
    set_enum("GL_COLOR_ATTACHMENT30", 0x8CFE)
    set_enum("GL_COLOR_ATTACHMENT31", 0x8CFF)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE", 0x8D56)
    set_enum("GL_MAX_SAMPLES", 0x8D57)
    set_enum("GL_HALF_FLOAT", 0x140B)
    set_enum("GL_MAP_READ_BIT", 0x0001)
    set_enum("GL_MAP_WRITE_BIT", 0x0002)
    set_enum("GL_MAP_INVALIDATE_RANGE_BIT", 0x0004)
    set_enum("GL_MAP_INVALIDATE_BUFFER_BIT", 0x0008)
    set_enum("GL_MAP_FLUSH_EXPLICIT_BIT", 0x0010)
    set_enum("GL_MAP_UNSYNCHRONIZED_BIT", 0x0020)
    set_enum("GL_RG", 0x8227)
    set_enum("GL_RG_INTEGER", 0x8228)
    set_enum("GL_R8", 0x8229)
    set_enum("GL_RG8", 0x822B)
    set_enum("GL_R16F", 0x822D)
    set_enum("GL_R32F", 0x822E)
    set_enum("GL_RG16F", 0x822F)
    set_enum("GL_RG32F", 0x8230)
    set_enum("GL_R8I", 0x8231)
    set_enum("GL_R8UI", 0x8232)
    set_enum("GL_R16I", 0x8233)
    set_enum("GL_R16UI", 0x8234)
    set_enum("GL_R32I", 0x8235)
    set_enum("GL_R32UI", 0x8236)
    set_enum("GL_RG8I", 0x8237)
    set_enum("GL_RG8UI", 0x8238)
    set_enum("GL_RG16I", 0x8239)
    set_enum("GL_RG16UI", 0x823A)
    set_enum("GL_RG32I", 0x823B)
    set_enum("GL_RG32UI", 0x823C)
    set_enum("GL_VERTEX_ARRAY_BINDING", 0x85B5)
    set_enum("GL_R8_SNORM", 0x8F94)
    set_enum("GL_RG8_SNORM", 0x8F95)
    set_enum("GL_RGB8_SNORM", 0x8F96)
    set_enum("GL_RGBA8_SNORM", 0x8F97)
    set_enum("GL_SIGNED_NORMALIZED", 0x8F9C)
    set_enum("GL_PRIMITIVE_RESTART_FIXED_INDEX", 0x8D69)
    set_enum("GL_COPY_READ_BUFFER", 0x8F36)
    set_enum("GL_COPY_WRITE_BUFFER", 0x8F37)
    set_enum("GL_COPY_READ_BUFFER_BINDING", 0x8F36)
    set_enum("GL_COPY_WRITE_BUFFER_BINDING", 0x8F37)
    set_enum("GL_UNIFORM_BUFFER", 0x8A11)
    set_enum("GL_UNIFORM_BUFFER_BINDING", 0x8A28)
    set_enum("GL_UNIFORM_BUFFER_START", 0x8A29)
    set_enum("GL_UNIFORM_BUFFER_SIZE", 0x8A2A)
    set_enum("GL_MAX_VERTEX_UNIFORM_BLOCKS", 0x8A2B)
    set_enum("GL_MAX_FRAGMENT_UNIFORM_BLOCKS", 0x8A2D)
    set_enum("GL_MAX_COMBINED_UNIFORM_BLOCKS", 0x8A2E)
    set_enum("GL_MAX_UNIFORM_BUFFER_BINDINGS", 0x8A2F)
    set_enum("GL_MAX_UNIFORM_BLOCK_SIZE", 0x8A30)
    set_enum("GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", 0x8A31)
    set_enum("GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", 0x8A33)
    set_enum("GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT", 0x8A34)
    set_enum("GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH", 0x8A35)
    set_enum("GL_ACTIVE_UNIFORM_BLOCKS", 0x8A36)
    set_enum("GL_UNIFORM_TYPE", 0x8A37)
    set_enum("GL_UNIFORM_SIZE", 0x8A38)
    set_enum("GL_UNIFORM_NAME_LENGTH", 0x8A39)
    set_enum("GL_UNIFORM_BLOCK_INDEX", 0x8A3A)
    set_enum("GL_UNIFORM_OFFSET", 0x8A3B)
    set_enum("GL_UNIFORM_ARRAY_STRIDE", 0x8A3C)
    set_enum("GL_UNIFORM_MATRIX_STRIDE", 0x8A3D)
    set_enum("GL_UNIFORM_IS_ROW_MAJOR", 0x8A3E)
    set_enum("GL_UNIFORM_BLOCK_BINDING", 0x8A3F)
    set_enum("GL_UNIFORM_BLOCK_DATA_SIZE", 0x8A40)
    set_enum("GL_UNIFORM_BLOCK_NAME_LENGTH", 0x8A41)
    set_enum("GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS", 0x8A42)
    set_enum("GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES", 0x8A43)
    set_enum("GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", 0x8A44)
    set_enum("GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER", 0x8A46)
    set_enum("GL_INVALID_INDEX", 0xFFFFFFFF)
    set_enum("GL_MAX_VERTEX_OUTPUT_COMPONENTS", 0x9122)
    set_enum("GL_MAX_FRAGMENT_INPUT_COMPONENTS", 0x9125)
    set_enum("GL_MAX_SERVER_WAIT_TIMEOUT", 0x9111)
    set_enum("GL_OBJECT_TYPE", 0x9112)
    set_enum("GL_SYNC_CONDITION", 0x9113)
    set_enum("GL_SYNC_STATUS", 0x9114)
    set_enum("GL_SYNC_FLAGS", 0x9115)
    set_enum("GL_SYNC_FENCE", 0x9116)
    set_enum("GL_SYNC_GPU_COMMANDS_COMPLETE", 0x9117)
    set_enum("GL_UNSIGNALED", 0x9118)
    set_enum("GL_SIGNALED", 0x9119)
    set_enum("GL_ALREADY_SIGNALED", 0x911A)
    set_enum("GL_TIMEOUT_EXPIRED", 0x911B)
    set_enum("GL_CONDITION_SATISFIED", 0x911C)
    set_enum("GL_WAIT_FAILED", 0x911D)
    set_enum("GL_SYNC_FLUSH_COMMANDS_BIT", 0x00000001)
    set_enum("GL_TIMEOUT_IGNORED", 0xFFFFFFFFFFFFFFFF)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_DIVISOR", 0x88FE)
    set_enum("GL_ANY_SAMPLES_PASSED", 0x8C2F)
    set_enum("GL_ANY_SAMPLES_PASSED_CONSERVATIVE", 0x8D6A)
    set_enum("GL_SAMPLER_BINDING", 0x8919)
    set_enum("GL_RGB10_A2UI", 0x906F)
    set_enum("GL_TEXTURE_SWIZZLE_R", 0x8E42)
    set_enum("GL_TEXTURE_SWIZZLE_G", 0x8E43)
    set_enum("GL_TEXTURE_SWIZZLE_B", 0x8E44)
    set_enum("GL_TEXTURE_SWIZZLE_A", 0x8E45)
    set_enum("GL_GREEN", 0x1904)
    set_enum("GL_BLUE", 0x1905)
    set_enum("GL_INT_2_10_10_10_REV", 0x8D9F)
    set_enum("GL_TRANSFORM_FEEDBACK", 0x8E22)
    set_enum("GL_TRANSFORM_FEEDBACK_PAUSED", 0x8E23)
    set_enum("GL_TRANSFORM_FEEDBACK_ACTIVE", 0x8E24)
    set_enum("GL_TRANSFORM_FEEDBACK_BINDING", 0x8E25)
    set_enum("GL_PROGRAM_BINARY_RETRIEVABLE_HINT", 0x8257)
    set_enum("GL_PROGRAM_BINARY_LENGTH", 0x8741)
    set_enum("GL_NUM_PROGRAM_BINARY_FORMATS", 0x87FE)
    set_enum("GL_PROGRAM_BINARY_FORMATS", 0x87FF)
    set_enum("GL_COMPRESSED_R11_EAC", 0x9270)
    set_enum("GL_COMPRESSED_SIGNED_R11_EAC", 0x9271)
    set_enum("GL_COMPRESSED_RG11_EAC", 0x9272)
    set_enum("GL_COMPRESSED_SIGNED_RG11_EAC", 0x9273)
    set_enum("GL_COMPRESSED_RGB8_ETC2", 0x9274)
    set_enum("GL_COMPRESSED_SRGB8_ETC2", 0x9275)
    set_enum("GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9276)
    set_enum("GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9277)
    set_enum("GL_COMPRESSED_RGBA8_ETC2_EAC", 0x9278)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", 0x9279)
    set_enum("GL_TEXTURE_IMMUTABLE_FORMAT", 0x912F)
    set_enum("GL_MAX_ELEMENT_INDEX", 0x8D6B)
    set_enum("GL_NUM_SAMPLE_COUNTS", 0x9380)
    set_enum("GL_TEXTURE_IMMUTABLE_LEVELS", 0x82DF)


#### GLES2 VERSION 3.1 ####
def init_gl_es_version_3_1():
    set_func('glDispatchCompute', t.void, (t.GLuint, t.GLuint, t.GLuint))
    set_func('glDispatchComputeIndirect', t.void, (t.GLintptr,))
    set_func('glDrawArraysIndirect', t.void, (t.GLenum, ct.POINTER(t.void)))
    set_func('glDrawElementsIndirect', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glFramebufferParameteri', t.void, (t.GLenum, t.GLenum, t.GLint))
    set_func('glGetFramebufferParameteriv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetProgramInterfaceiv', t.void, (t.GLuint, t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetProgramResourceIndex', t.GLuint, (t.GLuint, t.GLenum, ct.POINTER(t.GLchar)))
    set_func('glGetProgramResourceName', t.void, (t.GLuint, t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetProgramResourceiv', t.void, (t.GLuint, t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLenum), t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLint)))
    set_func('glGetProgramResourceLocation', t.GLint, (t.GLuint, t.GLenum, ct.POINTER(t.GLchar)))
    set_func('glUseProgramStages', t.void, (t.GLuint, t.GLbitfield, t.GLuint))
    set_func('glActiveShaderProgram', t.void, (t.GLuint, t.GLuint))
    set_func('glCreateShaderProgramv', t.GLuint, (t.GLenum, t.GLsizei, ct.POINTER(ct.POINTER(t.GLchar))))
    set_func('glBindProgramPipeline', t.void, (t.GLuint,))
    set_func('glDeleteProgramPipelines', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenProgramPipelines', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsProgramPipeline', t.GLboolean, (t.GLuint,))
    set_func('glGetProgramPipelineiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glProgramUniform1i', t.void, (t.GLuint, t.GLint, t.GLint))
    set_func('glProgramUniform2i', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint))
    set_func('glProgramUniform3i', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glProgramUniform4i', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glProgramUniform1ui', t.void, (t.GLuint, t.GLint, t.GLuint))
    set_func('glProgramUniform2ui', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLuint))
    set_func('glProgramUniform3ui', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glProgramUniform4ui', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glProgramUniform1f', t.void, (t.GLuint, t.GLint, t.GLfloat))
    set_func('glProgramUniform2f', t.void, (t.GLuint, t.GLint, t.GLfloat, t.GLfloat))
    set_func('glProgramUniform3f', t.void, (t.GLuint, t.GLint, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glProgramUniform4f', t.void, (t.GLuint, t.GLint, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glProgramUniform1iv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform2iv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform3iv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform4iv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform1uiv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform2uiv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform3uiv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform4uiv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform1fv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform2fv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform3fv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform4fv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix2fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix3fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix4fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix2x3fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix3x2fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix2x4fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix4x2fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix3x4fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix4x3fv', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glValidateProgramPipeline', t.void, (t.GLuint,))
    set_func('glGetProgramPipelineInfoLog', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glBindImageTexture', t.void, (t.GLuint, t.GLuint, t.GLint, t.GLboolean, t.GLint, t.GLenum, t.GLenum))
    set_func('glGetBooleani_v', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLboolean)))
    set_func('glMemoryBarrier', t.void, (t.GLbitfield,))
    set_func('glMemoryBarrierByRegion', t.void, (t.GLbitfield,))
    set_func('glTexStorage2DMultisample', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei, t.GLboolean))
    set_func('glGetMultisamplefv', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glSampleMaski', t.void, (t.GLuint, t.GLbitfield))
    set_func('glGetTexLevelParameteriv', t.void, (t.GLenum, t.GLint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetTexLevelParameterfv', t.void, (t.GLenum, t.GLint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glBindVertexBuffer', t.void, (t.GLuint, t.GLuint, t.GLintptr, t.GLsizei))
    set_func('glVertexAttribFormat', t.void, (t.GLuint, t.GLint, t.GLenum, t.GLboolean, t.GLuint))
    set_func('glVertexAttribIFormat', t.void, (t.GLuint, t.GLint, t.GLenum, t.GLuint))
    set_func('glVertexAttribBinding', t.void, (t.GLuint, t.GLuint))
    set_func('glVertexBindingDivisor', t.void, (t.GLuint, t.GLuint))
    set_enum("GL_COMPUTE_SHADER", 0x91B9)
    set_enum("GL_MAX_COMPUTE_UNIFORM_BLOCKS", 0x91BB)
    set_enum("GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS", 0x91BC)
    set_enum("GL_MAX_COMPUTE_IMAGE_UNIFORMS", 0x91BD)
    set_enum("GL_MAX_COMPUTE_SHARED_MEMORY_SIZE", 0x8262)
    set_enum("GL_MAX_COMPUTE_UNIFORM_COMPONENTS", 0x8263)
    set_enum("GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", 0x8264)
    set_enum("GL_MAX_COMPUTE_ATOMIC_COUNTERS", 0x8265)
    set_enum("GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", 0x8266)
    set_enum("GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS", 0x90EB)
    set_enum("GL_MAX_COMPUTE_WORK_GROUP_COUNT", 0x91BE)
    set_enum("GL_MAX_COMPUTE_WORK_GROUP_SIZE", 0x91BF)
    set_enum("GL_COMPUTE_WORK_GROUP_SIZE", 0x8267)
    set_enum("GL_DISPATCH_INDIRECT_BUFFER", 0x90EE)
    set_enum("GL_DISPATCH_INDIRECT_BUFFER_BINDING", 0x90EF)
    set_enum("GL_COMPUTE_SHADER_BIT", 0x00000020)
    set_enum("GL_DRAW_INDIRECT_BUFFER", 0x8F3F)
    set_enum("GL_DRAW_INDIRECT_BUFFER_BINDING", 0x8F43)
    set_enum("GL_MAX_UNIFORM_LOCATIONS", 0x826E)
    set_enum("GL_FRAMEBUFFER_DEFAULT_WIDTH", 0x9310)
    set_enum("GL_FRAMEBUFFER_DEFAULT_HEIGHT", 0x9311)
    set_enum("GL_FRAMEBUFFER_DEFAULT_SAMPLES", 0x9313)
    set_enum("GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS", 0x9314)
    set_enum("GL_MAX_FRAMEBUFFER_WIDTH", 0x9315)
    set_enum("GL_MAX_FRAMEBUFFER_HEIGHT", 0x9316)
    set_enum("GL_MAX_FRAMEBUFFER_SAMPLES", 0x9318)
    set_enum("GL_UNIFORM", 0x92E1)
    set_enum("GL_UNIFORM_BLOCK", 0x92E2)
    set_enum("GL_PROGRAM_INPUT", 0x92E3)
    set_enum("GL_PROGRAM_OUTPUT", 0x92E4)
    set_enum("GL_BUFFER_VARIABLE", 0x92E5)
    set_enum("GL_SHADER_STORAGE_BLOCK", 0x92E6)
    set_enum("GL_ATOMIC_COUNTER_BUFFER", 0x92C0)
    set_enum("GL_TRANSFORM_FEEDBACK_VARYING", 0x92F4)
    set_enum("GL_ACTIVE_RESOURCES", 0x92F5)
    set_enum("GL_MAX_NAME_LENGTH", 0x92F6)
    set_enum("GL_MAX_NUM_ACTIVE_VARIABLES", 0x92F7)
    set_enum("GL_NAME_LENGTH", 0x92F9)
    set_enum("GL_TYPE", 0x92FA)
    set_enum("GL_ARRAY_SIZE", 0x92FB)
    set_enum("GL_OFFSET", 0x92FC)
    set_enum("GL_BLOCK_INDEX", 0x92FD)
    set_enum("GL_ARRAY_STRIDE", 0x92FE)
    set_enum("GL_MATRIX_STRIDE", 0x92FF)
    set_enum("GL_IS_ROW_MAJOR", 0x9300)
    set_enum("GL_ATOMIC_COUNTER_BUFFER_INDEX", 0x9301)
    set_enum("GL_BUFFER_BINDING", 0x9302)
    set_enum("GL_BUFFER_DATA_SIZE", 0x9303)
    set_enum("GL_NUM_ACTIVE_VARIABLES", 0x9304)
    set_enum("GL_ACTIVE_VARIABLES", 0x9305)
    set_enum("GL_REFERENCED_BY_VERTEX_SHADER", 0x9306)
    set_enum("GL_REFERENCED_BY_FRAGMENT_SHADER", 0x930A)
    set_enum("GL_REFERENCED_BY_COMPUTE_SHADER", 0x930B)
    set_enum("GL_TOP_LEVEL_ARRAY_SIZE", 0x930C)
    set_enum("GL_TOP_LEVEL_ARRAY_STRIDE", 0x930D)
    set_enum("GL_LOCATION", 0x930E)
    set_enum("GL_VERTEX_SHADER_BIT", 0x00000001)
    set_enum("GL_FRAGMENT_SHADER_BIT", 0x00000002)
    set_enum("GL_ALL_SHADER_BITS", 0xFFFFFFFF)
    set_enum("GL_PROGRAM_SEPARABLE", 0x8258)
    set_enum("GL_ACTIVE_PROGRAM", 0x8259)
    set_enum("GL_PROGRAM_PIPELINE_BINDING", 0x825A)
    set_enum("GL_ATOMIC_COUNTER_BUFFER_BINDING", 0x92C1)
    set_enum("GL_ATOMIC_COUNTER_BUFFER_START", 0x92C2)
    set_enum("GL_ATOMIC_COUNTER_BUFFER_SIZE", 0x92C3)
    set_enum("GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS", 0x92CC)
    set_enum("GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", 0x92D0)
    set_enum("GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", 0x92D1)
    set_enum("GL_MAX_VERTEX_ATOMIC_COUNTERS", 0x92D2)
    set_enum("GL_MAX_FRAGMENT_ATOMIC_COUNTERS", 0x92D6)
    set_enum("GL_MAX_COMBINED_ATOMIC_COUNTERS", 0x92D7)
    set_enum("GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE", 0x92D8)
    set_enum("GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS", 0x92DC)
    set_enum("GL_ACTIVE_ATOMIC_COUNTER_BUFFERS", 0x92D9)
    set_enum("GL_UNSIGNED_INT_ATOMIC_COUNTER", 0x92DB)
    set_enum("GL_MAX_IMAGE_UNITS", 0x8F38)
    set_enum("GL_MAX_VERTEX_IMAGE_UNIFORMS", 0x90CA)
    set_enum("GL_MAX_FRAGMENT_IMAGE_UNIFORMS", 0x90CE)
    set_enum("GL_MAX_COMBINED_IMAGE_UNIFORMS", 0x90CF)
    set_enum("GL_IMAGE_BINDING_NAME", 0x8F3A)
    set_enum("GL_IMAGE_BINDING_LEVEL", 0x8F3B)
    set_enum("GL_IMAGE_BINDING_LAYERED", 0x8F3C)
    set_enum("GL_IMAGE_BINDING_LAYER", 0x8F3D)
    set_enum("GL_IMAGE_BINDING_ACCESS", 0x8F3E)
    set_enum("GL_IMAGE_BINDING_FORMAT", 0x906E)
    set_enum("GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT", 0x00000001)
    set_enum("GL_ELEMENT_ARRAY_BARRIER_BIT", 0x00000002)
    set_enum("GL_UNIFORM_BARRIER_BIT", 0x00000004)
    set_enum("GL_TEXTURE_FETCH_BARRIER_BIT", 0x00000008)
    set_enum("GL_SHADER_IMAGE_ACCESS_BARRIER_BIT", 0x00000020)
    set_enum("GL_COMMAND_BARRIER_BIT", 0x00000040)
    set_enum("GL_PIXEL_BUFFER_BARRIER_BIT", 0x00000080)
    set_enum("GL_TEXTURE_UPDATE_BARRIER_BIT", 0x00000100)
    set_enum("GL_BUFFER_UPDATE_BARRIER_BIT", 0x00000200)
    set_enum("GL_FRAMEBUFFER_BARRIER_BIT", 0x00000400)
    set_enum("GL_TRANSFORM_FEEDBACK_BARRIER_BIT", 0x00000800)
    set_enum("GL_ATOMIC_COUNTER_BARRIER_BIT", 0x00001000)
    set_enum("GL_ALL_BARRIER_BITS", 0xFFFFFFFF)
    set_enum("GL_IMAGE_2D", 0x904D)
    set_enum("GL_IMAGE_3D", 0x904E)
    set_enum("GL_IMAGE_CUBE", 0x9050)
    set_enum("GL_IMAGE_2D_ARRAY", 0x9053)
    set_enum("GL_INT_IMAGE_2D", 0x9058)
    set_enum("GL_INT_IMAGE_3D", 0x9059)
    set_enum("GL_INT_IMAGE_CUBE", 0x905B)
    set_enum("GL_INT_IMAGE_2D_ARRAY", 0x905E)
    set_enum("GL_UNSIGNED_INT_IMAGE_2D", 0x9063)
    set_enum("GL_UNSIGNED_INT_IMAGE_3D", 0x9064)
    set_enum("GL_UNSIGNED_INT_IMAGE_CUBE", 0x9066)
    set_enum("GL_UNSIGNED_INT_IMAGE_2D_ARRAY", 0x9069)
    set_enum("GL_IMAGE_FORMAT_COMPATIBILITY_TYPE", 0x90C7)
    set_enum("GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE", 0x90C8)
    set_enum("GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS", 0x90C9)
    set_enum("GL_READ_ONLY", 0x88B8)
    set_enum("GL_WRITE_ONLY", 0x88B9)
    set_enum("GL_READ_WRITE", 0x88BA)
    set_enum("GL_SHADER_STORAGE_BUFFER", 0x90D2)
    set_enum("GL_SHADER_STORAGE_BUFFER_BINDING", 0x90D3)
    set_enum("GL_SHADER_STORAGE_BUFFER_START", 0x90D4)
    set_enum("GL_SHADER_STORAGE_BUFFER_SIZE", 0x90D5)
    set_enum("GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS", 0x90D6)
    set_enum("GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", 0x90DA)
    set_enum("GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS", 0x90DB)
    set_enum("GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS", 0x90DC)
    set_enum("GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS", 0x90DD)
    set_enum("GL_MAX_SHADER_STORAGE_BLOCK_SIZE", 0x90DE)
    set_enum("GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", 0x90DF)
    set_enum("GL_SHADER_STORAGE_BARRIER_BIT", 0x00002000)
    set_enum("GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES", 0x8F39)
    set_enum("GL_DEPTH_STENCIL_TEXTURE_MODE", 0x90EA)
    set_enum("GL_STENCIL_INDEX", 0x1901)
    set_enum("GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5E)
    set_enum("GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5F)
    set_enum("GL_SAMPLE_POSITION", 0x8E50)
    set_enum("GL_SAMPLE_MASK", 0x8E51)
    set_enum("GL_SAMPLE_MASK_VALUE", 0x8E52)
    set_enum("GL_TEXTURE_2D_MULTISAMPLE", 0x9100)
    set_enum("GL_MAX_SAMPLE_MASK_WORDS", 0x8E59)
    set_enum("GL_MAX_COLOR_TEXTURE_SAMPLES", 0x910E)
    set_enum("GL_MAX_DEPTH_TEXTURE_SAMPLES", 0x910F)
    set_enum("GL_MAX_INTEGER_SAMPLES", 0x9110)
    set_enum("GL_TEXTURE_BINDING_2D_MULTISAMPLE", 0x9104)
    set_enum("GL_TEXTURE_SAMPLES", 0x9106)
    set_enum("GL_TEXTURE_FIXED_SAMPLE_LOCATIONS", 0x9107)
    set_enum("GL_TEXTURE_WIDTH", 0x1000)
    set_enum("GL_TEXTURE_HEIGHT", 0x1001)
    set_enum("GL_TEXTURE_DEPTH", 0x8071)
    set_enum("GL_TEXTURE_INTERNAL_FORMAT", 0x1003)
    set_enum("GL_TEXTURE_RED_SIZE", 0x805C)
    set_enum("GL_TEXTURE_GREEN_SIZE", 0x805D)
    set_enum("GL_TEXTURE_BLUE_SIZE", 0x805E)
    set_enum("GL_TEXTURE_ALPHA_SIZE", 0x805F)
    set_enum("GL_TEXTURE_DEPTH_SIZE", 0x884A)
    set_enum("GL_TEXTURE_STENCIL_SIZE", 0x88F1)
    set_enum("GL_TEXTURE_SHARED_SIZE", 0x8C3F)
    set_enum("GL_TEXTURE_RED_TYPE", 0x8C10)
    set_enum("GL_TEXTURE_GREEN_TYPE", 0x8C11)
    set_enum("GL_TEXTURE_BLUE_TYPE", 0x8C12)
    set_enum("GL_TEXTURE_ALPHA_TYPE", 0x8C13)
    set_enum("GL_TEXTURE_DEPTH_TYPE", 0x8C16)
    set_enum("GL_TEXTURE_COMPRESSED", 0x86A1)
    set_enum("GL_SAMPLER_2D_MULTISAMPLE", 0x9108)
    set_enum("GL_INT_SAMPLER_2D_MULTISAMPLE", 0x9109)
    set_enum("GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE", 0x910A)
    set_enum("GL_VERTEX_ATTRIB_BINDING", 0x82D4)
    set_enum("GL_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D5)
    set_enum("GL_VERTEX_BINDING_DIVISOR", 0x82D6)
    set_enum("GL_VERTEX_BINDING_OFFSET", 0x82D7)
    set_enum("GL_VERTEX_BINDING_STRIDE", 0x82D8)
    set_enum("GL_VERTEX_BINDING_BUFFER", 0x8F4F)
    set_enum("GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D9)
    set_enum("GL_MAX_VERTEX_ATTRIB_BINDINGS", 0x82DA)
    set_enum("GL_MAX_VERTEX_ATTRIB_STRIDE", 0x82E5)


#### GLES2 VERSION 3.2 ####
def init_gl_es_version_3_2():
    set_func('glBlendBarrier', t.void, ())
    set_func('glCopyImageSubData', t.void, (t.GLuint, t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLuint, t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei))
    set_func('glDebugMessageControl', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLsizei, ct.POINTER(t.GLuint), t.GLboolean))
    set_func('glDebugMessageInsert', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLenum, t.GLsizei, ct.POINTER(t.GLchar)))
    # set_func('glDebugMessageCallback', t.void, (t.GLDEBUGPROC, ct.POINTER(t.void)))
    set_func('glGetDebugMessageLog', t.GLuint, (t.GLuint, t.GLsizei, ct.POINTER(t.GLenum), ct.POINTER(t.GLenum), ct.POINTER(t.GLuint), ct.POINTER(t.GLenum), ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glPushDebugGroup', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glPopDebugGroup', t.void, ())
    set_func('glObjectLabel', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glGetObjectLabel', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glObjectPtrLabel', t.void, (ct.POINTER(t.void), t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glGetObjectPtrLabel', t.void, (ct.POINTER(t.void), t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetPointerv', t.void, (t.GLenum, ct.POINTER(ct.POINTER(t.void))))
    set_func('glEnablei', t.void, (t.GLenum, t.GLuint))
    set_func('glDisablei', t.void, (t.GLenum, t.GLuint))
    set_func('glBlendEquationi', t.void, (t.GLuint, t.GLenum))
    set_func('glBlendEquationSeparatei', t.void, (t.GLuint, t.GLenum, t.GLenum))
    set_func('glBlendFunci', t.void, (t.GLuint, t.GLenum, t.GLenum))
    set_func('glBlendFuncSeparatei', t.void, (t.GLuint, t.GLenum, t.GLenum, t.GLenum, t.GLenum))
    set_func('glColorMaski', t.void, (t.GLuint, t.GLboolean, t.GLboolean, t.GLboolean, t.GLboolean))
    set_func('glIsEnabledi', t.GLboolean, (t.GLenum, t.GLuint))
    set_func('glDrawElementsBaseVertex', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_func('glDrawRangeElementsBaseVertex', t.void, (t.GLenum, t.GLuint, t.GLuint, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_func('glDrawElementsInstancedBaseVertex', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLint))
    set_func('glFramebufferTexture', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint))
    set_func('glPrimitiveBoundingBox', t.void, (t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glGetGraphicsResetStatus', t.GLenum, ())
    set_func('glReadnPixels', t.void, (t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glGetnUniformfv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glGetnUniformiv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glGetnUniformuiv', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glMinSampleShading', t.void, (t.GLfloat,))
    set_func('glPatchParameteri', t.void, (t.GLenum, t.GLint))
    set_func('glTexParameterIiv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glTexParameterIuiv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetTexParameterIiv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetTexParameterIuiv', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glSamplerParameterIiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glSamplerParameterIuiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetSamplerParameterIiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetSamplerParameterIuiv', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glTexBuffer', t.void, (t.GLenum, t.GLenum, t.GLuint))
    set_func('glTexBufferRange', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLintptr, t.GLsizeiptr))
    set_func('glTexStorage3DMultisample', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei, t.GLboolean))
    set_enum("GL_MULTISAMPLE_LINE_WIDTH_RANGE", 0x9381)
    set_enum("GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY", 0x9382)
    set_enum("GL_MULTIPLY", 0x9294)
    set_enum("GL_SCREEN", 0x9295)
    set_enum("GL_OVERLAY", 0x9296)
    set_enum("GL_DARKEN", 0x9297)
    set_enum("GL_LIGHTEN", 0x9298)
    set_enum("GL_COLORDODGE", 0x9299)
    set_enum("GL_COLORBURN", 0x929A)
    set_enum("GL_HARDLIGHT", 0x929B)
    set_enum("GL_SOFTLIGHT", 0x929C)
    set_enum("GL_DIFFERENCE", 0x929E)
    set_enum("GL_EXCLUSION", 0x92A0)
    set_enum("GL_HSL_HUE", 0x92AD)
    set_enum("GL_HSL_SATURATION", 0x92AE)
    set_enum("GL_HSL_COLOR", 0x92AF)
    set_enum("GL_HSL_LUMINOSITY", 0x92B0)
    set_enum("GL_DEBUG_OUTPUT_SYNCHRONOUS", 0x8242)
    set_enum("GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", 0x8243)
    set_enum("GL_DEBUG_CALLBACK_FUNCTION", 0x8244)
    set_enum("GL_DEBUG_CALLBACK_USER_PARAM", 0x8245)
    set_enum("GL_DEBUG_SOURCE_API", 0x8246)
    set_enum("GL_DEBUG_SOURCE_WINDOW_SYSTEM", 0x8247)
    set_enum("GL_DEBUG_SOURCE_SHADER_COMPILER", 0x8248)
    set_enum("GL_DEBUG_SOURCE_THIRD_PARTY", 0x8249)
    set_enum("GL_DEBUG_SOURCE_APPLICATION", 0x824A)
    set_enum("GL_DEBUG_SOURCE_OTHER", 0x824B)
    set_enum("GL_DEBUG_TYPE_ERROR", 0x824C)
    set_enum("GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR", 0x824D)
    set_enum("GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR", 0x824E)
    set_enum("GL_DEBUG_TYPE_PORTABILITY", 0x824F)
    set_enum("GL_DEBUG_TYPE_PERFORMANCE", 0x8250)
    set_enum("GL_DEBUG_TYPE_OTHER", 0x8251)
    set_enum("GL_DEBUG_TYPE_MARKER", 0x8268)
    set_enum("GL_DEBUG_TYPE_PUSH_GROUP", 0x8269)
    set_enum("GL_DEBUG_TYPE_POP_GROUP", 0x826A)
    set_enum("GL_DEBUG_SEVERITY_NOTIFICATION", 0x826B)
    set_enum("GL_MAX_DEBUG_GROUP_STACK_DEPTH", 0x826C)
    set_enum("GL_DEBUG_GROUP_STACK_DEPTH", 0x826D)
    set_enum("GL_BUFFER", 0x82E0)
    set_enum("GL_SHADER", 0x82E1)
    set_enum("GL_PROGRAM", 0x82E2)
    set_enum("GL_VERTEX_ARRAY", 0x8074)
    set_enum("GL_QUERY", 0x82E3)
    set_enum("GL_PROGRAM_PIPELINE", 0x82E4)
    set_enum("GL_SAMPLER", 0x82E6)
    set_enum("GL_MAX_LABEL_LENGTH", 0x82E8)
    set_enum("GL_MAX_DEBUG_MESSAGE_LENGTH", 0x9143)
    set_enum("GL_MAX_DEBUG_LOGGED_MESSAGES", 0x9144)
    set_enum("GL_DEBUG_LOGGED_MESSAGES", 0x9145)
    set_enum("GL_DEBUG_SEVERITY_HIGH", 0x9146)
    set_enum("GL_DEBUG_SEVERITY_MEDIUM", 0x9147)
    set_enum("GL_DEBUG_SEVERITY_LOW", 0x9148)
    set_enum("GL_DEBUG_OUTPUT", 0x92E0)
    set_enum("GL_CONTEXT_FLAG_DEBUG_BIT", 0x00000002)
    set_enum("GL_STACK_OVERFLOW", 0x0503)
    set_enum("GL_STACK_UNDERFLOW", 0x0504)
    set_enum("GL_GEOMETRY_SHADER", 0x8DD9)
    set_enum("GL_GEOMETRY_SHADER_BIT", 0x00000004)
    set_enum("GL_GEOMETRY_VERTICES_OUT", 0x8916)
    set_enum("GL_GEOMETRY_INPUT_TYPE", 0x8917)
    set_enum("GL_GEOMETRY_OUTPUT_TYPE", 0x8918)
    set_enum("GL_GEOMETRY_SHADER_INVOCATIONS", 0x887F)
    set_enum("GL_LAYER_PROVOKING_VERTEX", 0x825E)
    set_enum("GL_LINES_ADJACENCY", 0x000A)
    set_enum("GL_LINE_STRIP_ADJACENCY", 0x000B)
    set_enum("GL_TRIANGLES_ADJACENCY", 0x000C)
    set_enum("GL_TRIANGLE_STRIP_ADJACENCY", 0x000D)
    set_enum("GL_MAX_GEOMETRY_UNIFORM_COMPONENTS", 0x8DDF)
    set_enum("GL_MAX_GEOMETRY_UNIFORM_BLOCKS", 0x8A2C)
    set_enum("GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", 0x8A32)
    set_enum("GL_MAX_GEOMETRY_INPUT_COMPONENTS", 0x9123)
    set_enum("GL_MAX_GEOMETRY_OUTPUT_COMPONENTS", 0x9124)
    set_enum("GL_MAX_GEOMETRY_OUTPUT_VERTICES", 0x8DE0)
    set_enum("GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", 0x8DE1)
    set_enum("GL_MAX_GEOMETRY_SHADER_INVOCATIONS", 0x8E5A)
    set_enum("GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS", 0x8C29)
    set_enum("GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", 0x92CF)
    set_enum("GL_MAX_GEOMETRY_ATOMIC_COUNTERS", 0x92D5)
    set_enum("GL_MAX_GEOMETRY_IMAGE_UNIFORMS", 0x90CD)
    set_enum("GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS", 0x90D7)
    set_enum("GL_FIRST_VERTEX_CONVENTION", 0x8E4D)
    set_enum("GL_LAST_VERTEX_CONVENTION", 0x8E4E)
    set_enum("GL_UNDEFINED_VERTEX", 0x8260)
    set_enum("GL_PRIMITIVES_GENERATED", 0x8C87)
    set_enum("GL_FRAMEBUFFER_DEFAULT_LAYERS", 0x9312)
    set_enum("GL_MAX_FRAMEBUFFER_LAYERS", 0x9317)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS", 0x8DA8)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_LAYERED", 0x8DA7)
    set_enum("GL_REFERENCED_BY_GEOMETRY_SHADER", 0x9309)
    set_enum("GL_PRIMITIVE_BOUNDING_BOX", 0x92BE)
    set_enum("GL_NO_ERROR", 0)
    set_enum("GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT", 0x00000004)
    set_enum("GL_CONTEXT_FLAGS", 0x821E)
    set_enum("GL_LOSE_CONTEXT_ON_RESET", 0x8252)
    set_enum("GL_GUILTY_CONTEXT_RESET", 0x8253)
    set_enum("GL_INNOCENT_CONTEXT_RESET", 0x8254)
    set_enum("GL_UNKNOWN_CONTEXT_RESET", 0x8255)
    set_enum("GL_RESET_NOTIFICATION_STRATEGY", 0x8256)
    set_enum("GL_NO_RESET_NOTIFICATION", 0x8261)
    set_enum("GL_CONTEXT_LOST", 0x0507)
    set_enum("GL_SAMPLE_SHADING", 0x8C36)
    set_enum("GL_MIN_SAMPLE_SHADING_VALUE", 0x8C37)
    set_enum("GL_MIN_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5B)
    set_enum("GL_MAX_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5C)
    set_enum("GL_FRAGMENT_INTERPOLATION_OFFSET_BITS", 0x8E5D)
    set_enum("GL_PATCHES", 0x000E)
    set_enum("GL_PATCH_VERTICES", 0x8E72)
    set_enum("GL_TESS_CONTROL_OUTPUT_VERTICES", 0x8E75)
    set_enum("GL_TESS_GEN_MODE", 0x8E76)
    set_enum("GL_TESS_GEN_SPACING", 0x8E77)
    set_enum("GL_TESS_GEN_VERTEX_ORDER", 0x8E78)
    set_enum("GL_TESS_GEN_POINT_MODE", 0x8E79)
    set_enum("GL_TRIANGLES", 0x0004)
    set_enum("GL_ISOLINES", 0x8E7A)
    set_enum("GL_QUADS", 0x0007)
    set_enum("GL_EQUAL", 0x0202)
    set_enum("GL_FRACTIONAL_ODD", 0x8E7B)
    set_enum("GL_FRACTIONAL_EVEN", 0x8E7C)
    set_enum("GL_CCW", 0x0901)
    set_enum("GL_CW", 0x0900)
    set_enum("GL_MAX_PATCH_VERTICES", 0x8E7D)
    set_enum("GL_MAX_TESS_GEN_LEVEL", 0x8E7E)
    set_enum("GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E7F)
    set_enum("GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E80)
    set_enum("GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS", 0x8E81)
    set_enum("GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS", 0x8E82)
    set_enum("GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS", 0x8E83)
    set_enum("GL_MAX_TESS_PATCH_COMPONENTS", 0x8E84)
    set_enum("GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS", 0x8E85)
    set_enum("GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS", 0x8E86)
    set_enum("GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS", 0x8E89)
    set_enum("GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS", 0x8E8A)
    set_enum("GL_MAX_TESS_CONTROL_INPUT_COMPONENTS", 0x886C)
    set_enum("GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS", 0x886D)
    set_enum("GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E1E)
    set_enum("GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E1F)
    set_enum("GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS", 0x92CD)
    set_enum("GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS", 0x92CE)
    set_enum("GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS", 0x92D3)
    set_enum("GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS", 0x92D4)
    set_enum("GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS", 0x90CB)
    set_enum("GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS", 0x90CC)
    set_enum("GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", 0x90D8)
    set_enum("GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS", 0x90D9)
    set_enum("GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED", 0x8221)
    set_enum("GL_IS_PER_PATCH", 0x92E7)
    set_enum("GL_REFERENCED_BY_TESS_CONTROL_SHADER", 0x9307)
    set_enum("GL_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x9308)
    set_enum("GL_TESS_CONTROL_SHADER", 0x8E88)
    set_enum("GL_TESS_EVALUATION_SHADER", 0x8E87)
    set_enum("GL_TESS_CONTROL_SHADER_BIT", 0x00000008)
    set_enum("GL_TESS_EVALUATION_SHADER_BIT", 0x00000010)
    set_enum("GL_TEXTURE_BORDER_COLOR", 0x1004)
    set_enum("GL_CLAMP_TO_BORDER", 0x812D)
    set_enum("GL_TEXTURE_BUFFER", 0x8C2A)
    set_enum("GL_TEXTURE_BUFFER_BINDING", 0x8C2A)
    set_enum("GL_MAX_TEXTURE_BUFFER_SIZE", 0x8C2B)
    set_enum("GL_TEXTURE_BINDING_BUFFER", 0x8C2C)
    set_enum("GL_TEXTURE_BUFFER_DATA_STORE_BINDING", 0x8C2D)
    set_enum("GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT", 0x919F)
    set_enum("GL_SAMPLER_BUFFER", 0x8DC2)
    set_enum("GL_INT_SAMPLER_BUFFER", 0x8DD0)
    set_enum("GL_UNSIGNED_INT_SAMPLER_BUFFER", 0x8DD8)
    set_enum("GL_IMAGE_BUFFER", 0x9051)
    set_enum("GL_INT_IMAGE_BUFFER", 0x905C)
    set_enum("GL_UNSIGNED_INT_IMAGE_BUFFER", 0x9067)
    set_enum("GL_TEXTURE_BUFFER_OFFSET", 0x919D)
    set_enum("GL_TEXTURE_BUFFER_SIZE", 0x919E)
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x4", 0x93B0)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x4", 0x93B1)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x5", 0x93B2)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x5", 0x93B3)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x6", 0x93B4)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x5", 0x93B5)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x6", 0x93B6)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x8", 0x93B7)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x5", 0x93B8)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x6", 0x93B9)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x8", 0x93BA)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x10", 0x93BB)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x10", 0x93BC)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x12", 0x93BD)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4", 0x93D0)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4", 0x93D1)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5", 0x93D2)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5", 0x93D3)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6", 0x93D4)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5", 0x93D5)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6", 0x93D6)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8", 0x93D7)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5", 0x93D8)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6", 0x93D9)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8", 0x93DA)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10", 0x93DB)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10", 0x93DC)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12", 0x93DD)
    set_enum("GL_TEXTURE_CUBE_MAP_ARRAY", 0x9009)
    set_enum("GL_TEXTURE_BINDING_CUBE_MAP_ARRAY", 0x900A)
    set_enum("GL_SAMPLER_CUBE_MAP_ARRAY", 0x900C)
    set_enum("GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW", 0x900D)
    set_enum("GL_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900E)
    set_enum("GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900F)
    set_enum("GL_IMAGE_CUBE_MAP_ARRAY", 0x9054)
    set_enum("GL_INT_IMAGE_CUBE_MAP_ARRAY", 0x905F)
    set_enum("GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY", 0x906A)
    set_enum("GL_STENCIL_INDEX", 0x1901)
    set_enum("GL_STENCIL_INDEX8", 0x8D48)
    set_enum("GL_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9102)
    set_enum("GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", 0x9105)
    set_enum("GL_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910B)
    set_enum("GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910C)
    set_enum("GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910D)


#### GL_AMD_COMPRESSED_3DC_TEXTURE ####
def init_gl_amd_compressed_3dc_texture():
    set_enum("GL_3DC_X_AMD", 0x87F9)
    set_enum("GL_3DC_XY_AMD", 0x87FA)


#### GL_AMD_COMPRESSED_ATC_TEXTURE ####
def init_gl_amd_compressed_atc_texture():
    set_enum("GL_ATC_RGB_AMD", 0x8C92)
    set_enum("GL_ATC_RGBA_EXPLICIT_ALPHA_AMD", 0x8C93)
    set_enum("GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD", 0x87EE)


#### GL_AMD_PERFORMANCE_MONITOR ####
def init_gl_amd_performance_monitor():
    set_func('glGetPerfMonitorGroupsAMD', t.void, (ct.POINTER(t.GLint), t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGetPerfMonitorCountersAMD', t.void, (t.GLuint, ct.POINTER(t.GLint), ct.POINTER(t.GLint), t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGetPerfMonitorGroupStringAMD', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetPerfMonitorCounterStringAMD', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetPerfMonitorCounterInfoAMD', t.void, (t.GLuint, t.GLuint, t.GLenum, ct.POINTER(t.void)))
    set_func('glGenPerfMonitorsAMD', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeletePerfMonitorsAMD', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glSelectPerfMonitorCountersAMD', t.void, (t.GLuint, t.GLboolean, t.GLuint, t.GLint, ct.POINTER(t.GLuint)))
    set_func('glBeginPerfMonitorAMD', t.void, (t.GLuint,))
    set_func('glEndPerfMonitorAMD', t.void, (t.GLuint,))
    set_func('glGetPerfMonitorCounterDataAMD', t.void, (t.GLuint, t.GLenum, t.GLsizei, ct.POINTER(t.GLuint), ct.POINTER(t.GLint)))
    set_enum("GL_COUNTER_TYPE_AMD", 0x8BC0)
    set_enum("GL_COUNTER_RANGE_AMD", 0x8BC1)
    set_enum("GL_UNSIGNED_INT64_AMD", 0x8BC2)
    set_enum("GL_PERCENTAGE_AMD", 0x8BC3)
    set_enum("GL_PERFMON_RESULT_AVAILABLE_AMD", 0x8BC4)
    set_enum("GL_PERFMON_RESULT_SIZE_AMD", 0x8BC5)
    set_enum("GL_PERFMON_RESULT_AMD", 0x8BC6)


#### GL_AMD_PROGRAM_BINARY_Z400 ####
def init_gl_amd_program_binary_z400():
    set_enum("GL_Z400_BINARY_AMD", 0x8740)


#### GL_ANGLE_DEPTH_TEXTURE ####
def init_gl_angle_depth_texture():
    set_enum("GL_DEPTH_COMPONENT", 0x1902)
    set_enum("GL_DEPTH_STENCIL_OES", 0x84F9)
    set_enum("GL_UNSIGNED_SHORT", 0x1403)
    set_enum("GL_UNSIGNED_INT", 0x1405)
    set_enum("GL_UNSIGNED_INT_24_8_OES", 0x84FA)
    set_enum("GL_DEPTH_COMPONENT16", 0x81A5)
    set_enum("GL_DEPTH_COMPONENT32_OES", 0x81A7)
    set_enum("GL_DEPTH24_STENCIL8_OES", 0x88F0)


#### GL_ANGLE_FRAMEBUFFER_BLIT ####
def init_gl_angle_framebuffer_blit():
    set_func('glBlitFramebufferANGLE', t.void, (t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLbitfield, t.GLenum))
    set_enum("GL_READ_FRAMEBUFFER_ANGLE", 0x8CA8)
    set_enum("GL_DRAW_FRAMEBUFFER_ANGLE", 0x8CA9)
    set_enum("GL_DRAW_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6)
    set_enum("GL_READ_FRAMEBUFFER_BINDING_ANGLE", 0x8CAA)


#### GL_ANGLE_FRAMEBUFFER_MULTISAMPLE ####
def init_gl_angle_framebuffer_multisample():
    set_func('glRenderbufferStorageMultisampleANGLE', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_enum("GL_RENDERBUFFER_SAMPLES_ANGLE", 0x8CAB)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE", 0x8D56)
    set_enum("GL_MAX_SAMPLES_ANGLE", 0x8D57)


#### GL_ANGLE_INSTANCED_ARRAYS ####
def init_gl_angle_instanced_arrays():
    set_func('glDrawArraysInstancedANGLE', t.void, (t.GLenum, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glDrawElementsInstancedANGLE', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei))
    set_func('glVertexAttribDivisorANGLE', t.void, (t.GLuint, t.GLuint))
    set_enum("GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE", 0x88FE)


#### GL_ANGLE_PACK_REVERSE_ROW_ORDER ####
def init_gl_angle_pack_reverse_row_order():
    set_enum("GL_PACK_REVERSE_ROW_ORDER_ANGLE", 0x93A4)


#### GL_ANGLE_PROGRAM_BINARY ####
def init_gl_angle_program_binary():
    set_enum("GL_PROGRAM_BINARY_ANGLE", 0x93A6)


#### GL_ANGLE_TEXTURE_COMPRESSION_DXT3 ####
def init_gl_angle_texture_compression_dxt3():
    set_enum("GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE", 0x83F2)


#### GL_ANGLE_TEXTURE_COMPRESSION_DXT5 ####
def init_gl_angle_texture_compression_dxt5():
    set_enum("GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE", 0x83F3)


#### GL_ANGLE_TEXTURE_USAGE ####
def init_gl_angle_texture_usage():
    set_enum("GL_TEXTURE_USAGE_ANGLE", 0x93A2)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_ANGLE", 0x93A3)


#### GL_ANGLE_TRANSLATED_SHADER_SOURCE ####
def init_gl_angle_translated_shader_source():
    set_func('glGetTranslatedShaderSourceANGLE', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_enum("GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE", 0x93A0)


#### GL_APPLE_CLIP_DISTANCE ####
def init_gl_apple_clip_distance():
    set_enum("GL_MAX_CLIP_DISTANCES_APPLE", 0x0D32)
    set_enum("GL_CLIP_DISTANCE0_APPLE", 0x3000)
    set_enum("GL_CLIP_DISTANCE1_APPLE", 0x3001)
    set_enum("GL_CLIP_DISTANCE2_APPLE", 0x3002)
    set_enum("GL_CLIP_DISTANCE3_APPLE", 0x3003)
    set_enum("GL_CLIP_DISTANCE4_APPLE", 0x3004)
    set_enum("GL_CLIP_DISTANCE5_APPLE", 0x3005)
    set_enum("GL_CLIP_DISTANCE6_APPLE", 0x3006)
    set_enum("GL_CLIP_DISTANCE7_APPLE", 0x3007)


#### GL_APPLE_COPY_TEXTURE_LEVELS ####
def init_gl_apple_copy_texture_levels():
    set_func('glCopyTextureLevelsAPPLE', t.void, (t.GLuint, t.GLuint, t.GLint, t.GLsizei))


#### GL_APPLE_FRAMEBUFFER_MULTISAMPLE ####
def init_gl_apple_framebuffer_multisample():
    set_func('glRenderbufferStorageMultisampleAPPLE', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glResolveMultisampleFramebufferAPPLE', t.void, ())
    set_enum("GL_RENDERBUFFER_SAMPLES_APPLE", 0x8CAB)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE", 0x8D56)
    set_enum("GL_MAX_SAMPLES_APPLE", 0x8D57)
    set_enum("GL_READ_FRAMEBUFFER_APPLE", 0x8CA8)
    set_enum("GL_DRAW_FRAMEBUFFER_APPLE", 0x8CA9)
    set_enum("GL_DRAW_FRAMEBUFFER_BINDING_APPLE", 0x8CA6)
    set_enum("GL_READ_FRAMEBUFFER_BINDING_APPLE", 0x8CAA)


#### GL_APPLE_RGB_422 ####
def init_gl_apple_rgb_422():
    set_enum("GL_RGB_422_APPLE", 0x8A1F)
    set_enum("GL_UNSIGNED_SHORT_8_8_APPLE", 0x85BA)
    set_enum("GL_UNSIGNED_SHORT_8_8_REV_APPLE", 0x85BB)
    set_enum("GL_RGB_RAW_422_APPLE", 0x8A51)


#### GL_APPLE_SYNC ####
def init_gl_apple_sync():
    set_func('glFenceSyncAPPLE', t.GLsync, (t.GLenum, t.GLbitfield))
    set_func('glIsSyncAPPLE', t.GLboolean, (t.GLsync,))
    set_func('glDeleteSyncAPPLE', t.void, (t.GLsync,))
    set_func('glClientWaitSyncAPPLE', t.GLenum, (t.GLsync, t.GLbitfield, t.GLuint64))
    set_func('glWaitSyncAPPLE', t.void, (t.GLsync, t.GLbitfield, t.GLuint64))
    set_func('glGetInteger64vAPPLE', t.void, (t.GLenum, ct.POINTER(t.GLint64)))
    set_func('glGetSyncivAPPLE', t.void, (t.GLsync, t.GLenum, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLint)))
    set_enum("GL_SYNC_OBJECT_APPLE", 0x8A53)
    set_enum("GL_MAX_SERVER_WAIT_TIMEOUT_APPLE", 0x9111)
    set_enum("GL_OBJECT_TYPE_APPLE", 0x9112)
    set_enum("GL_SYNC_CONDITION_APPLE", 0x9113)
    set_enum("GL_SYNC_STATUS_APPLE", 0x9114)
    set_enum("GL_SYNC_FLAGS_APPLE", 0x9115)
    set_enum("GL_SYNC_FENCE_APPLE", 0x9116)
    set_enum("GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE", 0x9117)
    set_enum("GL_UNSIGNALED_APPLE", 0x9118)
    set_enum("GL_SIGNALED_APPLE", 0x9119)
    set_enum("GL_ALREADY_SIGNALED_APPLE", 0x911A)
    set_enum("GL_TIMEOUT_EXPIRED_APPLE", 0x911B)
    set_enum("GL_CONDITION_SATISFIED_APPLE", 0x911C)
    set_enum("GL_WAIT_FAILED_APPLE", 0x911D)
    set_enum("GL_SYNC_FLUSH_COMMANDS_BIT_APPLE", 0x00000001)
    set_enum("GL_TIMEOUT_IGNORED_APPLE", 0xFFFFFFFFFFFFFFFF)


#### GL_APPLE_TEXTURE_FORMAT_BGRA8888 ####
def init_gl_apple_texture_format_bgra8888():
    set_enum("GL_BGRA_EXT", 0x80E1)
    set_enum("GL_BGRA8_EXT", 0x93A1)


#### GL_APPLE_TEXTURE_MAX_LEVEL ####
def init_gl_apple_texture_max_level():
    set_enum("GL_TEXTURE_MAX_LEVEL_APPLE", 0x813D)


#### GL_APPLE_TEXTURE_PACKED_FLOAT ####
def init_gl_apple_texture_packed_float():
    set_enum("GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE", 0x8C3B)
    set_enum("GL_UNSIGNED_INT_5_9_9_9_REV_APPLE", 0x8C3E)
    set_enum("GL_R11F_G11F_B10F_APPLE", 0x8C3A)
    set_enum("GL_RGB9_E5_APPLE", 0x8C3D)


#### GL_ARM_MALI_PROGRAM_BINARY ####
def init_gl_arm_mali_program_binary():
    set_enum("GL_MALI_PROGRAM_BINARY_ARM", 0x8F61)


#### GL_ARM_MALI_SHADER_BINARY ####
def init_gl_arm_mali_shader_binary():
    set_enum("GL_MALI_SHADER_BINARY_ARM", 0x8F60)


#### GL_ARM_SHADER_FRAMEBUFFER_FETCH ####
def init_gl_arm_shader_framebuffer_fetch():
    set_enum("GL_FETCH_PER_SAMPLE_ARM", 0x8F65)
    set_enum("GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM", 0x8F66)


#### GL_DMP_PROGRAM_BINARY ####
def init_gl_dmp_program_binary():
    set_enum("GL_SMAPHS30_PROGRAM_BINARY_DMP", 0x9251)
    set_enum("GL_SMAPHS_PROGRAM_BINARY_DMP", 0x9252)
    set_enum("GL_DMP_PROGRAM_BINARY_DMP", 0x9253)


#### GL_DMP_SHADER_BINARY ####
def init_gl_dmp_shader_binary():
    set_enum("GL_SHADER_BINARY_DMP", 0x9250)


#### GL_EXT_YUV_TARGET ####
def init_gl_ext_yuv_target():
    set_enum("GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT", 0x8BE7)
    set_enum("GL_TEXTURE_EXTERNAL_OES", 0x8D65)
    set_enum("GL_TEXTURE_BINDING_EXTERNAL_OES", 0x8D67)
    set_enum("GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES", 0x8D68)


#### GL_EXT_BASE_INSTANCE ####
def init_gl_ext_base_instance():
    set_func('glDrawArraysInstancedBaseInstanceEXT', t.void, (t.GLenum, t.GLint, t.GLsizei, t.GLsizei, t.GLuint))
    set_func('glDrawElementsInstancedBaseInstanceEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLuint))
    set_func('glDrawElementsInstancedBaseVertexBaseInstanceEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLint, t.GLuint))


#### GL_EXT_BLEND_FUNC_EXTENDED ####
def init_gl_ext_blend_func_extended():
    set_func('glBindFragDataLocationIndexedEXT', t.void, (t.GLuint, t.GLuint, t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glBindFragDataLocationEXT', t.void, (t.GLuint, t.GLuint, ct.POINTER(t.GLchar)))
    set_func('glGetProgramResourceLocationIndexEXT', t.GLint, (t.GLuint, t.GLenum, ct.POINTER(t.GLchar)))
    set_func('glGetFragDataIndexEXT', t.GLint, (t.GLuint, ct.POINTER(t.GLchar)))
    set_enum("GL_SRC1_COLOR_EXT", 0x88F9)
    set_enum("GL_SRC1_ALPHA_EXT", 0x8589)
    set_enum("GL_ONE_MINUS_SRC1_COLOR_EXT", 0x88FA)
    set_enum("GL_ONE_MINUS_SRC1_ALPHA_EXT", 0x88FB)
    set_enum("GL_SRC_ALPHA_SATURATE_EXT", 0x0308)
    set_enum("GL_LOCATION_INDEX_EXT", 0x930F)
    set_enum("GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT", 0x88FC)


#### GL_EXT_BLEND_MINMAX ####
def init_gl_ext_blend_minmax():
    set_enum("GL_MIN_EXT", 0x8007)
    set_enum("GL_MAX_EXT", 0x8008)


#### GL_EXT_BUFFER_STORAGE ####
def init_gl_ext_buffer_storage():
    set_func('glBufferStorageEXT', t.void, (t.GLenum, t.GLsizeiptr, ct.POINTER(t.void), t.GLbitfield))
    set_enum("GL_MAP_READ_BIT", 0x0001)
    set_enum("GL_MAP_WRITE_BIT", 0x0002)
    set_enum("GL_MAP_PERSISTENT_BIT_EXT", 0x0040)
    set_enum("GL_MAP_COHERENT_BIT_EXT", 0x0080)
    set_enum("GL_DYNAMIC_STORAGE_BIT_EXT", 0x0100)
    set_enum("GL_CLIENT_STORAGE_BIT_EXT", 0x0200)
    set_enum("GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT", 0x00004000)
    set_enum("GL_BUFFER_IMMUTABLE_STORAGE_EXT", 0x821F)
    set_enum("GL_BUFFER_STORAGE_FLAGS_EXT", 0x8220)


#### GL_EXT_CLEAR_TEXTURE ####
def init_gl_ext_clear_texture():
    set_func('glClearTexImageEXT', t.void, (t.GLuint, t.GLint, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glClearTexSubImageEXT', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, ct.POINTER(t.void)))


#### GL_EXT_CLIP_CULL_DISTANCE ####
def init_gl_ext_clip_cull_distance():
    set_enum("GL_MAX_CLIP_DISTANCES_EXT", 0x0D32)
    set_enum("GL_MAX_CULL_DISTANCES_EXT", 0x82F9)
    set_enum("GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT", 0x82FA)
    set_enum("GL_CLIP_DISTANCE0_EXT", 0x3000)
    set_enum("GL_CLIP_DISTANCE1_EXT", 0x3001)
    set_enum("GL_CLIP_DISTANCE2_EXT", 0x3002)
    set_enum("GL_CLIP_DISTANCE3_EXT", 0x3003)
    set_enum("GL_CLIP_DISTANCE4_EXT", 0x3004)
    set_enum("GL_CLIP_DISTANCE5_EXT", 0x3005)
    set_enum("GL_CLIP_DISTANCE6_EXT", 0x3006)
    set_enum("GL_CLIP_DISTANCE7_EXT", 0x3007)


#### GL_EXT_COLOR_BUFFER_HALF_FLOAT ####
def init_gl_ext_color_buffer_half_float():
    set_enum("GL_RGBA16F_EXT", 0x881A)
    set_enum("GL_RGB16F_EXT", 0x881B)
    set_enum("GL_RG16F_EXT", 0x822F)
    set_enum("GL_R16F_EXT", 0x822D)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", 0x8211)
    set_enum("GL_UNSIGNED_NORMALIZED_EXT", 0x8C17)


#### GL_EXT_COPY_IMAGE ####
def init_gl_ext_copy_image():
    set_func('glCopyImageSubDataEXT', t.void, (t.GLuint, t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLuint, t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei))


#### GL_EXT_DEBUG_LABEL ####
def init_gl_ext_debug_label():
    set_func('glLabelObjectEXT', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glGetObjectLabelEXT', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_enum("GL_PROGRAM_PIPELINE_OBJECT_EXT", 0x8A4F)
    set_enum("GL_PROGRAM_OBJECT_EXT", 0x8B40)
    set_enum("GL_SHADER_OBJECT_EXT", 0x8B48)
    set_enum("GL_BUFFER_OBJECT_EXT", 0x9151)
    set_enum("GL_QUERY_OBJECT_EXT", 0x9153)
    set_enum("GL_VERTEX_ARRAY_OBJECT_EXT", 0x9154)
    set_enum("GL_SAMPLER", 0x82E6)
    set_enum("GL_TRANSFORM_FEEDBACK", 0x8E22)


#### GL_EXT_DEBUG_MARKER ####
def init_gl_ext_debug_marker():
    set_func('glInsertEventMarkerEXT', t.void, (t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glPushGroupMarkerEXT', t.void, (t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glPopGroupMarkerEXT', t.void, ())


#### GL_EXT_DISCARD_FRAMEBUFFER ####
def init_gl_ext_discard_framebuffer():
    set_func('glDiscardFramebufferEXT', t.void, (t.GLenum, t.GLsizei, ct.POINTER(t.GLenum)))
    set_enum("GL_COLOR_EXT", 0x1800)
    set_enum("GL_DEPTH_EXT", 0x1801)
    set_enum("GL_STENCIL_EXT", 0x1802)


#### GL_EXT_DISJOINT_TIMER_QUERY ####
def init_gl_ext_disjoint_timer_query():
    set_func('glGenQueriesEXT', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteQueriesEXT', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsQueryEXT', t.GLboolean, (t.GLuint,))
    set_func('glBeginQueryEXT', t.void, (t.GLenum, t.GLuint))
    set_func('glEndQueryEXT', t.void, (t.GLenum,))
    set_func('glQueryCounterEXT', t.void, (t.GLuint, t.GLenum))
    set_func('glGetQueryivEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetQueryObjectivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetQueryObjectuivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetQueryObjecti64vEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint64)))
    set_func('glGetQueryObjectui64vEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint64)))
    set_enum("GL_QUERY_COUNTER_BITS_EXT", 0x8864)
    set_enum("GL_CURRENT_QUERY_EXT", 0x8865)
    set_enum("GL_QUERY_RESULT_EXT", 0x8866)
    set_enum("GL_QUERY_RESULT_AVAILABLE_EXT", 0x8867)
    set_enum("GL_TIME_ELAPSED_EXT", 0x88BF)
    set_enum("GL_TIMESTAMP_EXT", 0x8E28)
    set_enum("GL_GPU_DISJOINT_EXT", 0x8FBB)


#### GL_EXT_DRAW_BUFFERS ####
def init_gl_ext_draw_buffers():
    set_func('glDrawBuffersEXT', t.void, (t.GLsizei, ct.POINTER(t.GLenum)))
    set_enum("GL_MAX_COLOR_ATTACHMENTS_EXT", 0x8CDF)
    set_enum("GL_MAX_DRAW_BUFFERS_EXT", 0x8824)
    set_enum("GL_DRAW_BUFFER0_EXT", 0x8825)
    set_enum("GL_DRAW_BUFFER1_EXT", 0x8826)
    set_enum("GL_DRAW_BUFFER2_EXT", 0x8827)
    set_enum("GL_DRAW_BUFFER3_EXT", 0x8828)
    set_enum("GL_DRAW_BUFFER4_EXT", 0x8829)
    set_enum("GL_DRAW_BUFFER5_EXT", 0x882A)
    set_enum("GL_DRAW_BUFFER6_EXT", 0x882B)
    set_enum("GL_DRAW_BUFFER7_EXT", 0x882C)
    set_enum("GL_DRAW_BUFFER8_EXT", 0x882D)
    set_enum("GL_DRAW_BUFFER9_EXT", 0x882E)
    set_enum("GL_DRAW_BUFFER10_EXT", 0x882F)
    set_enum("GL_DRAW_BUFFER11_EXT", 0x8830)
    set_enum("GL_DRAW_BUFFER12_EXT", 0x8831)
    set_enum("GL_DRAW_BUFFER13_EXT", 0x8832)
    set_enum("GL_DRAW_BUFFER14_EXT", 0x8833)
    set_enum("GL_DRAW_BUFFER15_EXT", 0x8834)
    set_enum("GL_COLOR_ATTACHMENT0_EXT", 0x8CE0)
    set_enum("GL_COLOR_ATTACHMENT1_EXT", 0x8CE1)
    set_enum("GL_COLOR_ATTACHMENT2_EXT", 0x8CE2)
    set_enum("GL_COLOR_ATTACHMENT3_EXT", 0x8CE3)
    set_enum("GL_COLOR_ATTACHMENT4_EXT", 0x8CE4)
    set_enum("GL_COLOR_ATTACHMENT5_EXT", 0x8CE5)
    set_enum("GL_COLOR_ATTACHMENT6_EXT", 0x8CE6)
    set_enum("GL_COLOR_ATTACHMENT7_EXT", 0x8CE7)
    set_enum("GL_COLOR_ATTACHMENT8_EXT", 0x8CE8)
    set_enum("GL_COLOR_ATTACHMENT9_EXT", 0x8CE9)
    set_enum("GL_COLOR_ATTACHMENT10_EXT", 0x8CEA)
    set_enum("GL_COLOR_ATTACHMENT11_EXT", 0x8CEB)
    set_enum("GL_COLOR_ATTACHMENT12_EXT", 0x8CEC)
    set_enum("GL_COLOR_ATTACHMENT13_EXT", 0x8CED)
    set_enum("GL_COLOR_ATTACHMENT14_EXT", 0x8CEE)
    set_enum("GL_COLOR_ATTACHMENT15_EXT", 0x8CEF)


#### GL_EXT_DRAW_BUFFERS_INDEXED ####
def init_gl_ext_draw_buffers_indexed():
    set_func('glEnableiEXT', t.void, (t.GLenum, t.GLuint))
    set_func('glDisableiEXT', t.void, (t.GLenum, t.GLuint))
    set_func('glBlendEquationiEXT', t.void, (t.GLuint, t.GLenum))
    set_func('glBlendEquationSeparateiEXT', t.void, (t.GLuint, t.GLenum, t.GLenum))
    set_func('glBlendFunciEXT', t.void, (t.GLuint, t.GLenum, t.GLenum))
    set_func('glBlendFuncSeparateiEXT', t.void, (t.GLuint, t.GLenum, t.GLenum, t.GLenum, t.GLenum))
    set_func('glColorMaskiEXT', t.void, (t.GLuint, t.GLboolean, t.GLboolean, t.GLboolean, t.GLboolean))
    set_func('glIsEnablediEXT', t.GLboolean, (t.GLenum, t.GLuint))
    set_enum("GL_BLEND_EQUATION_RGB", 0x8009)
    set_enum("GL_BLEND_EQUATION_ALPHA", 0x883D)
    set_enum("GL_BLEND_SRC_RGB", 0x80C9)
    set_enum("GL_BLEND_SRC_ALPHA", 0x80CB)
    set_enum("GL_BLEND_DST_RGB", 0x80C8)
    set_enum("GL_BLEND_DST_ALPHA", 0x80CA)
    set_enum("GL_COLOR_WRITEMASK", 0x0C23)
    set_enum("GL_BLEND", 0x0BE2)
    set_enum("GL_FUNC_ADD", 0x8006)
    set_enum("GL_FUNC_SUBTRACT", 0x800A)
    set_enum("GL_FUNC_REVERSE_SUBTRACT", 0x800B)
    set_enum("GL_MIN", 0x8007)
    set_enum("GL_MAX", 0x8008)
    set_enum("GL_ZERO", 0)
    set_enum("GL_ONE", 1)
    set_enum("GL_SRC_COLOR", 0x0300)
    set_enum("GL_ONE_MINUS_SRC_COLOR", 0x0301)
    set_enum("GL_DST_COLOR", 0x0306)
    set_enum("GL_ONE_MINUS_DST_COLOR", 0x0307)
    set_enum("GL_SRC_ALPHA", 0x0302)
    set_enum("GL_ONE_MINUS_SRC_ALPHA", 0x0303)
    set_enum("GL_DST_ALPHA", 0x0304)
    set_enum("GL_ONE_MINUS_DST_ALPHA", 0x0305)
    set_enum("GL_CONSTANT_COLOR", 0x8001)
    set_enum("GL_ONE_MINUS_CONSTANT_COLOR", 0x8002)
    set_enum("GL_CONSTANT_ALPHA", 0x8003)
    set_enum("GL_ONE_MINUS_CONSTANT_ALPHA", 0x8004)
    set_enum("GL_SRC_ALPHA_SATURATE", 0x0308)


#### GL_EXT_DRAW_ELEMENTS_BASE_VERTEX ####
def init_gl_ext_draw_elements_base_vertex():
    set_func('glDrawElementsBaseVertexEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_func('glDrawRangeElementsBaseVertexEXT', t.void, (t.GLenum, t.GLuint, t.GLuint, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_func('glDrawElementsInstancedBaseVertexEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLint))
    set_func('glMultiDrawElementsBaseVertexEXT', t.void, (t.GLenum, ct.POINTER(t.GLsizei), t.GLenum, ct.POINTER(ct.POINTER(t.void)), t.GLsizei, ct.POINTER(t.GLint)))


#### GL_EXT_DRAW_INSTANCED ####
def init_gl_ext_draw_instanced():
    set_func('glDrawArraysInstancedEXT', t.void, (t.GLenum, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glDrawElementsInstancedEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei))


#### GL_EXT_GEOMETRY_SHADER ####
def init_gl_ext_geometry_shader():
    set_func('glFramebufferTextureEXT', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint))
    set_enum("GL_GEOMETRY_SHADER_EXT", 0x8DD9)
    set_enum("GL_GEOMETRY_SHADER_BIT_EXT", 0x00000004)
    set_enum("GL_GEOMETRY_LINKED_VERTICES_OUT_EXT", 0x8916)
    set_enum("GL_GEOMETRY_LINKED_INPUT_TYPE_EXT", 0x8917)
    set_enum("GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT", 0x8918)
    set_enum("GL_GEOMETRY_SHADER_INVOCATIONS_EXT", 0x887F)
    set_enum("GL_LAYER_PROVOKING_VERTEX_EXT", 0x825E)
    set_enum("GL_LINES_ADJACENCY_EXT", 0x000A)
    set_enum("GL_LINE_STRIP_ADJACENCY_EXT", 0x000B)
    set_enum("GL_TRIANGLES_ADJACENCY_EXT", 0x000C)
    set_enum("GL_TRIANGLE_STRIP_ADJACENCY_EXT", 0x000D)
    set_enum("GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT", 0x8DDF)
    set_enum("GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT", 0x8A2C)
    set_enum("GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT", 0x8A32)
    set_enum("GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT", 0x9123)
    set_enum("GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT", 0x9124)
    set_enum("GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT", 0x8DE0)
    set_enum("GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT", 0x8DE1)
    set_enum("GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT", 0x8E5A)
    set_enum("GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT", 0x8C29)
    set_enum("GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT", 0x92CF)
    set_enum("GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT", 0x92D5)
    set_enum("GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT", 0x90CD)
    set_enum("GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT", 0x90D7)
    set_enum("GL_FIRST_VERTEX_CONVENTION_EXT", 0x8E4D)
    set_enum("GL_LAST_VERTEX_CONVENTION_EXT", 0x8E4E)
    set_enum("GL_UNDEFINED_VERTEX_EXT", 0x8260)
    set_enum("GL_PRIMITIVES_GENERATED_EXT", 0x8C87)
    set_enum("GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT", 0x9312)
    set_enum("GL_MAX_FRAMEBUFFER_LAYERS_EXT", 0x9317)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT", 0x8DA8)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT", 0x8DA7)
    set_enum("GL_REFERENCED_BY_GEOMETRY_SHADER_EXT", 0x9309)


#### GL_EXT_INSTANCED_ARRAYS ####
def init_gl_ext_instanced_arrays():
    set_func('glDrawArraysInstancedEXT', t.void, (t.GLenum, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glDrawElementsInstancedEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei))
    set_func('glVertexAttribDivisorEXT', t.void, (t.GLuint, t.GLuint))
    set_enum("GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT", 0x88FE)


#### GL_EXT_MAP_BUFFER_RANGE ####
def init_gl_ext_map_buffer_range():
    set_func('glMapBufferRangeEXT', ct.POINTER(t.void), (t.GLenum, t.GLintptr, t.GLsizeiptr, t.GLbitfield))
    set_func('glFlushMappedBufferRangeEXT', t.void, (t.GLenum, t.GLintptr, t.GLsizeiptr))
    set_enum("GL_MAP_READ_BIT_EXT", 0x0001)
    set_enum("GL_MAP_WRITE_BIT_EXT", 0x0002)
    set_enum("GL_MAP_INVALIDATE_RANGE_BIT_EXT", 0x0004)
    set_enum("GL_MAP_INVALIDATE_BUFFER_BIT_EXT", 0x0008)
    set_enum("GL_MAP_FLUSH_EXPLICIT_BIT_EXT", 0x0010)
    set_enum("GL_MAP_UNSYNCHRONIZED_BIT_EXT", 0x0020)


#### GL_EXT_MULTI_DRAW_ARRAYS ####
def init_gl_ext_multi_draw_arrays():
    set_func('glMultiDrawArraysEXT', t.void, (t.GLenum, ct.POINTER(t.GLint), ct.POINTER(t.GLsizei), t.GLsizei))
    set_func('glMultiDrawElementsEXT', t.void, (t.GLenum, ct.POINTER(t.GLsizei), t.GLenum, ct.POINTER(ct.POINTER(t.void)), t.GLsizei))


#### GL_EXT_MULTI_DRAW_INDIRECT ####
def init_gl_ext_multi_draw_indirect():
    set_func('glMultiDrawArraysIndirectEXT', t.void, (t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLsizei))
    set_func('glMultiDrawElementsIndirectEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLsizei))


#### GL_EXT_MULTISAMPLED_COMPATIBILITY ####
def init_gl_ext_multisampled_compatibility():
    set_enum("GL_MULTISAMPLE_EXT", 0x809D)
    set_enum("GL_SAMPLE_ALPHA_TO_ONE_EXT", 0x809F)


#### GL_EXT_MULTISAMPLED_RENDER_TO_TEXTURE ####
def init_gl_ext_multisampled_render_to_texture():
    set_func('glRenderbufferStorageMultisampleEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glFramebufferTexture2DMultisampleEXT', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLsizei))
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT", 0x8D6C)
    set_enum("GL_RENDERBUFFER_SAMPLES_EXT", 0x8CAB)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT", 0x8D56)
    set_enum("GL_MAX_SAMPLES_EXT", 0x8D57)


#### GL_EXT_MULTIVIEW_DRAW_BUFFERS ####
def init_gl_ext_multiview_draw_buffers():
    set_func('glReadBufferIndexedEXT', t.void, (t.GLenum, t.GLint))
    set_func('glDrawBuffersIndexedEXT', t.void, (t.GLint, ct.POINTER(t.GLenum), ct.POINTER(t.GLint)))
    set_func('glGetIntegeri_vEXT', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLint)))
    set_enum("GL_COLOR_ATTACHMENT_EXT", 0x90F0)
    set_enum("GL_MULTIVIEW_EXT", 0x90F1)
    set_enum("GL_DRAW_BUFFER_EXT", 0x0C01)
    set_enum("GL_READ_BUFFER_EXT", 0x0C02)
    set_enum("GL_MAX_MULTIVIEW_BUFFERS_EXT", 0x90F2)


#### GL_EXT_OCCLUSION_QUERY_BOOLEAN ####
def init_gl_ext_occlusion_query_boolean():
    set_func('glGenQueriesEXT', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glDeleteQueriesEXT', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsQueryEXT', t.GLboolean, (t.GLuint,))
    set_func('glBeginQueryEXT', t.void, (t.GLenum, t.GLuint))
    set_func('glEndQueryEXT', t.void, (t.GLenum,))
    set_func('glGetQueryivEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetQueryObjectuivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_enum("GL_ANY_SAMPLES_PASSED_EXT", 0x8C2F)
    set_enum("GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT", 0x8D6A)
    set_enum("GL_CURRENT_QUERY_EXT", 0x8865)
    set_enum("GL_QUERY_RESULT_EXT", 0x8866)
    set_enum("GL_QUERY_RESULT_AVAILABLE_EXT", 0x8867)


#### GL_EXT_POLYGON_OFFSET_CLAMP ####
def init_gl_ext_polygon_offset_clamp():
    set_func('glPolygonOffsetClampEXT', t.void, (t.GLfloat, t.GLfloat, t.GLfloat))
    set_enum("GL_POLYGON_OFFSET_CLAMP_EXT", 0x8E1B)


#### GL_EXT_PRIMITIVE_BOUNDING_BOX ####
def init_gl_ext_primitive_bounding_box():
    set_func('glPrimitiveBoundingBoxEXT', t.void, (t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_enum("GL_PRIMITIVE_BOUNDING_BOX_EXT", 0x92BE)


#### GL_EXT_PROTECTED_TEXTURES ####
def init_gl_ext_protected_textures():
    set_enum("GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT", 0x00000010)
    set_enum("GL_TEXTURE_PROTECTED_EXT", 0x8BFA)


#### GL_EXT_PVRTC_SRGB ####
def init_gl_ext_pvrtc_srgb():
    set_enum("GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT", 0x8A54)
    set_enum("GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT", 0x8A55)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT", 0x8A56)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT", 0x8A57)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG", 0x93F0)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG", 0x93F1)


#### GL_EXT_RASTER_MULTISAMPLE ####
def init_gl_ext_raster_multisample():
    set_func('glRasterSamplesEXT', t.void, (t.GLuint, t.GLboolean))
    set_enum("GL_RASTER_MULTISAMPLE_EXT", 0x9327)
    set_enum("GL_RASTER_SAMPLES_EXT", 0x9328)
    set_enum("GL_MAX_RASTER_SAMPLES_EXT", 0x9329)
    set_enum("GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT", 0x932A)
    set_enum("GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT", 0x932B)
    set_enum("GL_EFFECTIVE_RASTER_SAMPLES_EXT", 0x932C)


#### GL_EXT_READ_FORMAT_BGRA ####
def init_gl_ext_read_format_bgra():
    set_enum("GL_BGRA_EXT", 0x80E1)
    set_enum("GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT", 0x8365)
    set_enum("GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT", 0x8366)


#### GL_EXT_RENDER_SNORM ####
def init_gl_ext_render_snorm():
    set_enum("GL_BYTE", 0x1400)
    set_enum("GL_SHORT", 0x1402)
    set_enum("GL_R8_SNORM", 0x8F94)
    set_enum("GL_RG8_SNORM", 0x8F95)
    set_enum("GL_RGBA8_SNORM", 0x8F97)
    set_enum("GL_R16_SNORM_EXT", 0x8F98)
    set_enum("GL_RG16_SNORM_EXT", 0x8F99)
    set_enum("GL_RGBA16_SNORM_EXT", 0x8F9B)


#### GL_EXT_ROBUSTNESS ####
def init_gl_ext_robustness():
    set_func('glGetGraphicsResetStatusEXT', t.GLenum, ())
    set_func('glReadnPixelsEXT', t.void, (t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glGetnUniformfvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glGetnUniformivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_enum("GL_NO_ERROR", 0)
    set_enum("GL_GUILTY_CONTEXT_RESET_EXT", 0x8253)
    set_enum("GL_INNOCENT_CONTEXT_RESET_EXT", 0x8254)
    set_enum("GL_UNKNOWN_CONTEXT_RESET_EXT", 0x8255)
    set_enum("GL_CONTEXT_ROBUST_ACCESS_EXT", 0x90F3)
    set_enum("GL_RESET_NOTIFICATION_STRATEGY_EXT", 0x8256)
    set_enum("GL_LOSE_CONTEXT_ON_RESET_EXT", 0x8252)
    set_enum("GL_NO_RESET_NOTIFICATION_EXT", 0x8261)


#### GL_EXT_SRGB ####
def init_gl_ext_srgb():
    set_enum("GL_SRGB_EXT", 0x8C40)
    set_enum("GL_SRGB_ALPHA_EXT", 0x8C42)
    set_enum("GL_SRGB8_ALPHA8_EXT", 0x8C43)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT", 0x8210)


#### GL_EXT_SRGB_WRITE_CONTROL ####
def init_gl_ext_srgb_write_control():
    set_enum("GL_FRAMEBUFFER_SRGB_EXT", 0x8DB9)


#### GL_EXT_SEPARATE_SHADER_OBJECTS ####
def init_gl_ext_separate_shader_objects():
    set_func('glActiveShaderProgramEXT', t.void, (t.GLuint, t.GLuint))
    set_func('glBindProgramPipelineEXT', t.void, (t.GLuint,))
    set_func('glCreateShaderProgramvEXT', t.GLuint, (t.GLenum, t.GLsizei, ct.POINTER(ct.POINTER(t.GLchar))))
    set_func('glDeleteProgramPipelinesEXT', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenProgramPipelinesEXT', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGetProgramPipelineInfoLogEXT', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetProgramPipelineivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glIsProgramPipelineEXT', t.GLboolean, (t.GLuint,))
    set_func('glProgramParameteriEXT', t.void, (t.GLuint, t.GLenum, t.GLint))
    set_func('glProgramUniform1fEXT', t.void, (t.GLuint, t.GLint, t.GLfloat))
    set_func('glProgramUniform1fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform1iEXT', t.void, (t.GLuint, t.GLint, t.GLint))
    set_func('glProgramUniform1ivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform2fEXT', t.void, (t.GLuint, t.GLint, t.GLfloat, t.GLfloat))
    set_func('glProgramUniform2fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform2iEXT', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint))
    set_func('glProgramUniform2ivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform3fEXT', t.void, (t.GLuint, t.GLint, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glProgramUniform3fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform3iEXT', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glProgramUniform3ivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniform4fEXT', t.void, (t.GLuint, t.GLint, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glProgramUniform4fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniform4iEXT', t.void, (t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_func('glProgramUniform4ivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glProgramUniformMatrix2fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix3fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix4fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUseProgramStagesEXT', t.void, (t.GLuint, t.GLbitfield, t.GLuint))
    set_func('glValidateProgramPipelineEXT', t.void, (t.GLuint,))
    set_func('glProgramUniform1uiEXT', t.void, (t.GLuint, t.GLint, t.GLuint))
    set_func('glProgramUniform2uiEXT', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLuint))
    set_func('glProgramUniform3uiEXT', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glProgramUniform4uiEXT', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLuint, t.GLuint, t.GLuint))
    set_func('glProgramUniform1uivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform2uivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform3uivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniform4uivEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glProgramUniformMatrix2x3fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix3x2fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix2x4fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix4x2fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix3x4fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glProgramUniformMatrix4x3fvEXT', t.void, (t.GLuint, t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_enum("GL_VERTEX_SHADER_BIT_EXT", 0x00000001)
    set_enum("GL_FRAGMENT_SHADER_BIT_EXT", 0x00000002)
    set_enum("GL_ALL_SHADER_BITS_EXT", 0xFFFFFFFF)
    set_enum("GL_PROGRAM_SEPARABLE_EXT", 0x8258)
    set_enum("GL_ACTIVE_PROGRAM_EXT", 0x8B8D)
    set_enum("GL_PROGRAM_PIPELINE_BINDING_EXT", 0x825A)


#### GL_EXT_SHADER_FRAMEBUFFER_FETCH ####
def init_gl_ext_shader_framebuffer_fetch():
    set_enum("GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT", 0x8A52)


#### GL_EXT_SHADER_PIXEL_LOCAL_STORAGE ####
def init_gl_ext_shader_pixel_local_storage():
    set_enum("GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT", 0x8F63)
    set_enum("GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT", 0x8F67)
    set_enum("GL_SHADER_PIXEL_LOCAL_STORAGE_EXT", 0x8F64)


#### GL_EXT_SHADER_PIXEL_LOCAL_STORAGE2 ####
def init_gl_ext_shader_pixel_local_storage2():
    set_func('glFramebufferPixelLocalStorageSizeEXT', t.void, (t.GLuint, t.GLsizei))
    set_func('glGetFramebufferPixelLocalStorageSizeEXT', t.GLsizei, (t.GLuint,))
    set_func('glClearPixelLocalStorageuiEXT', t.void, (t.GLsizei, t.GLsizei, ct.POINTER(t.GLuint)))
    set_enum("GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT", 0x9650)
    set_enum("GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT", 0x9651)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT", 0x9652)


#### GL_EXT_SHADOW_SAMPLERS ####
def init_gl_ext_shadow_samplers():
    set_enum("GL_TEXTURE_COMPARE_MODE_EXT", 0x884C)
    set_enum("GL_TEXTURE_COMPARE_FUNC_EXT", 0x884D)
    set_enum("GL_COMPARE_REF_TO_TEXTURE_EXT", 0x884E)
    set_enum("GL_SAMPLER_2D_SHADOW_EXT", 0x8B62)


#### GL_EXT_SPARSE_TEXTURE ####
def init_gl_ext_sparse_texture():
    set_func('glTexPageCommitmentEXT', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLboolean))
    set_enum("GL_TEXTURE_SPARSE_EXT", 0x91A6)
    set_enum("GL_VIRTUAL_PAGE_SIZE_INDEX_EXT", 0x91A7)
    set_enum("GL_NUM_SPARSE_LEVELS_EXT", 0x91AA)
    set_enum("GL_NUM_VIRTUAL_PAGE_SIZES_EXT", 0x91A8)
    set_enum("GL_VIRTUAL_PAGE_SIZE_X_EXT", 0x9195)
    set_enum("GL_VIRTUAL_PAGE_SIZE_Y_EXT", 0x9196)
    set_enum("GL_VIRTUAL_PAGE_SIZE_Z_EXT", 0x9197)
    set_enum("GL_TEXTURE_2D", 0x0DE1)
    set_enum("GL_TEXTURE_2D_ARRAY", 0x8C1A)
    set_enum("GL_TEXTURE_CUBE_MAP", 0x8513)
    set_enum("GL_TEXTURE_CUBE_MAP_ARRAY_OES", 0x9009)
    set_enum("GL_TEXTURE_3D", 0x806F)
    set_enum("GL_MAX_SPARSE_TEXTURE_SIZE_EXT", 0x9198)
    set_enum("GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT", 0x9199)
    set_enum("GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT", 0x919A)
    set_enum("GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT", 0x91A9)


#### GL_EXT_TESSELLATION_SHADER ####
def init_gl_ext_tessellation_shader():
    set_func('glPatchParameteriEXT', t.void, (t.GLenum, t.GLint))
    set_enum("GL_PATCHES_EXT", 0x000E)
    set_enum("GL_PATCH_VERTICES_EXT", 0x8E72)
    set_enum("GL_TESS_CONTROL_OUTPUT_VERTICES_EXT", 0x8E75)
    set_enum("GL_TESS_GEN_MODE_EXT", 0x8E76)
    set_enum("GL_TESS_GEN_SPACING_EXT", 0x8E77)
    set_enum("GL_TESS_GEN_VERTEX_ORDER_EXT", 0x8E78)
    set_enum("GL_TESS_GEN_POINT_MODE_EXT", 0x8E79)
    set_enum("GL_TRIANGLES", 0x0004)
    set_enum("GL_ISOLINES_EXT", 0x8E7A)
    set_enum("GL_QUADS_EXT", 0x0007)
    set_enum("GL_EQUAL", 0x0202)
    set_enum("GL_FRACTIONAL_ODD_EXT", 0x8E7B)
    set_enum("GL_FRACTIONAL_EVEN_EXT", 0x8E7C)
    set_enum("GL_CCW", 0x0901)
    set_enum("GL_CW", 0x0900)
    set_enum("GL_MAX_PATCH_VERTICES_EXT", 0x8E7D)
    set_enum("GL_MAX_TESS_GEN_LEVEL_EXT", 0x8E7E)
    set_enum("GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT", 0x8E7F)
    set_enum("GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT", 0x8E80)
    set_enum("GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT", 0x8E81)
    set_enum("GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT", 0x8E82)
    set_enum("GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT", 0x8E83)
    set_enum("GL_MAX_TESS_PATCH_COMPONENTS_EXT", 0x8E84)
    set_enum("GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT", 0x8E85)
    set_enum("GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT", 0x8E86)
    set_enum("GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT", 0x8E89)
    set_enum("GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT", 0x8E8A)
    set_enum("GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT", 0x886C)
    set_enum("GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT", 0x886D)
    set_enum("GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT", 0x8E1E)
    set_enum("GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT", 0x8E1F)
    set_enum("GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT", 0x92CD)
    set_enum("GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT", 0x92CE)
    set_enum("GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT", 0x92D3)
    set_enum("GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT", 0x92D4)
    set_enum("GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT", 0x90CB)
    set_enum("GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT", 0x90CC)
    set_enum("GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT", 0x90D8)
    set_enum("GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT", 0x90D9)
    set_enum("GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED", 0x8221)
    set_enum("GL_IS_PER_PATCH_EXT", 0x92E7)
    set_enum("GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT", 0x9307)
    set_enum("GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT", 0x9308)
    set_enum("GL_TESS_CONTROL_SHADER_EXT", 0x8E88)
    set_enum("GL_TESS_EVALUATION_SHADER_EXT", 0x8E87)
    set_enum("GL_TESS_CONTROL_SHADER_BIT_EXT", 0x00000008)
    set_enum("GL_TESS_EVALUATION_SHADER_BIT_EXT", 0x00000010)


#### GL_EXT_TEXTURE_BORDER_CLAMP ####
def init_gl_ext_texture_border_clamp():
    set_func('glTexParameterIivEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glTexParameterIuivEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetTexParameterIivEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetTexParameterIuivEXT', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glSamplerParameterIivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glSamplerParameterIuivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetSamplerParameterIivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetSamplerParameterIuivEXT', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_enum("GL_TEXTURE_BORDER_COLOR_EXT", 0x1004)
    set_enum("GL_CLAMP_TO_BORDER_EXT", 0x812D)


#### GL_EXT_TEXTURE_BUFFER ####
def init_gl_ext_texture_buffer():
    set_func('glTexBufferEXT', t.void, (t.GLenum, t.GLenum, t.GLuint))
    set_func('glTexBufferRangeEXT', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLintptr, t.GLsizeiptr))
    set_enum("GL_TEXTURE_BUFFER_EXT", 0x8C2A)
    set_enum("GL_TEXTURE_BUFFER_BINDING_EXT", 0x8C2A)
    set_enum("GL_MAX_TEXTURE_BUFFER_SIZE_EXT", 0x8C2B)
    set_enum("GL_TEXTURE_BINDING_BUFFER_EXT", 0x8C2C)
    set_enum("GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT", 0x8C2D)
    set_enum("GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT", 0x919F)
    set_enum("GL_SAMPLER_BUFFER_EXT", 0x8DC2)
    set_enum("GL_INT_SAMPLER_BUFFER_EXT", 0x8DD0)
    set_enum("GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT", 0x8DD8)
    set_enum("GL_IMAGE_BUFFER_EXT", 0x9051)
    set_enum("GL_INT_IMAGE_BUFFER_EXT", 0x905C)
    set_enum("GL_UNSIGNED_INT_IMAGE_BUFFER_EXT", 0x9067)
    set_enum("GL_TEXTURE_BUFFER_OFFSET_EXT", 0x919D)
    set_enum("GL_TEXTURE_BUFFER_SIZE_EXT", 0x919E)


#### GL_EXT_TEXTURE_COMPRESSION_DXT1 ####
def init_gl_ext_texture_compression_dxt1():
    set_enum("GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0)
    set_enum("GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1)


#### GL_EXT_TEXTURE_COMPRESSION_S3TC ####
def init_gl_ext_texture_compression_s3tc():
    set_enum("GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0)
    set_enum("GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1)
    set_enum("GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2)
    set_enum("GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3)


#### GL_EXT_TEXTURE_CUBE_MAP_ARRAY ####
def init_gl_ext_texture_cube_map_array():
    set_enum("GL_TEXTURE_CUBE_MAP_ARRAY_EXT", 0x9009)
    set_enum("GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT", 0x900A)
    set_enum("GL_SAMPLER_CUBE_MAP_ARRAY_EXT", 0x900C)
    set_enum("GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT", 0x900D)
    set_enum("GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT", 0x900E)
    set_enum("GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT", 0x900F)
    set_enum("GL_IMAGE_CUBE_MAP_ARRAY_EXT", 0x9054)
    set_enum("GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x905F)
    set_enum("GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x906A)


#### GL_EXT_TEXTURE_FILTER_ANISOTROPIC ####
def init_gl_ext_texture_filter_anisotropic():
    set_enum("GL_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FE)
    set_enum("GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FF)


#### GL_EXT_TEXTURE_FILTER_MINMAX ####
def init_gl_ext_texture_filter_minmax():
    set_func('glRasterSamplesEXT', t.void, (t.GLuint, t.GLboolean))
    set_enum("GL_RASTER_MULTISAMPLE_EXT", 0x9327)
    set_enum("GL_RASTER_SAMPLES_EXT", 0x9328)
    set_enum("GL_MAX_RASTER_SAMPLES_EXT", 0x9329)
    set_enum("GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT", 0x932A)
    set_enum("GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT", 0x932B)
    set_enum("GL_EFFECTIVE_RASTER_SAMPLES_EXT", 0x932C)


#### GL_EXT_TEXTURE_FORMAT_BGRA8888 ####
def init_gl_ext_texture_format_bgra8888():
    set_enum("GL_BGRA_EXT", 0x80E1)


#### GL_EXT_TEXTURE_NORM16 ####
def init_gl_ext_texture_norm16():
    set_enum("GL_R16_EXT", 0x822A)
    set_enum("GL_RG16_EXT", 0x822C)
    set_enum("GL_RGBA16_EXT", 0x805B)
    set_enum("GL_RGB16_EXT", 0x8054)
    set_enum("GL_R16_SNORM_EXT", 0x8F98)
    set_enum("GL_RG16_SNORM_EXT", 0x8F99)
    set_enum("GL_RGB16_SNORM_EXT", 0x8F9A)
    set_enum("GL_RGBA16_SNORM_EXT", 0x8F9B)


#### GL_EXT_TEXTURE_RG ####
def init_gl_ext_texture_rg():
    set_enum("GL_RED_EXT", 0x1903)
    set_enum("GL_RG_EXT", 0x8227)
    set_enum("GL_R8_EXT", 0x8229)
    set_enum("GL_RG8_EXT", 0x822B)


#### GL_EXT_TEXTURE_SRGB_R8 ####
def init_gl_ext_texture_srgb_r8():
    set_enum("GL_SR8_EXT", 0x8FBD)


#### GL_EXT_TEXTURE_SRGB_RG8 ####
def init_gl_ext_texture_srgb_rg8():
    set_enum("GL_SRG8_EXT", 0x8FBE)


#### GL_EXT_TEXTURE_SRGB_DECODE ####
def init_gl_ext_texture_srgb_decode():
    set_enum("GL_TEXTURE_SRGB_DECODE_EXT", 0x8A48)
    set_enum("GL_DECODE_EXT", 0x8A49)
    set_enum("GL_SKIP_DECODE_EXT", 0x8A4A)


#### GL_EXT_TEXTURE_STORAGE ####
def init_gl_ext_texture_storage():
    set_func('glTexStorage1DEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei))
    set_func('glTexStorage2DEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glTexStorage3DEXT', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei))
    set_func('glTextureStorage1DEXT', t.void, (t.GLuint, t.GLenum, t.GLsizei, t.GLenum, t.GLsizei))
    set_func('glTextureStorage2DEXT', t.void, (t.GLuint, t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glTextureStorage3DEXT', t.void, (t.GLuint, t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei))
    set_enum("GL_TEXTURE_IMMUTABLE_FORMAT_EXT", 0x912F)
    set_enum("GL_ALPHA8_EXT", 0x803C)
    set_enum("GL_LUMINANCE8_EXT", 0x8040)
    set_enum("GL_LUMINANCE8_ALPHA8_EXT", 0x8045)
    set_enum("GL_RGBA32F_EXT", 0x8814)
    set_enum("GL_RGB32F_EXT", 0x8815)
    set_enum("GL_ALPHA32F_EXT", 0x8816)
    set_enum("GL_LUMINANCE32F_EXT", 0x8818)
    set_enum("GL_LUMINANCE_ALPHA32F_EXT", 0x8819)
    set_enum("GL_RGBA16F_EXT", 0x881A)
    set_enum("GL_RGB16F_EXT", 0x881B)
    set_enum("GL_ALPHA16F_EXT", 0x881C)
    set_enum("GL_LUMINANCE16F_EXT", 0x881E)
    set_enum("GL_LUMINANCE_ALPHA16F_EXT", 0x881F)
    set_enum("GL_RGB10_A2_EXT", 0x8059)
    set_enum("GL_RGB10_EXT", 0x8052)
    set_enum("GL_BGRA8_EXT", 0x93A1)
    set_enum("GL_R8_EXT", 0x8229)
    set_enum("GL_RG8_EXT", 0x822B)
    set_enum("GL_R32F_EXT", 0x822E)
    set_enum("GL_RG32F_EXT", 0x8230)
    set_enum("GL_R16F_EXT", 0x822D)
    set_enum("GL_RG16F_EXT", 0x822F)


#### GL_EXT_TEXTURE_TYPE_2_10_10_10_REV ####
def init_gl_ext_texture_type_2_10_10_10_rev():
    set_enum("GL_UNSIGNED_INT_2_10_10_10_REV_EXT", 0x8368)


#### GL_EXT_TEXTURE_VIEW ####
def init_gl_ext_texture_view():
    set_func('glTextureViewEXT', t.void, (t.GLuint, t.GLenum, t.GLuint, t.GLenum, t.GLuint, t.GLuint, t.GLuint, t.GLuint))
    set_enum("GL_TEXTURE_VIEW_MIN_LEVEL_EXT", 0x82DB)
    set_enum("GL_TEXTURE_VIEW_NUM_LEVELS_EXT", 0x82DC)
    set_enum("GL_TEXTURE_VIEW_MIN_LAYER_EXT", 0x82DD)
    set_enum("GL_TEXTURE_VIEW_NUM_LAYERS_EXT", 0x82DE)
    set_enum("GL_TEXTURE_IMMUTABLE_LEVELS", 0x82DF)


#### GL_EXT_UNPACK_SUBIMAGE ####
def init_gl_ext_unpack_subimage():
    set_enum("GL_UNPACK_ROW_LENGTH_EXT", 0x0CF2)
    set_enum("GL_UNPACK_SKIP_ROWS_EXT", 0x0CF3)
    set_enum("GL_UNPACK_SKIP_PIXELS_EXT", 0x0CF4)


#### GL_EXT_WINDOW_RECTANGLES ####
def init_gl_ext_window_rectangles():
    set_func('glWindowRectanglesEXT', t.void, (t.GLenum, t.GLsizei, ct.POINTER(t.GLint)))
    set_enum("GL_INCLUSIVE_EXT", 0x8F10)
    set_enum("GL_EXCLUSIVE_EXT", 0x8F11)
    set_enum("GL_WINDOW_RECTANGLE_EXT", 0x8F12)
    set_enum("GL_WINDOW_RECTANGLE_MODE_EXT", 0x8F13)
    set_enum("GL_MAX_WINDOW_RECTANGLES_EXT", 0x8F14)
    set_enum("GL_NUM_WINDOW_RECTANGLES_EXT", 0x8F15)


#### GL_FJ_SHADER_BINARY_GCCSO ####
def init_gl_fj_shader_binary_gccso():
    set_enum("GL_GCCSO_SHADER_BINARY_FJ", 0x9260)


#### GL_IMG_BINDLESS_TEXTURE ####
def init_gl_img_bindless_texture():
    set_func('glGetTextureHandleIMG', t.GLuint64, (t.GLuint,))
    set_func('glGetTextureSamplerHandleIMG', t.GLuint64, (t.GLuint, t.GLuint))
    set_func('glUniformHandleui64IMG', t.void, (t.GLint, t.GLuint64))
    set_func('glUniformHandleui64vIMG', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint64)))
    set_func('glProgramUniformHandleui64IMG', t.void, (t.GLuint, t.GLint, t.GLuint64))
    set_func('glProgramUniformHandleui64vIMG', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint64)))


#### GL_IMG_FRAMEBUFFER_DOWNSAMPLE ####
def init_gl_img_framebuffer_downsample():
    set_func('glFramebufferTexture2DDownsampleIMG', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLint, t.GLint))
    set_func('glFramebufferTextureLayerDownsampleIMG', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLint, t.GLint, t.GLint))
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG", 0x913C)
    set_enum("GL_NUM_DOWNSAMPLE_SCALES_IMG", 0x913D)
    set_enum("GL_DOWNSAMPLE_SCALES_IMG", 0x913E)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG", 0x913F)


#### GL_IMG_MULTISAMPLED_RENDER_TO_TEXTURE ####
def init_gl_img_multisampled_render_to_texture():
    set_func('glRenderbufferStorageMultisampleIMG', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_func('glFramebufferTexture2DMultisampleIMG', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLsizei))
    set_enum("GL_RENDERBUFFER_SAMPLES_IMG", 0x9133)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG", 0x9134)
    set_enum("GL_MAX_SAMPLES_IMG", 0x9135)
    set_enum("GL_TEXTURE_SAMPLES_IMG", 0x9136)


#### GL_IMG_PROGRAM_BINARY ####
def init_gl_img_program_binary():
    set_enum("GL_SGX_PROGRAM_BINARY_IMG", 0x9130)


#### GL_IMG_READ_FORMAT ####
def init_gl_img_read_format():
    set_enum("GL_BGRA_IMG", 0x80E1)
    set_enum("GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG", 0x8365)


#### GL_IMG_SHADER_BINARY ####
def init_gl_img_shader_binary():
    set_enum("GL_SGX_BINARY_IMG", 0x8C0A)


#### GL_IMG_TEXTURE_COMPRESSION_PVRTC ####
def init_gl_img_texture_compression_pvrtc():
    set_enum("GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG", 0x8C00)
    set_enum("GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG", 0x8C01)
    set_enum("GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", 0x8C02)
    set_enum("GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", 0x8C03)


#### GL_IMG_TEXTURE_COMPRESSION_PVRTC2 ####
def init_gl_img_texture_compression_pvrtc2():
    set_enum("GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG", 0x9137)
    set_enum("GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG", 0x9138)


#### GL_IMG_TEXTURE_FILTER_CUBIC ####
def init_gl_img_texture_filter_cubic():
    set_enum("GL_CUBIC_IMG", 0x9139)
    set_enum("GL_CUBIC_MIPMAP_NEAREST_IMG", 0x913A)
    set_enum("GL_CUBIC_MIPMAP_LINEAR_IMG", 0x913B)


#### GL_INTEL_CONSERVATIVE_RASTERIZATION ####
def init_gl_intel_conservative_rasterization():
    set_enum("GL_CONSERVATIVE_RASTERIZATION_INTEL", 0x83FE)


#### GL_INTEL_FRAMEBUFFER_CMAA ####
def init_gl_intel_framebuffer_cmaa():
    set_func('glApplyFramebufferAttachmentCMAAINTEL', t.void, ())


#### GL_INTEL_PERFORMANCE_QUERY ####
def init_gl_intel_performance_query():
    set_func('glBeginPerfQueryINTEL', t.void, (t.GLuint,))
    set_func('glCreatePerfQueryINTEL', t.void, (t.GLuint, ct.POINTER(t.GLuint)))
    set_func('glDeletePerfQueryINTEL', t.void, (t.GLuint,))
    set_func('glEndPerfQueryINTEL', t.void, (t.GLuint,))
    set_func('glGetFirstPerfQueryIdINTEL', t.void, (ct.POINTER(t.GLuint),))
    set_func('glGetNextPerfQueryIdINTEL', t.void, (t.GLuint, ct.POINTER(t.GLuint)))
    set_func('glGetPerfCounterInfoINTEL', t.void, (t.GLuint, t.GLuint, t.GLuint, ct.POINTER(t.GLchar), t.GLuint, ct.POINTER(t.GLchar), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint64)))
    set_func('glGetPerfQueryDataINTEL', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLvoid), ct.POINTER(t.GLuint)))
    set_func('glGetPerfQueryIdByNameINTEL', t.void, (ct.POINTER(t.GLchar), ct.POINTER(t.GLuint)))
    set_func('glGetPerfQueryInfoINTEL', t.void, (t.GLuint, t.GLuint, ct.POINTER(t.GLchar), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint), ct.POINTER(t.GLuint)))
    set_enum("GL_PERFQUERY_SINGLE_CONTEXT_INTEL", 0x00000000)
    set_enum("GL_PERFQUERY_GLOBAL_CONTEXT_INTEL", 0x00000001)
    set_enum("GL_PERFQUERY_WAIT_INTEL", 0x83FB)
    set_enum("GL_PERFQUERY_FLUSH_INTEL", 0x83FA)
    set_enum("GL_PERFQUERY_DONOT_FLUSH_INTEL", 0x83F9)
    set_enum("GL_PERFQUERY_COUNTER_EVENT_INTEL", 0x94F0)
    set_enum("GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL", 0x94F1)
    set_enum("GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL", 0x94F2)
    set_enum("GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL", 0x94F3)
    set_enum("GL_PERFQUERY_COUNTER_RAW_INTEL", 0x94F4)
    set_enum("GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL", 0x94F5)
    set_enum("GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL", 0x94F8)
    set_enum("GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL", 0x94F9)
    set_enum("GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL", 0x94FA)
    set_enum("GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL", 0x94FB)
    set_enum("GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL", 0x94FC)
    set_enum("GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL", 0x94FD)
    set_enum("GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL", 0x94FE)
    set_enum("GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL", 0x94FF)
    set_enum("GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL", 0x9500)


#### GL_KHR_BLEND_EQUATION_ADVANCED ####
def init_gl_khr_blend_equation_advanced():
    set_func('glBlendBarrierKHR', t.void, ())
    set_enum("GL_MULTIPLY_KHR", 0x9294)
    set_enum("GL_SCREEN_KHR", 0x9295)
    set_enum("GL_OVERLAY_KHR", 0x9296)
    set_enum("GL_DARKEN_KHR", 0x9297)
    set_enum("GL_LIGHTEN_KHR", 0x9298)
    set_enum("GL_COLORDODGE_KHR", 0x9299)
    set_enum("GL_COLORBURN_KHR", 0x929A)
    set_enum("GL_HARDLIGHT_KHR", 0x929B)
    set_enum("GL_SOFTLIGHT_KHR", 0x929C)
    set_enum("GL_DIFFERENCE_KHR", 0x929E)
    set_enum("GL_EXCLUSION_KHR", 0x92A0)
    set_enum("GL_HSL_HUE_KHR", 0x92AD)
    set_enum("GL_HSL_SATURATION_KHR", 0x92AE)
    set_enum("GL_HSL_COLOR_KHR", 0x92AF)
    set_enum("GL_HSL_LUMINOSITY_KHR", 0x92B0)


#### GL_KHR_BLEND_EQUATION_ADVANCED_COHERENT ####
def init_gl_khr_blend_equation_advanced_coherent():
    set_enum("GL_BLEND_ADVANCED_COHERENT_KHR", 0x9285)


#### GL_KHR_CONTEXT_FLUSH_CONTROL ####
def init_gl_khr_context_flush_control():
    set_enum("GL_CONTEXT_RELEASE_BEHAVIOR_KHR", 0x82FB)
    set_enum("GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR", 0x82FC)
    set_enum("GL_NONE", 0)


#### GL_KHR_DEBUG ####
def init_gl_khr_debug():
    set_func('glDebugMessageControlKHR', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLsizei, ct.POINTER(t.GLuint), t.GLboolean))
    set_func('glDebugMessageInsertKHR', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLenum, t.GLsizei, ct.POINTER(t.GLchar)))
    # set_func('glDebugMessageCallbackKHR', t.void, (t.GLDEBUGPROCKHR, ct.POINTER(t.void)))
    set_func('glGetDebugMessageLogKHR', t.GLuint, (t.GLuint, t.GLsizei, ct.POINTER(t.GLenum), ct.POINTER(t.GLenum), ct.POINTER(t.GLuint), ct.POINTER(t.GLenum), ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glPushDebugGroupKHR', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glPopDebugGroupKHR', t.void, ())
    set_func('glObjectLabelKHR', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glGetObjectLabelKHR', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glObjectPtrLabelKHR', t.void, (ct.POINTER(t.void), t.GLsizei, ct.POINTER(t.GLchar)))
    set_func('glGetObjectPtrLabelKHR', t.void, (ct.POINTER(t.void), t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glGetPointervKHR', t.void, (t.GLenum, ct.POINTER(ct.POINTER(t.void))))
    set_enum("GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR", 0x8242)
    set_enum("GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR", 0x8243)
    set_enum("GL_DEBUG_CALLBACK_FUNCTION_KHR", 0x8244)
    set_enum("GL_DEBUG_CALLBACK_USER_PARAM_KHR", 0x8245)
    set_enum("GL_DEBUG_SOURCE_API_KHR", 0x8246)
    set_enum("GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR", 0x8247)
    set_enum("GL_DEBUG_SOURCE_SHADER_COMPILER_KHR", 0x8248)
    set_enum("GL_DEBUG_SOURCE_THIRD_PARTY_KHR", 0x8249)
    set_enum("GL_DEBUG_SOURCE_APPLICATION_KHR", 0x824A)
    set_enum("GL_DEBUG_SOURCE_OTHER_KHR", 0x824B)
    set_enum("GL_DEBUG_TYPE_ERROR_KHR", 0x824C)
    set_enum("GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR", 0x824D)
    set_enum("GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR", 0x824E)
    set_enum("GL_DEBUG_TYPE_PORTABILITY_KHR", 0x824F)
    set_enum("GL_DEBUG_TYPE_PERFORMANCE_KHR", 0x8250)
    set_enum("GL_DEBUG_TYPE_OTHER_KHR", 0x8251)
    set_enum("GL_DEBUG_TYPE_MARKER_KHR", 0x8268)
    set_enum("GL_DEBUG_TYPE_PUSH_GROUP_KHR", 0x8269)
    set_enum("GL_DEBUG_TYPE_POP_GROUP_KHR", 0x826A)
    set_enum("GL_DEBUG_SEVERITY_NOTIFICATION_KHR", 0x826B)
    set_enum("GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826C)
    set_enum("GL_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826D)
    set_enum("GL_BUFFER_KHR", 0x82E0)
    set_enum("GL_SHADER_KHR", 0x82E1)
    set_enum("GL_PROGRAM_KHR", 0x82E2)
    set_enum("GL_VERTEX_ARRAY_KHR", 0x8074)
    set_enum("GL_QUERY_KHR", 0x82E3)
    set_enum("GL_PROGRAM_PIPELINE_KHR", 0x82E4)
    set_enum("GL_SAMPLER_KHR", 0x82E6)
    set_enum("GL_MAX_LABEL_LENGTH_KHR", 0x82E8)
    set_enum("GL_MAX_DEBUG_MESSAGE_LENGTH_KHR", 0x9143)
    set_enum("GL_MAX_DEBUG_LOGGED_MESSAGES_KHR", 0x9144)
    set_enum("GL_DEBUG_LOGGED_MESSAGES_KHR", 0x9145)
    set_enum("GL_DEBUG_SEVERITY_HIGH_KHR", 0x9146)
    set_enum("GL_DEBUG_SEVERITY_MEDIUM_KHR", 0x9147)
    set_enum("GL_DEBUG_SEVERITY_LOW_KHR", 0x9148)
    set_enum("GL_DEBUG_OUTPUT_KHR", 0x92E0)
    set_enum("GL_CONTEXT_FLAG_DEBUG_BIT_KHR", 0x00000002)
    set_enum("GL_STACK_OVERFLOW_KHR", 0x0503)
    set_enum("GL_STACK_UNDERFLOW_KHR", 0x0504)


#### GL_KHR_NO_ERROR ####
def init_gl_khr_no_error():
    set_enum("GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR", 0x00000008)


#### GL_KHR_ROBUSTNESS ####
def init_gl_khr_robustness():
    set_func('glGetGraphicsResetStatusKHR', t.GLenum, ())
    set_func('glReadnPixelsKHR', t.void, (t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glGetnUniformfvKHR', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glGetnUniformivKHR', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glGetnUniformuivKHR', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint)))
    set_enum("GL_NO_ERROR", 0)
    set_enum("GL_CONTEXT_ROBUST_ACCESS_KHR", 0x90F3)
    set_enum("GL_LOSE_CONTEXT_ON_RESET_KHR", 0x8252)
    set_enum("GL_GUILTY_CONTEXT_RESET_KHR", 0x8253)
    set_enum("GL_INNOCENT_CONTEXT_RESET_KHR", 0x8254)
    set_enum("GL_UNKNOWN_CONTEXT_RESET_KHR", 0x8255)
    set_enum("GL_RESET_NOTIFICATION_STRATEGY_KHR", 0x8256)
    set_enum("GL_NO_RESET_NOTIFICATION_KHR", 0x8261)
    set_enum("GL_CONTEXT_LOST_KHR", 0x0507)


#### GL_KHR_TEXTURE_COMPRESSION_ASTC_HDR ####
def init_gl_khr_texture_compression_astc_hdr():
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD)


#### GL_KHR_TEXTURE_COMPRESSION_ASTC_LDR ####
def init_gl_khr_texture_compression_astc_ldr():
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD)


#### GL_NV_BINDLESS_TEXTURE ####
def init_gl_nv_bindless_texture():
    set_func('glGetTextureHandleNV', t.GLuint64, (t.GLuint,))
    set_func('glGetTextureSamplerHandleNV', t.GLuint64, (t.GLuint, t.GLuint))
    set_func('glMakeTextureHandleResidentNV', t.void, (t.GLuint64,))
    set_func('glMakeTextureHandleNonResidentNV', t.void, (t.GLuint64,))
    set_func('glGetImageHandleNV', t.GLuint64, (t.GLuint, t.GLint, t.GLboolean, t.GLint, t.GLenum))
    set_func('glMakeImageHandleResidentNV', t.void, (t.GLuint64, t.GLenum))
    set_func('glMakeImageHandleNonResidentNV', t.void, (t.GLuint64,))
    set_func('glUniformHandleui64NV', t.void, (t.GLint, t.GLuint64))
    set_func('glUniformHandleui64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint64)))
    set_func('glProgramUniformHandleui64NV', t.void, (t.GLuint, t.GLint, t.GLuint64))
    set_func('glProgramUniformHandleui64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint64)))
    set_func('glIsTextureHandleResidentNV', t.GLboolean, (t.GLuint64,))
    set_func('glIsImageHandleResidentNV', t.GLboolean, (t.GLuint64,))


#### GL_NV_BLEND_EQUATION_ADVANCED ####
def init_gl_nv_blend_equation_advanced():
    set_func('glBlendParameteriNV', t.void, (t.GLenum, t.GLint))
    set_func('glBlendBarrierNV', t.void, ())
    set_enum("GL_BLEND_OVERLAP_NV", 0x9281)
    set_enum("GL_BLEND_PREMULTIPLIED_SRC_NV", 0x9280)
    set_enum("GL_BLUE_NV", 0x1905)
    set_enum("GL_COLORBURN_NV", 0x929A)
    set_enum("GL_COLORDODGE_NV", 0x9299)
    set_enum("GL_CONJOINT_NV", 0x9284)
    set_enum("GL_CONTRAST_NV", 0x92A1)
    set_enum("GL_DARKEN_NV", 0x9297)
    set_enum("GL_DIFFERENCE_NV", 0x929E)
    set_enum("GL_DISJOINT_NV", 0x9283)
    set_enum("GL_DST_ATOP_NV", 0x928F)
    set_enum("GL_DST_IN_NV", 0x928B)
    set_enum("GL_DST_NV", 0x9287)
    set_enum("GL_DST_OUT_NV", 0x928D)
    set_enum("GL_DST_OVER_NV", 0x9289)
    set_enum("GL_EXCLUSION_NV", 0x92A0)
    set_enum("GL_GREEN_NV", 0x1904)
    set_enum("GL_HARDLIGHT_NV", 0x929B)
    set_enum("GL_HARDMIX_NV", 0x92A9)
    set_enum("GL_HSL_COLOR_NV", 0x92AF)
    set_enum("GL_HSL_HUE_NV", 0x92AD)
    set_enum("GL_HSL_LUMINOSITY_NV", 0x92B0)
    set_enum("GL_HSL_SATURATION_NV", 0x92AE)
    set_enum("GL_INVERT", 0x150A)
    set_enum("GL_INVERT_OVG_NV", 0x92B4)
    set_enum("GL_INVERT_RGB_NV", 0x92A3)
    set_enum("GL_LIGHTEN_NV", 0x9298)
    set_enum("GL_LINEARBURN_NV", 0x92A5)
    set_enum("GL_LINEARDODGE_NV", 0x92A4)
    set_enum("GL_LINEARLIGHT_NV", 0x92A7)
    set_enum("GL_MINUS_CLAMPED_NV", 0x92B3)
    set_enum("GL_MINUS_NV", 0x929F)
    set_enum("GL_MULTIPLY_NV", 0x9294)
    set_enum("GL_OVERLAY_NV", 0x9296)
    set_enum("GL_PINLIGHT_NV", 0x92A8)
    set_enum("GL_PLUS_CLAMPED_ALPHA_NV", 0x92B2)
    set_enum("GL_PLUS_CLAMPED_NV", 0x92B1)
    set_enum("GL_PLUS_DARKER_NV", 0x9292)
    set_enum("GL_PLUS_NV", 0x9291)
    set_enum("GL_RED_NV", 0x1903)
    set_enum("GL_SCREEN_NV", 0x9295)
    set_enum("GL_SOFTLIGHT_NV", 0x929C)
    set_enum("GL_SRC_ATOP_NV", 0x928E)
    set_enum("GL_SRC_IN_NV", 0x928A)
    set_enum("GL_SRC_NV", 0x9286)
    set_enum("GL_SRC_OUT_NV", 0x928C)
    set_enum("GL_SRC_OVER_NV", 0x9288)
    set_enum("GL_UNCORRELATED_NV", 0x9282)
    set_enum("GL_VIVIDLIGHT_NV", 0x92A6)
    set_enum("GL_XOR_NV", 0x1506)
    set_enum("GL_ZERO", 0)


#### GL_NV_BLEND_EQUATION_ADVANCED_COHERENT ####
def init_gl_nv_blend_equation_advanced_coherent():
    set_enum("GL_BLEND_ADVANCED_COHERENT_NV", 0x9285)


#### GL_NV_CONDITIONAL_RENDER ####
def init_gl_nv_conditional_render():
    set_func('glBeginConditionalRenderNV', t.void, (t.GLuint, t.GLenum))
    set_func('glEndConditionalRenderNV', t.void, ())
    set_enum("GL_QUERY_WAIT_NV", 0x8E13)
    set_enum("GL_QUERY_NO_WAIT_NV", 0x8E14)
    set_enum("GL_QUERY_BY_REGION_WAIT_NV", 0x8E15)
    set_enum("GL_QUERY_BY_REGION_NO_WAIT_NV", 0x8E16)


#### GL_NV_CONSERVATIVE_RASTER ####
def init_gl_nv_conservative_raster():
    set_func('glSubpixelPrecisionBiasNV', t.void, (t.GLuint, t.GLuint))
    set_enum("GL_CONSERVATIVE_RASTERIZATION_NV", 0x9346)
    set_enum("GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV", 0x9347)
    set_enum("GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV", 0x9348)
    set_enum("GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV", 0x9349)


#### GL_NV_CONSERVATIVE_RASTER_PRE_SNAP_TRIANGLES ####
def init_gl_nv_conservative_raster_pre_snap_triangles():
    set_func('glConservativeRasterParameteriNV', t.void, (t.GLenum, t.GLint))
    set_enum("GL_CONSERVATIVE_RASTER_MODE_NV", 0x954D)
    set_enum("GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV", 0x954E)
    set_enum("GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV", 0x954F)


#### GL_NV_COPY_BUFFER ####
def init_gl_nv_copy_buffer():
    set_func('glCopyBufferSubDataNV', t.void, (t.GLenum, t.GLenum, t.GLintptr, t.GLintptr, t.GLsizeiptr))
    set_enum("GL_COPY_READ_BUFFER_NV", 0x8F36)
    set_enum("GL_COPY_WRITE_BUFFER_NV", 0x8F37)


#### GL_NV_COVERAGE_SAMPLE ####
def init_gl_nv_coverage_sample():
    set_func('glCoverageMaskNV', t.void, (t.GLboolean,))
    set_func('glCoverageOperationNV', t.void, (t.GLenum,))
    set_enum("GL_COVERAGE_COMPONENT_NV", 0x8ED0)
    set_enum("GL_COVERAGE_COMPONENT4_NV", 0x8ED1)
    set_enum("GL_COVERAGE_ATTACHMENT_NV", 0x8ED2)
    set_enum("GL_COVERAGE_BUFFERS_NV", 0x8ED3)
    set_enum("GL_COVERAGE_SAMPLES_NV", 0x8ED4)
    set_enum("GL_COVERAGE_ALL_FRAGMENTS_NV", 0x8ED5)
    set_enum("GL_COVERAGE_EDGE_FRAGMENTS_NV", 0x8ED6)
    set_enum("GL_COVERAGE_AUTOMATIC_NV", 0x8ED7)
    set_enum("GL_COVERAGE_BUFFER_BIT_NV", 0x00008000)


#### GL_NV_DEPTH_NONLINEAR ####
def init_gl_nv_depth_nonlinear():
    set_enum("GL_DEPTH_COMPONENT16_NONLINEAR_NV", 0x8E2C)


#### GL_NV_DRAW_BUFFERS ####
def init_gl_nv_draw_buffers():
    set_func('glDrawBuffersNV', t.void, (t.GLsizei, ct.POINTER(t.GLenum)))
    set_enum("GL_MAX_DRAW_BUFFERS_NV", 0x8824)
    set_enum("GL_DRAW_BUFFER0_NV", 0x8825)
    set_enum("GL_DRAW_BUFFER1_NV", 0x8826)
    set_enum("GL_DRAW_BUFFER2_NV", 0x8827)
    set_enum("GL_DRAW_BUFFER3_NV", 0x8828)
    set_enum("GL_DRAW_BUFFER4_NV", 0x8829)
    set_enum("GL_DRAW_BUFFER5_NV", 0x882A)
    set_enum("GL_DRAW_BUFFER6_NV", 0x882B)
    set_enum("GL_DRAW_BUFFER7_NV", 0x882C)
    set_enum("GL_DRAW_BUFFER8_NV", 0x882D)
    set_enum("GL_DRAW_BUFFER9_NV", 0x882E)
    set_enum("GL_DRAW_BUFFER10_NV", 0x882F)
    set_enum("GL_DRAW_BUFFER11_NV", 0x8830)
    set_enum("GL_DRAW_BUFFER12_NV", 0x8831)
    set_enum("GL_DRAW_BUFFER13_NV", 0x8832)
    set_enum("GL_DRAW_BUFFER14_NV", 0x8833)
    set_enum("GL_DRAW_BUFFER15_NV", 0x8834)
    set_enum("GL_COLOR_ATTACHMENT0_NV", 0x8CE0)
    set_enum("GL_COLOR_ATTACHMENT1_NV", 0x8CE1)
    set_enum("GL_COLOR_ATTACHMENT2_NV", 0x8CE2)
    set_enum("GL_COLOR_ATTACHMENT3_NV", 0x8CE3)
    set_enum("GL_COLOR_ATTACHMENT4_NV", 0x8CE4)
    set_enum("GL_COLOR_ATTACHMENT5_NV", 0x8CE5)
    set_enum("GL_COLOR_ATTACHMENT6_NV", 0x8CE6)
    set_enum("GL_COLOR_ATTACHMENT7_NV", 0x8CE7)
    set_enum("GL_COLOR_ATTACHMENT8_NV", 0x8CE8)
    set_enum("GL_COLOR_ATTACHMENT9_NV", 0x8CE9)
    set_enum("GL_COLOR_ATTACHMENT10_NV", 0x8CEA)
    set_enum("GL_COLOR_ATTACHMENT11_NV", 0x8CEB)
    set_enum("GL_COLOR_ATTACHMENT12_NV", 0x8CEC)
    set_enum("GL_COLOR_ATTACHMENT13_NV", 0x8CED)
    set_enum("GL_COLOR_ATTACHMENT14_NV", 0x8CEE)
    set_enum("GL_COLOR_ATTACHMENT15_NV", 0x8CEF)


#### GL_NV_DRAW_INSTANCED ####
def init_gl_nv_draw_instanced():
    set_func('glDrawArraysInstancedNV', t.void, (t.GLenum, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glDrawElementsInstancedNV', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei))


#### GL_NV_FBO_COLOR_ATTACHMENTS ####
def init_gl_nv_fbo_color_attachments():
    set_enum("GL_MAX_COLOR_ATTACHMENTS_NV", 0x8CDF)
    set_enum("GL_COLOR_ATTACHMENT0_NV", 0x8CE0)
    set_enum("GL_COLOR_ATTACHMENT1_NV", 0x8CE1)
    set_enum("GL_COLOR_ATTACHMENT2_NV", 0x8CE2)
    set_enum("GL_COLOR_ATTACHMENT3_NV", 0x8CE3)
    set_enum("GL_COLOR_ATTACHMENT4_NV", 0x8CE4)
    set_enum("GL_COLOR_ATTACHMENT5_NV", 0x8CE5)
    set_enum("GL_COLOR_ATTACHMENT6_NV", 0x8CE6)
    set_enum("GL_COLOR_ATTACHMENT7_NV", 0x8CE7)
    set_enum("GL_COLOR_ATTACHMENT8_NV", 0x8CE8)
    set_enum("GL_COLOR_ATTACHMENT9_NV", 0x8CE9)
    set_enum("GL_COLOR_ATTACHMENT10_NV", 0x8CEA)
    set_enum("GL_COLOR_ATTACHMENT11_NV", 0x8CEB)
    set_enum("GL_COLOR_ATTACHMENT12_NV", 0x8CEC)
    set_enum("GL_COLOR_ATTACHMENT13_NV", 0x8CED)
    set_enum("GL_COLOR_ATTACHMENT14_NV", 0x8CEE)
    set_enum("GL_COLOR_ATTACHMENT15_NV", 0x8CEF)


#### GL_NV_FENCE ####
def init_gl_nv_fence():
    set_func('glDeleteFencesNV', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenFencesNV', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsFenceNV', t.GLboolean, (t.GLuint,))
    set_func('glTestFenceNV', t.GLboolean, (t.GLuint,))
    set_func('glGetFenceivNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glFinishFenceNV', t.void, (t.GLuint,))
    set_func('glSetFenceNV', t.void, (t.GLuint, t.GLenum))
    set_enum("GL_ALL_COMPLETED_NV", 0x84F2)
    set_enum("GL_FENCE_STATUS_NV", 0x84F3)
    set_enum("GL_FENCE_CONDITION_NV", 0x84F4)


#### GL_NV_FILL_RECTANGLE ####
def init_gl_nv_fill_rectangle():
    set_enum("GL_FILL_RECTANGLE_NV", 0x933C)


#### GL_NV_FRAGMENT_COVERAGE_TO_COLOR ####
def init_gl_nv_fragment_coverage_to_color():
    set_func('glFragmentCoverageColorNV', t.void, (t.GLuint,))
    set_enum("GL_FRAGMENT_COVERAGE_TO_COLOR_NV", 0x92DD)
    set_enum("GL_FRAGMENT_COVERAGE_COLOR_NV", 0x92DE)


#### GL_NV_FRAMEBUFFER_BLIT ####
def init_gl_nv_framebuffer_blit():
    set_func('glBlitFramebufferNV', t.void, (t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLbitfield, t.GLenum))
    set_enum("GL_READ_FRAMEBUFFER_NV", 0x8CA8)
    set_enum("GL_DRAW_FRAMEBUFFER_NV", 0x8CA9)
    set_enum("GL_DRAW_FRAMEBUFFER_BINDING_NV", 0x8CA6)
    set_enum("GL_READ_FRAMEBUFFER_BINDING_NV", 0x8CAA)


#### GL_NV_FRAMEBUFFER_MIXED_SAMPLES ####
def init_gl_nv_framebuffer_mixed_samples():
    set_func('glRasterSamplesEXT', t.void, (t.GLuint, t.GLboolean))
    set_func('glCoverageModulationTableNV', t.void, (t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glGetCoverageModulationTableNV', t.void, (t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glCoverageModulationNV', t.void, (t.GLenum,))
    set_enum("GL_RASTER_MULTISAMPLE_EXT", 0x9327)
    set_enum("GL_COVERAGE_MODULATION_TABLE_NV", 0x9331)
    set_enum("GL_RASTER_SAMPLES_EXT", 0x9328)
    set_enum("GL_MAX_RASTER_SAMPLES_EXT", 0x9329)
    set_enum("GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT", 0x932A)
    set_enum("GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT", 0x932B)
    set_enum("GL_EFFECTIVE_RASTER_SAMPLES_EXT", 0x932C)
    set_enum("GL_COLOR_SAMPLES_NV", 0x8E20)
    set_enum("GL_DEPTH_SAMPLES_NV", 0x932D)
    set_enum("GL_STENCIL_SAMPLES_NV", 0x932E)
    set_enum("GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV", 0x932F)
    set_enum("GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV", 0x9330)
    set_enum("GL_COVERAGE_MODULATION_NV", 0x9332)
    set_enum("GL_COVERAGE_MODULATION_TABLE_SIZE_NV", 0x9333)


#### GL_NV_FRAMEBUFFER_MULTISAMPLE ####
def init_gl_nv_framebuffer_multisample():
    set_func('glRenderbufferStorageMultisampleNV', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei))
    set_enum("GL_RENDERBUFFER_SAMPLES_NV", 0x8CAB)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV", 0x8D56)
    set_enum("GL_MAX_SAMPLES_NV", 0x8D57)


#### GL_NV_GPU_SHADER5 ####
def init_gl_nv_gpu_shader5():
    set_func('glUniform1i64NV', t.void, (t.GLint, t.GLint64EXT))
    set_func('glUniform2i64NV', t.void, (t.GLint, t.GLint64EXT, t.GLint64EXT))
    set_func('glUniform3i64NV', t.void, (t.GLint, t.GLint64EXT, t.GLint64EXT, t.GLint64EXT))
    set_func('glUniform4i64NV', t.void, (t.GLint, t.GLint64EXT, t.GLint64EXT, t.GLint64EXT, t.GLint64EXT))
    set_func('glUniform1i64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glUniform2i64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glUniform3i64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glUniform4i64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glUniform1ui64NV', t.void, (t.GLint, t.GLuint64EXT))
    set_func('glUniform2ui64NV', t.void, (t.GLint, t.GLuint64EXT, t.GLuint64EXT))
    set_func('glUniform3ui64NV', t.void, (t.GLint, t.GLuint64EXT, t.GLuint64EXT, t.GLuint64EXT))
    set_func('glUniform4ui64NV', t.void, (t.GLint, t.GLuint64EXT, t.GLuint64EXT, t.GLuint64EXT, t.GLuint64EXT))
    set_func('glUniform1ui64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glUniform2ui64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glUniform3ui64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glUniform4ui64vNV', t.void, (t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glGetUniformi64vNV', t.void, (t.GLuint, t.GLint, ct.POINTER(t.GLint64EXT)))
    set_func('glProgramUniform1i64NV', t.void, (t.GLuint, t.GLint, t.GLint64EXT))
    set_func('glProgramUniform2i64NV', t.void, (t.GLuint, t.GLint, t.GLint64EXT, t.GLint64EXT))
    set_func('glProgramUniform3i64NV', t.void, (t.GLuint, t.GLint, t.GLint64EXT, t.GLint64EXT, t.GLint64EXT))
    set_func('glProgramUniform4i64NV', t.void, (t.GLuint, t.GLint, t.GLint64EXT, t.GLint64EXT, t.GLint64EXT, t.GLint64EXT))
    set_func('glProgramUniform1i64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glProgramUniform2i64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glProgramUniform3i64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glProgramUniform4i64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLint64EXT)))
    set_func('glProgramUniform1ui64NV', t.void, (t.GLuint, t.GLint, t.GLuint64EXT))
    set_func('glProgramUniform2ui64NV', t.void, (t.GLuint, t.GLint, t.GLuint64EXT, t.GLuint64EXT))
    set_func('glProgramUniform3ui64NV', t.void, (t.GLuint, t.GLint, t.GLuint64EXT, t.GLuint64EXT, t.GLuint64EXT))
    set_func('glProgramUniform4ui64NV', t.void, (t.GLuint, t.GLint, t.GLuint64EXT, t.GLuint64EXT, t.GLuint64EXT, t.GLuint64EXT))
    set_func('glProgramUniform1ui64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glProgramUniform2ui64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glProgramUniform3ui64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_func('glProgramUniform4ui64vNV', t.void, (t.GLuint, t.GLint, t.GLsizei, ct.POINTER(t.GLuint64EXT)))
    set_enum("GL_INT64_NV", 0x140E)
    set_enum("GL_UNSIGNED_INT64_NV", 0x140F)
    set_enum("GL_INT8_NV", 0x8FE0)
    set_enum("GL_INT8_VEC2_NV", 0x8FE1)
    set_enum("GL_INT8_VEC3_NV", 0x8FE2)
    set_enum("GL_INT8_VEC4_NV", 0x8FE3)
    set_enum("GL_INT16_NV", 0x8FE4)
    set_enum("GL_INT16_VEC2_NV", 0x8FE5)
    set_enum("GL_INT16_VEC3_NV", 0x8FE6)
    set_enum("GL_INT16_VEC4_NV", 0x8FE7)
    set_enum("GL_INT64_VEC2_NV", 0x8FE9)
    set_enum("GL_INT64_VEC3_NV", 0x8FEA)
    set_enum("GL_INT64_VEC4_NV", 0x8FEB)
    set_enum("GL_UNSIGNED_INT8_NV", 0x8FEC)
    set_enum("GL_UNSIGNED_INT8_VEC2_NV", 0x8FED)
    set_enum("GL_UNSIGNED_INT8_VEC3_NV", 0x8FEE)
    set_enum("GL_UNSIGNED_INT8_VEC4_NV", 0x8FEF)
    set_enum("GL_UNSIGNED_INT16_NV", 0x8FF0)
    set_enum("GL_UNSIGNED_INT16_VEC2_NV", 0x8FF1)
    set_enum("GL_UNSIGNED_INT16_VEC3_NV", 0x8FF2)
    set_enum("GL_UNSIGNED_INT16_VEC4_NV", 0x8FF3)
    set_enum("GL_UNSIGNED_INT64_VEC2_NV", 0x8FF5)
    set_enum("GL_UNSIGNED_INT64_VEC3_NV", 0x8FF6)
    set_enum("GL_UNSIGNED_INT64_VEC4_NV", 0x8FF7)
    set_enum("GL_FLOAT16_NV", 0x8FF8)
    set_enum("GL_FLOAT16_VEC2_NV", 0x8FF9)
    set_enum("GL_FLOAT16_VEC3_NV", 0x8FFA)
    set_enum("GL_FLOAT16_VEC4_NV", 0x8FFB)
    set_enum("GL_PATCHES", 0x000E)


#### GL_NV_INSTANCED_ARRAYS ####
def init_gl_nv_instanced_arrays():
    set_func('glVertexAttribDivisorNV', t.void, (t.GLuint, t.GLuint))
    set_enum("GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV", 0x88FE)


#### GL_NV_INTERNALFORMAT_SAMPLE_QUERY ####
def init_gl_nv_internalformat_sample_query():
    set_func('glGetInternalformatSampleivNV', t.void, (t.GLenum, t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, ct.POINTER(t.GLint)))
    set_enum("GL_RENDERBUFFER", 0x8D41)
    set_enum("GL_TEXTURE_2D_MULTISAMPLE", 0x9100)
    set_enum("GL_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9102)
    set_enum("GL_MULTISAMPLES_NV", 0x9371)
    set_enum("GL_SUPERSAMPLE_SCALE_X_NV", 0x9372)
    set_enum("GL_SUPERSAMPLE_SCALE_Y_NV", 0x9373)
    set_enum("GL_CONFORMANT_NV", 0x9374)


#### GL_NV_NON_SQUARE_MATRICES ####
def init_gl_nv_non_square_matrices():
    set_func('glUniformMatrix2x3fvNV', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix3x2fvNV', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix2x4fvNV', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix4x2fvNV', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix3x4fvNV', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_func('glUniformMatrix4x3fvNV', t.void, (t.GLint, t.GLsizei, t.GLboolean, ct.POINTER(t.GLfloat)))
    set_enum("GL_FLOAT_MAT2x3_NV", 0x8B65)
    set_enum("GL_FLOAT_MAT2x4_NV", 0x8B66)
    set_enum("GL_FLOAT_MAT3x2_NV", 0x8B67)
    set_enum("GL_FLOAT_MAT3x4_NV", 0x8B68)
    set_enum("GL_FLOAT_MAT4x2_NV", 0x8B69)
    set_enum("GL_FLOAT_MAT4x3_NV", 0x8B6A)


#### GL_NV_PATH_RENDERING ####
def init_gl_nv_path_rendering():
    set_func('glGenPathsNV', t.GLuint, (t.GLsizei,))
    set_func('glDeletePathsNV', t.void, (t.GLuint, t.GLsizei))
    set_func('glIsPathNV', t.GLboolean, (t.GLuint,))
    set_func('glPathCommandsNV', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLubyte), t.GLsizei, t.GLenum, ct.POINTER(t.void)))
    set_func('glPathCoordsNV', t.void, (t.GLuint, t.GLsizei, t.GLenum, ct.POINTER(t.void)))
    set_func('glPathSubCommandsNV', t.void, (t.GLuint, t.GLsizei, t.GLsizei, t.GLsizei, ct.POINTER(t.GLubyte), t.GLsizei, t.GLenum, ct.POINTER(t.void)))
    set_func('glPathSubCoordsNV', t.void, (t.GLuint, t.GLsizei, t.GLsizei, t.GLenum, ct.POINTER(t.void)))
    set_func('glPathStringNV', t.void, (t.GLuint, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glPathGlyphsNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.void), t.GLbitfield, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLenum, t.GLuint, t.GLfloat))
    set_func('glPathGlyphRangeNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.void), t.GLbitfield, t.GLuint, t.GLsizei, t.GLenum, t.GLuint, t.GLfloat))
    set_func('glWeightPathsNV', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLuint), ct.POINTER(t.GLfloat)))
    set_func('glCopyPathNV', t.void, (t.GLuint, t.GLuint))
    set_func('glInterpolatePathsNV', t.void, (t.GLuint, t.GLuint, t.GLuint, t.GLfloat))
    set_func('glTransformPathNV', t.void, (t.GLuint, t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glPathParameterivNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glPathParameteriNV', t.void, (t.GLuint, t.GLenum, t.GLint))
    set_func('glPathParameterfvNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glPathParameterfNV', t.void, (t.GLuint, t.GLenum, t.GLfloat))
    set_func('glPathDashArrayNV', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glPathStencilFuncNV', t.void, (t.GLenum, t.GLint, t.GLuint))
    set_func('glPathStencilDepthOffsetNV', t.void, (t.GLfloat, t.GLfloat))
    set_func('glStencilFillPathNV', t.void, (t.GLuint, t.GLenum, t.GLuint))
    set_func('glStencilStrokePathNV', t.void, (t.GLuint, t.GLint, t.GLuint))
    set_func('glStencilFillPathInstancedNV', t.void, (t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLenum, t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glStencilStrokePathInstancedNV', t.void, (t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLint, t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glPathCoverDepthFuncNV', t.void, (t.GLenum,))
    set_func('glCoverFillPathNV', t.void, (t.GLuint, t.GLenum))
    set_func('glCoverStrokePathNV', t.void, (t.GLuint, t.GLenum))
    set_func('glCoverFillPathInstancedNV', t.void, (t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLenum, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glCoverStrokePathInstancedNV', t.void, (t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLenum, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glGetPathParameterivNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetPathParameterfvNV', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glGetPathCommandsNV', t.void, (t.GLuint, ct.POINTER(t.GLubyte)))
    set_func('glGetPathCoordsNV', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glGetPathDashArrayNV', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glGetPathMetricsNV', t.void, (t.GLbitfield, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glGetPathMetricRangeNV', t.void, (t.GLbitfield, t.GLuint, t.GLsizei, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glGetPathSpacingNV', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLfloat, t.GLfloat, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glIsPointInFillPathNV', t.GLboolean, (t.GLuint, t.GLuint, t.GLfloat, t.GLfloat))
    set_func('glIsPointInStrokePathNV', t.GLboolean, (t.GLuint, t.GLfloat, t.GLfloat))
    set_func('glGetPathLengthNV', t.GLfloat, (t.GLuint, t.GLsizei, t.GLsizei))
    set_func('glPointAlongPathNV', t.GLboolean, (t.GLuint, t.GLsizei, t.GLsizei, t.GLfloat, ct.POINTER(t.GLfloat), ct.POINTER(t.GLfloat), ct.POINTER(t.GLfloat), ct.POINTER(t.GLfloat)))
    set_func('glMatrixLoad3x2fNV', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glMatrixLoad3x3fNV', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glMatrixLoadTranspose3x3fNV', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glMatrixMult3x2fNV', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glMatrixMult3x3fNV', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glMatrixMultTranspose3x3fNV', t.void, (t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glStencilThenCoverFillPathNV', t.void, (t.GLuint, t.GLenum, t.GLuint, t.GLenum))
    set_func('glStencilThenCoverStrokePathNV', t.void, (t.GLuint, t.GLint, t.GLuint, t.GLenum))
    set_func('glStencilThenCoverFillPathInstancedNV', t.void, (t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLenum, t.GLuint, t.GLenum, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glStencilThenCoverStrokePathInstancedNV', t.void, (t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLuint, t.GLint, t.GLuint, t.GLenum, t.GLenum, ct.POINTER(t.GLfloat)))
    set_func('glPathGlyphIndexRangeNV', t.GLenum, (t.GLenum, ct.POINTER(t.void), t.GLbitfield, t.GLuint, t.GLfloat, t.GLuint))
    set_func('glPathGlyphIndexArrayNV', t.GLenum, (t.GLuint, t.GLenum, ct.POINTER(t.void), t.GLbitfield, t.GLuint, t.GLsizei, t.GLuint, t.GLfloat))
    set_func('glPathMemoryGlyphIndexArrayNV', t.GLenum, (t.GLuint, t.GLenum, t.GLsizeiptr, ct.POINTER(t.void), t.GLsizei, t.GLuint, t.GLsizei, t.GLuint, t.GLfloat))
    set_func('glProgramPathFragmentInputGenNV', t.void, (t.GLuint, t.GLint, t.GLenum, t.GLint, ct.POINTER(t.GLfloat)))
    set_func('glGetProgramResourcefvNV', t.void, (t.GLuint, t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLenum), t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLfloat)))
    set_enum("GL_PATH_FORMAT_SVG_NV", 0x9070)
    set_enum("GL_PATH_FORMAT_PS_NV", 0x9071)
    set_enum("GL_STANDARD_FONT_NAME_NV", 0x9072)
    set_enum("GL_SYSTEM_FONT_NAME_NV", 0x9073)
    set_enum("GL_FILE_NAME_NV", 0x9074)
    set_enum("GL_PATH_STROKE_WIDTH_NV", 0x9075)
    set_enum("GL_PATH_END_CAPS_NV", 0x9076)
    set_enum("GL_PATH_INITIAL_END_CAP_NV", 0x9077)
    set_enum("GL_PATH_TERMINAL_END_CAP_NV", 0x9078)
    set_enum("GL_PATH_JOIN_STYLE_NV", 0x9079)
    set_enum("GL_PATH_MITER_LIMIT_NV", 0x907A)
    set_enum("GL_PATH_DASH_CAPS_NV", 0x907B)
    set_enum("GL_PATH_INITIAL_DASH_CAP_NV", 0x907C)
    set_enum("GL_PATH_TERMINAL_DASH_CAP_NV", 0x907D)
    set_enum("GL_PATH_DASH_OFFSET_NV", 0x907E)
    set_enum("GL_PATH_CLIENT_LENGTH_NV", 0x907F)
    set_enum("GL_PATH_FILL_MODE_NV", 0x9080)
    set_enum("GL_PATH_FILL_MASK_NV", 0x9081)
    set_enum("GL_PATH_FILL_COVER_MODE_NV", 0x9082)
    set_enum("GL_PATH_STROKE_COVER_MODE_NV", 0x9083)
    set_enum("GL_PATH_STROKE_MASK_NV", 0x9084)
    set_enum("GL_COUNT_UP_NV", 0x9088)
    set_enum("GL_COUNT_DOWN_NV", 0x9089)
    set_enum("GL_PATH_OBJECT_BOUNDING_BOX_NV", 0x908A)
    set_enum("GL_CONVEX_HULL_NV", 0x908B)
    set_enum("GL_BOUNDING_BOX_NV", 0x908D)
    set_enum("GL_TRANSLATE_X_NV", 0x908E)
    set_enum("GL_TRANSLATE_Y_NV", 0x908F)
    set_enum("GL_TRANSLATE_2D_NV", 0x9090)
    set_enum("GL_TRANSLATE_3D_NV", 0x9091)
    set_enum("GL_AFFINE_2D_NV", 0x9092)
    set_enum("GL_AFFINE_3D_NV", 0x9094)
    set_enum("GL_TRANSPOSE_AFFINE_2D_NV", 0x9096)
    set_enum("GL_TRANSPOSE_AFFINE_3D_NV", 0x9098)
    set_enum("GL_UTF8_NV", 0x909A)
    set_enum("GL_UTF16_NV", 0x909B)
    set_enum("GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV", 0x909C)
    set_enum("GL_PATH_COMMAND_COUNT_NV", 0x909D)
    set_enum("GL_PATH_COORD_COUNT_NV", 0x909E)
    set_enum("GL_PATH_DASH_ARRAY_COUNT_NV", 0x909F)
    set_enum("GL_PATH_COMPUTED_LENGTH_NV", 0x90A0)
    set_enum("GL_PATH_FILL_BOUNDING_BOX_NV", 0x90A1)
    set_enum("GL_PATH_STROKE_BOUNDING_BOX_NV", 0x90A2)
    set_enum("GL_SQUARE_NV", 0x90A3)
    set_enum("GL_ROUND_NV", 0x90A4)
    set_enum("GL_TRIANGULAR_NV", 0x90A5)
    set_enum("GL_BEVEL_NV", 0x90A6)
    set_enum("GL_MITER_REVERT_NV", 0x90A7)
    set_enum("GL_MITER_TRUNCATE_NV", 0x90A8)
    set_enum("GL_SKIP_MISSING_GLYPH_NV", 0x90A9)
    set_enum("GL_USE_MISSING_GLYPH_NV", 0x90AA)
    set_enum("GL_PATH_ERROR_POSITION_NV", 0x90AB)
    set_enum("GL_ACCUM_ADJACENT_PAIRS_NV", 0x90AD)
    set_enum("GL_ADJACENT_PAIRS_NV", 0x90AE)
    set_enum("GL_FIRST_TO_REST_NV", 0x90AF)
    set_enum("GL_PATH_GEN_MODE_NV", 0x90B0)
    set_enum("GL_PATH_GEN_COEFF_NV", 0x90B1)
    set_enum("GL_PATH_GEN_COMPONENTS_NV", 0x90B3)
    set_enum("GL_PATH_STENCIL_FUNC_NV", 0x90B7)
    set_enum("GL_PATH_STENCIL_REF_NV", 0x90B8)
    set_enum("GL_PATH_STENCIL_VALUE_MASK_NV", 0x90B9)
    set_enum("GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV", 0x90BD)
    set_enum("GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV", 0x90BE)
    set_enum("GL_PATH_COVER_DEPTH_FUNC_NV", 0x90BF)
    set_enum("GL_PATH_DASH_OFFSET_RESET_NV", 0x90B4)
    set_enum("GL_MOVE_TO_RESETS_NV", 0x90B5)
    set_enum("GL_MOVE_TO_CONTINUES_NV", 0x90B6)
    set_enum("GL_CLOSE_PATH_NV", 0x00)
    set_enum("GL_MOVE_TO_NV", 0x02)
    set_enum("GL_RELATIVE_MOVE_TO_NV", 0x03)
    set_enum("GL_LINE_TO_NV", 0x04)
    set_enum("GL_RELATIVE_LINE_TO_NV", 0x05)
    set_enum("GL_HORIZONTAL_LINE_TO_NV", 0x06)
    set_enum("GL_RELATIVE_HORIZONTAL_LINE_TO_NV", 0x07)
    set_enum("GL_VERTICAL_LINE_TO_NV", 0x08)
    set_enum("GL_RELATIVE_VERTICAL_LINE_TO_NV", 0x09)
    set_enum("GL_QUADRATIC_CURVE_TO_NV", 0x0A)
    set_enum("GL_RELATIVE_QUADRATIC_CURVE_TO_NV", 0x0B)
    set_enum("GL_CUBIC_CURVE_TO_NV", 0x0C)
    set_enum("GL_RELATIVE_CUBIC_CURVE_TO_NV", 0x0D)
    set_enum("GL_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0E)
    set_enum("GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0F)
    set_enum("GL_SMOOTH_CUBIC_CURVE_TO_NV", 0x10)
    set_enum("GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV", 0x11)
    set_enum("GL_SMALL_CCW_ARC_TO_NV", 0x12)
    set_enum("GL_RELATIVE_SMALL_CCW_ARC_TO_NV", 0x13)
    set_enum("GL_SMALL_CW_ARC_TO_NV", 0x14)
    set_enum("GL_RELATIVE_SMALL_CW_ARC_TO_NV", 0x15)
    set_enum("GL_LARGE_CCW_ARC_TO_NV", 0x16)
    set_enum("GL_RELATIVE_LARGE_CCW_ARC_TO_NV", 0x17)
    set_enum("GL_LARGE_CW_ARC_TO_NV", 0x18)
    set_enum("GL_RELATIVE_LARGE_CW_ARC_TO_NV", 0x19)
    set_enum("GL_RESTART_PATH_NV", 0xF0)
    set_enum("GL_DUP_FIRST_CUBIC_CURVE_TO_NV", 0xF2)
    set_enum("GL_DUP_LAST_CUBIC_CURVE_TO_NV", 0xF4)
    set_enum("GL_RECT_NV", 0xF6)
    set_enum("GL_CIRCULAR_CCW_ARC_TO_NV", 0xF8)
    set_enum("GL_CIRCULAR_CW_ARC_TO_NV", 0xFA)
    set_enum("GL_CIRCULAR_TANGENT_ARC_TO_NV", 0xFC)
    set_enum("GL_ARC_TO_NV", 0xFE)
    set_enum("GL_RELATIVE_ARC_TO_NV", 0xFF)
    set_enum("GL_BOLD_BIT_NV", 0x01)
    set_enum("GL_ITALIC_BIT_NV", 0x02)
    set_enum("GL_GLYPH_WIDTH_BIT_NV", 0x01)
    set_enum("GL_GLYPH_HEIGHT_BIT_NV", 0x02)
    set_enum("GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV", 0x04)
    set_enum("GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV", 0x08)
    set_enum("GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV", 0x10)
    set_enum("GL_GLYPH_VERTICAL_BEARING_X_BIT_NV", 0x20)
    set_enum("GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV", 0x40)
    set_enum("GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV", 0x80)
    set_enum("GL_GLYPH_HAS_KERNING_BIT_NV", 0x100)
    set_enum("GL_FONT_X_MIN_BOUNDS_BIT_NV", 0x00010000)
    set_enum("GL_FONT_Y_MIN_BOUNDS_BIT_NV", 0x00020000)
    set_enum("GL_FONT_X_MAX_BOUNDS_BIT_NV", 0x00040000)
    set_enum("GL_FONT_Y_MAX_BOUNDS_BIT_NV", 0x00080000)
    set_enum("GL_FONT_UNITS_PER_EM_BIT_NV", 0x00100000)
    set_enum("GL_FONT_ASCENDER_BIT_NV", 0x00200000)
    set_enum("GL_FONT_DESCENDER_BIT_NV", 0x00400000)
    set_enum("GL_FONT_HEIGHT_BIT_NV", 0x00800000)
    set_enum("GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV", 0x01000000)
    set_enum("GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV", 0x02000000)
    set_enum("GL_FONT_UNDERLINE_POSITION_BIT_NV", 0x04000000)
    set_enum("GL_FONT_UNDERLINE_THICKNESS_BIT_NV", 0x08000000)
    set_enum("GL_FONT_HAS_KERNING_BIT_NV", 0x10000000)
    set_enum("GL_ROUNDED_RECT_NV", 0xE8)
    set_enum("GL_RELATIVE_ROUNDED_RECT_NV", 0xE9)
    set_enum("GL_ROUNDED_RECT2_NV", 0xEA)
    set_enum("GL_RELATIVE_ROUNDED_RECT2_NV", 0xEB)
    set_enum("GL_ROUNDED_RECT4_NV", 0xEC)
    set_enum("GL_RELATIVE_ROUNDED_RECT4_NV", 0xED)
    set_enum("GL_ROUNDED_RECT8_NV", 0xEE)
    set_enum("GL_RELATIVE_ROUNDED_RECT8_NV", 0xEF)
    set_enum("GL_RELATIVE_RECT_NV", 0xF7)
    set_enum("GL_FONT_GLYPHS_AVAILABLE_NV", 0x9368)
    set_enum("GL_FONT_TARGET_UNAVAILABLE_NV", 0x9369)
    set_enum("GL_FONT_UNAVAILABLE_NV", 0x936A)
    set_enum("GL_FONT_UNINTELLIGIBLE_NV", 0x936B)
    set_enum("GL_CONIC_CURVE_TO_NV", 0x1A)
    set_enum("GL_RELATIVE_CONIC_CURVE_TO_NV", 0x1B)
    set_enum("GL_FONT_NUM_GLYPH_INDICES_BIT_NV", 0x20000000)
    set_enum("GL_STANDARD_FONT_FORMAT_NV", 0x936C)
    set_enum("GL_PATH_PROJECTION_NV", 0x1701)
    set_enum("GL_PATH_MODELVIEW_NV", 0x1700)
    set_enum("GL_PATH_MODELVIEW_STACK_DEPTH_NV", 0x0BA3)
    set_enum("GL_PATH_MODELVIEW_MATRIX_NV", 0x0BA6)
    set_enum("GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV", 0x0D36)
    set_enum("GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV", 0x84E3)
    set_enum("GL_PATH_PROJECTION_STACK_DEPTH_NV", 0x0BA4)
    set_enum("GL_PATH_PROJECTION_MATRIX_NV", 0x0BA7)
    set_enum("GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV", 0x0D38)
    set_enum("GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV", 0x84E4)
    set_enum("GL_FRAGMENT_INPUT_NV", 0x936D)


#### GL_NV_PATH_RENDERING_SHARED_EDGE ####
def init_gl_nv_path_rendering_shared_edge():
    set_enum("GL_SHARED_EDGE_NV", 0xC0)


#### GL_NV_POLYGON_MODE ####
def init_gl_nv_polygon_mode():
    set_func('glPolygonModeNV', t.void, (t.GLenum, t.GLenum))
    set_enum("GL_POLYGON_MODE_NV", 0x0B40)
    set_enum("GL_POLYGON_OFFSET_POINT_NV", 0x2A01)
    set_enum("GL_POLYGON_OFFSET_LINE_NV", 0x2A02)
    set_enum("GL_POINT_NV", 0x1B00)
    set_enum("GL_LINE_NV", 0x1B01)
    set_enum("GL_FILL_NV", 0x1B02)


#### GL_NV_READ_BUFFER ####
def init_gl_nv_read_buffer():
    set_func('glReadBufferNV', t.void, (t.GLenum,))
    set_enum("GL_READ_BUFFER_NV", 0x0C02)


#### GL_NV_SRGB_FORMATS ####
def init_gl_nv_srgb_formats():
    set_enum("GL_SLUMINANCE_NV", 0x8C46)
    set_enum("GL_SLUMINANCE_ALPHA_NV", 0x8C44)
    set_enum("GL_SRGB8_NV", 0x8C41)
    set_enum("GL_SLUMINANCE8_NV", 0x8C47)
    set_enum("GL_SLUMINANCE8_ALPHA8_NV", 0x8C45)
    set_enum("GL_COMPRESSED_SRGB_S3TC_DXT1_NV", 0x8C4C)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV", 0x8C4D)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV", 0x8C4E)
    set_enum("GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV", 0x8C4F)
    set_enum("GL_ETC1_SRGB8_NV", 0x88EE)


#### GL_NV_SAMPLE_LOCATIONS ####
def init_gl_nv_sample_locations():
    set_func('glFramebufferSampleLocationsfvNV', t.void, (t.GLenum, t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glNamedFramebufferSampleLocationsfvNV', t.void, (t.GLuint, t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glResolveDepthValuesNV', t.void, ())
    set_enum("GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV", 0x933D)
    set_enum("GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV", 0x933E)
    set_enum("GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV", 0x933F)
    set_enum("GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV", 0x9340)
    set_enum("GL_SAMPLE_LOCATION_NV", 0x8E50)
    set_enum("GL_PROGRAMMABLE_SAMPLE_LOCATION_NV", 0x9341)
    set_enum("GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV", 0x9342)
    set_enum("GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV", 0x9343)


#### GL_NV_SHADOW_SAMPLERS_ARRAY ####
def init_gl_nv_shadow_samplers_array():
    set_enum("GL_SAMPLER_2D_ARRAY_SHADOW_NV", 0x8DC4)


#### GL_NV_SHADOW_SAMPLERS_CUBE ####
def init_gl_nv_shadow_samplers_cube():
    set_enum("GL_SAMPLER_CUBE_SHADOW_NV", 0x8DC5)


#### GL_NV_TEXTURE_BORDER_CLAMP ####
def init_gl_nv_texture_border_clamp():
    set_enum("GL_TEXTURE_BORDER_COLOR_NV", 0x1004)
    set_enum("GL_CLAMP_TO_BORDER_NV", 0x812D)


#### GL_NV_VIEWPORT_ARRAY ####
def init_gl_nv_viewport_array():
    set_func('glViewportArrayvNV', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glViewportIndexedfNV', t.void, (t.GLuint, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glViewportIndexedfvNV', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glScissorArrayvNV', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glScissorIndexedNV', t.void, (t.GLuint, t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glScissorIndexedvNV', t.void, (t.GLuint, ct.POINTER(t.GLint)))
    set_func('glDepthRangeArrayfvNV', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glDepthRangeIndexedfNV', t.void, (t.GLuint, t.GLfloat, t.GLfloat))
    set_func('glGetFloati_vNV', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glEnableiNV', t.void, (t.GLenum, t.GLuint))
    set_func('glDisableiNV', t.void, (t.GLenum, t.GLuint))
    set_func('glIsEnablediNV', t.GLboolean, (t.GLenum, t.GLuint))
    set_enum("GL_MAX_VIEWPORTS_NV", 0x825B)
    set_enum("GL_VIEWPORT_SUBPIXEL_BITS_NV", 0x825C)
    set_enum("GL_VIEWPORT_BOUNDS_RANGE_NV", 0x825D)
    set_enum("GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV", 0x825F)
    set_enum("GL_SCISSOR_BOX", 0x0C10)
    set_enum("GL_VIEWPORT", 0x0BA2)
    set_enum("GL_DEPTH_RANGE", 0x0B70)
    set_enum("GL_SCISSOR_TEST", 0x0C11)


#### GL_NV_VIEWPORT_SWIZZLE ####
def init_gl_nv_viewport_swizzle():
    set_func('glViewportSwizzleNV', t.void, (t.GLuint, t.GLenum, t.GLenum, t.GLenum, t.GLenum))
    set_enum("GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV", 0x9350)
    set_enum("GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV", 0x9351)
    set_enum("GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV", 0x9352)
    set_enum("GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV", 0x9353)
    set_enum("GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV", 0x9354)
    set_enum("GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV", 0x9355)
    set_enum("GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV", 0x9356)
    set_enum("GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV", 0x9357)
    set_enum("GL_VIEWPORT_SWIZZLE_X_NV", 0x9358)
    set_enum("GL_VIEWPORT_SWIZZLE_Y_NV", 0x9359)
    set_enum("GL_VIEWPORT_SWIZZLE_Z_NV", 0x935A)
    set_enum("GL_VIEWPORT_SWIZZLE_W_NV", 0x935B)


#### GL_OES_EGL_IMAGE ####
def init_gl_oes_egl_image():
    set_func('glEGLImageTargetTexture2DOES', t.void, (t.GLenum, t.GLeglImageOES))
    set_func('glEGLImageTargetRenderbufferStorageOES', t.void, (t.GLenum, t.GLeglImageOES))


#### GL_OES_EGL_IMAGE_EXTERNAL ####
def init_gl_oes_egl_image_external():
    set_enum("GL_TEXTURE_EXTERNAL_OES", 0x8D65)
    set_enum("GL_TEXTURE_BINDING_EXTERNAL_OES", 0x8D67)
    set_enum("GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES", 0x8D68)
    set_enum("GL_SAMPLER_EXTERNAL_OES", 0x8D66)


#### GL_OES_COMPRESSED_ETC1_RGB8_TEXTURE ####
def init_gl_oes_compressed_etc1_rgb8_texture():
    set_enum("GL_ETC1_RGB8_OES", 0x8D64)


#### GL_OES_COMPRESSED_PALETTED_TEXTURE ####
def init_gl_oes_compressed_paletted_texture():
    set_enum("GL_PALETTE4_RGB8_OES", 0x8B90)
    set_enum("GL_PALETTE4_RGBA8_OES", 0x8B91)
    set_enum("GL_PALETTE4_R5_G6_B5_OES", 0x8B92)
    set_enum("GL_PALETTE4_RGBA4_OES", 0x8B93)
    set_enum("GL_PALETTE4_RGB5_A1_OES", 0x8B94)
    set_enum("GL_PALETTE8_RGB8_OES", 0x8B95)
    set_enum("GL_PALETTE8_RGBA8_OES", 0x8B96)
    set_enum("GL_PALETTE8_R5_G6_B5_OES", 0x8B97)
    set_enum("GL_PALETTE8_RGBA4_OES", 0x8B98)
    set_enum("GL_PALETTE8_RGB5_A1_OES", 0x8B99)


#### GL_OES_COPY_IMAGE ####
def init_gl_oes_copy_image():
    set_func('glCopyImageSubDataOES', t.void, (t.GLuint, t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLuint, t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei))


#### GL_OES_DEPTH24 ####
def init_gl_oes_depth24():
    set_enum("GL_DEPTH_COMPONENT24_OES", 0x81A6)


#### GL_OES_DEPTH32 ####
def init_gl_oes_depth32():
    set_enum("GL_DEPTH_COMPONENT32_OES", 0x81A7)


#### GL_OES_DEPTH_TEXTURE ####
def init_gl_oes_depth_texture():
    set_enum("GL_DEPTH_COMPONENT", 0x1902)
    set_enum("GL_UNSIGNED_SHORT", 0x1403)
    set_enum("GL_UNSIGNED_INT", 0x1405)


#### GL_OES_DRAW_BUFFERS_INDEXED ####
def init_gl_oes_draw_buffers_indexed():
    set_func('glEnableiOES', t.void, (t.GLenum, t.GLuint))
    set_func('glDisableiOES', t.void, (t.GLenum, t.GLuint))
    set_func('glBlendEquationiOES', t.void, (t.GLuint, t.GLenum))
    set_func('glBlendEquationSeparateiOES', t.void, (t.GLuint, t.GLenum, t.GLenum))
    set_func('glBlendFunciOES', t.void, (t.GLuint, t.GLenum, t.GLenum))
    set_func('glBlendFuncSeparateiOES', t.void, (t.GLuint, t.GLenum, t.GLenum, t.GLenum, t.GLenum))
    set_func('glColorMaskiOES', t.void, (t.GLuint, t.GLboolean, t.GLboolean, t.GLboolean, t.GLboolean))
    set_func('glIsEnablediOES', t.GLboolean, (t.GLenum, t.GLuint))
    set_enum("GL_BLEND_EQUATION_RGB", 0x8009)
    set_enum("GL_BLEND_EQUATION_ALPHA", 0x883D)
    set_enum("GL_BLEND_SRC_RGB", 0x80C9)
    set_enum("GL_BLEND_SRC_ALPHA", 0x80CB)
    set_enum("GL_BLEND_DST_RGB", 0x80C8)
    set_enum("GL_BLEND_DST_ALPHA", 0x80CA)
    set_enum("GL_COLOR_WRITEMASK", 0x0C23)
    set_enum("GL_BLEND", 0x0BE2)
    set_enum("GL_FUNC_ADD", 0x8006)
    set_enum("GL_FUNC_SUBTRACT", 0x800A)
    set_enum("GL_FUNC_REVERSE_SUBTRACT", 0x800B)
    set_enum("GL_MIN", 0x8007)
    set_enum("GL_MAX", 0x8008)
    set_enum("GL_ZERO", 0)
    set_enum("GL_ONE", 1)
    set_enum("GL_SRC_COLOR", 0x0300)
    set_enum("GL_ONE_MINUS_SRC_COLOR", 0x0301)
    set_enum("GL_DST_COLOR", 0x0306)
    set_enum("GL_ONE_MINUS_DST_COLOR", 0x0307)
    set_enum("GL_SRC_ALPHA", 0x0302)
    set_enum("GL_ONE_MINUS_SRC_ALPHA", 0x0303)
    set_enum("GL_DST_ALPHA", 0x0304)
    set_enum("GL_ONE_MINUS_DST_ALPHA", 0x0305)
    set_enum("GL_CONSTANT_COLOR", 0x8001)
    set_enum("GL_ONE_MINUS_CONSTANT_COLOR", 0x8002)
    set_enum("GL_CONSTANT_ALPHA", 0x8003)
    set_enum("GL_ONE_MINUS_CONSTANT_ALPHA", 0x8004)
    set_enum("GL_SRC_ALPHA_SATURATE", 0x0308)


#### GL_OES_DRAW_ELEMENTS_BASE_VERTEX ####
def init_gl_oes_draw_elements_base_vertex():
    set_func('glDrawElementsBaseVertexOES', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_func('glDrawRangeElementsBaseVertexOES', t.void, (t.GLenum, t.GLuint, t.GLuint, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_func('glDrawElementsInstancedBaseVertexOES', t.void, (t.GLenum, t.GLsizei, t.GLenum, ct.POINTER(t.void), t.GLsizei, t.GLint))
    set_func('glMultiDrawElementsBaseVertexOES', t.void, (t.GLenum, ct.POINTER(t.GLsizei), t.GLenum, ct.POINTER(ct.POINTER(t.void)), t.GLsizei, ct.POINTER(t.GLint)))


#### GL_OES_ELEMENT_INDEX_UINT ####
def init_gl_oes_element_index_uint():
    set_enum("GL_UNSIGNED_INT", 0x1405)


#### GL_OES_GEOMETRY_SHADER ####
def init_gl_oes_geometry_shader():
    set_func('glFramebufferTextureOES', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint))
    set_enum("GL_GEOMETRY_SHADER_OES", 0x8DD9)
    set_enum("GL_GEOMETRY_SHADER_BIT_OES", 0x00000004)
    set_enum("GL_GEOMETRY_LINKED_VERTICES_OUT_OES", 0x8916)
    set_enum("GL_GEOMETRY_LINKED_INPUT_TYPE_OES", 0x8917)
    set_enum("GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES", 0x8918)
    set_enum("GL_GEOMETRY_SHADER_INVOCATIONS_OES", 0x887F)
    set_enum("GL_LAYER_PROVOKING_VERTEX_OES", 0x825E)
    set_enum("GL_LINES_ADJACENCY_OES", 0x000A)
    set_enum("GL_LINE_STRIP_ADJACENCY_OES", 0x000B)
    set_enum("GL_TRIANGLES_ADJACENCY_OES", 0x000C)
    set_enum("GL_TRIANGLE_STRIP_ADJACENCY_OES", 0x000D)
    set_enum("GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES", 0x8DDF)
    set_enum("GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES", 0x8A2C)
    set_enum("GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES", 0x8A32)
    set_enum("GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES", 0x9123)
    set_enum("GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES", 0x9124)
    set_enum("GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES", 0x8DE0)
    set_enum("GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES", 0x8DE1)
    set_enum("GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES", 0x8E5A)
    set_enum("GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES", 0x8C29)
    set_enum("GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES", 0x92CF)
    set_enum("GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES", 0x92D5)
    set_enum("GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES", 0x90CD)
    set_enum("GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES", 0x90D7)
    set_enum("GL_FIRST_VERTEX_CONVENTION_OES", 0x8E4D)
    set_enum("GL_LAST_VERTEX_CONVENTION_OES", 0x8E4E)
    set_enum("GL_UNDEFINED_VERTEX_OES", 0x8260)
    set_enum("GL_PRIMITIVES_GENERATED_OES", 0x8C87)
    set_enum("GL_FRAMEBUFFER_DEFAULT_LAYERS_OES", 0x9312)
    set_enum("GL_MAX_FRAMEBUFFER_LAYERS_OES", 0x9317)
    set_enum("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES", 0x8DA8)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES", 0x8DA7)
    set_enum("GL_REFERENCED_BY_GEOMETRY_SHADER_OES", 0x9309)


#### GL_OES_GET_PROGRAM_BINARY ####
def init_gl_oes_get_program_binary():
    set_func('glGetProgramBinaryOES', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLenum), ct.POINTER(t.void)))
    set_func('glProgramBinaryOES', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.void), t.GLint))
    set_enum("GL_PROGRAM_BINARY_LENGTH_OES", 0x8741)
    set_enum("GL_NUM_PROGRAM_BINARY_FORMATS_OES", 0x87FE)
    set_enum("GL_PROGRAM_BINARY_FORMATS_OES", 0x87FF)


#### GL_OES_MAPBUFFER ####
def init_gl_oes_mapbuffer():
    set_func('glMapBufferOES', ct.POINTER(t.void), (t.GLenum, t.GLenum))
    set_func('glUnmapBufferOES', t.GLboolean, (t.GLenum,))
    set_func('glGetBufferPointervOES', t.void, (t.GLenum, t.GLenum, ct.POINTER(ct.POINTER(t.void))))
    set_enum("GL_WRITE_ONLY_OES", 0x88B9)
    set_enum("GL_BUFFER_ACCESS_OES", 0x88BB)
    set_enum("GL_BUFFER_MAPPED_OES", 0x88BC)
    set_enum("GL_BUFFER_MAP_POINTER_OES", 0x88BD)


#### GL_OES_PACKED_DEPTH_STENCIL ####
def init_gl_oes_packed_depth_stencil():
    set_enum("GL_DEPTH_STENCIL_OES", 0x84F9)
    set_enum("GL_UNSIGNED_INT_24_8_OES", 0x84FA)
    set_enum("GL_DEPTH24_STENCIL8_OES", 0x88F0)


#### GL_OES_PRIMITIVE_BOUNDING_BOX ####
def init_gl_oes_primitive_bounding_box():
    set_func('glPrimitiveBoundingBoxOES', t.void, (t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_enum("GL_PRIMITIVE_BOUNDING_BOX_OES", 0x92BE)


#### GL_OES_REQUIRED_INTERNALFORMAT ####
def init_gl_oes_required_internalformat():
    set_enum("GL_ALPHA8_OES", 0x803C)
    set_enum("GL_DEPTH_COMPONENT16_OES", 0x81A5)
    set_enum("GL_DEPTH_COMPONENT24_OES", 0x81A6)
    set_enum("GL_DEPTH24_STENCIL8_OES", 0x88F0)
    set_enum("GL_DEPTH_COMPONENT32_OES", 0x81A7)
    set_enum("GL_LUMINANCE4_ALPHA4_OES", 0x8043)
    set_enum("GL_LUMINANCE8_ALPHA8_OES", 0x8045)
    set_enum("GL_LUMINANCE8_OES", 0x8040)
    set_enum("GL_RGBA4_OES", 0x8056)
    set_enum("GL_RGB5_A1_OES", 0x8057)
    set_enum("GL_RGB565_OES", 0x8D62)
    set_enum("GL_RGB8_OES", 0x8051)
    set_enum("GL_RGBA8_OES", 0x8058)
    set_enum("GL_RGB10_EXT", 0x8052)
    set_enum("GL_RGB10_A2_EXT", 0x8059)


#### GL_OES_RGB8_RGBA8 ####
def init_gl_oes_rgb8_rgba8():
    set_enum("GL_RGB8_OES", 0x8051)
    set_enum("GL_RGBA8_OES", 0x8058)


#### GL_OES_SAMPLE_SHADING ####
def init_gl_oes_sample_shading():
    set_func('glMinSampleShadingOES', t.void, (t.GLfloat,))
    set_enum("GL_SAMPLE_SHADING_OES", 0x8C36)
    set_enum("GL_MIN_SAMPLE_SHADING_VALUE_OES", 0x8C37)


#### GL_OES_SHADER_MULTISAMPLE_INTERPOLATION ####
def init_gl_oes_shader_multisample_interpolation():
    set_enum("GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES", 0x8E5B)
    set_enum("GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES", 0x8E5C)
    set_enum("GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES", 0x8E5D)


#### GL_OES_STANDARD_DERIVATIVES ####
def init_gl_oes_standard_derivatives():
    set_enum("GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES", 0x8B8B)


#### GL_OES_STENCIL1 ####
def init_gl_oes_stencil1():
    set_enum("GL_STENCIL_INDEX1_OES", 0x8D46)


#### GL_OES_STENCIL4 ####
def init_gl_oes_stencil4():
    set_enum("GL_STENCIL_INDEX4_OES", 0x8D47)


#### GL_OES_SURFACELESS_CONTEXT ####
def init_gl_oes_surfaceless_context():
    set_enum("GL_FRAMEBUFFER_UNDEFINED_OES", 0x8219)


#### GL_OES_TESSELLATION_SHADER ####
def init_gl_oes_tessellation_shader():
    set_func('glPatchParameteriOES', t.void, (t.GLenum, t.GLint))
    set_enum("GL_PATCHES_OES", 0x000E)
    set_enum("GL_PATCH_VERTICES_OES", 0x8E72)
    set_enum("GL_TESS_CONTROL_OUTPUT_VERTICES_OES", 0x8E75)
    set_enum("GL_TESS_GEN_MODE_OES", 0x8E76)
    set_enum("GL_TESS_GEN_SPACING_OES", 0x8E77)
    set_enum("GL_TESS_GEN_VERTEX_ORDER_OES", 0x8E78)
    set_enum("GL_TESS_GEN_POINT_MODE_OES", 0x8E79)
    set_enum("GL_TRIANGLES", 0x0004)
    set_enum("GL_ISOLINES_OES", 0x8E7A)
    set_enum("GL_QUADS_OES", 0x0007)
    set_enum("GL_EQUAL", 0x0202)
    set_enum("GL_FRACTIONAL_ODD_OES", 0x8E7B)
    set_enum("GL_FRACTIONAL_EVEN_OES", 0x8E7C)
    set_enum("GL_CCW", 0x0901)
    set_enum("GL_CW", 0x0900)
    set_enum("GL_MAX_PATCH_VERTICES_OES", 0x8E7D)
    set_enum("GL_MAX_TESS_GEN_LEVEL_OES", 0x8E7E)
    set_enum("GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES", 0x8E7F)
    set_enum("GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES", 0x8E80)
    set_enum("GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES", 0x8E81)
    set_enum("GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES", 0x8E82)
    set_enum("GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES", 0x8E83)
    set_enum("GL_MAX_TESS_PATCH_COMPONENTS_OES", 0x8E84)
    set_enum("GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES", 0x8E85)
    set_enum("GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES", 0x8E86)
    set_enum("GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES", 0x8E89)
    set_enum("GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES", 0x8E8A)
    set_enum("GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES", 0x886C)
    set_enum("GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES", 0x886D)
    set_enum("GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES", 0x8E1E)
    set_enum("GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES", 0x8E1F)
    set_enum("GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES", 0x92CD)
    set_enum("GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES", 0x92CE)
    set_enum("GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES", 0x92D3)
    set_enum("GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES", 0x92D4)
    set_enum("GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES", 0x90CB)
    set_enum("GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES", 0x90CC)
    set_enum("GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES", 0x90D8)
    set_enum("GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES", 0x90D9)
    set_enum("GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES", 0x8221)
    set_enum("GL_IS_PER_PATCH_OES", 0x92E7)
    set_enum("GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES", 0x9307)
    set_enum("GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES", 0x9308)
    set_enum("GL_TESS_CONTROL_SHADER_OES", 0x8E88)
    set_enum("GL_TESS_EVALUATION_SHADER_OES", 0x8E87)
    set_enum("GL_TESS_CONTROL_SHADER_BIT_OES", 0x00000008)
    set_enum("GL_TESS_EVALUATION_SHADER_BIT_OES", 0x00000010)


#### GL_OES_TEXTURE_3D ####
def init_gl_oes_texture_3d():
    set_func('glTexImage3DOES', t.void, (t.GLenum, t.GLint, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei, t.GLint, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glTexSubImage3DOES', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glCopyTexSubImage3DOES', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glCompressedTexImage3DOES', t.void, (t.GLenum, t.GLint, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei, t.GLint, t.GLsizei, ct.POINTER(t.void)))
    set_func('glCompressedTexSubImage3DOES', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLenum, t.GLsizei, ct.POINTER(t.void)))
    set_func('glFramebufferTexture3DOES', t.void, (t.GLenum, t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLint))
    set_enum("GL_TEXTURE_WRAP_R_OES", 0x8072)
    set_enum("GL_TEXTURE_3D_OES", 0x806F)
    set_enum("GL_TEXTURE_BINDING_3D_OES", 0x806A)
    set_enum("GL_MAX_3D_TEXTURE_SIZE_OES", 0x8073)
    set_enum("GL_SAMPLER_3D_OES", 0x8B5F)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES", 0x8CD4)


#### GL_OES_TEXTURE_BORDER_CLAMP ####
def init_gl_oes_texture_border_clamp():
    set_func('glTexParameterIivOES', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glTexParameterIuivOES', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetTexParameterIivOES', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetTexParameterIuivOES', t.void, (t.GLenum, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glSamplerParameterIivOES', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glSamplerParameterIuivOES', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_func('glGetSamplerParameterIivOES', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glGetSamplerParameterIuivOES', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLuint)))
    set_enum("GL_TEXTURE_BORDER_COLOR_OES", 0x1004)
    set_enum("GL_CLAMP_TO_BORDER_OES", 0x812D)


#### GL_OES_TEXTURE_BUFFER ####
def init_gl_oes_texture_buffer():
    set_func('glTexBufferOES', t.void, (t.GLenum, t.GLenum, t.GLuint))
    set_func('glTexBufferRangeOES', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLintptr, t.GLsizeiptr))
    set_enum("GL_TEXTURE_BUFFER_OES", 0x8C2A)
    set_enum("GL_TEXTURE_BUFFER_BINDING_OES", 0x8C2A)
    set_enum("GL_MAX_TEXTURE_BUFFER_SIZE_OES", 0x8C2B)
    set_enum("GL_TEXTURE_BINDING_BUFFER_OES", 0x8C2C)
    set_enum("GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES", 0x8C2D)
    set_enum("GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES", 0x919F)
    set_enum("GL_SAMPLER_BUFFER_OES", 0x8DC2)
    set_enum("GL_INT_SAMPLER_BUFFER_OES", 0x8DD0)
    set_enum("GL_UNSIGNED_INT_SAMPLER_BUFFER_OES", 0x8DD8)
    set_enum("GL_IMAGE_BUFFER_OES", 0x9051)
    set_enum("GL_INT_IMAGE_BUFFER_OES", 0x905C)
    set_enum("GL_UNSIGNED_INT_IMAGE_BUFFER_OES", 0x9067)
    set_enum("GL_TEXTURE_BUFFER_OFFSET_OES", 0x919D)
    set_enum("GL_TEXTURE_BUFFER_SIZE_OES", 0x919E)


#### GL_OES_TEXTURE_COMPRESSION_ASTC ####
def init_gl_oes_texture_compression_astc():
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6)
    set_enum("GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA)
    set_enum("GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC)
    set_enum("GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD)
    set_enum("GL_COMPRESSED_RGBA_ASTC_3x3x3_OES", 0x93C0)
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x3x3_OES", 0x93C1)
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x4x3_OES", 0x93C2)
    set_enum("GL_COMPRESSED_RGBA_ASTC_4x4x4_OES", 0x93C3)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x4x4_OES", 0x93C4)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x5x4_OES", 0x93C5)
    set_enum("GL_COMPRESSED_RGBA_ASTC_5x5x5_OES", 0x93C6)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x5x5_OES", 0x93C7)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x6x5_OES", 0x93C8)
    set_enum("GL_COMPRESSED_RGBA_ASTC_6x6x6_OES", 0x93C9)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES", 0x93E0)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES", 0x93E1)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES", 0x93E2)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES", 0x93E3)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES", 0x93E4)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES", 0x93E5)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES", 0x93E6)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES", 0x93E7)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES", 0x93E8)
    set_enum("GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES", 0x93E9)


#### GL_OES_TEXTURE_CUBE_MAP_ARRAY ####
def init_gl_oes_texture_cube_map_array():
    set_enum("GL_TEXTURE_CUBE_MAP_ARRAY_OES", 0x9009)
    set_enum("GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES", 0x900A)
    set_enum("GL_SAMPLER_CUBE_MAP_ARRAY_OES", 0x900C)
    set_enum("GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES", 0x900D)
    set_enum("GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES", 0x900E)
    set_enum("GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES", 0x900F)
    set_enum("GL_IMAGE_CUBE_MAP_ARRAY_OES", 0x9054)
    set_enum("GL_INT_IMAGE_CUBE_MAP_ARRAY_OES", 0x905F)
    set_enum("GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES", 0x906A)


#### GL_OES_TEXTURE_FLOAT ####
def init_gl_oes_texture_float():
    set_enum("GL_FLOAT", 0x1406)


#### GL_OES_TEXTURE_HALF_FLOAT ####
def init_gl_oes_texture_half_float():
    set_enum("GL_HALF_FLOAT_OES", 0x8D61)


#### GL_OES_TEXTURE_STENCIL8 ####
def init_gl_oes_texture_stencil8():
    set_enum("GL_STENCIL_INDEX_OES", 0x1901)
    set_enum("GL_STENCIL_INDEX8_OES", 0x8D48)


#### GL_OES_TEXTURE_STORAGE_MULTISAMPLE_2D_ARRAY ####
def init_gl_oes_texture_storage_multisample_2d_array():
    set_func('glTexStorage3DMultisampleOES', t.void, (t.GLenum, t.GLsizei, t.GLenum, t.GLsizei, t.GLsizei, t.GLsizei, t.GLboolean))
    set_enum("GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES", 0x9102)
    set_enum("GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES", 0x9105)
    set_enum("GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES", 0x910B)
    set_enum("GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES", 0x910C)
    set_enum("GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES", 0x910D)


#### GL_OES_TEXTURE_VIEW ####
def init_gl_oes_texture_view():
    set_func('glTextureViewOES', t.void, (t.GLuint, t.GLenum, t.GLuint, t.GLenum, t.GLuint, t.GLuint, t.GLuint, t.GLuint))
    set_enum("GL_TEXTURE_VIEW_MIN_LEVEL_OES", 0x82DB)
    set_enum("GL_TEXTURE_VIEW_NUM_LEVELS_OES", 0x82DC)
    set_enum("GL_TEXTURE_VIEW_MIN_LAYER_OES", 0x82DD)
    set_enum("GL_TEXTURE_VIEW_NUM_LAYERS_OES", 0x82DE)
    set_enum("GL_TEXTURE_IMMUTABLE_LEVELS", 0x82DF)


#### GL_OES_VERTEX_ARRAY_OBJECT ####
def init_gl_oes_vertex_array_object():
    set_func('glBindVertexArrayOES', t.void, (t.GLuint,))
    set_func('glDeleteVertexArraysOES', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGenVertexArraysOES', t.void, (t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glIsVertexArrayOES', t.GLboolean, (t.GLuint,))
    set_enum("GL_VERTEX_ARRAY_BINDING_OES", 0x85B5)


#### GL_OES_VERTEX_HALF_FLOAT ####
def init_gl_oes_vertex_half_float():
    set_enum("GL_HALF_FLOAT_OES", 0x8D61)


#### GL_OES_VERTEX_TYPE_10_10_10_2 ####
def init_gl_oes_vertex_type_10_10_10_2():
    set_enum("GL_UNSIGNED_INT_10_10_10_2_OES", 0x8DF6)
    set_enum("GL_INT_10_10_10_2_OES", 0x8DF7)


#### GL_OES_VIEWPORT_ARRAY ####
def init_gl_oes_viewport_array():
    set_func('glViewportArrayvOES', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glViewportIndexedfOES', t.void, (t.GLuint, t.GLfloat, t.GLfloat, t.GLfloat, t.GLfloat))
    set_func('glViewportIndexedfvOES', t.void, (t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glScissorArrayvOES', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLint)))
    set_func('glScissorIndexedOES', t.void, (t.GLuint, t.GLint, t.GLint, t.GLsizei, t.GLsizei))
    set_func('glScissorIndexedvOES', t.void, (t.GLuint, ct.POINTER(t.GLint)))
    set_func('glDepthRangeArrayfvOES', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLfloat)))
    set_func('glDepthRangeIndexedfOES', t.void, (t.GLuint, t.GLfloat, t.GLfloat))
    set_func('glGetFloati_vOES', t.void, (t.GLenum, t.GLuint, ct.POINTER(t.GLfloat)))
    set_func('glEnableiOES', t.void, (t.GLenum, t.GLuint))
    set_func('glDisableiOES', t.void, (t.GLenum, t.GLuint))
    set_func('glIsEnablediOES', t.GLboolean, (t.GLenum, t.GLuint))
    set_enum("GL_SCISSOR_BOX", 0x0C10)
    set_enum("GL_VIEWPORT", 0x0BA2)
    set_enum("GL_DEPTH_RANGE", 0x0B70)
    set_enum("GL_SCISSOR_TEST", 0x0C11)
    set_enum("GL_MAX_VIEWPORTS_OES", 0x825B)
    set_enum("GL_VIEWPORT_SUBPIXEL_BITS_OES", 0x825C)
    set_enum("GL_VIEWPORT_BOUNDS_RANGE_OES", 0x825D)
    set_enum("GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES", 0x825F)


#### GL_OVR_MULTIVIEW ####
def init_gl_ovr_multiview():
    set_func('glFramebufferTextureMultiviewOVR', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLint, t.GLsizei))
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR", 0x9630)
    set_enum("GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR", 0x9632)
    set_enum("GL_MAX_VIEWS_OVR", 0x9631)


#### GL_OVR_MULTIVIEW_MULTISAMPLED_RENDER_TO_TEXTURE ####
def init_gl_ovr_multiview_multisampled_render_to_texture():
    set_func('glFramebufferTextureMultisampleMultiviewOVR', t.void, (t.GLenum, t.GLenum, t.GLuint, t.GLint, t.GLsizei, t.GLint, t.GLsizei))


#### GL_QCOM_ALPHA_TEST ####
def init_gl_qcom_alpha_test():
    set_func('glAlphaFuncQCOM', t.void, (t.GLenum, t.GLclampf))
    set_enum("GL_ALPHA_TEST_QCOM", 0x0BC0)
    set_enum("GL_ALPHA_TEST_FUNC_QCOM", 0x0BC1)
    set_enum("GL_ALPHA_TEST_REF_QCOM", 0x0BC2)


#### GL_QCOM_BINNING_CONTROL ####
def init_gl_qcom_binning_control():
    set_enum("GL_BINNING_CONTROL_HINT_QCOM", 0x8FB0)
    set_enum("GL_CPU_OPTIMIZED_QCOM", 0x8FB1)
    set_enum("GL_GPU_OPTIMIZED_QCOM", 0x8FB2)
    set_enum("GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM", 0x8FB3)


#### GL_QCOM_DRIVER_CONTROL ####
def init_gl_qcom_driver_control():
    set_func('glGetDriverControlsQCOM', t.void, (ct.POINTER(t.GLint), t.GLsizei, ct.POINTER(t.GLuint)))
    set_func('glGetDriverControlStringQCOM', t.void, (t.GLuint, t.GLsizei, ct.POINTER(t.GLsizei), ct.POINTER(t.GLchar)))
    set_func('glEnableDriverControlQCOM', t.void, (t.GLuint,))
    set_func('glDisableDriverControlQCOM', t.void, (t.GLuint,))


#### GL_QCOM_EXTENDED_GET ####
def init_gl_qcom_extended_get():
    set_func('glExtGetTexturesQCOM', t.void, (ct.POINTER(t.GLuint), t.GLint, ct.POINTER(t.GLint)))
    set_func('glExtGetBuffersQCOM', t.void, (ct.POINTER(t.GLuint), t.GLint, ct.POINTER(t.GLint)))
    set_func('glExtGetRenderbuffersQCOM', t.void, (ct.POINTER(t.GLuint), t.GLint, ct.POINTER(t.GLint)))
    set_func('glExtGetFramebuffersQCOM', t.void, (ct.POINTER(t.GLuint), t.GLint, ct.POINTER(t.GLint)))
    set_func('glExtGetTexLevelParameterivQCOM', t.void, (t.GLuint, t.GLenum, t.GLint, t.GLenum, ct.POINTER(t.GLint)))
    set_func('glExtTexObjectStateOverrideiQCOM', t.void, (t.GLenum, t.GLenum, t.GLint))
    set_func('glExtGetTexSubImageQCOM', t.void, (t.GLenum, t.GLint, t.GLint, t.GLint, t.GLint, t.GLsizei, t.GLsizei, t.GLsizei, t.GLenum, t.GLenum, ct.POINTER(t.void)))
    set_func('glExtGetBufferPointervQCOM', t.void, (t.GLenum, ct.POINTER(ct.POINTER(t.void))))
    set_enum("GL_TEXTURE_WIDTH_QCOM", 0x8BD2)
    set_enum("GL_TEXTURE_HEIGHT_QCOM", 0x8BD3)
    set_enum("GL_TEXTURE_DEPTH_QCOM", 0x8BD4)
    set_enum("GL_TEXTURE_INTERNAL_FORMAT_QCOM", 0x8BD5)
    set_enum("GL_TEXTURE_FORMAT_QCOM", 0x8BD6)
    set_enum("GL_TEXTURE_TYPE_QCOM", 0x8BD7)
    set_enum("GL_TEXTURE_IMAGE_VALID_QCOM", 0x8BD8)
    set_enum("GL_TEXTURE_NUM_LEVELS_QCOM", 0x8BD9)
    set_enum("GL_TEXTURE_TARGET_QCOM", 0x8BDA)
    set_enum("GL_TEXTURE_OBJECT_VALID_QCOM", 0x8BDB)
    set_enum("GL_STATE_RESTORE", 0x8BDC)


#### GL_QCOM_EXTENDED_GET2 ####
def init_gl_qcom_extended_get2():
    set_func('glExtGetShadersQCOM', t.void, (ct.POINTER(t.GLuint), t.GLint, ct.POINTER(t.GLint)))
    set_func('glExtGetProgramsQCOM', t.void, (ct.POINTER(t.GLuint), t.GLint, ct.POINTER(t.GLint)))
    set_func('glExtIsProgramBinaryQCOM', t.GLboolean, (t.GLuint,))
    set_func('glExtGetProgramBinarySourceQCOM', t.void, (t.GLuint, t.GLenum, ct.POINTER(t.GLchar), ct.POINTER(t.GLint)))


#### GL_QCOM_PERFMON_GLOBAL_MODE ####
def init_gl_qcom_perfmon_global_mode():
    set_enum("GL_PERFMON_GLOBAL_MODE_QCOM", 0x8FA0)


#### GL_QCOM_TILED_RENDERING ####
def init_gl_qcom_tiled_rendering():
    set_func('glStartTilingQCOM', t.void, (t.GLuint, t.GLuint, t.GLuint, t.GLuint, t.GLbitfield))
    set_func('glEndTilingQCOM', t.void, (t.GLbitfield,))
    set_enum("GL_COLOR_BUFFER_BIT0_QCOM", 0x00000001)
    set_enum("GL_COLOR_BUFFER_BIT1_QCOM", 0x00000002)
    set_enum("GL_COLOR_BUFFER_BIT2_QCOM", 0x00000004)
    set_enum("GL_COLOR_BUFFER_BIT3_QCOM", 0x00000008)
    set_enum("GL_COLOR_BUFFER_BIT4_QCOM", 0x00000010)
    set_enum("GL_COLOR_BUFFER_BIT5_QCOM", 0x00000020)
    set_enum("GL_COLOR_BUFFER_BIT6_QCOM", 0x00000040)
    set_enum("GL_COLOR_BUFFER_BIT7_QCOM", 0x00000080)
    set_enum("GL_DEPTH_BUFFER_BIT0_QCOM", 0x00000100)
    set_enum("GL_DEPTH_BUFFER_BIT1_QCOM", 0x00000200)
    set_enum("GL_DEPTH_BUFFER_BIT2_QCOM", 0x00000400)
    set_enum("GL_DEPTH_BUFFER_BIT3_QCOM", 0x00000800)
    set_enum("GL_DEPTH_BUFFER_BIT4_QCOM", 0x00001000)
    set_enum("GL_DEPTH_BUFFER_BIT5_QCOM", 0x00002000)
    set_enum("GL_DEPTH_BUFFER_BIT6_QCOM", 0x00004000)
    set_enum("GL_DEPTH_BUFFER_BIT7_QCOM", 0x00008000)
    set_enum("GL_STENCIL_BUFFER_BIT0_QCOM", 0x00010000)
    set_enum("GL_STENCIL_BUFFER_BIT1_QCOM", 0x00020000)
    set_enum("GL_STENCIL_BUFFER_BIT2_QCOM", 0x00040000)
    set_enum("GL_STENCIL_BUFFER_BIT3_QCOM", 0x00080000)
    set_enum("GL_STENCIL_BUFFER_BIT4_QCOM", 0x00100000)
    set_enum("GL_STENCIL_BUFFER_BIT5_QCOM", 0x00200000)
    set_enum("GL_STENCIL_BUFFER_BIT6_QCOM", 0x00400000)
    set_enum("GL_STENCIL_BUFFER_BIT7_QCOM", 0x00800000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT0_QCOM", 0x01000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT1_QCOM", 0x02000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT2_QCOM", 0x04000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT3_QCOM", 0x08000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT4_QCOM", 0x10000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT5_QCOM", 0x20000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT6_QCOM", 0x40000000)
    set_enum("GL_MULTISAMPLE_BUFFER_BIT7_QCOM", 0x80000000)


#### GL_QCOM_WRITEONLY_RENDERING ####
def init_gl_qcom_writeonly_rendering():
    set_enum("GL_WRITEONLY_RENDERING_QCOM", 0x8823)


#### GL_VIV_SHADER_BINARY ####
def init_gl_viv_shader_binary():
    set_enum("GL_SHADER_BINARY_VIV", 0x8FC4)


def init():
    init_gl_es_version_2_0()
    init_gl_es_version_3_0()
    init_gl_es_version_3_1()
    init_gl_es_version_3_2()
    init_gl_amd_compressed_3dc_texture()
    init_gl_amd_compressed_atc_texture()
    init_gl_amd_performance_monitor()
    init_gl_amd_program_binary_z400()
    init_gl_angle_depth_texture()
    init_gl_angle_framebuffer_blit()
    init_gl_angle_framebuffer_multisample()
    init_gl_angle_instanced_arrays()
    init_gl_angle_pack_reverse_row_order()
    init_gl_angle_program_binary()
    init_gl_angle_texture_compression_dxt3()
    init_gl_angle_texture_compression_dxt5()
    init_gl_angle_texture_usage()
    init_gl_angle_translated_shader_source()
    init_gl_apple_clip_distance()
    init_gl_apple_copy_texture_levels()
    init_gl_apple_framebuffer_multisample()
    init_gl_apple_rgb_422()
    init_gl_apple_sync()
    init_gl_apple_texture_format_bgra8888()
    init_gl_apple_texture_max_level()
    init_gl_apple_texture_packed_float()
    init_gl_arm_mali_program_binary()
    init_gl_arm_mali_shader_binary()
    init_gl_arm_shader_framebuffer_fetch()
    init_gl_dmp_program_binary()
    init_gl_dmp_shader_binary()
    init_gl_ext_yuv_target()
    init_gl_ext_base_instance()
    init_gl_ext_blend_func_extended()
    init_gl_ext_blend_minmax()
    init_gl_ext_buffer_storage()
    init_gl_ext_clear_texture()
    init_gl_ext_clip_cull_distance()
    init_gl_ext_color_buffer_half_float()
    init_gl_ext_copy_image()
    init_gl_ext_debug_label()
    init_gl_ext_debug_marker()
    init_gl_ext_discard_framebuffer()
    init_gl_ext_disjoint_timer_query()
    init_gl_ext_draw_buffers()
    init_gl_ext_draw_buffers_indexed()
    init_gl_ext_draw_elements_base_vertex()
    init_gl_ext_draw_instanced()
    init_gl_ext_geometry_shader()
    init_gl_ext_instanced_arrays()
    init_gl_ext_map_buffer_range()
    init_gl_ext_multi_draw_arrays()
    init_gl_ext_multi_draw_indirect()
    init_gl_ext_multisampled_compatibility()
    init_gl_ext_multisampled_render_to_texture()
    init_gl_ext_multiview_draw_buffers()
    init_gl_ext_occlusion_query_boolean()
    init_gl_ext_polygon_offset_clamp()
    init_gl_ext_primitive_bounding_box()
    init_gl_ext_protected_textures()
    init_gl_ext_pvrtc_srgb()
    init_gl_ext_raster_multisample()
    init_gl_ext_read_format_bgra()
    init_gl_ext_render_snorm()
    init_gl_ext_robustness()
    init_gl_ext_srgb()
    init_gl_ext_srgb_write_control()
    init_gl_ext_separate_shader_objects()
    init_gl_ext_shader_framebuffer_fetch()
    init_gl_ext_shader_pixel_local_storage()
    init_gl_ext_shader_pixel_local_storage2()
    init_gl_ext_shadow_samplers()
    init_gl_ext_sparse_texture()
    init_gl_ext_tessellation_shader()
    init_gl_ext_texture_border_clamp()
    init_gl_ext_texture_buffer()
    init_gl_ext_texture_compression_dxt1()
    init_gl_ext_texture_compression_s3tc()
    init_gl_ext_texture_cube_map_array()
    init_gl_ext_texture_filter_anisotropic()
    init_gl_ext_texture_filter_minmax()
    init_gl_ext_texture_format_bgra8888()
    init_gl_ext_texture_norm16()
    init_gl_ext_texture_rg()
    init_gl_ext_texture_srgb_r8()
    init_gl_ext_texture_srgb_rg8()
    init_gl_ext_texture_srgb_decode()
    init_gl_ext_texture_storage()
    init_gl_ext_texture_type_2_10_10_10_rev()
    init_gl_ext_texture_view()
    init_gl_ext_unpack_subimage()
    init_gl_ext_window_rectangles()
    init_gl_fj_shader_binary_gccso()
    init_gl_img_bindless_texture()
    init_gl_img_framebuffer_downsample()
    init_gl_img_multisampled_render_to_texture()
    init_gl_img_program_binary()
    init_gl_img_read_format()
    init_gl_img_shader_binary()
    init_gl_img_texture_compression_pvrtc()
    init_gl_img_texture_compression_pvrtc2()
    init_gl_img_texture_filter_cubic()
    init_gl_intel_conservative_rasterization()
    init_gl_intel_framebuffer_cmaa()
    init_gl_intel_performance_query()
    init_gl_khr_blend_equation_advanced()
    init_gl_khr_blend_equation_advanced_coherent()
    init_gl_khr_context_flush_control()
    init_gl_khr_debug()
    init_gl_khr_no_error()
    init_gl_khr_robustness()
    init_gl_khr_texture_compression_astc_hdr()
    init_gl_khr_texture_compression_astc_ldr()
    init_gl_nv_bindless_texture()
    init_gl_nv_blend_equation_advanced()
    init_gl_nv_blend_equation_advanced_coherent()
    init_gl_nv_conditional_render()
    init_gl_nv_conservative_raster()
    init_gl_nv_conservative_raster_pre_snap_triangles()
    init_gl_nv_copy_buffer()
    init_gl_nv_coverage_sample()
    init_gl_nv_depth_nonlinear()
    init_gl_nv_draw_buffers()
    init_gl_nv_draw_instanced()
    init_gl_nv_fbo_color_attachments()
    init_gl_nv_fence()
    init_gl_nv_fill_rectangle()
    init_gl_nv_fragment_coverage_to_color()
    init_gl_nv_framebuffer_blit()
    init_gl_nv_framebuffer_mixed_samples()
    init_gl_nv_framebuffer_multisample()
    init_gl_nv_gpu_shader5()
    init_gl_nv_instanced_arrays()
    init_gl_nv_internalformat_sample_query()
    init_gl_nv_non_square_matrices()
    init_gl_nv_path_rendering()
    init_gl_nv_path_rendering_shared_edge()
    init_gl_nv_polygon_mode()
    init_gl_nv_read_buffer()
    init_gl_nv_srgb_formats()
    init_gl_nv_sample_locations()
    init_gl_nv_shadow_samplers_array()
    init_gl_nv_shadow_samplers_cube()
    init_gl_nv_texture_border_clamp()
    init_gl_nv_viewport_array()
    init_gl_nv_viewport_swizzle()
    init_gl_oes_egl_image()
    init_gl_oes_egl_image_external()
    init_gl_oes_compressed_etc1_rgb8_texture()
    init_gl_oes_compressed_paletted_texture()
    init_gl_oes_copy_image()
    init_gl_oes_depth24()
    init_gl_oes_depth32()
    init_gl_oes_depth_texture()
    init_gl_oes_draw_buffers_indexed()
    init_gl_oes_draw_elements_base_vertex()
    init_gl_oes_element_index_uint()
    init_gl_oes_geometry_shader()
    init_gl_oes_get_program_binary()
    init_gl_oes_mapbuffer()
    init_gl_oes_packed_depth_stencil()
    init_gl_oes_primitive_bounding_box()
    init_gl_oes_required_internalformat()
    init_gl_oes_rgb8_rgba8()
    init_gl_oes_sample_shading()
    init_gl_oes_shader_multisample_interpolation()
    init_gl_oes_standard_derivatives()
    init_gl_oes_stencil1()
    init_gl_oes_stencil4()
    init_gl_oes_surfaceless_context()
    init_gl_oes_tessellation_shader()
    init_gl_oes_texture_3d()
    init_gl_oes_texture_border_clamp()
    init_gl_oes_texture_buffer()
    init_gl_oes_texture_compression_astc()
    init_gl_oes_texture_cube_map_array()
    init_gl_oes_texture_float()
    init_gl_oes_texture_half_float()
    init_gl_oes_texture_stencil8()
    init_gl_oes_texture_storage_multisample_2d_array()
    init_gl_oes_texture_view()
    init_gl_oes_vertex_array_object()
    init_gl_oes_vertex_half_float()
    init_gl_oes_vertex_type_10_10_10_2()
    init_gl_oes_viewport_array()
    init_gl_ovr_multiview()
    init_gl_ovr_multiview_multisampled_render_to_texture()
    init_gl_qcom_alpha_test()
    init_gl_qcom_binning_control()
    init_gl_qcom_driver_control()
    init_gl_qcom_extended_get()
    init_gl_qcom_extended_get2()
    init_gl_qcom_perfmon_global_mode()
    init_gl_qcom_tiled_rendering()
    init_gl_qcom_writeonly_rendering()
    init_gl_viv_shader_binary()

