//
// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

// functionsgl_typedefs.h: Typedefs of OpenGL types and functions for versions 1.0 through 4.5.

#ifndef LIBANGLE_RENDERER_GL_FUNCTIONSGLTYPEDEFS_H_
#define LIBANGLE_RENDERER_GL_FUNCTIONSGLTYPEDEFS_H_

#include "common/platform.h"

#include <stdint.h>

#ifndef INTERNAL_GL_APICALL
#   define INTERNAL_GL_APICALL
#endif

#ifndef INTERNAL_GL_APIENTRY
#   ifdef ANGLE_PLATFORM_WINDOWS
#       define INTERNAL_GL_APIENTRY __stdcall
#   else
#       define INTERNAL_GL_APIENTRY
#   endif
#endif

namespace rx
{

typedef unsigned int GLenum;
typedef unsigned char GLboolean;
typedef unsigned int GLbitfield;
typedef void GLvoid;
typedef signed char GLbyte;
typedef short GLshort;
typedef int GLint;
typedef unsigned char GLubyte;
typedef unsigned short GLushort;
typedef unsigned int GLuint;
typedef int GLsizei;
typedef float GLfloat;
typedef float GLclampf;
typedef double GLdouble;
typedef double GLclampd;
typedef char GLchar;

typedef unsigned short GLhalf;
typedef GLint GLfixed;
typedef ptrdiff_t GLintptr;
typedef ptrdiff_t GLsizeiptr;
typedef int64_t GLint64;
typedef uint64_t GLuint64;
typedef int64_t GLint64EXT;
typedef uint64_t GLuint64EXT;
typedef struct __GLsync *GLsync;
typedef void (INTERNAL_GL_APIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam);
typedef void (INTERNAL_GL_APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam);
typedef void (INTERNAL_GL_APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar *message, void *userParam);

// 1.0
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDFUNCPROC)(GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARPROC)(GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARCOLORPROC)(GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARDEPTHPROC)(GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARSTENCILPROC)(GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLCOLORMASKPROC)(GLboolean, GLboolean, GLboolean, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLCULLFACEPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLDEPTHFUNCPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLDEPTHMASKPROC)(GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLDEPTHRANGEPROC)(GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLDISABLEPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWBUFFERPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLENABLEPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLFINISHPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLFLUSHPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLFRONTFACEPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLGETBOOLEANVPROC)(GLenum, GLboolean *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETDOUBLEVPROC)(GLenum, GLdouble *);
typedef GLenum (INTERNAL_GL_APICALL *PFNGLGETERRORPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLGETFLOATVPROC)(GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETINTEGERVPROC)(GLenum, GLint *);
typedef const GLubyte * (INTERNAL_GL_APICALL *PFNGLGETSTRINGPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXIMAGEPROC)(GLenum, GLint, GLenum, GLenum, GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum, GLint, GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum, GLint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXPARAMETERFVPROC)(GLenum, GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXPARAMETERIVPROC)(GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLHINTPROC)(GLenum, GLenum);
typedef GLboolean (INTERNAL_GL_APICALL *PFNGLISENABLEDPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLLINEWIDTHPROC)(GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLLOGICOPPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLPIXELSTOREFPROC)(GLenum, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPIXELSTOREIPROC)(GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPOINTSIZEPROC)(GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPOLYGONMODEPROC)(GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLREADBUFFERPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLREADPIXELSPROC)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLSCISSORPROC)(GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLSTENCILFUNCPROC)(GLenum, GLint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLSTENCILMASKPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLSTENCILOPPROC)(GLenum, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXIMAGE1DPROC)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXIMAGE2DPROC)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXPARAMETERFPROC)(GLenum, GLenum, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXPARAMETERFVPROC)(GLenum, GLenum, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXPARAMETERIPROC)(GLenum, GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXPARAMETERIVPROC)(GLenum, GLenum, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVIEWPORTPROC)(GLint, GLint, GLsizei, GLsizei);

