void glBlendBarrierKHR ( void )
void glDebugMessageControlKHR ( GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled )
void glDebugMessageInsertKHR ( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf )
void glDebugMessageCallbackKHR ( GLDEBUGPROCKHR callback, const void *userParam )
GLuint glGetDebugMessageLogKHR ( GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog )
void glPushDebugGroupKHR ( GLenum source, GLuint id, GLsizei length, const GLchar *message )
void glPopDebugGroupKHR ( void )
void glObjectLabelKHR ( GLenum identifier, GLuint name, GLsizei length, const GLchar *label )
void glGetObjectLabelKHR ( GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label )
void glObjectPtrLabelKHR ( const void *ptr, GLsizei length, const GLchar *label )
void glGetObjectPtrLabelKHR ( const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label )
void glGetPointervKHR ( GLenum pname, void **params )
void glMinSampleShadingOES ( GLfloat value )
void glTexStorage3DMultisampleOES ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations )
void glCopyImageSubDataEXT ( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth )
void glEnableiEXT ( GLenum target, GLuint index )
void glDisableiEXT ( GLenum target, GLuint index )
void glBlendEquationiEXT ( GLuint buf, GLenum mode )
void glBlendEquationSeparateiEXT ( GLuint buf, GLenum modeRGB, GLenum modeAlpha )
void glBlendFunciEXT ( GLuint buf, GLenum src, GLenum dst )
void glBlendFuncSeparateiEXT ( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha )
void glColorMaskiEXT ( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a )
GLboolean glIsEnablediEXT ( GLenum target, GLuint index )
void glFramebufferTextureEXT ( GLenum target, GLenum attachment, GLuint texture, GLint level )
void glPrimitiveBoundingBoxEXT ( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW )
void glPatchParameteriEXT ( GLenum pname, GLint value )
void glTexParameterIivEXT ( GLenum target, GLenum pname, const GLint *params )
void glTexParameterIuivEXT ( GLenum target, GLenum pname, const GLuint *params )
void glGetTexParameterIivEXT ( GLenum target, GLenum pname, GLint *params )
void glGetTexParameterIuivEXT ( GLenum target, GLenum pname, GLuint *params )
void glSamplerParameterIivEXT ( GLuint sampler, GLenum pname, const GLint *param )
void glSamplerParameterIuivEXT ( GLuint sampler, GLenum pname, const GLuint *param )
void glGetSamplerParameterIivEXT ( GLuint sampler, GLenum pname, GLint *params )
void glGetSamplerParameterIuivEXT ( GLuint sampler, GLenum pname, GLuint *params )
void glTexBufferEXT ( GLenum target, GLenum internalformat, GLuint buffer )
void glTexBufferRangeEXT ( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size )