// 1.1
typedef void (INTERNAL_GL_APICALL *PFNGLBINDTEXTUREPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXIMAGE1DPROC)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXIMAGE2DPROC)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum, GLint, GLint, GLint, GLint, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETETEXTURESPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWARRAYSPROC)(GLenum, GLint, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSPROC)(GLenum, GLsizei, GLenum, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLGENTEXTURESPROC)(GLsizei, GLuint *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISTEXTUREPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLPOLYGONOFFSETPROC)(GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSUBIMAGE1DPROC)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSUBIMAGE2DPROC)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);

// 1.2
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDCOLORPROC)(GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDEQUATIONPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWRANGEELEMENTSPROC)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXIMAGE3DPROC)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSUBIMAGE3DPROC)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);

// 1.3
typedef void (INTERNAL_GL_APICALL *PFNGLACTIVETEXTUREPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum, GLint, GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLECOVERAGEPROC)(GLfloat, GLboolean);

// 1.4
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDFUNCSEPARATEPROC)(GLenum, GLenum, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLMULTIDRAWARRAYSPROC)(GLenum, const GLint *, const GLsizei *, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLMULTIDRAWELEMENTSPROC)(GLenum, const GLsizei *, GLenum, const GLvoid *const*, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLPOINTPARAMETERFPROC)(GLenum, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPOINTPARAMETERFVPROC)(GLenum, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPOINTPARAMETERIPROC)(GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPOINTPARAMETERIVPROC)(GLenum, const GLint *);

// 1.5
typedef void (INTERNAL_GL_APICALL *PFNGLBEGINQUERYPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDBUFFERPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBUFFERDATAPROC)(GLenum, GLsizeiptr, const GLvoid *, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLBUFFERSUBDATAPROC)(GLenum, GLintptr, GLsizeiptr, const GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETEBUFFERSPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETEQUERIESPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLENDQUERYPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLGENBUFFERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGENQUERIESPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETBUFFERPOINTERVPROC)(GLenum, GLenum, GLvoid **);
typedef void (INTERNAL_GL_APICALL *PFNGLGETBUFFERSUBDATAPROC)(GLenum, GLintptr, GLsizeiptr, GLvoid *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYOBJECTIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYOBJECTUIVPROC)(GLuint, GLenum, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYIVPROC)(GLenum, GLenum, GLint *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISBUFFERPROC)(GLuint);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISQUERYPROC)(GLuint);
typedef void * (INTERNAL_GL_APICALL *PFNGLMAPBUFFERPROC)(GLenum, GLenum);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLUNMAPBUFFERPROC)(GLenum);

// 2.0
typedef void (INTERNAL_GL_APICALL *PFNGLATTACHSHADERPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDATTRIBLOCATIONPROC)(GLuint, GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPILESHADERPROC)(GLuint);
typedef GLuint(INTERNAL_GL_APICALL *PFNGLCREATEPROGRAMPROC)();
typedef GLuint(INTERNAL_GL_APICALL *PFNGLCREATESHADERPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETEPROGRAMPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETESHADERPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDETACHSHADERPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWBUFFERSPROC)(GLsizei, const GLenum *);
typedef void (INTERNAL_GL_APICALL *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEATTRIBPROC)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEUNIFORMPROC)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETATTACHEDSHADERSPROC)(GLuint, GLsizei, GLsizei *, GLuint *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETATTRIBLOCATIONPROC)(GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMINFOLOGPROC)(GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSHADERINFOLOGPROC)(GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSHADERSOURCEPROC)(GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSHADERIVPROC)(GLuint, GLenum, GLint *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETUNIFORMLOCATIONPROC)(GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETUNIFORMFVPROC)(GLuint, GLint, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETUNIFORMIVPROC)(GLuint, GLint, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint, GLenum, GLvoid **);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBDVPROC)(GLuint, GLenum, GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBFVPROC)(GLuint, GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBIVPROC)(GLuint, GLenum, GLint *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISPROGRAMPROC)(GLuint);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISSHADERPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLLINKPROGRAMPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLSHADERSOURCEPROC)(GLuint, GLsizei, const GLchar *const*, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum, GLenum, GLint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLSTENCILMASKSEPARATEPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLSTENCILOPSEPARATEPROC)(GLenum, GLenum, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1FPROC)(GLint, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1FVPROC)(GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1IPROC)(GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1IVPROC)(GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2FPROC)(GLint, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2FVPROC)(GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2IPROC)(GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2IVPROC)(GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3FPROC)(GLint, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3FVPROC)(GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3IPROC)(GLint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3IVPROC)(GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4FPROC)(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4FVPROC)(GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4IPROC)(GLint, GLint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4IVPROC)(GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX2FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX3FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUSEPROGRAMPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVALIDATEPROGRAMPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB1DPROC)(GLuint, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB1DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB1FPROC)(GLuint, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB1FVPROC)(GLuint, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB1SPROC)(GLuint, GLshort);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB1SVPROC)(GLuint, const GLshort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB2DPROC)(GLuint, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB2DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB2FPROC)(GLuint, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB2FVPROC)(GLuint, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB2SPROC)(GLuint, GLshort, GLshort);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB2SVPROC)(GLuint, const GLshort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB3DPROC)(GLuint, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB3DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB3FPROC)(GLuint, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB3FVPROC)(GLuint, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB3SPROC)(GLuint, GLshort, GLshort, GLshort);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB3SVPROC)(GLuint, const GLshort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NBVPROC)(GLuint, const GLbyte *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NIVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NSVPROC)(GLuint, const GLshort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NUBPROC)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint, const GLubyte *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint, const GLushort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4BVPROC)(GLuint, const GLbyte *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4DPROC)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4FPROC)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4FVPROC)(GLuint, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4IVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4SPROC)(GLuint, GLshort, GLshort, GLshort, GLshort);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4SVPROC)(GLuint, const GLshort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4UBVPROC)(GLuint, const GLubyte *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4UIVPROC)(GLuint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIB4USVPROC)(GLuint, const GLushort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);

// 2.1
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX2X3FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX2X4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX3X2FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX3X4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX4X2FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX4X3FVPROC)(GLint, GLsizei, GLboolean, const GLfloat *);

// 3.0
typedef void (INTERNAL_GL_APICALL *PFNGLBEGINCONDITIONALRENDERPROC)(GLuint, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDBUFFERBASEPROC)(GLenum, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDBUFFERRANGEPROC)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDFRAGDATALOCATIONPROC)(GLuint, GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDFRAMEBUFFERPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDRENDERBUFFERPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDVERTEXARRAYPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBLITFRAMEBUFFERPROC)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
typedef GLenum(INTERNAL_GL_APICALL *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCLAMPCOLORPROC)(GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARBUFFERFIPROC)(GLenum, GLint, GLfloat, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARBUFFERFVPROC)(GLenum, GLint, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARBUFFERIVPROC)(GLenum, GLint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARBUFFERUIVPROC)(GLenum, GLint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOLORMASKIPROC)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETERENDERBUFFERSPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDISABLEIPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLENABLEIPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLENDCONDITIONALRENDERPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLENDTRANSFORMFEEDBACKPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum, GLenum, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum, GLenum, GLenum, GLuint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum, GLenum, GLenum, GLuint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum, GLenum, GLenum, GLuint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum, GLenum, GLuint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLGENFRAMEBUFFERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGENRENDERBUFFERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGENVERTEXARRAYSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGENERATEMIPMAPPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLGETBOOLEANI_VPROC)(GLenum, GLuint, GLboolean *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETFRAGDATALOCATIONPROC)(GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum, GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETINTEGERI_VPROC)(GLenum, GLuint, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum, GLenum, GLint *);
typedef const GLubyte * (INTERNAL_GL_APICALL *PFNGLGETSTRINGIPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXPARAMETERIIVPROC)(GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum, GLenum, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETUNIFORMUIVPROC)(GLuint, GLint, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint, GLenum, GLuint *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISENABLEDIPROC)(GLenum, GLuint);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISFRAMEBUFFERPROC)(GLuint);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISRENDERBUFFERPROC)(GLuint);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISVERTEXARRAYPROC)(GLuint);
typedef void * (INTERNAL_GL_APICALL *PFNGLMAPBUFFERRANGEPROC)(GLenum, GLintptr, GLsizeiptr, GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum, GLenum, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXPARAMETERIIVPROC)(GLenum, GLenum, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXPARAMETERIUIVPROC)(GLenum, GLenum, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint, GLsizei, const GLchar *const*, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1UIPROC)(GLint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1UIVPROC)(GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2UIPROC)(GLint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2UIVPROC)(GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3UIPROC)(GLint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3UIVPROC)(GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4UIPROC)(GLint, GLuint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4UIVPROC)(GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI1IPROC)(GLuint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI1IVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI1UIPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI2IPROC)(GLuint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI2IVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI2UIPROC)(GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI3IPROC)(GLuint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI3IVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI3UIPROC)(GLuint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4BVPROC)(GLuint, const GLbyte *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4IPROC)(GLuint, GLint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4IVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4SVPROC)(GLuint, const GLshort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4UBVPROC)(GLuint, const GLubyte *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4UIPROC)(GLuint, GLuint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBI4USVPROC)(GLuint, const GLushort *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint, GLint, GLenum, GLsizei, const GLvoid *);

// 3.1
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint, GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint, GLsizei, const GLuint *, GLenum, GLint *);
typedef GLuint(INTERNAL_GL_APICALL *PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETUNIFORMINDICESPROC)(GLuint, GLsizei, const GLchar *const*, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXBUFFERPROC)(GLenum, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint, GLuint, GLuint);

// 3.2
typedef GLenum(INTERNAL_GL_APICALL *PFNGLCLIENTWAITSYNCPROC)(GLsync, GLbitfield, GLuint64);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETESYNCPROC)(GLsync);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum, GLsizei, GLenum, const GLvoid *, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint);
typedef GLsync(INTERNAL_GL_APICALL *PFNGLFENCESYNCPROC)(GLenum, GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum, GLenum, GLuint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum, GLenum, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETINTEGER64I_VPROC)(GLenum, GLuint, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETINTEGER64VPROC)(GLenum, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETMULTISAMPLEFVPROC)(GLenum, GLuint, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSYNCIVPROC)(GLsync, GLenum, GLsizei, GLsizei *, GLint *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISSYNCPROC)(GLsync);
typedef void (INTERNAL_GL_APICALL *PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum, const GLsizei *, GLenum, const GLvoid *const*, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROVOKINGVERTEXPROC)(GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLEMASKIPROC)(GLuint, GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum, GLsizei, GLint, GLsizei, GLsizei, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum, GLsizei, GLint, GLsizei, GLsizei, GLsizei, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLWAITSYNCPROC)(GLsync, GLbitfield, GLuint64);

// 3.3
typedef void (INTERNAL_GL_APICALL *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint, GLuint, GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDSAMPLERPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETESAMPLERSPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGENSAMPLERSPROC)(GLsizei, GLuint *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETFRAGDATAINDEXPROC)(GLuint, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYOBJECTI64VPROC)(GLuint, GLenum, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint, GLenum, GLuint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint, GLenum, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint, GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint, GLenum, GLint *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISSAMPLERPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLQUERYCOUNTERPROC)(GLuint, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLERPARAMETERIIVPROC)(GLuint, GLenum, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint, GLenum, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLERPARAMETERFPROC)(GLuint, GLenum, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLERPARAMETERFVPROC)(GLuint, GLenum, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLERPARAMETERIPROC)(GLuint, GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLSAMPLERPARAMETERIVPROC)(GLuint, GLenum, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBDIVISORPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP1UIPROC)(GLuint, GLenum, GLboolean, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP1UIVPROC)(GLuint, GLenum, GLboolean, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP2UIPROC)(GLuint, GLenum, GLboolean, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP2UIVPROC)(GLuint, GLenum, GLboolean, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP3UIPROC)(GLuint, GLenum, GLboolean, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP3UIVPROC)(GLuint, GLenum, GLboolean, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP4UIPROC)(GLuint, GLenum, GLboolean, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBP4UIVPROC)(GLuint, GLenum, GLboolean, const GLuint *);

// 4.0
typedef void (INTERNAL_GL_APICALL *PFNGLBEGINQUERYINDEXEDPROC)(GLenum, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDEQUATIONIPROC)(GLuint, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDFUNCSEPARATEIPROC)(GLuint, GLenum, GLenum, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLBLENDFUNCIPROC)(GLuint, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWARRAYSINDIRECTPROC)(GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLENDQUERYINDEXEDPROC)(GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint, GLenum, GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMSTAGEIVPROC)(GLuint, GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYINDEXEDIVPROC)(GLenum, GLuint, GLenum, GLint *);
typedef GLuint(INTERNAL_GL_APICALL *PFNGLGETSUBROUTINEINDEXPROC)(GLuint, GLenum, const GLchar *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint, GLenum, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum, GLint, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETUNIFORMDVPROC)(GLuint, GLint, GLdouble *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISTRANSFORMFEEDBACKPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLMINSAMPLESHADINGPROC)(GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPATCHPARAMETERFVPROC)(GLenum, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPATCHPARAMETERIPROC)(GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPAUSETRANSFORMFEEDBACKPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLRESUMETRANSFORMFEEDBACKPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1DPROC)(GLint, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM1DVPROC)(GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2DPROC)(GLint, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM2DVPROC)(GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3DPROC)(GLint, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM3DVPROC)(GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4DPROC)(GLint, GLdouble, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORM4DVPROC)(GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX2DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX2X3DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX2X4DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX3DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX3X2DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX3X4DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX4DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX4X2DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMMATRIX4X3DVPROC)(GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum, GLsizei, const GLuint *);

// 4.1
typedef void (INTERNAL_GL_APICALL *PFNGLACTIVESHADERPROGRAMPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDPROGRAMPIPELINEPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARDEPTHFPROC)(GLfloat);
typedef GLuint(INTERNAL_GL_APICALL *PFNGLCREATESHADERPROGRAMVPROC)(GLenum, GLsizei, const GLchar *const*);
typedef void (INTERNAL_GL_APICALL *PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDEPTHRANGEARRAYVPROC)(GLuint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLDEPTHRANGEINDEXEDPROC)(GLuint, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLDEPTHRANGEFPROC)(GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLGENPROGRAMPIPELINESPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETDOUBLEI_VPROC)(GLenum, GLuint, GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETFLOATI_VPROC)(GLenum, GLuint, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMBINARYPROC)(GLuint, GLsizei, GLsizei *, GLenum *, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum, GLenum, GLint *, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXATTRIBLDVPROC)(GLuint, GLenum, GLdouble *);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLISPROGRAMPIPELINEPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMBINARYPROC)(GLuint, GLenum, const void *, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMPARAMETERIPROC)(GLuint, GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1DPROC)(GLuint, GLint, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1DVPROC)(GLuint, GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1FPROC)(GLuint, GLint, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1FVPROC)(GLuint, GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1IPROC)(GLuint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1IVPROC)(GLuint, GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1UIPROC)(GLuint, GLint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint, GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2DPROC)(GLuint, GLint, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2DVPROC)(GLuint, GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2FPROC)(GLuint, GLint, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2FVPROC)(GLuint, GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2IPROC)(GLuint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2IVPROC)(GLuint, GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2UIPROC)(GLuint, GLint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint, GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3DPROC)(GLuint, GLint, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3DVPROC)(GLuint, GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3FPROC)(GLuint, GLint, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3FVPROC)(GLuint, GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3IPROC)(GLuint, GLint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3IVPROC)(GLuint, GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3UIPROC)(GLuint, GLint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint, GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4DPROC)(GLuint, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4DVPROC)(GLuint, GLint, GLsizei, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4FPROC)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4FVPROC)(GLuint, GLint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4IPROC)(GLuint, GLint, GLint, GLint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4IVPROC)(GLuint, GLint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4UIPROC)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint, GLint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLRELEASESHADERCOMPILERPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLSCISSORARRAYVPROC)(GLuint, GLsizei, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLSCISSORINDEXEDPROC)(GLuint, GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLSCISSORINDEXEDVPROC)(GLuint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLSHADERBINARYPROC)(GLsizei, const GLuint *, GLenum, const void *, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLUSEPROGRAMSTAGESPROC)(GLuint, GLbitfield, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL1DPROC)(GLuint, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL1DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL2DPROC)(GLuint, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL2DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL3DPROC)(GLuint, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL3DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL4DPROC)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBL4DVPROC)(GLuint, const GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint, GLint, GLenum, GLsizei, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLVIEWPORTARRAYVPROC)(GLuint, GLsizei, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLVIEWPORTINDEXEDFPROC)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLVIEWPORTINDEXEDFVPROC)(GLuint, const GLfloat *);

// 4.2
typedef void (INTERNAL_GL_APICALL *PFNGLBINDIMAGETEXTUREPROC)(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum, GLint, GLsizei, GLsizei, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum, GLsizei, GLenum, const void *, GLsizei, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum, GLsizei, GLenum, const void *, GLsizei, GLint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum, GLuint, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum, GLuint, GLuint, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint, GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETINTERNALFORMATIVPROC)(GLenum, GLenum, GLenum, GLsizei, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLMEMORYBARRIERPROC)(GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSTORAGE1DPROC)(GLenum, GLsizei, GLenum, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSTORAGE2DPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSTORAGE3DPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);

// 4.3
typedef void (INTERNAL_GL_APICALL *PFNGLBINDVERTEXBUFFERPROC)(GLuint, GLuint, GLintptr, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARBUFFERDATAPROC)(GLenum, GLenum, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARBUFFERSUBDATAPROC)(GLenum, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYIMAGESUBDATAPROC)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLDEBUGMESSAGECONTROLPROC)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLDISPATCHCOMPUTEPROC)(GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr);
typedef void (INTERNAL_GL_APICALL *PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum, GLenum, GLint);
typedef GLuint(INTERNAL_GL_APICALL *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETINTERNALFORMATI64VPROC)(GLenum, GLenum, GLenum, GLsizei, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETOBJECTLABELPROC)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETOBJECTPTRLABELPROC)(const void *, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint, GLenum, GLenum, GLint *);
typedef GLuint(INTERNAL_GL_APICALL *PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint, GLenum, const GLchar *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint, GLenum, const GLchar *);
typedef GLint(INTERNAL_GL_APICALL *PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint, GLenum, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint, GLenum, GLuint, GLsizei, const GLenum *, GLsizei, GLsizei *, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATEBUFFERDATAPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum, GLsizei, const GLenum *);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATETEXIMAGEPROC)(GLuint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum, const void *, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum, GLenum, const void *, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLOBJECTLABELPROC)(GLenum, GLuint, GLsizei, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLOBJECTPTRLABELPROC)(const void *, GLsizei, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLPOPDEBUGGROUPPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLPUSHDEBUGGROUPPROC)(GLenum, GLuint, GLsizei, const GLchar *);
typedef void (INTERNAL_GL_APICALL *PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXBUFFERRANGEPROC)(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREVIEWPROC)(GLuint, GLenum, GLuint, GLenum, GLuint, GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBBINDINGPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBFORMATPROC)(GLuint, GLint, GLenum, GLboolean, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBIFORMATPROC)(GLuint, GLint, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXATTRIBLFORMATPROC)(GLuint, GLint, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXBINDINGDIVISORPROC)(GLuint, GLuint);

// 4.4
typedef void (INTERNAL_GL_APICALL *PFNGLBINDBUFFERSBASEPROC)(GLenum, GLuint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDBUFFERSRANGEPROC)(GLenum, GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizeiptr *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDIMAGETEXTURESPROC)(GLuint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDSAMPLERSPROC)(GLuint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDTEXTURESPROC)(GLuint, GLsizei, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLBINDVERTEXBUFFERSPROC)(GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizei *);
typedef void (INTERNAL_GL_APICALL *PFNGLBUFFERSTORAGEPROC)(GLenum, GLsizeiptr, const void *, GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARTEXIMAGEPROC)(GLuint, GLint, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARTEXSUBIMAGEPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *);

// 4.5
typedef void (INTERNAL_GL_APICALL *PFNGLBINDTEXTUREUNITPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint, GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
typedef GLenum(INTERNAL_GL_APICALL *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint, GLenum, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint, GLenum, const GLfloat, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint, GLenum, GLint, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint, GLenum, GLint, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint, GLenum, GLint, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCLIPCONTROLPROC)(GLenum, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint, GLint, GLint, GLsizei, GLenum, GLsizei, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint, GLuint, GLintptr, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATEBUFFERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATEQUERIESPROC)(GLenum, GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATERENDERBUFFERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATESAMPLERSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATETEXTURESPROC)(GLenum, GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLCREATEVERTEXARRAYSPROC)(GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint, GLint, GLsizei, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, void *);
typedef GLenum(INTERNAL_GL_APICALL *PFNGLGETGRAPHICSRESETSTATUSPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint, GLenum, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint, GLenum, void **);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint, GLintptr, GLsizeiptr, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint, GLenum, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint, GLuint, GLenum, GLintptr);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint, GLuint, GLenum, GLintptr);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint, GLuint, GLenum, GLintptr);
typedef void (INTERNAL_GL_APICALL *PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint, GLuint, GLenum, GLintptr);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTUREIMAGEPROC)(GLuint, GLint, GLenum, GLenum, GLsizei, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint, GLint, GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint, GLint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint, GLenum, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint, GLenum, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTEXTURESUBIMAGEPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint, GLenum, GLuint, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint, GLenum, GLuint, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint, GLuint, GLenum, GLint64 *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint, GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETVERTEXARRAYIVPROC)(GLuint, GLenum, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum, GLint, GLsizei, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNTEXIMAGEPROC)(GLenum, GLint, GLenum, GLenum, GLsizei, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNUNIFORMDVPROC)(GLuint, GLint, GLsizei, GLdouble *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNUNIFORMFVPROC)(GLuint, GLint, GLsizei, GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNUNIFORMIVPROC)(GLuint, GLint, GLsizei, GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLGETNUNIFORMUIVPROC)(GLuint, GLint, GLsizei, GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint, GLsizei, const GLenum *);
typedef void (INTERNAL_GL_APICALL *PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)(GLuint, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei);
typedef void *(INTERNAL_GL_APICALL *PFNGLMAPNAMEDBUFFERPROC)(GLuint, GLenum);
typedef void *(INTERNAL_GL_APICALL *PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint, GLintptr, GLsizeiptr, GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDBUFFERDATAPROC)(GLuint, GLsizeiptr, const void *, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint, GLsizeiptr, const void *, GLbitfield);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint, GLintptr, GLsizeiptr, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint, GLsizei, const GLenum *);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint, GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint, GLenum);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint, GLenum, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint, GLenum, GLuint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint, GLenum, GLuint, GLint, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint, GLenum, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLREADNPIXELSPROC)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREBARRIERPROC)();
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREBUFFERPROC)(GLuint, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREBUFFERRANGEPROC)(GLuint, GLenum, GLuint, GLintptr, GLsizeiptr);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREPARAMETERIIVPROC)(GLuint, GLenum, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint, GLenum, const GLuint *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREPARAMETERFPROC)(GLuint, GLenum, GLfloat);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREPARAMETERFVPROC)(GLuint, GLenum, const GLfloat *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREPARAMETERIPROC)(GLuint, GLenum, GLint);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTUREPARAMETERIVPROC)(GLuint, GLenum, const GLint *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESTORAGE1DPROC)(GLuint, GLsizei, GLenum, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESTORAGE2DPROC)(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESTORAGE3DPROC)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESUBIMAGE1DPROC)(GLuint, GLint, GLint, GLsizei, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESUBIMAGE2DPROC)(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLTEXTURESUBIMAGE3DPROC)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *);
typedef void (INTERNAL_GL_APICALL *PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint, GLuint, GLuint, GLintptr, GLsizeiptr);
typedef GLboolean(INTERNAL_GL_APICALL *PFNGLUNMAPNAMEDBUFFERPROC)(GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint, GLuint, GLint, GLenum, GLboolean, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint, GLuint, GLint, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint, GLuint, GLint, GLenum, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint, GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint, GLuint);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint, GLuint, GLuint, GLintptr, GLsizei);
typedef void (INTERNAL_GL_APICALL *PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint, GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizei *);

}

#endif // LIBANGLE_RENDERER_GL_FUNCTIONSGLTYPEDEFS_H_
