From 5bf68b5731b1817c31959b8e3adf19a4c2307630 Mon Sep 17 00:00:00 2001 From: hecks <42101236+hecktest@users.noreply.github.com> Date: Sat, 7 Aug 2021 21:56:00 +0200 Subject: [PATCH] Add a unified cross platform OpenGL core profile binding (#52) --- .gitignore | 3 + include/IContextManager.h | 4 + include/mt_opengl.h | 3152 ++++++++++++++++++++++++++ scripts/BindingGenerator.lua | 430 ++++ source/Irrlicht/CEGLManager.cpp | 19 +- source/Irrlicht/CEGLManager.h | 5 + source/Irrlicht/CGLXManager.cpp | 18 +- source/Irrlicht/CGLXManager.h | 4 + source/Irrlicht/CMakeLists.txt | 3 + source/Irrlicht/CNSOGLManager.h | 3 + source/Irrlicht/CNSOGLManager.mm | 49 +- source/Irrlicht/COGLES2Driver.cpp | 3 + source/Irrlicht/COpenGLDriver.cpp | 4 + source/Irrlicht/CWGLManager.cpp | 19 +- source/Irrlicht/CWGLManager.h | 6 + source/Irrlicht/mt_opengl_loader.cpp | 766 +++++++ 16 files changed, 4466 insertions(+), 22 deletions(-) create mode 100755 include/mt_opengl.h create mode 100755 scripts/BindingGenerator.lua create mode 100755 source/Irrlicht/mt_opengl_loader.cpp diff --git a/.gitignore b/.gitignore index d3bb640..901d81c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ libs/* *.exe *.dll bin/Linux +scripts/gl2ext.h +scripts/glcorearb.h +scripts/glext.h diff --git a/include/IContextManager.h b/include/IContextManager.h index 1937190..207691b 100644 --- a/include/IContextManager.h +++ b/include/IContextManager.h @@ -7,6 +7,7 @@ #include "SExposedVideoData.h" #include "SIrrCreationParameters.h" +#include namespace irr { @@ -48,6 +49,9 @@ namespace video Note that only 1 thread at a time may access an OpenGL context. */ virtual bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero=false) =0; + //! Get the address of any OpenGL procedure (including core procedures). + virtual void* getProcAddress(const std::string &procName) =0; + //! Swap buffers. virtual bool swapBuffers() =0; }; diff --git a/include/mt_opengl.h b/include/mt_opengl.h new file mode 100755 index 0000000..5ddb48c --- /dev/null +++ b/include/mt_opengl.h @@ -0,0 +1,3152 @@ +// This code was generated by scripts/BindingGenerator.lua +// Do not modify it, modify and run the generator instead. + +#pragma once + +#include +#include +#include "IrrCompileConfig.h" +#include "irrTypes.h" +#include "IContextManager.h" +#include + +#ifndef APIENTRY + #define APIENTRY +#endif +#ifndef APIENTRYP + #define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI + #define GLAPI extern +#endif + +class OpenGLProcedures { +private: + // ./glcorearb.h + typedef void GLvoid; + typedef unsigned int GLenum; + typedef khronos_float_t GLfloat; + typedef int GLint; + typedef int GLsizei; + typedef unsigned int GLbitfield; + typedef double GLdouble; + typedef unsigned int GLuint; + typedef unsigned char GLboolean; + typedef khronos_uint8_t GLubyte; + typedef khronos_float_t GLclampf; + typedef double GLclampd; + typedef khronos_ssize_t GLsizeiptr; + typedef khronos_intptr_t GLintptr; + typedef char GLchar; + typedef khronos_int16_t GLshort; + typedef khronos_int8_t GLbyte; + typedef khronos_uint16_t GLushort; + typedef khronos_uint16_t GLhalf; + typedef struct __GLsync *GLsync; + typedef khronos_uint64_t GLuint64; + typedef khronos_int64_t GLint64; + typedef khronos_uint64_t GLuint64EXT; + typedef void *GLeglImageOES; + typedef khronos_int64_t GLint64EXT; + + typedef void *GLeglClientBufferEXT; + // The script will miss this particular typedef thinking it's a PFN, + // so we have to paste it in manually. It's the only such type in OpenGL. + typedef void (APIENTRY *GLDEBUGPROC) + (GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + + typedef void (APIENTRYP PFNGLCULLFACEPROC_MT) (GLenum mode); + typedef void (APIENTRYP PFNGLFRONTFACEPROC_MT) (GLenum mode); + typedef void (APIENTRYP PFNGLHINTPROC_MT) (GLenum target, GLenum mode); + typedef void (APIENTRYP PFNGLLINEWIDTHPROC_MT) (GLfloat width); + typedef void (APIENTRYP PFNGLPOINTSIZEPROC_MT) (GLfloat size); + typedef void (APIENTRYP PFNGLPOLYGONMODEPROC_MT) (GLenum face, GLenum mode); + typedef void (APIENTRYP PFNGLSCISSORPROC_MT) (GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC_MT) (GLenum target, GLenum pname, GLfloat param); + typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC_MT) (GLenum target, GLenum pname, const GLfloat * params); + typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC_MT) (GLenum target, GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC_MT) (GLenum target, GLenum pname, const GLint * params); + typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC_MT) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC_MT) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLDRAWBUFFERPROC_MT) (GLenum buf); + typedef void (APIENTRYP PFNGLCLEARPROC_MT) (GLbitfield mask); + typedef void (APIENTRYP PFNGLCLEARCOLORPROC_MT) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + typedef void (APIENTRYP PFNGLCLEARSTENCILPROC_MT) (GLint s); + typedef void (APIENTRYP PFNGLCLEARDEPTHPROC_MT) (GLdouble depth); + typedef void (APIENTRYP PFNGLSTENCILMASKPROC_MT) (GLuint mask); + typedef void (APIENTRYP PFNGLCOLORMASKPROC_MT) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + typedef void (APIENTRYP PFNGLDEPTHMASKPROC_MT) (GLboolean flag); + typedef void (APIENTRYP PFNGLDISABLEPROC_MT) (GLenum cap); + typedef void (APIENTRYP PFNGLENABLEPROC_MT) (GLenum cap); + typedef void (APIENTRYP PFNGLFINISHPROC_MT) ( void); + typedef void (APIENTRYP PFNGLFLUSHPROC_MT) ( void); + typedef void (APIENTRYP PFNGLBLENDFUNCPROC_MT) (GLenum sfactor, GLenum dfactor); + typedef void (APIENTRYP PFNGLLOGICOPPROC_MT) (GLenum opcode); + typedef void (APIENTRYP PFNGLSTENCILFUNCPROC_MT) (GLenum func, GLint ref, GLuint mask); + typedef void (APIENTRYP PFNGLSTENCILOPPROC_MT) (GLenum fail, GLenum zfail, GLenum zpass); + typedef void (APIENTRYP PFNGLDEPTHFUNCPROC_MT) (GLenum func); + typedef void (APIENTRYP PFNGLPIXELSTOREFPROC_MT) (GLenum pname, GLfloat param); + typedef void (APIENTRYP PFNGLPIXELSTOREIPROC_MT) (GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLREADBUFFERPROC_MT) (GLenum src); + typedef void (APIENTRYP PFNGLREADPIXELSPROC_MT) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); + typedef void (APIENTRYP PFNGLGETBOOLEANVPROC_MT) (GLenum pname, GLboolean * data); + typedef void (APIENTRYP PFNGLGETDOUBLEVPROC_MT) (GLenum pname, GLdouble * data); + typedef GLenum (APIENTRYP PFNGLGETERRORPROC_MT) ( void); + typedef void (APIENTRYP PFNGLGETFLOATVPROC_MT) (GLenum pname, GLfloat * data); + typedef void (APIENTRYP PFNGLGETINTEGERVPROC_MT) (GLenum pname, GLint * data); + typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC_MT) (GLenum name); + typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC_MT) (GLenum target, GLint level, GLenum format, GLenum type, void * pixels); + typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC_MT) (GLenum target, GLenum pname, GLfloat * params); + typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC_MT) (GLenum target, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC_MT) (GLenum target, GLint level, GLenum pname, GLfloat * params); + typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC_MT) (GLenum target, GLint level, GLenum pname, GLint * params); + typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC_MT) (GLenum cap); + typedef void (APIENTRYP PFNGLDEPTHRANGEPROC_MT) (GLdouble n, GLdouble f); + typedef void (APIENTRYP PFNGLVIEWPORTPROC_MT) (GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLDRAWARRAYSPROC_MT) (GLenum mode, GLint first, GLsizei count); + typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC_MT) (GLenum mode, GLsizei count, GLenum type, const void * indices); + typedef void (APIENTRYP PFNGLGETPOINTERVPROC_MT) (GLenum pname, void ** params); + typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC_MT) (GLfloat factor, GLfloat units); + typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC_MT) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC_MT) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLBINDTEXTUREPROC_MT) (GLenum target, GLuint texture); + typedef void (APIENTRYP PFNGLDELETETEXTURESPROC_MT) (GLsizei n, const GLuint * textures); + typedef void (APIENTRYP PFNGLGENTEXTURESPROC_MT) (GLsizei n, GLuint * textures); + typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC_MT) (GLuint texture); + typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC_MT) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices); + typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC_MT) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC_MT) (GLenum texture); + typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC_MT) (GLfloat value, GLboolean invert); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC_MT) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC_MT) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC_MT) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC_MT) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC_MT) (GLenum target, GLint level, void * img); + typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC_MT) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC_MT) (GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount); + typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC_MT) (GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount); + typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC_MT) (GLenum pname, GLfloat param); + typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC_MT) (GLenum pname, const GLfloat * params); + typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC_MT) (GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC_MT) (GLenum pname, const GLint * params); + typedef void (APIENTRYP PFNGLBLENDCOLORPROC_MT) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC_MT) (GLenum mode); + typedef void (APIENTRYP PFNGLGENQUERIESPROC_MT) (GLsizei n, GLuint * ids); + typedef void (APIENTRYP PFNGLDELETEQUERIESPROC_MT) (GLsizei n, const GLuint * ids); + typedef GLboolean (APIENTRYP PFNGLISQUERYPROC_MT) (GLuint id); + typedef void (APIENTRYP PFNGLBEGINQUERYPROC_MT) (GLenum target, GLuint id); + typedef void (APIENTRYP PFNGLENDQUERYPROC_MT) (GLenum target); + typedef void (APIENTRYP PFNGLGETQUERYIVPROC_MT) (GLenum target, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC_MT) (GLuint id, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC_MT) (GLuint id, GLenum pname, GLuint * params); + typedef void (APIENTRYP PFNGLBINDBUFFERPROC_MT) (GLenum target, GLuint buffer); + typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC_MT) (GLsizei n, const GLuint * buffers); + typedef void (APIENTRYP PFNGLGENBUFFERSPROC_MT) (GLsizei n, GLuint * buffers); + typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC_MT) (GLuint buffer); + typedef void (APIENTRYP PFNGLBUFFERDATAPROC_MT) (GLenum target, GLsizeiptr size, const void * data, GLenum usage); + typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC_MT) (GLenum target, GLintptr offset, GLsizeiptr size, const void * data); + typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC_MT) (GLenum target, GLintptr offset, GLsizeiptr size, void * data); + typedef void * (APIENTRYP PFNGLMAPBUFFERPROC_MT) (GLenum target, GLenum access); + typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC_MT) (GLenum target); + typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC_MT) (GLenum target, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC_MT) (GLenum target, GLenum pname, void ** params); + typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC_MT) (GLenum modeRGB, GLenum modeAlpha); + typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC_MT) (GLsizei n, const GLenum * bufs); + typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC_MT) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC_MT) (GLenum face, GLenum func, GLint ref, GLuint mask); + typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC_MT) (GLenum face, GLuint mask); + typedef void (APIENTRYP PFNGLATTACHSHADERPROC_MT) (GLuint program, GLuint shader); + typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC_MT) (GLuint program, GLuint index, const GLchar * name); + typedef void (APIENTRYP PFNGLCOMPILESHADERPROC_MT) (GLuint shader); + typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC_MT) ( void); + typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC_MT) (GLenum type); + typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC_MT) (GLuint program); + typedef void (APIENTRYP PFNGLDELETESHADERPROC_MT) (GLuint shader); + typedef void (APIENTRYP PFNGLDETACHSHADERPROC_MT) (GLuint program, GLuint shader); + typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC_MT) (GLuint index); + typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC_MT) (GLuint index); + typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC_MT) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); + typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC_MT) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); + typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC_MT) (GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); + typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC_MT) (GLuint program, const GLchar * name); + typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC_MT) (GLuint program, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC_MT) (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); + typedef void (APIENTRYP PFNGLGETSHADERIVPROC_MT) (GLuint shader, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC_MT) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); + typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC_MT) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); + typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC_MT) (GLuint program, const GLchar * name); + typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC_MT) (GLuint program, GLint location, GLfloat * params); + typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC_MT) (GLuint program, GLint location, GLint * params); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC_MT) (GLuint index, GLenum pname, GLdouble * params); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC_MT) (GLuint index, GLenum pname, GLfloat * params); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC_MT) (GLuint index, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC_MT) (GLuint index, GLenum pname, void ** pointer); + typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC_MT) (GLuint program); + typedef GLboolean (APIENTRYP PFNGLISSHADERPROC_MT) (GLuint shader); + typedef void (APIENTRYP PFNGLLINKPROGRAMPROC_MT) (GLuint program); + typedef void (APIENTRYP PFNGLSHADERSOURCEPROC_MT) (GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); + typedef void (APIENTRYP PFNGLUSEPROGRAMPROC_MT) (GLuint program); + typedef void (APIENTRYP PFNGLUNIFORM1FPROC_MT) (GLint location, GLfloat v0); + typedef void (APIENTRYP PFNGLUNIFORM2FPROC_MT) (GLint location, GLfloat v0, GLfloat v1); + typedef void (APIENTRYP PFNGLUNIFORM3FPROC_MT) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void (APIENTRYP PFNGLUNIFORM4FPROC_MT) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + typedef void (APIENTRYP PFNGLUNIFORM1IPROC_MT) (GLint location, GLint v0); + typedef void (APIENTRYP PFNGLUNIFORM2IPROC_MT) (GLint location, GLint v0, GLint v1); + typedef void (APIENTRYP PFNGLUNIFORM3IPROC_MT) (GLint location, GLint v0, GLint v1, GLint v2); + typedef void (APIENTRYP PFNGLUNIFORM4IPROC_MT) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void (APIENTRYP PFNGLUNIFORM1FVPROC_MT) (GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORM2FVPROC_MT) (GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORM3FVPROC_MT) (GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORM4FVPROC_MT) (GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORM1IVPROC_MT) (GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLUNIFORM2IVPROC_MT) (GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLUNIFORM3IVPROC_MT) (GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLUNIFORM4IVPROC_MT) (GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC_MT) (GLuint program); + typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC_MT) (GLuint index, GLdouble x); + typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC_MT) (GLuint index, GLfloat x); + typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC_MT) (GLuint index, const GLfloat * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC_MT) (GLuint index, GLshort x); + typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC_MT) (GLuint index, const GLshort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC_MT) (GLuint index, GLdouble x, GLdouble y); + typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC_MT) (GLuint index, GLfloat x, GLfloat y); + typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC_MT) (GLuint index, const GLfloat * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC_MT) (GLuint index, GLshort x, GLshort y); + typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC_MT) (GLuint index, const GLshort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC_MT) (GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC_MT) (GLuint index, GLfloat x, GLfloat y, GLfloat z); + typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC_MT) (GLuint index, const GLfloat * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC_MT) (GLuint index, GLshort x, GLshort y, GLshort z); + typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC_MT) (GLuint index, const GLshort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC_MT) (GLuint index, const GLbyte * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC_MT) (GLuint index, const GLshort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC_MT) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC_MT) (GLuint index, const GLubyte * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC_MT) (GLuint index, const GLuint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC_MT) (GLuint index, const GLushort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC_MT) (GLuint index, const GLbyte * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC_MT) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC_MT) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC_MT) (GLuint index, const GLfloat * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC_MT) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC_MT) (GLuint index, const GLshort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC_MT) (GLuint index, const GLubyte * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC_MT) (GLuint index, const GLuint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC_MT) (GLuint index, const GLushort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC_MT) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLCOLORMASKIPROC_MT) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + typedef void (APIENTRYP PFNGLENABLEIPROC_MT) (GLenum target, GLuint index); + typedef void (APIENTRYP PFNGLDISABLEIPROC_MT) (GLenum target, GLuint index); + typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC_MT) (GLenum target, GLuint index); + typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC_MT) (GLenum primitiveMode); + typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC_MT) ( void); + typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC_MT) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC_MT) (GLenum target, GLuint index, GLuint buffer); + typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC_MT) (GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); + typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC_MT) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); + typedef void (APIENTRYP PFNGLCLAMPCOLORPROC_MT) (GLenum target, GLenum clamp); + typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC_MT) (GLuint id, GLenum mode); + typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC_MT) ( void); + typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC_MT) (GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC_MT) (GLuint index, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC_MT) (GLuint index, GLenum pname, GLuint * params); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC_MT) (GLuint index, GLint x); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC_MT) (GLuint index, GLint x, GLint y); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC_MT) (GLuint index, GLint x, GLint y, GLint z); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC_MT) (GLuint index, GLint x, GLint y, GLint z, GLint w); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC_MT) (GLuint index, GLuint x); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC_MT) (GLuint index, GLuint x, GLuint y); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC_MT) (GLuint index, GLuint x, GLuint y, GLuint z); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC_MT) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC_MT) (GLuint index, const GLuint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC_MT) (GLuint index, const GLuint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC_MT) (GLuint index, const GLuint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC_MT) (GLuint index, const GLuint * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC_MT) (GLuint index, const GLbyte * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC_MT) (GLuint index, const GLshort * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC_MT) (GLuint index, const GLubyte * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC_MT) (GLuint index, const GLushort * v); + typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC_MT) (GLuint program, GLint location, GLuint * params); + typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC_MT) (GLuint program, GLuint color, const GLchar * name); + typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC_MT) (GLuint program, const GLchar * name); + typedef void (APIENTRYP PFNGLUNIFORM1UIPROC_MT) (GLint location, GLuint v0); + typedef void (APIENTRYP PFNGLUNIFORM2UIPROC_MT) (GLint location, GLuint v0, GLuint v1); + typedef void (APIENTRYP PFNGLUNIFORM3UIPROC_MT) (GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void (APIENTRYP PFNGLUNIFORM4UIPROC_MT) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC_MT) (GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC_MT) (GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC_MT) (GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC_MT) (GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC_MT) (GLenum target, GLenum pname, const GLint * params); + typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC_MT) (GLenum target, GLenum pname, const GLuint * params); + typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC_MT) (GLenum target, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC_MT) (GLenum target, GLenum pname, GLuint * params); + typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC_MT) (GLenum buffer, GLint drawbuffer, const GLint * value); + typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC_MT) (GLenum buffer, GLint drawbuffer, const GLuint * value); + typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC_MT) (GLenum buffer, GLint drawbuffer, const GLfloat * value); + typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC_MT) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC_MT) (GLenum name, GLuint index); + typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC_MT) (GLuint renderbuffer); + typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC_MT) (GLenum target, GLuint renderbuffer); + typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC_MT) (GLsizei n, const GLuint * renderbuffers); + typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC_MT) (GLsizei n, GLuint * renderbuffers); + typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC_MT) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC_MT) (GLenum target, GLenum pname, GLint * params); + typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC_MT) (GLuint framebuffer); + typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC_MT) (GLenum target, GLuint framebuffer); + typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC_MT) (GLsizei n, const GLuint * framebuffers); + typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC_MT) (GLsizei n, GLuint * framebuffers); + typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC_MT) (GLenum target); + typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC_MT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC_MT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC_MT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC_MT) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC_MT) (GLenum target, GLenum attachment, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC_MT) (GLenum target); + typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC_MT) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC_MT) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC_MT) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC_MT) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC_MT) (GLenum target, GLintptr offset, GLsizeiptr length); + typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC_MT) (GLuint array); + typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC_MT) (GLsizei n, const GLuint * arrays); + typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC_MT) (GLsizei n, GLuint * arrays); + typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC_MT) (GLuint array); + typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC_MT) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC_MT) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount); + typedef void (APIENTRYP PFNGLTEXBUFFERPROC_MT) (GLenum target, GLenum internalformat, GLuint buffer); + typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC_MT) (GLuint index); + typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC_MT) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC_MT) (GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices); + typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC_MT) (GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC_MT) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName); + typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC_MT) (GLuint program, const GLchar * uniformBlockName); + typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC_MT) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC_MT) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName); + typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC_MT) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC_MT) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex); + typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC_MT) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex); + typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC_MT) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex); + typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC_MT) (GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex); + typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC_MT) (GLenum mode); + typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC_MT) (GLenum condition, GLbitfield flags); + typedef GLboolean (APIENTRYP PFNGLISSYNCPROC_MT) (GLsync sync); + typedef void (APIENTRYP PFNGLDELETESYNCPROC_MT) (GLsync sync); + typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC_MT) (GLsync sync, GLbitfield flags, GLuint64 timeout); + typedef void (APIENTRYP PFNGLWAITSYNCPROC_MT) (GLsync sync, GLbitfield flags, GLuint64 timeout); + typedef void (APIENTRYP PFNGLGETINTEGER64VPROC_MT) (GLenum pname, GLint64 * data); + typedef void (APIENTRYP PFNGLGETSYNCIVPROC_MT) (GLsync sync, GLenum pname, GLsizei count, GLsizei * length, GLint * values); + typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC_MT) (GLenum target, GLenum pname, GLint64 * params); + typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC_MT) (GLenum target, GLenum attachment, GLuint texture, GLint level); + typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC_MT) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC_MT) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC_MT) (GLenum pname, GLuint index, GLfloat * val); + typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC_MT) (GLuint maskNumber, GLbitfield mask); + typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC_MT) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); + typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC_MT) (GLuint program, const GLchar * name); + typedef void (APIENTRYP PFNGLGENSAMPLERSPROC_MT) (GLsizei count, GLuint * samplers); + typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC_MT) (GLsizei count, const GLuint * samplers); + typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC_MT) (GLuint sampler); + typedef void (APIENTRYP PFNGLBINDSAMPLERPROC_MT) (GLuint unit, GLuint sampler); + typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC_MT) (GLuint sampler, GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC_MT) (GLuint sampler, GLenum pname, const GLint * param); + typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC_MT) (GLuint sampler, GLenum pname, GLfloat param); + typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC_MT) (GLuint sampler, GLenum pname, const GLfloat * param); + typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC_MT) (GLuint sampler, GLenum pname, const GLint * param); + typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC_MT) (GLuint sampler, GLenum pname, const GLuint * param); + typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC_MT) (GLuint sampler, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC_MT) (GLuint sampler, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC_MT) (GLuint sampler, GLenum pname, GLfloat * params); + typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC_MT) (GLuint sampler, GLenum pname, GLuint * params); + typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC_MT) (GLuint id, GLenum target); + typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC_MT) (GLuint id, GLenum pname, GLint64 * params); + typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC_MT) (GLuint id, GLenum pname, GLuint64 * params); + typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC_MT) (GLuint index, GLuint divisor); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC_MT) (GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC_MT) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC_MT) (GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC_MT) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC_MT) (GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC_MT) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC_MT) (GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC_MT) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); + typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC_MT) (GLfloat value); + typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC_MT) (GLuint buf, GLenum mode); + typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC_MT) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); + typedef void (APIENTRYP PFNGLBLENDFUNCIPROC_MT) (GLuint buf, GLenum src, GLenum dst); + typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC_MT) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC_MT) (GLenum mode, const void * indirect); + typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC_MT) (GLenum mode, GLenum type, const void * indirect); + typedef void (APIENTRYP PFNGLUNIFORM1DPROC_MT) (GLint location, GLdouble x); + typedef void (APIENTRYP PFNGLUNIFORM2DPROC_MT) (GLint location, GLdouble x, GLdouble y); + typedef void (APIENTRYP PFNGLUNIFORM3DPROC_MT) (GLint location, GLdouble x, GLdouble y, GLdouble z); + typedef void (APIENTRYP PFNGLUNIFORM4DPROC_MT) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void (APIENTRYP PFNGLUNIFORM1DVPROC_MT) (GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORM2DVPROC_MT) (GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORM3DVPROC_MT) (GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORM4DVPROC_MT) (GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC_MT) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC_MT) (GLuint program, GLint location, GLdouble * params); + typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC_MT) (GLuint program, GLenum shadertype, const GLchar * name); + typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC_MT) (GLuint program, GLenum shadertype, const GLchar * name); + typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC_MT) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values); + typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC_MT) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name); + typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC_MT) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name); + typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC_MT) (GLenum shadertype, GLsizei count, const GLuint * indices); + typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC_MT) (GLenum shadertype, GLint location, GLuint * params); + typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC_MT) (GLuint program, GLenum shadertype, GLenum pname, GLint * values); + typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC_MT) (GLenum pname, GLint value); + typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC_MT) (GLenum pname, const GLfloat * values); + typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC_MT) (GLenum target, GLuint id); + typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC_MT) (GLsizei n, const GLuint * ids); + typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC_MT) (GLsizei n, GLuint * ids); + typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC_MT) (GLuint id); + typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC_MT) ( void); + typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC_MT) ( void); + typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC_MT) (GLenum mode, GLuint id); + typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC_MT) (GLenum mode, GLuint id, GLuint stream); + typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC_MT) (GLenum target, GLuint index, GLuint id); + typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC_MT) (GLenum target, GLuint index); + typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC_MT) (GLenum target, GLuint index, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC_MT) ( void); + typedef void (APIENTRYP PFNGLSHADERBINARYPROC_MT) (GLsizei count, const GLuint * shaders, GLenum binaryFormat, const void * binary, GLsizei length); + typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC_MT) (GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); + typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC_MT) (GLfloat n, GLfloat f); + typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC_MT) (GLfloat d); + typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC_MT) (GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary); + typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC_MT) (GLuint program, GLenum binaryFormat, const void * binary, GLsizei length); + typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC_MT) (GLuint program, GLenum pname, GLint value); + typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC_MT) (GLuint pipeline, GLbitfield stages, GLuint program); + typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC_MT) (GLuint pipeline, GLuint program); + typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC_MT) (GLenum type, GLsizei count, const GLchar *const* strings); + typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC_MT) (GLuint pipeline); + typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC_MT) (GLsizei n, const GLuint * pipelines); + typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC_MT) (GLsizei n, GLuint * pipelines); + typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC_MT) (GLuint pipeline); + typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC_MT) (GLuint pipeline, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC_MT) (GLuint program, GLint location, GLint v0); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC_MT) (GLuint program, GLint location, GLfloat v0); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC_MT) (GLuint program, GLint location, GLdouble v0); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC_MT) (GLuint program, GLint location, GLuint v0); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC_MT) (GLuint program, GLint location, GLint v0, GLint v1); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC_MT) (GLuint program, GLint location, GLfloat v0, GLfloat v1); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC_MT) (GLuint program, GLint location, GLdouble v0, GLdouble v1); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC_MT) (GLuint program, GLint location, GLuint v0, GLuint v1); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC_MT) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC_MT) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC_MT) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC_MT) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC_MT) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC_MT) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC_MT) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC_MT) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC_MT) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); + typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC_MT) (GLuint pipeline); + typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC_MT) (GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC_MT) (GLuint index, GLdouble x); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC_MT) (GLuint index, GLdouble x, GLdouble y); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC_MT) (GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC_MT) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC_MT) (GLuint index, const GLdouble * v); + typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC_MT) (GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC_MT) (GLuint index, GLenum pname, GLdouble * params); + typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC_MT) (GLuint first, GLsizei count, const GLfloat * v); + typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC_MT) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC_MT) (GLuint index, const GLfloat * v); + typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC_MT) (GLuint first, GLsizei count, const GLint * v); + typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC_MT) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC_MT) (GLuint index, const GLint * v); + typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC_MT) (GLuint first, GLsizei count, const GLdouble * v); + typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC_MT) (GLuint index, GLdouble n, GLdouble f); + typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC_MT) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC_MT) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance); + typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC_MT) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC_MT) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint * params); + typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC_MT) (GLuint program, GLuint bufferIndex, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC_MT) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC_MT) (GLbitfield barriers); + typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC_MT) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC_MT) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC_MT) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC_MT) (GLenum mode, GLuint id, GLsizei instancecount); + typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC_MT) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC_MT) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data); + typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC_MT) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data); + typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC_MT) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC_MT) (GLintptr indirect); + typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC_MT) (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); + typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC_MT) (GLenum target, GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC_MT) (GLenum target, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC_MT) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 * params); + typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC_MT) (GLuint texture, GLint level); + typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC_MT) (GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC_MT) (GLuint buffer); + typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC_MT) (GLenum target, GLsizei numAttachments, const GLenum * attachments); + typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC_MT) (GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC_MT) (GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride); + typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC_MT) (GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride); + typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC_MT) (GLuint program, GLenum programInterface, GLenum pname, GLint * params); + typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC_MT) (GLuint program, GLenum programInterface, const GLchar * name); + typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC_MT) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name); + typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC_MT) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei count, GLsizei * length, GLint * params); + typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC_MT) (GLuint program, GLenum programInterface, const GLchar * name); + typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC_MT) (GLuint program, GLenum programInterface, const GLchar * name); + typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC_MT) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC_MT) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC_MT) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC_MT) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC_MT) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC_MT) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC_MT) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC_MT) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC_MT) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC_MT) (GLuint attribindex, GLuint bindingindex); + typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC_MT) (GLuint bindingindex, GLuint divisor); + typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC_MT) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); + typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC_MT) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); + typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC_MT) (GLDEBUGPROC callback, const void * userParam); + typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC_MT) (GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); + typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC_MT) (GLenum source, GLuint id, GLsizei length, const GLchar * message); + typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC_MT) ( void); + typedef void (APIENTRYP PFNGLOBJECTLABELPROC_MT) (GLenum identifier, GLuint name, GLsizei length, const GLchar * label); + typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC_MT) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); + typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC_MT) (const void * ptr, GLsizei length, const GLchar * label); + typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC_MT) (const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); + typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC_MT) (GLenum target, GLsizeiptr size, const void * data, GLbitfield flags); + typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC_MT) (GLuint texture, GLint level, GLenum format, GLenum type, const void * data); + typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data); + typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC_MT) (GLenum target, GLuint first, GLsizei count, const GLuint * buffers); + typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC_MT) (GLenum target, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes); + typedef void (APIENTRYP PFNGLBINDTEXTURESPROC_MT) (GLuint first, GLsizei count, const GLuint * textures); + typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC_MT) (GLuint first, GLsizei count, const GLuint * samplers); + typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC_MT) (GLuint first, GLsizei count, const GLuint * textures); + typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC_MT) (GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides); + typedef void (APIENTRYP PFNGLCLIPCONTROLPROC_MT) (GLenum origin, GLenum depth); + typedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC_MT) (GLsizei n, GLuint * ids); + typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC_MT) (GLuint xfb, GLuint index, GLuint buffer); + typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC_MT) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC_MT) (GLuint xfb, GLenum pname, GLint * param); + typedef void (APIENTRYP PFNGLCREATEBUFFERSPROC_MT) (GLsizei n, GLuint * buffers); + typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC_MT) (GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags); + typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC_MT) (GLuint buffer, GLsizeiptr size, const void * data, GLenum usage); + typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC_MT) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data); + typedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC_MT) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC_MT) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data); + typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC_MT) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data); + typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERPROC_MT) (GLuint buffer, GLenum access); + typedef void * (APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC_MT) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC_MT) (GLuint buffer); + typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC_MT) (GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC_MT) (GLuint buffer, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC_MT) (GLuint buffer, GLenum pname, GLint64 * params); + typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC_MT) (GLuint buffer, GLenum pname, void ** params); + typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC_MT) (GLuint buffer, GLintptr offset, GLsizeiptr size, void * data); + typedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC_MT) (GLsizei n, GLuint * framebuffers); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC_MT) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC_MT) (GLuint framebuffer, GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC_MT) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC_MT) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC_MT) (GLuint framebuffer, GLenum buf); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC_MT) (GLuint framebuffer, GLsizei n, const GLenum * bufs); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC_MT) (GLuint framebuffer, GLenum src); + typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC_MT) (GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments); + typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC_MT) (GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC_MT) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint * value); + typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC_MT) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint * value); + typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC_MT) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat * value); + typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC_MT) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC_MT) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC_MT) (GLuint framebuffer, GLenum target); + typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC_MT) (GLuint framebuffer, GLenum pname, GLint * param); + typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC_MT) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC_MT) (GLsizei n, GLuint * renderbuffers); + typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC_MT) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC_MT) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC_MT) (GLuint renderbuffer, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLCREATETEXTURESPROC_MT) (GLenum target, GLsizei n, GLuint * textures); + typedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC_MT) (GLuint texture, GLenum internalformat, GLuint buffer); + typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC_MT) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC_MT) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC_MT) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC_MT) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC_MT) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC_MT) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); + typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC_MT) (GLuint texture, GLenum pname, GLfloat param); + typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC_MT) (GLuint texture, GLenum pname, const GLfloat * param); + typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC_MT) (GLuint texture, GLenum pname, GLint param); + typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC_MT) (GLuint texture, GLenum pname, const GLint * params); + typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC_MT) (GLuint texture, GLenum pname, const GLuint * params); + typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC_MT) (GLuint texture, GLenum pname, const GLint * param); + typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC_MT) (GLuint texture); + typedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC_MT) (GLuint unit, GLuint texture); + typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC_MT) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels); + typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC_MT) (GLuint texture, GLint level, GLsizei bufSize, void * pixels); + typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC_MT) (GLuint texture, GLint level, GLenum pname, GLfloat * params); + typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC_MT) (GLuint texture, GLint level, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC_MT) (GLuint texture, GLenum pname, GLfloat * params); + typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC_MT) (GLuint texture, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC_MT) (GLuint texture, GLenum pname, GLuint * params); + typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC_MT) (GLuint texture, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC_MT) (GLsizei n, GLuint * arrays); + typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC_MT) (GLuint vaobj, GLuint index); + typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC_MT) (GLuint vaobj, GLuint index); + typedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC_MT) (GLuint vaobj, GLuint buffer); + typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC_MT) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC_MT) (GLuint vaobj, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides); + typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC_MT) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); + typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC_MT) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC_MT) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC_MT) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC_MT) (GLuint vaobj, GLuint bindingindex, GLuint divisor); + typedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC_MT) (GLuint vaobj, GLenum pname, GLint * param); + typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC_MT) (GLuint vaobj, GLuint index, GLenum pname, GLint * param); + typedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC_MT) (GLuint vaobj, GLuint index, GLenum pname, GLint64 * param); + typedef void (APIENTRYP PFNGLCREATESAMPLERSPROC_MT) (GLsizei n, GLuint * samplers); + typedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC_MT) (GLsizei n, GLuint * pipelines); + typedef void (APIENTRYP PFNGLCREATEQUERIESPROC_MT) (GLenum target, GLsizei n, GLuint * ids); + typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC_MT) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC_MT) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC_MT) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC_MT) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC_MT) (GLbitfield barriers); + typedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void * pixels); + typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC_MT) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void * pixels); + typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC_MT) ( void); + typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC_MT) (GLenum target, GLint lod, GLsizei bufSize, void * pixels); + typedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC_MT) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels); + typedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC_MT) (GLuint program, GLint location, GLsizei bufSize, GLdouble * params); + typedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC_MT) (GLuint program, GLint location, GLsizei bufSize, GLfloat * params); + typedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC_MT) (GLuint program, GLint location, GLsizei bufSize, GLint * params); + typedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC_MT) (GLuint program, GLint location, GLsizei bufSize, GLuint * params); + typedef void (APIENTRYP PFNGLREADNPIXELSPROC_MT) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data); + typedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC_MT) ( void); + typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC_MT) (GLuint shader, const GLchar * pEntryPoint, GLuint numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue); + typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC_MT) (GLenum mode, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); + typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC_MT) (GLenum mode, GLenum type, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); + typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC_MT) (GLfloat factor, GLfloat units, GLfloat clamp); + typedef void (APIENTRYP PFNGLGENPERFMONITORSEXPROC_MT) (GLsizei n, GLuint * monitors); + typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXPROC_MT) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); + typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEPROC_MT) (GLuint texture); + typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEPROC_MT) (GLuint texture, GLuint sampler); + typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTPROC_MT) (GLuint64 handle); + typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTPROC_MT) (GLuint64 handle); + typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEPROC_MT) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTPROC_MT) (GLuint64 handle, GLenum access); + typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTPROC_MT) (GLuint64 handle); + typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64PROC_MT) (GLint location, GLuint64 value); + typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VPROC_MT) (GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64PROC_MT) (GLuint program, GLint location, GLuint64 value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint64 * values); + typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTPROC_MT) (GLuint64 handle); + typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTPROC_MT) (GLuint64 handle); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64PROC_MT) (GLuint index, GLuint64 x); + typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VPROC_MT) (GLuint index, const GLuint64 * v); + typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VPROC_MT) (GLuint index, GLenum pname, GLuint64 * params); + typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTPROC_MT) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); + typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEPROC_MT) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); + typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEPROC_MT) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); + typedef void (APIENTRYP PFNGLUNIFORM1I64PROC_MT) (GLint location, GLint64 x); + typedef void (APIENTRYP PFNGLUNIFORM2I64PROC_MT) (GLint location, GLint64 x, GLint64 y); + typedef void (APIENTRYP PFNGLUNIFORM3I64PROC_MT) (GLint location, GLint64 x, GLint64 y, GLint64 z); + typedef void (APIENTRYP PFNGLUNIFORM4I64PROC_MT) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + typedef void (APIENTRYP PFNGLUNIFORM1I64VPROC_MT) (GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM2I64VPROC_MT) (GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM3I64VPROC_MT) (GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM4I64VPROC_MT) (GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM1UI64PROC_MT) (GLint location, GLuint64 x); + typedef void (APIENTRYP PFNGLUNIFORM2UI64PROC_MT) (GLint location, GLuint64 x, GLuint64 y); + typedef void (APIENTRYP PFNGLUNIFORM3UI64PROC_MT) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + typedef void (APIENTRYP PFNGLUNIFORM4UI64PROC_MT) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + typedef void (APIENTRYP PFNGLUNIFORM1UI64VPROC_MT) (GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM2UI64VPROC_MT) (GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM3UI64VPROC_MT) (GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLUNIFORM4UI64VPROC_MT) (GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLGETUNIFORMI64VPROC_MT) (GLuint program, GLint location, GLint64 * params); + typedef void (APIENTRYP PFNGLGETUNIFORMUI64VPROC_MT) (GLuint program, GLint location, GLuint64 * params); + typedef void (APIENTRYP PFNGLGETNUNIFORMI64VPROC_MT) (GLuint program, GLint location, GLsizei bufSize, GLint64 * params); + typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VPROC_MT) (GLuint program, GLint location, GLsizei bufSize, GLuint64 * params); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64PROC_MT) (GLuint program, GLint location, GLint64 x); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64PROC_MT) (GLuint program, GLint location, GLint64 x, GLint64 y); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64PROC_MT) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64PROC_MT) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64PROC_MT) (GLuint program, GLint location, GLuint64 x); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64PROC_MT) (GLuint program, GLint location, GLuint64 x, GLuint64 y); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64PROC_MT) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64PROC_MT) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VPROC_MT) (GLuint program, GLint location, GLsizei count, const GLuint64 * value); + typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSPROC_MT) (GLuint count); + typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVPROC_MT) (GLenum target, GLuint start, GLsizei count, const GLfloat * v); + typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVPROC_MT) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v); + typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESPROC_MT) ( void); + typedef void (APIENTRYP PFNGLNAMEDSTRINGPROC_MT) (GLenum type, GLint namelen, const GLchar * name, GLint stringlen, const GLchar * string); + typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGPROC_MT) (GLint namelen, const GLchar * name); + typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEPROC_MT) (GLuint shader, GLsizei count, const GLchar *const* path, const GLint * length); + typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGPROC_MT) (GLint namelen, const GLchar * name); + typedef void (APIENTRYP PFNGLGETNAMEDSTRINGPROC_MT) (GLint namelen, const GLchar * name, GLsizei bufSize, GLint * stringlen, GLchar * string); + typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVPROC_MT) (GLint namelen, const GLchar * name, GLenum pname, GLint * params); + typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTPROC_MT) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); + typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTPROC_MT) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); + typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTPROC_MT) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); + + std::unordered_set extensions; +public: + // Call this once after creating the context. + void LoadAllProcedures(irr::video::IContextManager *cmgr); + // Check if an extension is supported. + inline bool IsExtensionPresent(const std::string &ext) + { + return extensions.find(ext) != extensions.end(); + } + + PFNGLCULLFACEPROC_MT CullFace = NULL; + PFNGLFRONTFACEPROC_MT FrontFace = NULL; + PFNGLHINTPROC_MT Hint = NULL; + PFNGLLINEWIDTHPROC_MT LineWidth = NULL; + PFNGLPOINTSIZEPROC_MT PointSize = NULL; + PFNGLPOLYGONMODEPROC_MT PolygonMode = NULL; + PFNGLSCISSORPROC_MT Scissor = NULL; + PFNGLTEXPARAMETERFPROC_MT TexParameterf = NULL; + PFNGLTEXPARAMETERFVPROC_MT TexParameterfv = NULL; + PFNGLTEXPARAMETERIPROC_MT TexParameteri = NULL; + PFNGLTEXPARAMETERIVPROC_MT TexParameteriv = NULL; + PFNGLTEXIMAGE1DPROC_MT TexImage1D = NULL; + PFNGLTEXIMAGE2DPROC_MT TexImage2D = NULL; + PFNGLDRAWBUFFERPROC_MT DrawBuffer = NULL; + PFNGLCLEARPROC_MT Clear = NULL; + PFNGLCLEARCOLORPROC_MT ClearColor = NULL; + PFNGLCLEARSTENCILPROC_MT ClearStencil = NULL; + PFNGLCLEARDEPTHPROC_MT ClearDepth = NULL; + PFNGLSTENCILMASKPROC_MT StencilMask = NULL; + PFNGLCOLORMASKPROC_MT ColorMask = NULL; + PFNGLDEPTHMASKPROC_MT DepthMask = NULL; + PFNGLDISABLEPROC_MT Disable = NULL; + PFNGLENABLEPROC_MT Enable = NULL; + PFNGLFINISHPROC_MT Finish = NULL; + PFNGLFLUSHPROC_MT Flush = NULL; + PFNGLBLENDFUNCPROC_MT BlendFunc = NULL; + PFNGLLOGICOPPROC_MT LogicOp = NULL; + PFNGLSTENCILFUNCPROC_MT StencilFunc = NULL; + PFNGLSTENCILOPPROC_MT StencilOp = NULL; + PFNGLDEPTHFUNCPROC_MT DepthFunc = NULL; + PFNGLPIXELSTOREFPROC_MT PixelStoref = NULL; + PFNGLPIXELSTOREIPROC_MT PixelStorei = NULL; + PFNGLREADBUFFERPROC_MT ReadBuffer = NULL; + PFNGLREADPIXELSPROC_MT ReadPixels = NULL; + PFNGLGETBOOLEANVPROC_MT GetBooleanv = NULL; + PFNGLGETDOUBLEVPROC_MT GetDoublev = NULL; + PFNGLGETERRORPROC_MT GetError = NULL; + PFNGLGETFLOATVPROC_MT GetFloatv = NULL; + PFNGLGETINTEGERVPROC_MT GetIntegerv = NULL; + PFNGLGETSTRINGPROC_MT GetString = NULL; + PFNGLGETTEXIMAGEPROC_MT GetTexImage = NULL; + PFNGLGETTEXPARAMETERFVPROC_MT GetTexParameterfv = NULL; + PFNGLGETTEXPARAMETERIVPROC_MT GetTexParameteriv = NULL; + PFNGLGETTEXLEVELPARAMETERFVPROC_MT GetTexLevelParameterfv = NULL; + PFNGLGETTEXLEVELPARAMETERIVPROC_MT GetTexLevelParameteriv = NULL; + PFNGLISENABLEDPROC_MT IsEnabled = NULL; + PFNGLDEPTHRANGEPROC_MT DepthRange = NULL; + PFNGLVIEWPORTPROC_MT Viewport = NULL; + PFNGLDRAWARRAYSPROC_MT DrawArrays = NULL; + PFNGLDRAWELEMENTSPROC_MT DrawElements = NULL; + PFNGLGETPOINTERVPROC_MT GetPointerv = NULL; + PFNGLPOLYGONOFFSETPROC_MT PolygonOffset = NULL; + PFNGLCOPYTEXIMAGE1DPROC_MT CopyTexImage1D = NULL; + PFNGLCOPYTEXIMAGE2DPROC_MT CopyTexImage2D = NULL; + PFNGLCOPYTEXSUBIMAGE1DPROC_MT CopyTexSubImage1D = NULL; + PFNGLCOPYTEXSUBIMAGE2DPROC_MT CopyTexSubImage2D = NULL; + PFNGLTEXSUBIMAGE1DPROC_MT TexSubImage1D = NULL; + PFNGLTEXSUBIMAGE2DPROC_MT TexSubImage2D = NULL; + PFNGLBINDTEXTUREPROC_MT BindTexture = NULL; + PFNGLDELETETEXTURESPROC_MT DeleteTextures = NULL; + PFNGLGENTEXTURESPROC_MT GenTextures = NULL; + PFNGLISTEXTUREPROC_MT IsTexture = NULL; + PFNGLDRAWRANGEELEMENTSPROC_MT DrawRangeElements = NULL; + PFNGLTEXIMAGE3DPROC_MT TexImage3D = NULL; + PFNGLTEXSUBIMAGE3DPROC_MT TexSubImage3D = NULL; + PFNGLCOPYTEXSUBIMAGE3DPROC_MT CopyTexSubImage3D = NULL; + PFNGLACTIVETEXTUREPROC_MT ActiveTexture = NULL; + PFNGLSAMPLECOVERAGEPROC_MT SampleCoverage = NULL; + PFNGLCOMPRESSEDTEXIMAGE3DPROC_MT CompressedTexImage3D = NULL; + PFNGLCOMPRESSEDTEXIMAGE2DPROC_MT CompressedTexImage2D = NULL; + PFNGLCOMPRESSEDTEXIMAGE1DPROC_MT CompressedTexImage1D = NULL; + PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC_MT CompressedTexSubImage3D = NULL; + PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC_MT CompressedTexSubImage2D = NULL; + PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC_MT CompressedTexSubImage1D = NULL; + PFNGLGETCOMPRESSEDTEXIMAGEPROC_MT GetCompressedTexImage = NULL; + PFNGLBLENDFUNCSEPARATEPROC_MT BlendFuncSeparate = NULL; + PFNGLMULTIDRAWARRAYSPROC_MT MultiDrawArrays = NULL; + PFNGLMULTIDRAWELEMENTSPROC_MT MultiDrawElements = NULL; + PFNGLPOINTPARAMETERFPROC_MT PointParameterf = NULL; + PFNGLPOINTPARAMETERFVPROC_MT PointParameterfv = NULL; + PFNGLPOINTPARAMETERIPROC_MT PointParameteri = NULL; + PFNGLPOINTPARAMETERIVPROC_MT PointParameteriv = NULL; + PFNGLBLENDCOLORPROC_MT BlendColor = NULL; + PFNGLBLENDEQUATIONPROC_MT BlendEquation = NULL; + PFNGLGENQUERIESPROC_MT GenQueries = NULL; + PFNGLDELETEQUERIESPROC_MT DeleteQueries = NULL; + PFNGLISQUERYPROC_MT IsQuery = NULL; + PFNGLBEGINQUERYPROC_MT BeginQuery = NULL; + PFNGLENDQUERYPROC_MT EndQuery = NULL; + PFNGLGETQUERYIVPROC_MT GetQueryiv = NULL; + PFNGLGETQUERYOBJECTIVPROC_MT GetQueryObjectiv = NULL; + PFNGLGETQUERYOBJECTUIVPROC_MT GetQueryObjectuiv = NULL; + PFNGLBINDBUFFERPROC_MT BindBuffer = NULL; + PFNGLDELETEBUFFERSPROC_MT DeleteBuffers = NULL; + PFNGLGENBUFFERSPROC_MT GenBuffers = NULL; + PFNGLISBUFFERPROC_MT IsBuffer = NULL; + PFNGLBUFFERDATAPROC_MT BufferData = NULL; + PFNGLBUFFERSUBDATAPROC_MT BufferSubData = NULL; + PFNGLGETBUFFERSUBDATAPROC_MT GetBufferSubData = NULL; + PFNGLMAPBUFFERPROC_MT MapBuffer = NULL; + PFNGLUNMAPBUFFERPROC_MT UnmapBuffer = NULL; + PFNGLGETBUFFERPARAMETERIVPROC_MT GetBufferParameteriv = NULL; + PFNGLGETBUFFERPOINTERVPROC_MT GetBufferPointerv = NULL; + PFNGLBLENDEQUATIONSEPARATEPROC_MT BlendEquationSeparate = NULL; + PFNGLDRAWBUFFERSPROC_MT DrawBuffers = NULL; + PFNGLSTENCILOPSEPARATEPROC_MT StencilOpSeparate = NULL; + PFNGLSTENCILFUNCSEPARATEPROC_MT StencilFuncSeparate = NULL; + PFNGLSTENCILMASKSEPARATEPROC_MT StencilMaskSeparate = NULL; + PFNGLATTACHSHADERPROC_MT AttachShader = NULL; + PFNGLBINDATTRIBLOCATIONPROC_MT BindAttribLocation = NULL; + PFNGLCOMPILESHADERPROC_MT CompileShader = NULL; + PFNGLCREATEPROGRAMPROC_MT CreateProgram = NULL; + PFNGLCREATESHADERPROC_MT CreateShader = NULL; + PFNGLDELETEPROGRAMPROC_MT DeleteProgram = NULL; + PFNGLDELETESHADERPROC_MT DeleteShader = NULL; + PFNGLDETACHSHADERPROC_MT DetachShader = NULL; + PFNGLDISABLEVERTEXATTRIBARRAYPROC_MT DisableVertexAttribArray = NULL; + PFNGLENABLEVERTEXATTRIBARRAYPROC_MT EnableVertexAttribArray = NULL; + PFNGLGETACTIVEATTRIBPROC_MT GetActiveAttrib = NULL; + PFNGLGETACTIVEUNIFORMPROC_MT GetActiveUniform = NULL; + PFNGLGETATTACHEDSHADERSPROC_MT GetAttachedShaders = NULL; + PFNGLGETATTRIBLOCATIONPROC_MT GetAttribLocation = NULL; + PFNGLGETPROGRAMIVPROC_MT GetProgramiv = NULL; + PFNGLGETPROGRAMINFOLOGPROC_MT GetProgramInfoLog = NULL; + PFNGLGETSHADERIVPROC_MT GetShaderiv = NULL; + PFNGLGETSHADERINFOLOGPROC_MT GetShaderInfoLog = NULL; + PFNGLGETSHADERSOURCEPROC_MT GetShaderSource = NULL; + PFNGLGETUNIFORMLOCATIONPROC_MT GetUniformLocation = NULL; + PFNGLGETUNIFORMFVPROC_MT GetUniformfv = NULL; + PFNGLGETUNIFORMIVPROC_MT GetUniformiv = NULL; + PFNGLGETVERTEXATTRIBDVPROC_MT GetVertexAttribdv = NULL; + PFNGLGETVERTEXATTRIBFVPROC_MT GetVertexAttribfv = NULL; + PFNGLGETVERTEXATTRIBIVPROC_MT GetVertexAttribiv = NULL; + PFNGLGETVERTEXATTRIBPOINTERVPROC_MT GetVertexAttribPointerv = NULL; + PFNGLISPROGRAMPROC_MT IsProgram = NULL; + PFNGLISSHADERPROC_MT IsShader = NULL; + PFNGLLINKPROGRAMPROC_MT LinkProgram = NULL; + PFNGLSHADERSOURCEPROC_MT ShaderSource = NULL; + PFNGLUSEPROGRAMPROC_MT UseProgram = NULL; + PFNGLUNIFORM1FPROC_MT Uniform1f = NULL; + PFNGLUNIFORM2FPROC_MT Uniform2f = NULL; + PFNGLUNIFORM3FPROC_MT Uniform3f = NULL; + PFNGLUNIFORM4FPROC_MT Uniform4f = NULL; + PFNGLUNIFORM1IPROC_MT Uniform1i = NULL; + PFNGLUNIFORM2IPROC_MT Uniform2i = NULL; + PFNGLUNIFORM3IPROC_MT Uniform3i = NULL; + PFNGLUNIFORM4IPROC_MT Uniform4i = NULL; + PFNGLUNIFORM1FVPROC_MT Uniform1fv = NULL; + PFNGLUNIFORM2FVPROC_MT Uniform2fv = NULL; + PFNGLUNIFORM3FVPROC_MT Uniform3fv = NULL; + PFNGLUNIFORM4FVPROC_MT Uniform4fv = NULL; + PFNGLUNIFORM1IVPROC_MT Uniform1iv = NULL; + PFNGLUNIFORM2IVPROC_MT Uniform2iv = NULL; + PFNGLUNIFORM3IVPROC_MT Uniform3iv = NULL; + PFNGLUNIFORM4IVPROC_MT Uniform4iv = NULL; + PFNGLUNIFORMMATRIX2FVPROC_MT UniformMatrix2fv = NULL; + PFNGLUNIFORMMATRIX3FVPROC_MT UniformMatrix3fv = NULL; + PFNGLUNIFORMMATRIX4FVPROC_MT UniformMatrix4fv = NULL; + PFNGLVALIDATEPROGRAMPROC_MT ValidateProgram = NULL; + PFNGLVERTEXATTRIB1DPROC_MT VertexAttrib1d = NULL; + PFNGLVERTEXATTRIB1DVPROC_MT VertexAttrib1dv = NULL; + PFNGLVERTEXATTRIB1FPROC_MT VertexAttrib1f = NULL; + PFNGLVERTEXATTRIB1FVPROC_MT VertexAttrib1fv = NULL; + PFNGLVERTEXATTRIB1SPROC_MT VertexAttrib1s = NULL; + PFNGLVERTEXATTRIB1SVPROC_MT VertexAttrib1sv = NULL; + PFNGLVERTEXATTRIB2DPROC_MT VertexAttrib2d = NULL; + PFNGLVERTEXATTRIB2DVPROC_MT VertexAttrib2dv = NULL; + PFNGLVERTEXATTRIB2FPROC_MT VertexAttrib2f = NULL; + PFNGLVERTEXATTRIB2FVPROC_MT VertexAttrib2fv = NULL; + PFNGLVERTEXATTRIB2SPROC_MT VertexAttrib2s = NULL; + PFNGLVERTEXATTRIB2SVPROC_MT VertexAttrib2sv = NULL; + PFNGLVERTEXATTRIB3DPROC_MT VertexAttrib3d = NULL; + PFNGLVERTEXATTRIB3DVPROC_MT VertexAttrib3dv = NULL; + PFNGLVERTEXATTRIB3FPROC_MT VertexAttrib3f = NULL; + PFNGLVERTEXATTRIB3FVPROC_MT VertexAttrib3fv = NULL; + PFNGLVERTEXATTRIB3SPROC_MT VertexAttrib3s = NULL; + PFNGLVERTEXATTRIB3SVPROC_MT VertexAttrib3sv = NULL; + PFNGLVERTEXATTRIB4NBVPROC_MT VertexAttrib4Nbv = NULL; + PFNGLVERTEXATTRIB4NIVPROC_MT VertexAttrib4Niv = NULL; + PFNGLVERTEXATTRIB4NSVPROC_MT VertexAttrib4Nsv = NULL; + PFNGLVERTEXATTRIB4NUBPROC_MT VertexAttrib4Nub = NULL; + PFNGLVERTEXATTRIB4NUBVPROC_MT VertexAttrib4Nubv = NULL; + PFNGLVERTEXATTRIB4NUIVPROC_MT VertexAttrib4Nuiv = NULL; + PFNGLVERTEXATTRIB4NUSVPROC_MT VertexAttrib4Nusv = NULL; + PFNGLVERTEXATTRIB4BVPROC_MT VertexAttrib4bv = NULL; + PFNGLVERTEXATTRIB4DPROC_MT VertexAttrib4d = NULL; + PFNGLVERTEXATTRIB4DVPROC_MT VertexAttrib4dv = NULL; + PFNGLVERTEXATTRIB4FPROC_MT VertexAttrib4f = NULL; + PFNGLVERTEXATTRIB4FVPROC_MT VertexAttrib4fv = NULL; + PFNGLVERTEXATTRIB4IVPROC_MT VertexAttrib4iv = NULL; + PFNGLVERTEXATTRIB4SPROC_MT VertexAttrib4s = NULL; + PFNGLVERTEXATTRIB4SVPROC_MT VertexAttrib4sv = NULL; + PFNGLVERTEXATTRIB4UBVPROC_MT VertexAttrib4ubv = NULL; + PFNGLVERTEXATTRIB4UIVPROC_MT VertexAttrib4uiv = NULL; + PFNGLVERTEXATTRIB4USVPROC_MT VertexAttrib4usv = NULL; + PFNGLVERTEXATTRIBPOINTERPROC_MT VertexAttribPointer = NULL; + PFNGLUNIFORMMATRIX2X3FVPROC_MT UniformMatrix2x3fv = NULL; + PFNGLUNIFORMMATRIX3X2FVPROC_MT UniformMatrix3x2fv = NULL; + PFNGLUNIFORMMATRIX2X4FVPROC_MT UniformMatrix2x4fv = NULL; + PFNGLUNIFORMMATRIX4X2FVPROC_MT UniformMatrix4x2fv = NULL; + PFNGLUNIFORMMATRIX3X4FVPROC_MT UniformMatrix3x4fv = NULL; + PFNGLUNIFORMMATRIX4X3FVPROC_MT UniformMatrix4x3fv = NULL; + PFNGLCOLORMASKIPROC_MT ColorMaski = NULL; + PFNGLENABLEIPROC_MT Enablei = NULL; + PFNGLDISABLEIPROC_MT Disablei = NULL; + PFNGLISENABLEDIPROC_MT IsEnabledi = NULL; + PFNGLBEGINTRANSFORMFEEDBACKPROC_MT BeginTransformFeedback = NULL; + PFNGLENDTRANSFORMFEEDBACKPROC_MT EndTransformFeedback = NULL; + PFNGLBINDBUFFERRANGEPROC_MT BindBufferRange = NULL; + PFNGLBINDBUFFERBASEPROC_MT BindBufferBase = NULL; + PFNGLTRANSFORMFEEDBACKVARYINGSPROC_MT TransformFeedbackVaryings = NULL; + PFNGLGETTRANSFORMFEEDBACKVARYINGPROC_MT GetTransformFeedbackVarying = NULL; + PFNGLCLAMPCOLORPROC_MT ClampColor = NULL; + PFNGLBEGINCONDITIONALRENDERPROC_MT BeginConditionalRender = NULL; + PFNGLENDCONDITIONALRENDERPROC_MT EndConditionalRender = NULL; + PFNGLVERTEXATTRIBIPOINTERPROC_MT VertexAttribIPointer = NULL; + PFNGLGETVERTEXATTRIBIIVPROC_MT GetVertexAttribIiv = NULL; + PFNGLGETVERTEXATTRIBIUIVPROC_MT GetVertexAttribIuiv = NULL; + PFNGLVERTEXATTRIBI1IPROC_MT VertexAttribI1i = NULL; + PFNGLVERTEXATTRIBI2IPROC_MT VertexAttribI2i = NULL; + PFNGLVERTEXATTRIBI3IPROC_MT VertexAttribI3i = NULL; + PFNGLVERTEXATTRIBI4IPROC_MT VertexAttribI4i = NULL; + PFNGLVERTEXATTRIBI1UIPROC_MT VertexAttribI1ui = NULL; + PFNGLVERTEXATTRIBI2UIPROC_MT VertexAttribI2ui = NULL; + PFNGLVERTEXATTRIBI3UIPROC_MT VertexAttribI3ui = NULL; + PFNGLVERTEXATTRIBI4UIPROC_MT VertexAttribI4ui = NULL; + PFNGLVERTEXATTRIBI1IVPROC_MT VertexAttribI1iv = NULL; + PFNGLVERTEXATTRIBI2IVPROC_MT VertexAttribI2iv = NULL; + PFNGLVERTEXATTRIBI3IVPROC_MT VertexAttribI3iv = NULL; + PFNGLVERTEXATTRIBI4IVPROC_MT VertexAttribI4iv = NULL; + PFNGLVERTEXATTRIBI1UIVPROC_MT VertexAttribI1uiv = NULL; + PFNGLVERTEXATTRIBI2UIVPROC_MT VertexAttribI2uiv = NULL; + PFNGLVERTEXATTRIBI3UIVPROC_MT VertexAttribI3uiv = NULL; + PFNGLVERTEXATTRIBI4UIVPROC_MT VertexAttribI4uiv = NULL; + PFNGLVERTEXATTRIBI4BVPROC_MT VertexAttribI4bv = NULL; + PFNGLVERTEXATTRIBI4SVPROC_MT VertexAttribI4sv = NULL; + PFNGLVERTEXATTRIBI4UBVPROC_MT VertexAttribI4ubv = NULL; + PFNGLVERTEXATTRIBI4USVPROC_MT VertexAttribI4usv = NULL; + PFNGLGETUNIFORMUIVPROC_MT GetUniformuiv = NULL; + PFNGLBINDFRAGDATALOCATIONPROC_MT BindFragDataLocation = NULL; + PFNGLGETFRAGDATALOCATIONPROC_MT GetFragDataLocation = NULL; + PFNGLUNIFORM1UIPROC_MT Uniform1ui = NULL; + PFNGLUNIFORM2UIPROC_MT Uniform2ui = NULL; + PFNGLUNIFORM3UIPROC_MT Uniform3ui = NULL; + PFNGLUNIFORM4UIPROC_MT Uniform4ui = NULL; + PFNGLUNIFORM1UIVPROC_MT Uniform1uiv = NULL; + PFNGLUNIFORM2UIVPROC_MT Uniform2uiv = NULL; + PFNGLUNIFORM3UIVPROC_MT Uniform3uiv = NULL; + PFNGLUNIFORM4UIVPROC_MT Uniform4uiv = NULL; + PFNGLTEXPARAMETERIIVPROC_MT TexParameterIiv = NULL; + PFNGLTEXPARAMETERIUIVPROC_MT TexParameterIuiv = NULL; + PFNGLGETTEXPARAMETERIIVPROC_MT GetTexParameterIiv = NULL; + PFNGLGETTEXPARAMETERIUIVPROC_MT GetTexParameterIuiv = NULL; + PFNGLCLEARBUFFERIVPROC_MT ClearBufferiv = NULL; + PFNGLCLEARBUFFERUIVPROC_MT ClearBufferuiv = NULL; + PFNGLCLEARBUFFERFVPROC_MT ClearBufferfv = NULL; + PFNGLCLEARBUFFERFIPROC_MT ClearBufferfi = NULL; + PFNGLGETSTRINGIPROC_MT GetStringi = NULL; + PFNGLISRENDERBUFFERPROC_MT IsRenderbuffer = NULL; + PFNGLBINDRENDERBUFFERPROC_MT BindRenderbuffer = NULL; + PFNGLDELETERENDERBUFFERSPROC_MT DeleteRenderbuffers = NULL; + PFNGLGENRENDERBUFFERSPROC_MT GenRenderbuffers = NULL; + PFNGLRENDERBUFFERSTORAGEPROC_MT RenderbufferStorage = NULL; + PFNGLGETRENDERBUFFERPARAMETERIVPROC_MT GetRenderbufferParameteriv = NULL; + PFNGLISFRAMEBUFFERPROC_MT IsFramebuffer = NULL; + PFNGLBINDFRAMEBUFFERPROC_MT BindFramebuffer = NULL; + PFNGLDELETEFRAMEBUFFERSPROC_MT DeleteFramebuffers = NULL; + PFNGLGENFRAMEBUFFERSPROC_MT GenFramebuffers = NULL; + PFNGLCHECKFRAMEBUFFERSTATUSPROC_MT CheckFramebufferStatus = NULL; + PFNGLFRAMEBUFFERTEXTURE1DPROC_MT FramebufferTexture1D = NULL; + PFNGLFRAMEBUFFERTEXTURE2DPROC_MT FramebufferTexture2D = NULL; + PFNGLFRAMEBUFFERTEXTURE3DPROC_MT FramebufferTexture3D = NULL; + PFNGLFRAMEBUFFERRENDERBUFFERPROC_MT FramebufferRenderbuffer = NULL; + PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC_MT GetFramebufferAttachmentParameteriv = NULL; + PFNGLGENERATEMIPMAPPROC_MT GenerateMipmap = NULL; + PFNGLBLITFRAMEBUFFERPROC_MT BlitFramebuffer = NULL; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC_MT RenderbufferStorageMultisample = NULL; + PFNGLFRAMEBUFFERTEXTURELAYERPROC_MT FramebufferTextureLayer = NULL; + PFNGLMAPBUFFERRANGEPROC_MT MapBufferRange = NULL; + PFNGLFLUSHMAPPEDBUFFERRANGEPROC_MT FlushMappedBufferRange = NULL; + PFNGLBINDVERTEXARRAYPROC_MT BindVertexArray = NULL; + PFNGLDELETEVERTEXARRAYSPROC_MT DeleteVertexArrays = NULL; + PFNGLGENVERTEXARRAYSPROC_MT GenVertexArrays = NULL; + PFNGLISVERTEXARRAYPROC_MT IsVertexArray = NULL; + PFNGLDRAWARRAYSINSTANCEDPROC_MT DrawArraysInstanced = NULL; + PFNGLDRAWELEMENTSINSTANCEDPROC_MT DrawElementsInstanced = NULL; + PFNGLTEXBUFFERPROC_MT TexBuffer = NULL; + PFNGLPRIMITIVERESTARTINDEXPROC_MT PrimitiveRestartIndex = NULL; + PFNGLCOPYBUFFERSUBDATAPROC_MT CopyBufferSubData = NULL; + PFNGLGETUNIFORMINDICESPROC_MT GetUniformIndices = NULL; + PFNGLGETACTIVEUNIFORMSIVPROC_MT GetActiveUniformsiv = NULL; + PFNGLGETACTIVEUNIFORMNAMEPROC_MT GetActiveUniformName = NULL; + PFNGLGETUNIFORMBLOCKINDEXPROC_MT GetUniformBlockIndex = NULL; + PFNGLGETACTIVEUNIFORMBLOCKIVPROC_MT GetActiveUniformBlockiv = NULL; + PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC_MT GetActiveUniformBlockName = NULL; + PFNGLUNIFORMBLOCKBINDINGPROC_MT UniformBlockBinding = NULL; + PFNGLDRAWELEMENTSBASEVERTEXPROC_MT DrawElementsBaseVertex = NULL; + PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC_MT DrawRangeElementsBaseVertex = NULL; + PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC_MT DrawElementsInstancedBaseVertex = NULL; + PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC_MT MultiDrawElementsBaseVertex = NULL; + PFNGLPROVOKINGVERTEXPROC_MT ProvokingVertex = NULL; + PFNGLFENCESYNCPROC_MT FenceSync = NULL; + PFNGLISSYNCPROC_MT IsSync = NULL; + PFNGLDELETESYNCPROC_MT DeleteSync = NULL; + PFNGLCLIENTWAITSYNCPROC_MT ClientWaitSync = NULL; + PFNGLWAITSYNCPROC_MT WaitSync = NULL; + PFNGLGETINTEGER64VPROC_MT GetInteger64v = NULL; + PFNGLGETSYNCIVPROC_MT GetSynciv = NULL; + PFNGLGETBUFFERPARAMETERI64VPROC_MT GetBufferParameteri64v = NULL; + PFNGLFRAMEBUFFERTEXTUREPROC_MT FramebufferTexture = NULL; + PFNGLTEXIMAGE2DMULTISAMPLEPROC_MT TexImage2DMultisample = NULL; + PFNGLTEXIMAGE3DMULTISAMPLEPROC_MT TexImage3DMultisample = NULL; + PFNGLGETMULTISAMPLEFVPROC_MT GetMultisamplefv = NULL; + PFNGLSAMPLEMASKIPROC_MT SampleMaski = NULL; + PFNGLBINDFRAGDATALOCATIONINDEXEDPROC_MT BindFragDataLocationIndexed = NULL; + PFNGLGETFRAGDATAINDEXPROC_MT GetFragDataIndex = NULL; + PFNGLGENSAMPLERSPROC_MT GenSamplers = NULL; + PFNGLDELETESAMPLERSPROC_MT DeleteSamplers = NULL; + PFNGLISSAMPLERPROC_MT IsSampler = NULL; + PFNGLBINDSAMPLERPROC_MT BindSampler = NULL; + PFNGLSAMPLERPARAMETERIPROC_MT SamplerParameteri = NULL; + PFNGLSAMPLERPARAMETERIVPROC_MT SamplerParameteriv = NULL; + PFNGLSAMPLERPARAMETERFPROC_MT SamplerParameterf = NULL; + PFNGLSAMPLERPARAMETERFVPROC_MT SamplerParameterfv = NULL; + PFNGLSAMPLERPARAMETERIIVPROC_MT SamplerParameterIiv = NULL; + PFNGLSAMPLERPARAMETERIUIVPROC_MT SamplerParameterIuiv = NULL; + PFNGLGETSAMPLERPARAMETERIVPROC_MT GetSamplerParameteriv = NULL; + PFNGLGETSAMPLERPARAMETERIIVPROC_MT GetSamplerParameterIiv = NULL; + PFNGLGETSAMPLERPARAMETERFVPROC_MT GetSamplerParameterfv = NULL; + PFNGLGETSAMPLERPARAMETERIUIVPROC_MT GetSamplerParameterIuiv = NULL; + PFNGLQUERYCOUNTERPROC_MT QueryCounter = NULL; + PFNGLGETQUERYOBJECTI64VPROC_MT GetQueryObjecti64v = NULL; + PFNGLGETQUERYOBJECTUI64VPROC_MT GetQueryObjectui64v = NULL; + PFNGLVERTEXATTRIBDIVISORPROC_MT VertexAttribDivisor = NULL; + PFNGLVERTEXATTRIBP1UIPROC_MT VertexAttribP1ui = NULL; + PFNGLVERTEXATTRIBP1UIVPROC_MT VertexAttribP1uiv = NULL; + PFNGLVERTEXATTRIBP2UIPROC_MT VertexAttribP2ui = NULL; + PFNGLVERTEXATTRIBP2UIVPROC_MT VertexAttribP2uiv = NULL; + PFNGLVERTEXATTRIBP3UIPROC_MT VertexAttribP3ui = NULL; + PFNGLVERTEXATTRIBP3UIVPROC_MT VertexAttribP3uiv = NULL; + PFNGLVERTEXATTRIBP4UIPROC_MT VertexAttribP4ui = NULL; + PFNGLVERTEXATTRIBP4UIVPROC_MT VertexAttribP4uiv = NULL; + PFNGLMINSAMPLESHADINGPROC_MT MinSampleShading = NULL; + PFNGLBLENDEQUATIONIPROC_MT BlendEquationi = NULL; + PFNGLBLENDEQUATIONSEPARATEIPROC_MT BlendEquationSeparatei = NULL; + PFNGLBLENDFUNCIPROC_MT BlendFunci = NULL; + PFNGLBLENDFUNCSEPARATEIPROC_MT BlendFuncSeparatei = NULL; + PFNGLDRAWARRAYSINDIRECTPROC_MT DrawArraysIndirect = NULL; + PFNGLDRAWELEMENTSINDIRECTPROC_MT DrawElementsIndirect = NULL; + PFNGLUNIFORM1DPROC_MT Uniform1d = NULL; + PFNGLUNIFORM2DPROC_MT Uniform2d = NULL; + PFNGLUNIFORM3DPROC_MT Uniform3d = NULL; + PFNGLUNIFORM4DPROC_MT Uniform4d = NULL; + PFNGLUNIFORM1DVPROC_MT Uniform1dv = NULL; + PFNGLUNIFORM2DVPROC_MT Uniform2dv = NULL; + PFNGLUNIFORM3DVPROC_MT Uniform3dv = NULL; + PFNGLUNIFORM4DVPROC_MT Uniform4dv = NULL; + PFNGLUNIFORMMATRIX2DVPROC_MT UniformMatrix2dv = NULL; + PFNGLUNIFORMMATRIX3DVPROC_MT UniformMatrix3dv = NULL; + PFNGLUNIFORMMATRIX4DVPROC_MT UniformMatrix4dv = NULL; + PFNGLUNIFORMMATRIX2X3DVPROC_MT UniformMatrix2x3dv = NULL; + PFNGLUNIFORMMATRIX2X4DVPROC_MT UniformMatrix2x4dv = NULL; + PFNGLUNIFORMMATRIX3X2DVPROC_MT UniformMatrix3x2dv = NULL; + PFNGLUNIFORMMATRIX3X4DVPROC_MT UniformMatrix3x4dv = NULL; + PFNGLUNIFORMMATRIX4X2DVPROC_MT UniformMatrix4x2dv = NULL; + PFNGLUNIFORMMATRIX4X3DVPROC_MT UniformMatrix4x3dv = NULL; + PFNGLGETUNIFORMDVPROC_MT GetUniformdv = NULL; + PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC_MT GetSubroutineUniformLocation = NULL; + PFNGLGETSUBROUTINEINDEXPROC_MT GetSubroutineIndex = NULL; + PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC_MT GetActiveSubroutineUniformiv = NULL; + PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC_MT GetActiveSubroutineUniformName = NULL; + PFNGLGETACTIVESUBROUTINENAMEPROC_MT GetActiveSubroutineName = NULL; + PFNGLUNIFORMSUBROUTINESUIVPROC_MT UniformSubroutinesuiv = NULL; + PFNGLGETUNIFORMSUBROUTINEUIVPROC_MT GetUniformSubroutineuiv = NULL; + PFNGLGETPROGRAMSTAGEIVPROC_MT GetProgramStageiv = NULL; + PFNGLPATCHPARAMETERIPROC_MT PatchParameteri = NULL; + PFNGLPATCHPARAMETERFVPROC_MT PatchParameterfv = NULL; + PFNGLBINDTRANSFORMFEEDBACKPROC_MT BindTransformFeedback = NULL; + PFNGLDELETETRANSFORMFEEDBACKSPROC_MT DeleteTransformFeedbacks = NULL; + PFNGLGENTRANSFORMFEEDBACKSPROC_MT GenTransformFeedbacks = NULL; + PFNGLISTRANSFORMFEEDBACKPROC_MT IsTransformFeedback = NULL; + PFNGLPAUSETRANSFORMFEEDBACKPROC_MT PauseTransformFeedback = NULL; + PFNGLRESUMETRANSFORMFEEDBACKPROC_MT ResumeTransformFeedback = NULL; + PFNGLDRAWTRANSFORMFEEDBACKPROC_MT DrawTransformFeedback = NULL; + PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC_MT DrawTransformFeedbackStream = NULL; + PFNGLBEGINQUERYINDEXEDPROC_MT BeginQueryIndexed = NULL; + PFNGLENDQUERYINDEXEDPROC_MT EndQueryIndexed = NULL; + PFNGLGETQUERYINDEXEDIVPROC_MT GetQueryIndexediv = NULL; + PFNGLRELEASESHADERCOMPILERPROC_MT ReleaseShaderCompiler = NULL; + PFNGLSHADERBINARYPROC_MT ShaderBinary = NULL; + PFNGLGETSHADERPRECISIONFORMATPROC_MT GetShaderPrecisionFormat = NULL; + PFNGLDEPTHRANGEFPROC_MT DepthRangef = NULL; + PFNGLCLEARDEPTHFPROC_MT ClearDepthf = NULL; + PFNGLGETPROGRAMBINARYPROC_MT GetProgramBinary = NULL; + PFNGLPROGRAMBINARYPROC_MT ProgramBinary = NULL; + PFNGLPROGRAMPARAMETERIPROC_MT ProgramParameteri = NULL; + PFNGLUSEPROGRAMSTAGESPROC_MT UseProgramStages = NULL; + PFNGLACTIVESHADERPROGRAMPROC_MT ActiveShaderProgram = NULL; + PFNGLCREATESHADERPROGRAMVPROC_MT CreateShaderProgramv = NULL; + PFNGLBINDPROGRAMPIPELINEPROC_MT BindProgramPipeline = NULL; + PFNGLDELETEPROGRAMPIPELINESPROC_MT DeleteProgramPipelines = NULL; + PFNGLGENPROGRAMPIPELINESPROC_MT GenProgramPipelines = NULL; + PFNGLISPROGRAMPIPELINEPROC_MT IsProgramPipeline = NULL; + PFNGLGETPROGRAMPIPELINEIVPROC_MT GetProgramPipelineiv = NULL; + PFNGLPROGRAMUNIFORM1IPROC_MT ProgramUniform1i = NULL; + PFNGLPROGRAMUNIFORM1IVPROC_MT ProgramUniform1iv = NULL; + PFNGLPROGRAMUNIFORM1FPROC_MT ProgramUniform1f = NULL; + PFNGLPROGRAMUNIFORM1FVPROC_MT ProgramUniform1fv = NULL; + PFNGLPROGRAMUNIFORM1DPROC_MT ProgramUniform1d = NULL; + PFNGLPROGRAMUNIFORM1DVPROC_MT ProgramUniform1dv = NULL; + PFNGLPROGRAMUNIFORM1UIPROC_MT ProgramUniform1ui = NULL; + PFNGLPROGRAMUNIFORM1UIVPROC_MT ProgramUniform1uiv = NULL; + PFNGLPROGRAMUNIFORM2IPROC_MT ProgramUniform2i = NULL; + PFNGLPROGRAMUNIFORM2IVPROC_MT ProgramUniform2iv = NULL; + PFNGLPROGRAMUNIFORM2FPROC_MT ProgramUniform2f = NULL; + PFNGLPROGRAMUNIFORM2FVPROC_MT ProgramUniform2fv = NULL; + PFNGLPROGRAMUNIFORM2DPROC_MT ProgramUniform2d = NULL; + PFNGLPROGRAMUNIFORM2DVPROC_MT ProgramUniform2dv = NULL; + PFNGLPROGRAMUNIFORM2UIPROC_MT ProgramUniform2ui = NULL; + PFNGLPROGRAMUNIFORM2UIVPROC_MT ProgramUniform2uiv = NULL; + PFNGLPROGRAMUNIFORM3IPROC_MT ProgramUniform3i = NULL; + PFNGLPROGRAMUNIFORM3IVPROC_MT ProgramUniform3iv = NULL; + PFNGLPROGRAMUNIFORM3FPROC_MT ProgramUniform3f = NULL; + PFNGLPROGRAMUNIFORM3FVPROC_MT ProgramUniform3fv = NULL; + PFNGLPROGRAMUNIFORM3DPROC_MT ProgramUniform3d = NULL; + PFNGLPROGRAMUNIFORM3DVPROC_MT ProgramUniform3dv = NULL; + PFNGLPROGRAMUNIFORM3UIPROC_MT ProgramUniform3ui = NULL; + PFNGLPROGRAMUNIFORM3UIVPROC_MT ProgramUniform3uiv = NULL; + PFNGLPROGRAMUNIFORM4IPROC_MT ProgramUniform4i = NULL; + PFNGLPROGRAMUNIFORM4IVPROC_MT ProgramUniform4iv = NULL; + PFNGLPROGRAMUNIFORM4FPROC_MT ProgramUniform4f = NULL; + PFNGLPROGRAMUNIFORM4FVPROC_MT ProgramUniform4fv = NULL; + PFNGLPROGRAMUNIFORM4DPROC_MT ProgramUniform4d = NULL; + PFNGLPROGRAMUNIFORM4DVPROC_MT ProgramUniform4dv = NULL; + PFNGLPROGRAMUNIFORM4UIPROC_MT ProgramUniform4ui = NULL; + PFNGLPROGRAMUNIFORM4UIVPROC_MT ProgramUniform4uiv = NULL; + PFNGLPROGRAMUNIFORMMATRIX2FVPROC_MT ProgramUniformMatrix2fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX3FVPROC_MT ProgramUniformMatrix3fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX4FVPROC_MT ProgramUniformMatrix4fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX2DVPROC_MT ProgramUniformMatrix2dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX3DVPROC_MT ProgramUniformMatrix3dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX4DVPROC_MT ProgramUniformMatrix4dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC_MT ProgramUniformMatrix2x3fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC_MT ProgramUniformMatrix3x2fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC_MT ProgramUniformMatrix2x4fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC_MT ProgramUniformMatrix4x2fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC_MT ProgramUniformMatrix3x4fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC_MT ProgramUniformMatrix4x3fv = NULL; + PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC_MT ProgramUniformMatrix2x3dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC_MT ProgramUniformMatrix3x2dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC_MT ProgramUniformMatrix2x4dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC_MT ProgramUniformMatrix4x2dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC_MT ProgramUniformMatrix3x4dv = NULL; + PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC_MT ProgramUniformMatrix4x3dv = NULL; + PFNGLVALIDATEPROGRAMPIPELINEPROC_MT ValidateProgramPipeline = NULL; + PFNGLGETPROGRAMPIPELINEINFOLOGPROC_MT GetProgramPipelineInfoLog = NULL; + PFNGLVERTEXATTRIBL1DPROC_MT VertexAttribL1d = NULL; + PFNGLVERTEXATTRIBL2DPROC_MT VertexAttribL2d = NULL; + PFNGLVERTEXATTRIBL3DPROC_MT VertexAttribL3d = NULL; + PFNGLVERTEXATTRIBL4DPROC_MT VertexAttribL4d = NULL; + PFNGLVERTEXATTRIBL1DVPROC_MT VertexAttribL1dv = NULL; + PFNGLVERTEXATTRIBL2DVPROC_MT VertexAttribL2dv = NULL; + PFNGLVERTEXATTRIBL3DVPROC_MT VertexAttribL3dv = NULL; + PFNGLVERTEXATTRIBL4DVPROC_MT VertexAttribL4dv = NULL; + PFNGLVERTEXATTRIBLPOINTERPROC_MT VertexAttribLPointer = NULL; + PFNGLGETVERTEXATTRIBLDVPROC_MT GetVertexAttribLdv = NULL; + PFNGLVIEWPORTARRAYVPROC_MT ViewportArrayv = NULL; + PFNGLVIEWPORTINDEXEDFPROC_MT ViewportIndexedf = NULL; + PFNGLVIEWPORTINDEXEDFVPROC_MT ViewportIndexedfv = NULL; + PFNGLSCISSORARRAYVPROC_MT ScissorArrayv = NULL; + PFNGLSCISSORINDEXEDPROC_MT ScissorIndexed = NULL; + PFNGLSCISSORINDEXEDVPROC_MT ScissorIndexedv = NULL; + PFNGLDEPTHRANGEARRAYVPROC_MT DepthRangeArrayv = NULL; + PFNGLDEPTHRANGEINDEXEDPROC_MT DepthRangeIndexed = NULL; + PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC_MT DrawArraysInstancedBaseInstance = NULL; + PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC_MT DrawElementsInstancedBaseInstance = NULL; + PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC_MT DrawElementsInstancedBaseVertexBaseInstance = NULL; + PFNGLGETINTERNALFORMATIVPROC_MT GetInternalformativ = NULL; + PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC_MT GetActiveAtomicCounterBufferiv = NULL; + PFNGLBINDIMAGETEXTUREPROC_MT BindImageTexture = NULL; + PFNGLMEMORYBARRIERPROC_MT MemoryBarrier = NULL; + PFNGLTEXSTORAGE1DPROC_MT TexStorage1D = NULL; + PFNGLTEXSTORAGE2DPROC_MT TexStorage2D = NULL; + PFNGLTEXSTORAGE3DPROC_MT TexStorage3D = NULL; + PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC_MT DrawTransformFeedbackInstanced = NULL; + PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC_MT DrawTransformFeedbackStreamInstanced = NULL; + PFNGLCLEARBUFFERDATAPROC_MT ClearBufferData = NULL; + PFNGLCLEARBUFFERSUBDATAPROC_MT ClearBufferSubData = NULL; + PFNGLDISPATCHCOMPUTEPROC_MT DispatchCompute = NULL; + PFNGLDISPATCHCOMPUTEINDIRECTPROC_MT DispatchComputeIndirect = NULL; + PFNGLCOPYIMAGESUBDATAPROC_MT CopyImageSubData = NULL; + PFNGLFRAMEBUFFERPARAMETERIPROC_MT FramebufferParameteri = NULL; + PFNGLGETFRAMEBUFFERPARAMETERIVPROC_MT GetFramebufferParameteriv = NULL; + PFNGLGETINTERNALFORMATI64VPROC_MT GetInternalformati64v = NULL; + PFNGLINVALIDATETEXSUBIMAGEPROC_MT InvalidateTexSubImage = NULL; + PFNGLINVALIDATETEXIMAGEPROC_MT InvalidateTexImage = NULL; + PFNGLINVALIDATEBUFFERSUBDATAPROC_MT InvalidateBufferSubData = NULL; + PFNGLINVALIDATEBUFFERDATAPROC_MT InvalidateBufferData = NULL; + PFNGLINVALIDATEFRAMEBUFFERPROC_MT InvalidateFramebuffer = NULL; + PFNGLINVALIDATESUBFRAMEBUFFERPROC_MT InvalidateSubFramebuffer = NULL; + PFNGLMULTIDRAWARRAYSINDIRECTPROC_MT MultiDrawArraysIndirect = NULL; + PFNGLMULTIDRAWELEMENTSINDIRECTPROC_MT MultiDrawElementsIndirect = NULL; + PFNGLGETPROGRAMINTERFACEIVPROC_MT GetProgramInterfaceiv = NULL; + PFNGLGETPROGRAMRESOURCEINDEXPROC_MT GetProgramResourceIndex = NULL; + PFNGLGETPROGRAMRESOURCENAMEPROC_MT GetProgramResourceName = NULL; + PFNGLGETPROGRAMRESOURCEIVPROC_MT GetProgramResourceiv = NULL; + PFNGLGETPROGRAMRESOURCELOCATIONPROC_MT GetProgramResourceLocation = NULL; + PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC_MT GetProgramResourceLocationIndex = NULL; + PFNGLSHADERSTORAGEBLOCKBINDINGPROC_MT ShaderStorageBlockBinding = NULL; + PFNGLTEXBUFFERRANGEPROC_MT TexBufferRange = NULL; + PFNGLTEXSTORAGE2DMULTISAMPLEPROC_MT TexStorage2DMultisample = NULL; + PFNGLTEXSTORAGE3DMULTISAMPLEPROC_MT TexStorage3DMultisample = NULL; + PFNGLTEXTUREVIEWPROC_MT TextureView = NULL; + PFNGLBINDVERTEXBUFFERPROC_MT BindVertexBuffer = NULL; + PFNGLVERTEXATTRIBFORMATPROC_MT VertexAttribFormat = NULL; + PFNGLVERTEXATTRIBIFORMATPROC_MT VertexAttribIFormat = NULL; + PFNGLVERTEXATTRIBLFORMATPROC_MT VertexAttribLFormat = NULL; + PFNGLVERTEXATTRIBBINDINGPROC_MT VertexAttribBinding = NULL; + PFNGLVERTEXBINDINGDIVISORPROC_MT VertexBindingDivisor = NULL; + PFNGLDEBUGMESSAGECONTROLPROC_MT DebugMessageControl = NULL; + PFNGLDEBUGMESSAGEINSERTPROC_MT DebugMessageInsert = NULL; + PFNGLDEBUGMESSAGECALLBACKPROC_MT DebugMessageCallback = NULL; + PFNGLGETDEBUGMESSAGELOGPROC_MT GetDebugMessageLog = NULL; + PFNGLPUSHDEBUGGROUPPROC_MT PushDebugGroup = NULL; + PFNGLPOPDEBUGGROUPPROC_MT PopDebugGroup = NULL; + PFNGLOBJECTLABELPROC_MT ObjectLabel = NULL; + PFNGLGETOBJECTLABELPROC_MT GetObjectLabel = NULL; + PFNGLOBJECTPTRLABELPROC_MT ObjectPtrLabel = NULL; + PFNGLGETOBJECTPTRLABELPROC_MT GetObjectPtrLabel = NULL; + PFNGLBUFFERSTORAGEPROC_MT BufferStorage = NULL; + PFNGLCLEARTEXIMAGEPROC_MT ClearTexImage = NULL; + PFNGLCLEARTEXSUBIMAGEPROC_MT ClearTexSubImage = NULL; + PFNGLBINDBUFFERSBASEPROC_MT BindBuffersBase = NULL; + PFNGLBINDBUFFERSRANGEPROC_MT BindBuffersRange = NULL; + PFNGLBINDTEXTURESPROC_MT BindTextures = NULL; + PFNGLBINDSAMPLERSPROC_MT BindSamplers = NULL; + PFNGLBINDIMAGETEXTURESPROC_MT BindImageTextures = NULL; + PFNGLBINDVERTEXBUFFERSPROC_MT BindVertexBuffers = NULL; + PFNGLCLIPCONTROLPROC_MT ClipControl = NULL; + PFNGLCREATETRANSFORMFEEDBACKSPROC_MT CreateTransformFeedbacks = NULL; + PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC_MT TransformFeedbackBufferBase = NULL; + PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC_MT TransformFeedbackBufferRange = NULL; + PFNGLGETTRANSFORMFEEDBACKIVPROC_MT GetTransformFeedbackiv = NULL; + PFNGLCREATEBUFFERSPROC_MT CreateBuffers = NULL; + PFNGLNAMEDBUFFERSTORAGEPROC_MT NamedBufferStorage = NULL; + PFNGLNAMEDBUFFERDATAPROC_MT NamedBufferData = NULL; + PFNGLNAMEDBUFFERSUBDATAPROC_MT NamedBufferSubData = NULL; + PFNGLCOPYNAMEDBUFFERSUBDATAPROC_MT CopyNamedBufferSubData = NULL; + PFNGLCLEARNAMEDBUFFERDATAPROC_MT ClearNamedBufferData = NULL; + PFNGLCLEARNAMEDBUFFERSUBDATAPROC_MT ClearNamedBufferSubData = NULL; + PFNGLMAPNAMEDBUFFERPROC_MT MapNamedBuffer = NULL; + PFNGLMAPNAMEDBUFFERRANGEPROC_MT MapNamedBufferRange = NULL; + PFNGLUNMAPNAMEDBUFFERPROC_MT UnmapNamedBuffer = NULL; + PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC_MT FlushMappedNamedBufferRange = NULL; + PFNGLGETNAMEDBUFFERPARAMETERIVPROC_MT GetNamedBufferParameteriv = NULL; + PFNGLGETNAMEDBUFFERPARAMETERI64VPROC_MT GetNamedBufferParameteri64v = NULL; + PFNGLGETNAMEDBUFFERPOINTERVPROC_MT GetNamedBufferPointerv = NULL; + PFNGLGETNAMEDBUFFERSUBDATAPROC_MT GetNamedBufferSubData = NULL; + PFNGLCREATEFRAMEBUFFERSPROC_MT CreateFramebuffers = NULL; + PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC_MT NamedFramebufferRenderbuffer = NULL; + PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC_MT NamedFramebufferParameteri = NULL; + PFNGLNAMEDFRAMEBUFFERTEXTUREPROC_MT NamedFramebufferTexture = NULL; + PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC_MT NamedFramebufferTextureLayer = NULL; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC_MT NamedFramebufferDrawBuffer = NULL; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC_MT NamedFramebufferDrawBuffers = NULL; + PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC_MT NamedFramebufferReadBuffer = NULL; + PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC_MT InvalidateNamedFramebufferData = NULL; + PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC_MT InvalidateNamedFramebufferSubData = NULL; + PFNGLCLEARNAMEDFRAMEBUFFERIVPROC_MT ClearNamedFramebufferiv = NULL; + PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC_MT ClearNamedFramebufferuiv = NULL; + PFNGLCLEARNAMEDFRAMEBUFFERFVPROC_MT ClearNamedFramebufferfv = NULL; + PFNGLCLEARNAMEDFRAMEBUFFERFIPROC_MT ClearNamedFramebufferfi = NULL; + PFNGLBLITNAMEDFRAMEBUFFERPROC_MT BlitNamedFramebuffer = NULL; + PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC_MT CheckNamedFramebufferStatus = NULL; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC_MT GetNamedFramebufferParameteriv = NULL; + PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC_MT GetNamedFramebufferAttachmentParameteriv = NULL; + PFNGLCREATERENDERBUFFERSPROC_MT CreateRenderbuffers = NULL; + PFNGLNAMEDRENDERBUFFERSTORAGEPROC_MT NamedRenderbufferStorage = NULL; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC_MT NamedRenderbufferStorageMultisample = NULL; + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC_MT GetNamedRenderbufferParameteriv = NULL; + PFNGLCREATETEXTURESPROC_MT CreateTextures = NULL; + PFNGLTEXTUREBUFFERPROC_MT TextureBuffer = NULL; + PFNGLTEXTUREBUFFERRANGEPROC_MT TextureBufferRange = NULL; + PFNGLTEXTURESTORAGE1DPROC_MT TextureStorage1D = NULL; + PFNGLTEXTURESTORAGE2DPROC_MT TextureStorage2D = NULL; + PFNGLTEXTURESTORAGE3DPROC_MT TextureStorage3D = NULL; + PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC_MT TextureStorage2DMultisample = NULL; + PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC_MT TextureStorage3DMultisample = NULL; + PFNGLTEXTURESUBIMAGE1DPROC_MT TextureSubImage1D = NULL; + PFNGLTEXTURESUBIMAGE2DPROC_MT TextureSubImage2D = NULL; + PFNGLTEXTURESUBIMAGE3DPROC_MT TextureSubImage3D = NULL; + PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC_MT CompressedTextureSubImage1D = NULL; + PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC_MT CompressedTextureSubImage2D = NULL; + PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC_MT CompressedTextureSubImage3D = NULL; + PFNGLCOPYTEXTURESUBIMAGE1DPROC_MT CopyTextureSubImage1D = NULL; + PFNGLCOPYTEXTURESUBIMAGE2DPROC_MT CopyTextureSubImage2D = NULL; + PFNGLCOPYTEXTURESUBIMAGE3DPROC_MT CopyTextureSubImage3D = NULL; + PFNGLTEXTUREPARAMETERFPROC_MT TextureParameterf = NULL; + PFNGLTEXTUREPARAMETERFVPROC_MT TextureParameterfv = NULL; + PFNGLTEXTUREPARAMETERIPROC_MT TextureParameteri = NULL; + PFNGLTEXTUREPARAMETERIIVPROC_MT TextureParameterIiv = NULL; + PFNGLTEXTUREPARAMETERIUIVPROC_MT TextureParameterIuiv = NULL; + PFNGLTEXTUREPARAMETERIVPROC_MT TextureParameteriv = NULL; + PFNGLGENERATETEXTUREMIPMAPPROC_MT GenerateTextureMipmap = NULL; + PFNGLBINDTEXTUREUNITPROC_MT BindTextureUnit = NULL; + PFNGLGETTEXTUREIMAGEPROC_MT GetTextureImage = NULL; + PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC_MT GetCompressedTextureImage = NULL; + PFNGLGETTEXTURELEVELPARAMETERFVPROC_MT GetTextureLevelParameterfv = NULL; + PFNGLGETTEXTURELEVELPARAMETERIVPROC_MT GetTextureLevelParameteriv = NULL; + PFNGLGETTEXTUREPARAMETERFVPROC_MT GetTextureParameterfv = NULL; + PFNGLGETTEXTUREPARAMETERIIVPROC_MT GetTextureParameterIiv = NULL; + PFNGLGETTEXTUREPARAMETERIUIVPROC_MT GetTextureParameterIuiv = NULL; + PFNGLGETTEXTUREPARAMETERIVPROC_MT GetTextureParameteriv = NULL; + PFNGLCREATEVERTEXARRAYSPROC_MT CreateVertexArrays = NULL; + PFNGLDISABLEVERTEXARRAYATTRIBPROC_MT DisableVertexArrayAttrib = NULL; + PFNGLENABLEVERTEXARRAYATTRIBPROC_MT EnableVertexArrayAttrib = NULL; + PFNGLVERTEXARRAYELEMENTBUFFERPROC_MT VertexArrayElementBuffer = NULL; + PFNGLVERTEXARRAYVERTEXBUFFERPROC_MT VertexArrayVertexBuffer = NULL; + PFNGLVERTEXARRAYVERTEXBUFFERSPROC_MT VertexArrayVertexBuffers = NULL; + PFNGLVERTEXARRAYATTRIBBINDINGPROC_MT VertexArrayAttribBinding = NULL; + PFNGLVERTEXARRAYATTRIBFORMATPROC_MT VertexArrayAttribFormat = NULL; + PFNGLVERTEXARRAYATTRIBIFORMATPROC_MT VertexArrayAttribIFormat = NULL; + PFNGLVERTEXARRAYATTRIBLFORMATPROC_MT VertexArrayAttribLFormat = NULL; + PFNGLVERTEXARRAYBINDINGDIVISORPROC_MT VertexArrayBindingDivisor = NULL; + PFNGLGETVERTEXARRAYIVPROC_MT GetVertexArrayiv = NULL; + PFNGLGETVERTEXARRAYINDEXEDIVPROC_MT GetVertexArrayIndexediv = NULL; + PFNGLGETVERTEXARRAYINDEXED64IVPROC_MT GetVertexArrayIndexed64iv = NULL; + PFNGLCREATESAMPLERSPROC_MT CreateSamplers = NULL; + PFNGLCREATEPROGRAMPIPELINESPROC_MT CreateProgramPipelines = NULL; + PFNGLCREATEQUERIESPROC_MT CreateQueries = NULL; + PFNGLGETQUERYBUFFEROBJECTI64VPROC_MT GetQueryBufferObjecti64v = NULL; + PFNGLGETQUERYBUFFEROBJECTIVPROC_MT GetQueryBufferObjectiv = NULL; + PFNGLGETQUERYBUFFEROBJECTUI64VPROC_MT GetQueryBufferObjectui64v = NULL; + PFNGLGETQUERYBUFFEROBJECTUIVPROC_MT GetQueryBufferObjectuiv = NULL; + PFNGLMEMORYBARRIERBYREGIONPROC_MT MemoryBarrierByRegion = NULL; + PFNGLGETTEXTURESUBIMAGEPROC_MT GetTextureSubImage = NULL; + PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC_MT GetCompressedTextureSubImage = NULL; + PFNGLGETGRAPHICSRESETSTATUSPROC_MT GetGraphicsResetStatus = NULL; + PFNGLGETNCOMPRESSEDTEXIMAGEPROC_MT GetnCompressedTexImage = NULL; + PFNGLGETNTEXIMAGEPROC_MT GetnTexImage = NULL; + PFNGLGETNUNIFORMDVPROC_MT GetnUniformdv = NULL; + PFNGLGETNUNIFORMFVPROC_MT GetnUniformfv = NULL; + PFNGLGETNUNIFORMIVPROC_MT GetnUniformiv = NULL; + PFNGLGETNUNIFORMUIVPROC_MT GetnUniformuiv = NULL; + PFNGLREADNPIXELSPROC_MT ReadnPixels = NULL; + PFNGLTEXTUREBARRIERPROC_MT TextureBarrier = NULL; + PFNGLSPECIALIZESHADERPROC_MT SpecializeShader = NULL; + PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC_MT MultiDrawArraysIndirectCount = NULL; + PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC_MT MultiDrawElementsIndirectCount = NULL; + PFNGLPOLYGONOFFSETCLAMPPROC_MT PolygonOffsetClamp = NULL; + PFNGLGENPERFMONITORSEXPROC_MT GenPerfMonitorsEX = NULL; + PFNGLPRIMITIVEBOUNDINGBOXPROC_MT PrimitiveBoundingBox = NULL; + PFNGLGETTEXTUREHANDLEPROC_MT GetTextureHandle = NULL; + PFNGLGETTEXTURESAMPLERHANDLEPROC_MT GetTextureSamplerHandle = NULL; + PFNGLMAKETEXTUREHANDLERESIDENTPROC_MT MakeTextureHandleResident = NULL; + PFNGLMAKETEXTUREHANDLENONRESIDENTPROC_MT MakeTextureHandleNonResident = NULL; + PFNGLGETIMAGEHANDLEPROC_MT GetImageHandle = NULL; + PFNGLMAKEIMAGEHANDLERESIDENTPROC_MT MakeImageHandleResident = NULL; + PFNGLMAKEIMAGEHANDLENONRESIDENTPROC_MT MakeImageHandleNonResident = NULL; + PFNGLUNIFORMHANDLEUI64PROC_MT UniformHandleui64 = NULL; + PFNGLUNIFORMHANDLEUI64VPROC_MT UniformHandleui64v = NULL; + PFNGLPROGRAMUNIFORMHANDLEUI64PROC_MT ProgramUniformHandleui64 = NULL; + PFNGLPROGRAMUNIFORMHANDLEUI64VPROC_MT ProgramUniformHandleui64v = NULL; + PFNGLISTEXTUREHANDLERESIDENTPROC_MT IsTextureHandleResident = NULL; + PFNGLISIMAGEHANDLERESIDENTPROC_MT IsImageHandleResident = NULL; + PFNGLVERTEXATTRIBL1UI64PROC_MT VertexAttribL1ui64 = NULL; + PFNGLVERTEXATTRIBL1UI64VPROC_MT VertexAttribL1ui64v = NULL; + PFNGLGETVERTEXATTRIBLUI64VPROC_MT GetVertexAttribLui64v = NULL; + PFNGLCREATESYNCFROMCLEVENTPROC_MT CreateSyncFromCLevent = NULL; + PFNGLDISPATCHCOMPUTEGROUPSIZEPROC_MT DispatchComputeGroupSize = NULL; + PFNGLFRAMEBUFFERTEXTUREFACEPROC_MT FramebufferTextureFace = NULL; + PFNGLUNIFORM1I64PROC_MT Uniform1i64 = NULL; + PFNGLUNIFORM2I64PROC_MT Uniform2i64 = NULL; + PFNGLUNIFORM3I64PROC_MT Uniform3i64 = NULL; + PFNGLUNIFORM4I64PROC_MT Uniform4i64 = NULL; + PFNGLUNIFORM1I64VPROC_MT Uniform1i64v = NULL; + PFNGLUNIFORM2I64VPROC_MT Uniform2i64v = NULL; + PFNGLUNIFORM3I64VPROC_MT Uniform3i64v = NULL; + PFNGLUNIFORM4I64VPROC_MT Uniform4i64v = NULL; + PFNGLUNIFORM1UI64PROC_MT Uniform1ui64 = NULL; + PFNGLUNIFORM2UI64PROC_MT Uniform2ui64 = NULL; + PFNGLUNIFORM3UI64PROC_MT Uniform3ui64 = NULL; + PFNGLUNIFORM4UI64PROC_MT Uniform4ui64 = NULL; + PFNGLUNIFORM1UI64VPROC_MT Uniform1ui64v = NULL; + PFNGLUNIFORM2UI64VPROC_MT Uniform2ui64v = NULL; + PFNGLUNIFORM3UI64VPROC_MT Uniform3ui64v = NULL; + PFNGLUNIFORM4UI64VPROC_MT Uniform4ui64v = NULL; + PFNGLGETUNIFORMI64VPROC_MT GetUniformi64v = NULL; + PFNGLGETUNIFORMUI64VPROC_MT GetUniformui64v = NULL; + PFNGLGETNUNIFORMI64VPROC_MT GetnUniformi64v = NULL; + PFNGLGETNUNIFORMUI64VPROC_MT GetnUniformui64v = NULL; + PFNGLPROGRAMUNIFORM1I64PROC_MT ProgramUniform1i64 = NULL; + PFNGLPROGRAMUNIFORM2I64PROC_MT ProgramUniform2i64 = NULL; + PFNGLPROGRAMUNIFORM3I64PROC_MT ProgramUniform3i64 = NULL; + PFNGLPROGRAMUNIFORM4I64PROC_MT ProgramUniform4i64 = NULL; + PFNGLPROGRAMUNIFORM1I64VPROC_MT ProgramUniform1i64v = NULL; + PFNGLPROGRAMUNIFORM2I64VPROC_MT ProgramUniform2i64v = NULL; + PFNGLPROGRAMUNIFORM3I64VPROC_MT ProgramUniform3i64v = NULL; + PFNGLPROGRAMUNIFORM4I64VPROC_MT ProgramUniform4i64v = NULL; + PFNGLPROGRAMUNIFORM1UI64PROC_MT ProgramUniform1ui64 = NULL; + PFNGLPROGRAMUNIFORM2UI64PROC_MT ProgramUniform2ui64 = NULL; + PFNGLPROGRAMUNIFORM3UI64PROC_MT ProgramUniform3ui64 = NULL; + PFNGLPROGRAMUNIFORM4UI64PROC_MT ProgramUniform4ui64 = NULL; + PFNGLPROGRAMUNIFORM1UI64VPROC_MT ProgramUniform1ui64v = NULL; + PFNGLPROGRAMUNIFORM2UI64VPROC_MT ProgramUniform2ui64v = NULL; + PFNGLPROGRAMUNIFORM3UI64VPROC_MT ProgramUniform3ui64v = NULL; + PFNGLPROGRAMUNIFORM4UI64VPROC_MT ProgramUniform4ui64v = NULL; + PFNGLMAXSHADERCOMPILERTHREADSPROC_MT MaxShaderCompilerThreads = NULL; + PFNGLFRAMEBUFFERSAMPLELOCATIONSFVPROC_MT FramebufferSampleLocationsfv = NULL; + PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVPROC_MT NamedFramebufferSampleLocationsfv = NULL; + PFNGLEVALUATEDEPTHVALUESPROC_MT EvaluateDepthValues = NULL; + PFNGLNAMEDSTRINGPROC_MT NamedString = NULL; + PFNGLDELETENAMEDSTRINGPROC_MT DeleteNamedString = NULL; + PFNGLCOMPILESHADERINCLUDEPROC_MT CompileShaderInclude = NULL; + PFNGLISNAMEDSTRINGPROC_MT IsNamedString = NULL; + PFNGLGETNAMEDSTRINGPROC_MT GetNamedString = NULL; + PFNGLGETNAMEDSTRINGIVPROC_MT GetNamedStringiv = NULL; + PFNGLBUFFERPAGECOMMITMENTPROC_MT BufferPageCommitment = NULL; + PFNGLNAMEDBUFFERPAGECOMMITMENTPROC_MT NamedBufferPageCommitment = NULL; + PFNGLTEXPAGECOMMITMENTPROC_MT TexPageCommitment = NULL; + + static constexpr const GLenum DEPTH_BUFFER_BIT = 0x00000100; + static constexpr const GLenum STENCIL_BUFFER_BIT = 0x00000400; + static constexpr const GLenum COLOR_BUFFER_BIT = 0x00004000; + static constexpr const GLenum POINTS = 0x0000; + static constexpr const GLenum LINES = 0x0001; + static constexpr const GLenum LINE_LOOP = 0x0002; + static constexpr const GLenum LINE_STRIP = 0x0003; + static constexpr const GLenum TRIANGLES = 0x0004; + static constexpr const GLenum TRIANGLE_STRIP = 0x0005; + static constexpr const GLenum TRIANGLE_FAN = 0x0006; + static constexpr const GLenum QUADS = 0x0007; + static constexpr const GLenum NEVER = 0x0200; + static constexpr const GLenum LESS = 0x0201; + static constexpr const GLenum EQUAL = 0x0202; + static constexpr const GLenum LEQUAL = 0x0203; + static constexpr const GLenum GREATER = 0x0204; + static constexpr const GLenum NOTEQUAL = 0x0205; + static constexpr const GLenum GEQUAL = 0x0206; + static constexpr const GLenum ALWAYS = 0x0207; + static constexpr const GLenum SRC_COLOR = 0x0300; + static constexpr const GLenum ONE_MINUS_SRC_COLOR = 0x0301; + static constexpr const GLenum SRC_ALPHA = 0x0302; + static constexpr const GLenum ONE_MINUS_SRC_ALPHA = 0x0303; + static constexpr const GLenum DST_ALPHA = 0x0304; + static constexpr const GLenum ONE_MINUS_DST_ALPHA = 0x0305; + static constexpr const GLenum DST_COLOR = 0x0306; + static constexpr const GLenum ONE_MINUS_DST_COLOR = 0x0307; + static constexpr const GLenum SRC_ALPHA_SATURATE = 0x0308; + static constexpr const GLenum FRONT_LEFT = 0x0400; + static constexpr const GLenum FRONT_RIGHT = 0x0401; + static constexpr const GLenum BACK_LEFT = 0x0402; + static constexpr const GLenum BACK_RIGHT = 0x0403; + static constexpr const GLenum FRONT = 0x0404; + static constexpr const GLenum BACK = 0x0405; + static constexpr const GLenum LEFT = 0x0406; + static constexpr const GLenum RIGHT = 0x0407; + static constexpr const GLenum FRONT_AND_BACK = 0x0408; + static constexpr const GLenum INVALID_ENUM = 0x0500; + static constexpr const GLenum INVALID_VALUE = 0x0501; + static constexpr const GLenum INVALID_OPERATION = 0x0502; + static constexpr const GLenum OUT_OF_MEMORY = 0x0505; + static constexpr const GLenum CW = 0x0900; + static constexpr const GLenum CCW = 0x0901; + static constexpr const GLenum POINT_SIZE = 0x0B11; + static constexpr const GLenum POINT_SIZE_RANGE = 0x0B12; + static constexpr const GLenum POINT_SIZE_GRANULARITY = 0x0B13; + static constexpr const GLenum LINE_SMOOTH = 0x0B20; + static constexpr const GLenum LINE_WIDTH = 0x0B21; + static constexpr const GLenum LINE_WIDTH_RANGE = 0x0B22; + static constexpr const GLenum LINE_WIDTH_GRANULARITY = 0x0B23; + static constexpr const GLenum POLYGON_MODE = 0x0B40; + static constexpr const GLenum POLYGON_SMOOTH = 0x0B41; + static constexpr const GLenum CULL_FACE = 0x0B44; + static constexpr const GLenum CULL_FACE_MODE = 0x0B45; + static constexpr const GLenum FRONT_FACE = 0x0B46; + static constexpr const GLenum DEPTH_RANGE = 0x0B70; + static constexpr const GLenum DEPTH_TEST = 0x0B71; + static constexpr const GLenum DEPTH_WRITEMASK = 0x0B72; + static constexpr const GLenum DEPTH_CLEAR_VALUE = 0x0B73; + static constexpr const GLenum DEPTH_FUNC = 0x0B74; + static constexpr const GLenum STENCIL_TEST = 0x0B90; + static constexpr const GLenum STENCIL_CLEAR_VALUE = 0x0B91; + static constexpr const GLenum STENCIL_FUNC = 0x0B92; + static constexpr const GLenum STENCIL_VALUE_MASK = 0x0B93; + static constexpr const GLenum STENCIL_FAIL = 0x0B94; + static constexpr const GLenum STENCIL_PASS_DEPTH_FAIL = 0x0B95; + static constexpr const GLenum STENCIL_PASS_DEPTH_PASS = 0x0B96; + static constexpr const GLenum STENCIL_REF = 0x0B97; + static constexpr const GLenum STENCIL_WRITEMASK = 0x0B98; + static constexpr const GLenum VIEWPORT = 0x0BA2; + static constexpr const GLenum DITHER = 0x0BD0; + static constexpr const GLenum BLEND_DST = 0x0BE0; + static constexpr const GLenum BLEND_SRC = 0x0BE1; + static constexpr const GLenum BLEND = 0x0BE2; + static constexpr const GLenum LOGIC_OP_MODE = 0x0BF0; + static constexpr const GLenum DRAW_BUFFER = 0x0C01; + static constexpr const GLenum READ_BUFFER = 0x0C02; + static constexpr const GLenum SCISSOR_BOX = 0x0C10; + static constexpr const GLenum SCISSOR_TEST = 0x0C11; + static constexpr const GLenum COLOR_CLEAR_VALUE = 0x0C22; + static constexpr const GLenum COLOR_WRITEMASK = 0x0C23; + static constexpr const GLenum DOUBLEBUFFER = 0x0C32; + static constexpr const GLenum STEREO = 0x0C33; + static constexpr const GLenum LINE_SMOOTH_HINT = 0x0C52; + static constexpr const GLenum POLYGON_SMOOTH_HINT = 0x0C53; + static constexpr const GLenum UNPACK_SWAP_BYTES = 0x0CF0; + static constexpr const GLenum UNPACK_LSB_FIRST = 0x0CF1; + static constexpr const GLenum UNPACK_ROW_LENGTH = 0x0CF2; + static constexpr const GLenum UNPACK_SKIP_ROWS = 0x0CF3; + static constexpr const GLenum UNPACK_SKIP_PIXELS = 0x0CF4; + static constexpr const GLenum UNPACK_ALIGNMENT = 0x0CF5; + static constexpr const GLenum PACK_SWAP_BYTES = 0x0D00; + static constexpr const GLenum PACK_LSB_FIRST = 0x0D01; + static constexpr const GLenum PACK_ROW_LENGTH = 0x0D02; + static constexpr const GLenum PACK_SKIP_ROWS = 0x0D03; + static constexpr const GLenum PACK_SKIP_PIXELS = 0x0D04; + static constexpr const GLenum PACK_ALIGNMENT = 0x0D05; + static constexpr const GLenum MAX_TEXTURE_SIZE = 0x0D33; + static constexpr const GLenum MAX_VIEWPORT_DIMS = 0x0D3A; + static constexpr const GLenum SUBPIXEL_BITS = 0x0D50; + static constexpr const GLenum TEXTURE_1D = 0x0DE0; + static constexpr const GLenum TEXTURE_2D = 0x0DE1; + static constexpr const GLenum TEXTURE_WIDTH = 0x1000; + static constexpr const GLenum TEXTURE_HEIGHT = 0x1001; + static constexpr const GLenum TEXTURE_BORDER_COLOR = 0x1004; + static constexpr const GLenum DONT_CARE = 0x1100; + static constexpr const GLenum FASTEST = 0x1101; + static constexpr const GLenum NICEST = 0x1102; + static constexpr const GLenum BYTE = 0x1400; + static constexpr const GLenum UNSIGNED_BYTE = 0x1401; + static constexpr const GLenum SHORT = 0x1402; + static constexpr const GLenum UNSIGNED_SHORT = 0x1403; + static constexpr const GLenum INT = 0x1404; + static constexpr const GLenum UNSIGNED_INT = 0x1405; + static constexpr const GLenum FLOAT = 0x1406; + static constexpr const GLenum STACK_OVERFLOW = 0x0503; + static constexpr const GLenum STACK_UNDERFLOW = 0x0504; + static constexpr const GLenum CLEAR = 0x1500; + static constexpr const GLenum AND = 0x1501; + static constexpr const GLenum AND_REVERSE = 0x1502; + static constexpr const GLenum COPY = 0x1503; + static constexpr const GLenum AND_INVERTED = 0x1504; + static constexpr const GLenum NOOP = 0x1505; + static constexpr const GLenum XOR = 0x1506; + static constexpr const GLenum OR = 0x1507; + static constexpr const GLenum NOR = 0x1508; + static constexpr const GLenum EQUIV = 0x1509; + static constexpr const GLenum INVERT = 0x150A; + static constexpr const GLenum OR_REVERSE = 0x150B; + static constexpr const GLenum COPY_INVERTED = 0x150C; + static constexpr const GLenum OR_INVERTED = 0x150D; + static constexpr const GLenum NAND = 0x150E; + static constexpr const GLenum SET = 0x150F; + static constexpr const GLenum TEXTURE = 0x1702; + static constexpr const GLenum COLOR = 0x1800; + static constexpr const GLenum DEPTH = 0x1801; + static constexpr const GLenum STENCIL = 0x1802; + static constexpr const GLenum STENCIL_INDEX = 0x1901; + static constexpr const GLenum DEPTH_COMPONENT = 0x1902; + static constexpr const GLenum RED = 0x1903; + static constexpr const GLenum GREEN = 0x1904; + static constexpr const GLenum BLUE = 0x1905; + static constexpr const GLenum ALPHA = 0x1906; + static constexpr const GLenum RGB = 0x1907; + static constexpr const GLenum RGBA = 0x1908; + static constexpr const GLenum POINT = 0x1B00; + static constexpr const GLenum LINE = 0x1B01; + static constexpr const GLenum FILL = 0x1B02; + static constexpr const GLenum KEEP = 0x1E00; + static constexpr const GLenum REPLACE = 0x1E01; + static constexpr const GLenum INCR = 0x1E02; + static constexpr const GLenum DECR = 0x1E03; + static constexpr const GLenum VENDOR = 0x1F00; + static constexpr const GLenum RENDERER = 0x1F01; + static constexpr const GLenum VERSION = 0x1F02; + static constexpr const GLenum EXTENSIONS = 0x1F03; + static constexpr const GLenum NEAREST = 0x2600; + static constexpr const GLenum LINEAR = 0x2601; + static constexpr const GLenum NEAREST_MIPMAP_NEAREST = 0x2700; + static constexpr const GLenum LINEAR_MIPMAP_NEAREST = 0x2701; + static constexpr const GLenum NEAREST_MIPMAP_LINEAR = 0x2702; + static constexpr const GLenum LINEAR_MIPMAP_LINEAR = 0x2703; + static constexpr const GLenum TEXTURE_MAG_FILTER = 0x2800; + static constexpr const GLenum TEXTURE_MIN_FILTER = 0x2801; + static constexpr const GLenum TEXTURE_WRAP_S = 0x2802; + static constexpr const GLenum TEXTURE_WRAP_T = 0x2803; + static constexpr const GLenum REPEAT = 0x2901; + static constexpr const GLenum COLOR_LOGIC_OP = 0x0BF2; + static constexpr const GLenum POLYGON_OFFSET_UNITS = 0x2A00; + static constexpr const GLenum POLYGON_OFFSET_POINT = 0x2A01; + static constexpr const GLenum POLYGON_OFFSET_LINE = 0x2A02; + static constexpr const GLenum POLYGON_OFFSET_FILL = 0x8037; + static constexpr const GLenum POLYGON_OFFSET_FACTOR = 0x8038; + static constexpr const GLenum TEXTURE_BINDING_1D = 0x8068; + static constexpr const GLenum TEXTURE_BINDING_2D = 0x8069; + static constexpr const GLenum TEXTURE_INTERNAL_FORMAT = 0x1003; + static constexpr const GLenum TEXTURE_RED_SIZE = 0x805C; + static constexpr const GLenum TEXTURE_GREEN_SIZE = 0x805D; + static constexpr const GLenum TEXTURE_BLUE_SIZE = 0x805E; + static constexpr const GLenum TEXTURE_ALPHA_SIZE = 0x805F; + static constexpr const GLenum DOUBLE = 0x140A; + static constexpr const GLenum PROXY_TEXTURE_1D = 0x8063; + static constexpr const GLenum PROXY_TEXTURE_2D = 0x8064; + static constexpr const GLenum R3_G3_B2 = 0x2A10; + static constexpr const GLenum RGB4 = 0x804F; + static constexpr const GLenum RGB5 = 0x8050; + static constexpr const GLenum RGB8 = 0x8051; + static constexpr const GLenum RGB10 = 0x8052; + static constexpr const GLenum RGB12 = 0x8053; + static constexpr const GLenum RGB16 = 0x8054; + static constexpr const GLenum RGBA2 = 0x8055; + static constexpr const GLenum RGBA4 = 0x8056; + static constexpr const GLenum RGB5_A1 = 0x8057; + static constexpr const GLenum RGBA8 = 0x8058; + static constexpr const GLenum RGB10_A2 = 0x8059; + static constexpr const GLenum RGBA12 = 0x805A; + static constexpr const GLenum RGBA16 = 0x805B; + static constexpr const GLenum VERTEX_ARRAY = 0x8074; + static constexpr const GLenum UNSIGNED_BYTE_3_3_2 = 0x8032; + static constexpr const GLenum UNSIGNED_SHORT_4_4_4_4 = 0x8033; + static constexpr const GLenum UNSIGNED_SHORT_5_5_5_1 = 0x8034; + static constexpr const GLenum UNSIGNED_INT_8_8_8_8 = 0x8035; + static constexpr const GLenum UNSIGNED_INT_10_10_10_2 = 0x8036; + static constexpr const GLenum TEXTURE_BINDING_3D = 0x806A; + static constexpr const GLenum PACK_SKIP_IMAGES = 0x806B; + static constexpr const GLenum PACK_IMAGE_HEIGHT = 0x806C; + static constexpr const GLenum UNPACK_SKIP_IMAGES = 0x806D; + static constexpr const GLenum UNPACK_IMAGE_HEIGHT = 0x806E; + static constexpr const GLenum TEXTURE_3D = 0x806F; + static constexpr const GLenum PROXY_TEXTURE_3D = 0x8070; + static constexpr const GLenum TEXTURE_DEPTH = 0x8071; + static constexpr const GLenum TEXTURE_WRAP_R = 0x8072; + static constexpr const GLenum MAX_3D_TEXTURE_SIZE = 0x8073; + static constexpr const GLenum UNSIGNED_BYTE_2_3_3_REV = 0x8362; + static constexpr const GLenum UNSIGNED_SHORT_5_6_5 = 0x8363; + static constexpr const GLenum UNSIGNED_SHORT_5_6_5_REV = 0x8364; + static constexpr const GLenum UNSIGNED_SHORT_4_4_4_4_REV = 0x8365; + static constexpr const GLenum UNSIGNED_SHORT_1_5_5_5_REV = 0x8366; + static constexpr const GLenum UNSIGNED_INT_8_8_8_8_REV = 0x8367; + static constexpr const GLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368; + static constexpr const GLenum BGR = 0x80E0; + static constexpr const GLenum BGRA = 0x80E1; + static constexpr const GLenum MAX_ELEMENTS_VERTICES = 0x80E8; + static constexpr const GLenum MAX_ELEMENTS_INDICES = 0x80E9; + static constexpr const GLenum CLAMP_TO_EDGE = 0x812F; + static constexpr const GLenum TEXTURE_MIN_LOD = 0x813A; + static constexpr const GLenum TEXTURE_MAX_LOD = 0x813B; + static constexpr const GLenum TEXTURE_BASE_LEVEL = 0x813C; + static constexpr const GLenum TEXTURE_MAX_LEVEL = 0x813D; + static constexpr const GLenum SMOOTH_POINT_SIZE_RANGE = 0x0B12; + static constexpr const GLenum SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13; + static constexpr const GLenum SMOOTH_LINE_WIDTH_RANGE = 0x0B22; + static constexpr const GLenum SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23; + static constexpr const GLenum ALIASED_LINE_WIDTH_RANGE = 0x846E; + static constexpr const GLenum TEXTURE0 = 0x84C0; + static constexpr const GLenum TEXTURE1 = 0x84C1; + static constexpr const GLenum TEXTURE2 = 0x84C2; + static constexpr const GLenum TEXTURE3 = 0x84C3; + static constexpr const GLenum TEXTURE4 = 0x84C4; + static constexpr const GLenum TEXTURE5 = 0x84C5; + static constexpr const GLenum TEXTURE6 = 0x84C6; + static constexpr const GLenum TEXTURE7 = 0x84C7; + static constexpr const GLenum TEXTURE8 = 0x84C8; + static constexpr const GLenum TEXTURE9 = 0x84C9; + static constexpr const GLenum TEXTURE10 = 0x84CA; + static constexpr const GLenum TEXTURE11 = 0x84CB; + static constexpr const GLenum TEXTURE12 = 0x84CC; + static constexpr const GLenum TEXTURE13 = 0x84CD; + static constexpr const GLenum TEXTURE14 = 0x84CE; + static constexpr const GLenum TEXTURE15 = 0x84CF; + static constexpr const GLenum TEXTURE16 = 0x84D0; + static constexpr const GLenum TEXTURE17 = 0x84D1; + static constexpr const GLenum TEXTURE18 = 0x84D2; + static constexpr const GLenum TEXTURE19 = 0x84D3; + static constexpr const GLenum TEXTURE20 = 0x84D4; + static constexpr const GLenum TEXTURE21 = 0x84D5; + static constexpr const GLenum TEXTURE22 = 0x84D6; + static constexpr const GLenum TEXTURE23 = 0x84D7; + static constexpr const GLenum TEXTURE24 = 0x84D8; + static constexpr const GLenum TEXTURE25 = 0x84D9; + static constexpr const GLenum TEXTURE26 = 0x84DA; + static constexpr const GLenum TEXTURE27 = 0x84DB; + static constexpr const GLenum TEXTURE28 = 0x84DC; + static constexpr const GLenum TEXTURE29 = 0x84DD; + static constexpr const GLenum TEXTURE30 = 0x84DE; + static constexpr const GLenum TEXTURE31 = 0x84DF; + static constexpr const GLenum ACTIVE_TEXTURE = 0x84E0; + static constexpr const GLenum MULTISAMPLE = 0x809D; + static constexpr const GLenum SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + static constexpr const GLenum SAMPLE_ALPHA_TO_ONE = 0x809F; + static constexpr const GLenum SAMPLE_COVERAGE = 0x80A0; + static constexpr const GLenum SAMPLE_BUFFERS = 0x80A8; + static constexpr const GLenum SAMPLES = 0x80A9; + static constexpr const GLenum SAMPLE_COVERAGE_VALUE = 0x80AA; + static constexpr const GLenum SAMPLE_COVERAGE_INVERT = 0x80AB; + static constexpr const GLenum TEXTURE_CUBE_MAP = 0x8513; + static constexpr const GLenum TEXTURE_BINDING_CUBE_MAP = 0x8514; + static constexpr const GLenum TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + static constexpr const GLenum TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + static constexpr const GLenum TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + static constexpr const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + static constexpr const GLenum TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + static constexpr const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + static constexpr const GLenum PROXY_TEXTURE_CUBE_MAP = 0x851B; + static constexpr const GLenum MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + static constexpr const GLenum COMPRESSED_RGB = 0x84ED; + static constexpr const GLenum COMPRESSED_RGBA = 0x84EE; + static constexpr const GLenum TEXTURE_COMPRESSION_HINT = 0x84EF; + static constexpr const GLenum TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0; + static constexpr const GLenum TEXTURE_COMPRESSED = 0x86A1; + static constexpr const GLenum NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; + static constexpr const GLenum COMPRESSED_TEXTURE_FORMATS = 0x86A3; + static constexpr const GLenum CLAMP_TO_BORDER = 0x812D; + static constexpr const GLenum BLEND_DST_RGB = 0x80C8; + static constexpr const GLenum BLEND_SRC_RGB = 0x80C9; + static constexpr const GLenum BLEND_DST_ALPHA = 0x80CA; + static constexpr const GLenum BLEND_SRC_ALPHA = 0x80CB; + static constexpr const GLenum POINT_FADE_THRESHOLD_SIZE = 0x8128; + static constexpr const GLenum DEPTH_COMPONENT16 = 0x81A5; + static constexpr const GLenum DEPTH_COMPONENT24 = 0x81A6; + static constexpr const GLenum DEPTH_COMPONENT32 = 0x81A7; + static constexpr const GLenum MIRRORED_REPEAT = 0x8370; + static constexpr const GLenum MAX_TEXTURE_LOD_BIAS = 0x84FD; + static constexpr const GLenum TEXTURE_LOD_BIAS = 0x8501; + static constexpr const GLenum INCR_WRAP = 0x8507; + static constexpr const GLenum DECR_WRAP = 0x8508; + static constexpr const GLenum TEXTURE_DEPTH_SIZE = 0x884A; + static constexpr const GLenum TEXTURE_COMPARE_MODE = 0x884C; + static constexpr const GLenum TEXTURE_COMPARE_FUNC = 0x884D; + static constexpr const GLenum BLEND_COLOR = 0x8005; + static constexpr const GLenum BLEND_EQUATION = 0x8009; + static constexpr const GLenum CONSTANT_COLOR = 0x8001; + static constexpr const GLenum ONE_MINUS_CONSTANT_COLOR = 0x8002; + static constexpr const GLenum CONSTANT_ALPHA = 0x8003; + static constexpr const GLenum ONE_MINUS_CONSTANT_ALPHA = 0x8004; + static constexpr const GLenum FUNC_ADD = 0x8006; + static constexpr const GLenum FUNC_REVERSE_SUBTRACT = 0x800B; + static constexpr const GLenum FUNC_SUBTRACT = 0x800A; + static constexpr const GLenum MIN = 0x8007; + static constexpr const GLenum MAX = 0x8008; + static constexpr const GLenum BUFFER_SIZE = 0x8764; + static constexpr const GLenum BUFFER_USAGE = 0x8765; + static constexpr const GLenum QUERY_COUNTER_BITS = 0x8864; + static constexpr const GLenum CURRENT_QUERY = 0x8865; + static constexpr const GLenum QUERY_RESULT = 0x8866; + static constexpr const GLenum QUERY_RESULT_AVAILABLE = 0x8867; + static constexpr const GLenum ARRAY_BUFFER = 0x8892; + static constexpr const GLenum ELEMENT_ARRAY_BUFFER = 0x8893; + static constexpr const GLenum ARRAY_BUFFER_BINDING = 0x8894; + static constexpr const GLenum ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + static constexpr const GLenum READ_ONLY = 0x88B8; + static constexpr const GLenum WRITE_ONLY = 0x88B9; + static constexpr const GLenum READ_WRITE = 0x88BA; + static constexpr const GLenum BUFFER_ACCESS = 0x88BB; + static constexpr const GLenum BUFFER_MAPPED = 0x88BC; + static constexpr const GLenum BUFFER_MAP_POINTER = 0x88BD; + static constexpr const GLenum STREAM_DRAW = 0x88E0; + static constexpr const GLenum STREAM_READ = 0x88E1; + static constexpr const GLenum STREAM_COPY = 0x88E2; + static constexpr const GLenum STATIC_DRAW = 0x88E4; + static constexpr const GLenum STATIC_READ = 0x88E5; + static constexpr const GLenum STATIC_COPY = 0x88E6; + static constexpr const GLenum DYNAMIC_DRAW = 0x88E8; + static constexpr const GLenum DYNAMIC_READ = 0x88E9; + static constexpr const GLenum DYNAMIC_COPY = 0x88EA; + static constexpr const GLenum SAMPLES_PASSED = 0x8914; + static constexpr const GLenum SRC1_ALPHA = 0x8589; + static constexpr const GLenum BLEND_EQUATION_RGB = 0x8009; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + static constexpr const GLenum CURRENT_VERTEX_ATTRIB = 0x8626; + static constexpr const GLenum VERTEX_PROGRAM_POINT_SIZE = 0x8642; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + static constexpr const GLenum STENCIL_BACK_FUNC = 0x8800; + static constexpr const GLenum STENCIL_BACK_FAIL = 0x8801; + static constexpr const GLenum STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + static constexpr const GLenum STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + static constexpr const GLenum MAX_DRAW_BUFFERS = 0x8824; + static constexpr const GLenum DRAW_BUFFER0 = 0x8825; + static constexpr const GLenum DRAW_BUFFER1 = 0x8826; + static constexpr const GLenum DRAW_BUFFER2 = 0x8827; + static constexpr const GLenum DRAW_BUFFER3 = 0x8828; + static constexpr const GLenum DRAW_BUFFER4 = 0x8829; + static constexpr const GLenum DRAW_BUFFER5 = 0x882A; + static constexpr const GLenum DRAW_BUFFER6 = 0x882B; + static constexpr const GLenum DRAW_BUFFER7 = 0x882C; + static constexpr const GLenum DRAW_BUFFER8 = 0x882D; + static constexpr const GLenum DRAW_BUFFER9 = 0x882E; + static constexpr const GLenum DRAW_BUFFER10 = 0x882F; + static constexpr const GLenum DRAW_BUFFER11 = 0x8830; + static constexpr const GLenum DRAW_BUFFER12 = 0x8831; + static constexpr const GLenum DRAW_BUFFER13 = 0x8832; + static constexpr const GLenum DRAW_BUFFER14 = 0x8833; + static constexpr const GLenum DRAW_BUFFER15 = 0x8834; + static constexpr const GLenum BLEND_EQUATION_ALPHA = 0x883D; + static constexpr const GLenum MAX_VERTEX_ATTRIBS = 0x8869; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + static constexpr const GLenum MAX_TEXTURE_IMAGE_UNITS = 0x8872; + static constexpr const GLenum FRAGMENT_SHADER = 0x8B30; + static constexpr const GLenum VERTEX_SHADER = 0x8B31; + static constexpr const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + static constexpr const GLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + static constexpr const GLenum MAX_VARYING_FLOATS = 0x8B4B; + static constexpr const GLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + static constexpr const GLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + static constexpr const GLenum SHADER_TYPE = 0x8B4F; + static constexpr const GLenum FLOAT_VEC2 = 0x8B50; + static constexpr const GLenum FLOAT_VEC3 = 0x8B51; + static constexpr const GLenum FLOAT_VEC4 = 0x8B52; + static constexpr const GLenum INT_VEC2 = 0x8B53; + static constexpr const GLenum INT_VEC3 = 0x8B54; + static constexpr const GLenum INT_VEC4 = 0x8B55; + static constexpr const GLenum BOOL = 0x8B56; + static constexpr const GLenum BOOL_VEC2 = 0x8B57; + static constexpr const GLenum BOOL_VEC3 = 0x8B58; + static constexpr const GLenum BOOL_VEC4 = 0x8B59; + static constexpr const GLenum FLOAT_MAT2 = 0x8B5A; + static constexpr const GLenum FLOAT_MAT3 = 0x8B5B; + static constexpr const GLenum FLOAT_MAT4 = 0x8B5C; + static constexpr const GLenum SAMPLER_1D = 0x8B5D; + static constexpr const GLenum SAMPLER_2D = 0x8B5E; + static constexpr const GLenum SAMPLER_3D = 0x8B5F; + static constexpr const GLenum SAMPLER_CUBE = 0x8B60; + static constexpr const GLenum SAMPLER_1D_SHADOW = 0x8B61; + static constexpr const GLenum SAMPLER_2D_SHADOW = 0x8B62; + static constexpr const GLenum DELETE_STATUS = 0x8B80; + static constexpr const GLenum COMPILE_STATUS = 0x8B81; + static constexpr const GLenum LINK_STATUS = 0x8B82; + static constexpr const GLenum VALIDATE_STATUS = 0x8B83; + static constexpr const GLenum INFO_LOG_LENGTH = 0x8B84; + static constexpr const GLenum ATTACHED_SHADERS = 0x8B85; + static constexpr const GLenum ACTIVE_UNIFORMS = 0x8B86; + static constexpr const GLenum ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; + static constexpr const GLenum SHADER_SOURCE_LENGTH = 0x8B88; + static constexpr const GLenum ACTIVE_ATTRIBUTES = 0x8B89; + static constexpr const GLenum ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; + static constexpr const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + static constexpr const GLenum SHADING_LANGUAGE_VERSION = 0x8B8C; + static constexpr const GLenum CURRENT_PROGRAM = 0x8B8D; + static constexpr const GLenum POINT_SPRITE_COORD_ORIGIN = 0x8CA0; + static constexpr const GLenum LOWER_LEFT = 0x8CA1; + static constexpr const GLenum UPPER_LEFT = 0x8CA2; + static constexpr const GLenum STENCIL_BACK_REF = 0x8CA3; + static constexpr const GLenum STENCIL_BACK_VALUE_MASK = 0x8CA4; + static constexpr const GLenum STENCIL_BACK_WRITEMASK = 0x8CA5; + static constexpr const GLenum PIXEL_PACK_BUFFER = 0x88EB; + static constexpr const GLenum PIXEL_UNPACK_BUFFER = 0x88EC; + static constexpr const GLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED; + static constexpr const GLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + static constexpr const GLenum FLOAT_MAT2x3 = 0x8B65; + static constexpr const GLenum FLOAT_MAT2x4 = 0x8B66; + static constexpr const GLenum FLOAT_MAT3x2 = 0x8B67; + static constexpr const GLenum FLOAT_MAT3x4 = 0x8B68; + static constexpr const GLenum FLOAT_MAT4x2 = 0x8B69; + static constexpr const GLenum FLOAT_MAT4x3 = 0x8B6A; + static constexpr const GLenum SRGB = 0x8C40; + static constexpr const GLenum SRGB8 = 0x8C41; + static constexpr const GLenum SRGB_ALPHA = 0x8C42; + static constexpr const GLenum SRGB8_ALPHA8 = 0x8C43; + static constexpr const GLenum COMPRESSED_SRGB = 0x8C48; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA = 0x8C49; + static constexpr const GLenum COMPARE_REF_TO_TEXTURE = 0x884E; + static constexpr const GLenum CLIP_DISTANCE0 = 0x3000; + static constexpr const GLenum CLIP_DISTANCE1 = 0x3001; + static constexpr const GLenum CLIP_DISTANCE2 = 0x3002; + static constexpr const GLenum CLIP_DISTANCE3 = 0x3003; + static constexpr const GLenum CLIP_DISTANCE4 = 0x3004; + static constexpr const GLenum CLIP_DISTANCE5 = 0x3005; + static constexpr const GLenum CLIP_DISTANCE6 = 0x3006; + static constexpr const GLenum CLIP_DISTANCE7 = 0x3007; + static constexpr const GLenum MAX_CLIP_DISTANCES = 0x0D32; + static constexpr const GLenum MAJOR_VERSION = 0x821B; + static constexpr const GLenum MINOR_VERSION = 0x821C; + static constexpr const GLenum NUM_EXTENSIONS = 0x821D; + static constexpr const GLenum CONTEXT_FLAGS = 0x821E; + static constexpr const GLenum COMPRESSED_RED = 0x8225; + static constexpr const GLenum COMPRESSED_RG = 0x8226; + static constexpr const GLenum CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001; + static constexpr const GLenum RGBA32F = 0x8814; + static constexpr const GLenum RGB32F = 0x8815; + static constexpr const GLenum RGBA16F = 0x881A; + static constexpr const GLenum RGB16F = 0x881B; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + static constexpr const GLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + static constexpr const GLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + static constexpr const GLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + static constexpr const GLenum CLAMP_READ_COLOR = 0x891C; + static constexpr const GLenum FIXED_ONLY = 0x891D; + static constexpr const GLenum MAX_VARYING_COMPONENTS = 0x8B4B; + static constexpr const GLenum TEXTURE_1D_ARRAY = 0x8C18; + static constexpr const GLenum PROXY_TEXTURE_1D_ARRAY = 0x8C19; + static constexpr const GLenum TEXTURE_2D_ARRAY = 0x8C1A; + static constexpr const GLenum PROXY_TEXTURE_2D_ARRAY = 0x8C1B; + static constexpr const GLenum TEXTURE_BINDING_1D_ARRAY = 0x8C1C; + static constexpr const GLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + static constexpr const GLenum R11F_G11F_B10F = 0x8C3A; + static constexpr const GLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + static constexpr const GLenum RGB9_E5 = 0x8C3D; + static constexpr const GLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + static constexpr const GLenum TEXTURE_SHARED_SIZE = 0x8C3F; + static constexpr const GLenum TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + static constexpr const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + static constexpr const GLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + static constexpr const GLenum PRIMITIVES_GENERATED = 0x8C87; + static constexpr const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + static constexpr const GLenum RASTERIZER_DISCARD = 0x8C89; + static constexpr const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + static constexpr const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + static constexpr const GLenum INTERLEAVED_ATTRIBS = 0x8C8C; + static constexpr const GLenum SEPARATE_ATTRIBS = 0x8C8D; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + static constexpr const GLenum RGBA32UI = 0x8D70; + static constexpr const GLenum RGB32UI = 0x8D71; + static constexpr const GLenum RGBA16UI = 0x8D76; + static constexpr const GLenum RGB16UI = 0x8D77; + static constexpr const GLenum RGBA8UI = 0x8D7C; + static constexpr const GLenum RGB8UI = 0x8D7D; + static constexpr const GLenum RGBA32I = 0x8D82; + static constexpr const GLenum RGB32I = 0x8D83; + static constexpr const GLenum RGBA16I = 0x8D88; + static constexpr const GLenum RGB16I = 0x8D89; + static constexpr const GLenum RGBA8I = 0x8D8E; + static constexpr const GLenum RGB8I = 0x8D8F; + static constexpr const GLenum RED_INTEGER = 0x8D94; + static constexpr const GLenum GREEN_INTEGER = 0x8D95; + static constexpr const GLenum BLUE_INTEGER = 0x8D96; + static constexpr const GLenum RGB_INTEGER = 0x8D98; + static constexpr const GLenum RGBA_INTEGER = 0x8D99; + static constexpr const GLenum BGR_INTEGER = 0x8D9A; + static constexpr const GLenum BGRA_INTEGER = 0x8D9B; + static constexpr const GLenum SAMPLER_1D_ARRAY = 0x8DC0; + static constexpr const GLenum SAMPLER_2D_ARRAY = 0x8DC1; + static constexpr const GLenum SAMPLER_1D_ARRAY_SHADOW = 0x8DC3; + static constexpr const GLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + static constexpr const GLenum SAMPLER_CUBE_SHADOW = 0x8DC5; + static constexpr const GLenum UNSIGNED_INT_VEC2 = 0x8DC6; + static constexpr const GLenum UNSIGNED_INT_VEC3 = 0x8DC7; + static constexpr const GLenum UNSIGNED_INT_VEC4 = 0x8DC8; + static constexpr const GLenum INT_SAMPLER_1D = 0x8DC9; + static constexpr const GLenum INT_SAMPLER_2D = 0x8DCA; + static constexpr const GLenum INT_SAMPLER_3D = 0x8DCB; + static constexpr const GLenum INT_SAMPLER_CUBE = 0x8DCC; + static constexpr const GLenum INT_SAMPLER_1D_ARRAY = 0x8DCE; + static constexpr const GLenum INT_SAMPLER_2D_ARRAY = 0x8DCF; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_1D = 0x8DD1; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + static constexpr const GLenum QUERY_WAIT = 0x8E13; + static constexpr const GLenum QUERY_NO_WAIT = 0x8E14; + static constexpr const GLenum QUERY_BY_REGION_WAIT = 0x8E15; + static constexpr const GLenum QUERY_BY_REGION_NO_WAIT = 0x8E16; + static constexpr const GLenum BUFFER_ACCESS_FLAGS = 0x911F; + static constexpr const GLenum BUFFER_MAP_LENGTH = 0x9120; + static constexpr const GLenum BUFFER_MAP_OFFSET = 0x9121; + static constexpr const GLenum DEPTH_COMPONENT32F = 0x8CAC; + static constexpr const GLenum DEPTH32F_STENCIL8 = 0x8CAD; + static constexpr const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + static constexpr const GLenum INVALID_FRAMEBUFFER_OPERATION = 0x0506; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + static constexpr const GLenum FRAMEBUFFER_DEFAULT = 0x8218; + static constexpr const GLenum FRAMEBUFFER_UNDEFINED = 0x8219; + static constexpr const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A; + static constexpr const GLenum MAX_RENDERBUFFER_SIZE = 0x84E8; + static constexpr const GLenum DEPTH_STENCIL = 0x84F9; + static constexpr const GLenum UNSIGNED_INT_24_8 = 0x84FA; + static constexpr const GLenum DEPTH24_STENCIL8 = 0x88F0; + static constexpr const GLenum TEXTURE_STENCIL_SIZE = 0x88F1; + static constexpr const GLenum TEXTURE_RED_TYPE = 0x8C10; + static constexpr const GLenum TEXTURE_GREEN_TYPE = 0x8C11; + static constexpr const GLenum TEXTURE_BLUE_TYPE = 0x8C12; + static constexpr const GLenum TEXTURE_ALPHA_TYPE = 0x8C13; + static constexpr const GLenum TEXTURE_DEPTH_TYPE = 0x8C16; + static constexpr const GLenum UNSIGNED_NORMALIZED = 0x8C17; + static constexpr const GLenum FRAMEBUFFER_BINDING = 0x8CA6; + static constexpr const GLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; + static constexpr const GLenum RENDERBUFFER_BINDING = 0x8CA7; + static constexpr const GLenum READ_FRAMEBUFFER = 0x8CA8; + static constexpr const GLenum DRAW_FRAMEBUFFER = 0x8CA9; + static constexpr const GLenum READ_FRAMEBUFFER_BINDING = 0x8CAA; + static constexpr const GLenum RENDERBUFFER_SAMPLES = 0x8CAB; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + static constexpr const GLenum FRAMEBUFFER_COMPLETE = 0x8CD5; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC; + static constexpr const GLenum FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + static constexpr const GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF; + static constexpr const GLenum COLOR_ATTACHMENT0 = 0x8CE0; + static constexpr const GLenum COLOR_ATTACHMENT1 = 0x8CE1; + static constexpr const GLenum COLOR_ATTACHMENT2 = 0x8CE2; + static constexpr const GLenum COLOR_ATTACHMENT3 = 0x8CE3; + static constexpr const GLenum COLOR_ATTACHMENT4 = 0x8CE4; + static constexpr const GLenum COLOR_ATTACHMENT5 = 0x8CE5; + static constexpr const GLenum COLOR_ATTACHMENT6 = 0x8CE6; + static constexpr const GLenum COLOR_ATTACHMENT7 = 0x8CE7; + static constexpr const GLenum COLOR_ATTACHMENT8 = 0x8CE8; + static constexpr const GLenum COLOR_ATTACHMENT9 = 0x8CE9; + static constexpr const GLenum COLOR_ATTACHMENT10 = 0x8CEA; + static constexpr const GLenum COLOR_ATTACHMENT11 = 0x8CEB; + static constexpr const GLenum COLOR_ATTACHMENT12 = 0x8CEC; + static constexpr const GLenum COLOR_ATTACHMENT13 = 0x8CED; + static constexpr const GLenum COLOR_ATTACHMENT14 = 0x8CEE; + static constexpr const GLenum COLOR_ATTACHMENT15 = 0x8CEF; + static constexpr const GLenum COLOR_ATTACHMENT16 = 0x8CF0; + static constexpr const GLenum COLOR_ATTACHMENT17 = 0x8CF1; + static constexpr const GLenum COLOR_ATTACHMENT18 = 0x8CF2; + static constexpr const GLenum COLOR_ATTACHMENT19 = 0x8CF3; + static constexpr const GLenum COLOR_ATTACHMENT20 = 0x8CF4; + static constexpr const GLenum COLOR_ATTACHMENT21 = 0x8CF5; + static constexpr const GLenum COLOR_ATTACHMENT22 = 0x8CF6; + static constexpr const GLenum COLOR_ATTACHMENT23 = 0x8CF7; + static constexpr const GLenum COLOR_ATTACHMENT24 = 0x8CF8; + static constexpr const GLenum COLOR_ATTACHMENT25 = 0x8CF9; + static constexpr const GLenum COLOR_ATTACHMENT26 = 0x8CFA; + static constexpr const GLenum COLOR_ATTACHMENT27 = 0x8CFB; + static constexpr const GLenum COLOR_ATTACHMENT28 = 0x8CFC; + static constexpr const GLenum COLOR_ATTACHMENT29 = 0x8CFD; + static constexpr const GLenum COLOR_ATTACHMENT30 = 0x8CFE; + static constexpr const GLenum COLOR_ATTACHMENT31 = 0x8CFF; + static constexpr const GLenum DEPTH_ATTACHMENT = 0x8D00; + static constexpr const GLenum STENCIL_ATTACHMENT = 0x8D20; + static constexpr const GLenum FRAMEBUFFER = 0x8D40; + static constexpr const GLenum RENDERBUFFER = 0x8D41; + static constexpr const GLenum RENDERBUFFER_WIDTH = 0x8D42; + static constexpr const GLenum RENDERBUFFER_HEIGHT = 0x8D43; + static constexpr const GLenum RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + static constexpr const GLenum STENCIL_INDEX1 = 0x8D46; + static constexpr const GLenum STENCIL_INDEX4 = 0x8D47; + static constexpr const GLenum STENCIL_INDEX8 = 0x8D48; + static constexpr const GLenum STENCIL_INDEX16 = 0x8D49; + static constexpr const GLenum RENDERBUFFER_RED_SIZE = 0x8D50; + static constexpr const GLenum RENDERBUFFER_GREEN_SIZE = 0x8D51; + static constexpr const GLenum RENDERBUFFER_BLUE_SIZE = 0x8D52; + static constexpr const GLenum RENDERBUFFER_ALPHA_SIZE = 0x8D53; + static constexpr const GLenum RENDERBUFFER_DEPTH_SIZE = 0x8D54; + static constexpr const GLenum RENDERBUFFER_STENCIL_SIZE = 0x8D55; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + static constexpr const GLenum MAX_SAMPLES = 0x8D57; + static constexpr const GLenum FRAMEBUFFER_SRGB = 0x8DB9; + static constexpr const GLenum HALF_FLOAT = 0x140B; + static constexpr const GLenum MAP_READ_BIT = 0x0001; + static constexpr const GLenum MAP_WRITE_BIT = 0x0002; + static constexpr const GLenum MAP_INVALIDATE_RANGE_BIT = 0x0004; + static constexpr const GLenum MAP_INVALIDATE_BUFFER_BIT = 0x0008; + static constexpr const GLenum MAP_FLUSH_EXPLICIT_BIT = 0x0010; + static constexpr const GLenum MAP_UNSYNCHRONIZED_BIT = 0x0020; + static constexpr const GLenum COMPRESSED_RED_RGTC1 = 0x8DBB; + static constexpr const GLenum COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC; + static constexpr const GLenum COMPRESSED_RG_RGTC2 = 0x8DBD; + static constexpr const GLenum COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE; + static constexpr const GLenum RG = 0x8227; + static constexpr const GLenum RG_INTEGER = 0x8228; + static constexpr const GLenum R8 = 0x8229; + static constexpr const GLenum R16 = 0x822A; + static constexpr const GLenum RG8 = 0x822B; + static constexpr const GLenum RG16 = 0x822C; + static constexpr const GLenum R16F = 0x822D; + static constexpr const GLenum R32F = 0x822E; + static constexpr const GLenum RG16F = 0x822F; + static constexpr const GLenum RG32F = 0x8230; + static constexpr const GLenum R8I = 0x8231; + static constexpr const GLenum R8UI = 0x8232; + static constexpr const GLenum R16I = 0x8233; + static constexpr const GLenum R16UI = 0x8234; + static constexpr const GLenum R32I = 0x8235; + static constexpr const GLenum R32UI = 0x8236; + static constexpr const GLenum RG8I = 0x8237; + static constexpr const GLenum RG8UI = 0x8238; + static constexpr const GLenum RG16I = 0x8239; + static constexpr const GLenum RG16UI = 0x823A; + static constexpr const GLenum RG32I = 0x823B; + static constexpr const GLenum RG32UI = 0x823C; + static constexpr const GLenum VERTEX_ARRAY_BINDING = 0x85B5; + static constexpr const GLenum SAMPLER_2D_RECT = 0x8B63; + static constexpr const GLenum SAMPLER_2D_RECT_SHADOW = 0x8B64; + static constexpr const GLenum SAMPLER_BUFFER = 0x8DC2; + static constexpr const GLenum INT_SAMPLER_2D_RECT = 0x8DCD; + static constexpr const GLenum INT_SAMPLER_BUFFER = 0x8DD0; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8; + static constexpr const GLenum TEXTURE_BUFFER = 0x8C2A; + static constexpr const GLenum MAX_TEXTURE_BUFFER_SIZE = 0x8C2B; + static constexpr const GLenum TEXTURE_BINDING_BUFFER = 0x8C2C; + static constexpr const GLenum TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D; + static constexpr const GLenum TEXTURE_RECTANGLE = 0x84F5; + static constexpr const GLenum TEXTURE_BINDING_RECTANGLE = 0x84F6; + static constexpr const GLenum PROXY_TEXTURE_RECTANGLE = 0x84F7; + static constexpr const GLenum MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8; + static constexpr const GLenum R8_SNORM = 0x8F94; + static constexpr const GLenum RG8_SNORM = 0x8F95; + static constexpr const GLenum RGB8_SNORM = 0x8F96; + static constexpr const GLenum RGBA8_SNORM = 0x8F97; + static constexpr const GLenum R16_SNORM = 0x8F98; + static constexpr const GLenum RG16_SNORM = 0x8F99; + static constexpr const GLenum RGB16_SNORM = 0x8F9A; + static constexpr const GLenum RGBA16_SNORM = 0x8F9B; + static constexpr const GLenum SIGNED_NORMALIZED = 0x8F9C; + static constexpr const GLenum PRIMITIVE_RESTART = 0x8F9D; + static constexpr const GLenum PRIMITIVE_RESTART_INDEX = 0x8F9E; + static constexpr const GLenum COPY_READ_BUFFER = 0x8F36; + static constexpr const GLenum COPY_WRITE_BUFFER = 0x8F37; + static constexpr const GLenum UNIFORM_BUFFER = 0x8A11; + static constexpr const GLenum UNIFORM_BUFFER_BINDING = 0x8A28; + static constexpr const GLenum UNIFORM_BUFFER_START = 0x8A29; + static constexpr const GLenum UNIFORM_BUFFER_SIZE = 0x8A2A; + static constexpr const GLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + static constexpr const GLenum MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C; + static constexpr const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + static constexpr const GLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + static constexpr const GLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + static constexpr const GLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + static constexpr const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + static constexpr const GLenum MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32; + static constexpr const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + static constexpr const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + static constexpr const GLenum ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35; + static constexpr const GLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36; + static constexpr const GLenum UNIFORM_TYPE = 0x8A37; + static constexpr const GLenum UNIFORM_SIZE = 0x8A38; + static constexpr const GLenum UNIFORM_NAME_LENGTH = 0x8A39; + static constexpr const GLenum UNIFORM_BLOCK_INDEX = 0x8A3A; + static constexpr const GLenum UNIFORM_OFFSET = 0x8A3B; + static constexpr const GLenum UNIFORM_ARRAY_STRIDE = 0x8A3C; + static constexpr const GLenum UNIFORM_MATRIX_STRIDE = 0x8A3D; + static constexpr const GLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E; + static constexpr const GLenum UNIFORM_BLOCK_BINDING = 0x8A3F; + static constexpr const GLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + static constexpr const GLenum UNIFORM_BLOCK_NAME_LENGTH = 0x8A41; + static constexpr const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + static constexpr const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + static constexpr const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + static constexpr const GLenum UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45; + static constexpr const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + static constexpr const GLenum INVALID_INDEX = 0xFFFFFFFFu; + static constexpr const GLenum CONTEXT_CORE_PROFILE_BIT = 0x00000001; + static constexpr const GLenum CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002; + static constexpr const GLenum LINES_ADJACENCY = 0x000A; + static constexpr const GLenum LINE_STRIP_ADJACENCY = 0x000B; + static constexpr const GLenum TRIANGLES_ADJACENCY = 0x000C; + static constexpr const GLenum TRIANGLE_STRIP_ADJACENCY = 0x000D; + static constexpr const GLenum PROGRAM_POINT_SIZE = 0x8642; + static constexpr const GLenum MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8; + static constexpr const GLenum GEOMETRY_SHADER = 0x8DD9; + static constexpr const GLenum GEOMETRY_VERTICES_OUT = 0x8916; + static constexpr const GLenum GEOMETRY_INPUT_TYPE = 0x8917; + static constexpr const GLenum GEOMETRY_OUTPUT_TYPE = 0x8918; + static constexpr const GLenum MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF; + static constexpr const GLenum MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0; + static constexpr const GLenum MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1; + static constexpr const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + static constexpr const GLenum MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123; + static constexpr const GLenum MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124; + static constexpr const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + static constexpr const GLenum CONTEXT_PROFILE_MASK = 0x9126; + static constexpr const GLenum DEPTH_CLAMP = 0x864F; + static constexpr const GLenum QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C; + static constexpr const GLenum FIRST_VERTEX_CONVENTION = 0x8E4D; + static constexpr const GLenum LAST_VERTEX_CONVENTION = 0x8E4E; + static constexpr const GLenum PROVOKING_VERTEX = 0x8E4F; + static constexpr const GLenum TEXTURE_CUBE_MAP_SEAMLESS = 0x884F; + static constexpr const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111; + static constexpr const GLenum OBJECT_TYPE = 0x9112; + static constexpr const GLenum SYNC_CONDITION = 0x9113; + static constexpr const GLenum SYNC_STATUS = 0x9114; + static constexpr const GLenum SYNC_FLAGS = 0x9115; + static constexpr const GLenum SYNC_FENCE = 0x9116; + static constexpr const GLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + static constexpr const GLenum UNSIGNALED = 0x9118; + static constexpr const GLenum SIGNALED = 0x9119; + static constexpr const GLenum ALREADY_SIGNALED = 0x911A; + static constexpr const GLenum TIMEOUT_EXPIRED = 0x911B; + static constexpr const GLenum CONDITION_SATISFIED = 0x911C; + static constexpr const GLenum _WAIT_FAILED = 0x911D; + static constexpr const GLuint64 TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFFull; + static constexpr const GLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + static constexpr const GLenum SAMPLE_POSITION = 0x8E50; + static constexpr const GLenum SAMPLE_MASK = 0x8E51; + static constexpr const GLenum SAMPLE_MASK_VALUE = 0x8E52; + static constexpr const GLenum MAX_SAMPLE_MASK_WORDS = 0x8E59; + static constexpr const GLenum TEXTURE_2D_MULTISAMPLE = 0x9100; + static constexpr const GLenum PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101; + static constexpr const GLenum TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102; + static constexpr const GLenum PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103; + static constexpr const GLenum TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104; + static constexpr const GLenum TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105; + static constexpr const GLenum TEXTURE_SAMPLES = 0x9106; + static constexpr const GLenum TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107; + static constexpr const GLenum SAMPLER_2D_MULTISAMPLE = 0x9108; + static constexpr const GLenum INT_SAMPLER_2D_MULTISAMPLE = 0x9109; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A; + static constexpr const GLenum SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B; + static constexpr const GLenum INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D; + static constexpr const GLenum MAX_COLOR_TEXTURE_SAMPLES = 0x910E; + static constexpr const GLenum MAX_DEPTH_TEXTURE_SAMPLES = 0x910F; + static constexpr const GLenum MAX_INTEGER_SAMPLES = 0x9110; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + static constexpr const GLenum SRC1_COLOR = 0x88F9; + static constexpr const GLenum ONE_MINUS_SRC1_COLOR = 0x88FA; + static constexpr const GLenum ONE_MINUS_SRC1_ALPHA = 0x88FB; + static constexpr const GLenum MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC; + static constexpr const GLenum ANY_SAMPLES_PASSED = 0x8C2F; + static constexpr const GLenum SAMPLER_BINDING = 0x8919; + static constexpr const GLenum RGB10_A2UI = 0x906F; + static constexpr const GLenum TEXTURE_SWIZZLE_R = 0x8E42; + static constexpr const GLenum TEXTURE_SWIZZLE_G = 0x8E43; + static constexpr const GLenum TEXTURE_SWIZZLE_B = 0x8E44; + static constexpr const GLenum TEXTURE_SWIZZLE_A = 0x8E45; + static constexpr const GLenum TEXTURE_SWIZZLE_RGBA = 0x8E46; + static constexpr const GLenum TIME_ELAPSED = 0x88BF; + static constexpr const GLenum TIMESTAMP = 0x8E28; + static constexpr const GLenum INT_2_10_10_10_REV = 0x8D9F; + static constexpr const GLenum SAMPLE_SHADING = 0x8C36; + static constexpr const GLenum MIN_SAMPLE_SHADING_VALUE = 0x8C37; + static constexpr const GLenum MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E; + static constexpr const GLenum MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F; + static constexpr const GLenum TEXTURE_CUBE_MAP_ARRAY = 0x9009; + static constexpr const GLenum TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A; + static constexpr const GLenum PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B; + static constexpr const GLenum SAMPLER_CUBE_MAP_ARRAY = 0x900C; + static constexpr const GLenum SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D; + static constexpr const GLenum INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E; + static constexpr const GLenum UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F; + static constexpr const GLenum DRAW_INDIRECT_BUFFER = 0x8F3F; + static constexpr const GLenum DRAW_INDIRECT_BUFFER_BINDING = 0x8F43; + static constexpr const GLenum GEOMETRY_SHADER_INVOCATIONS = 0x887F; + static constexpr const GLenum MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A; + static constexpr const GLenum MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B; + static constexpr const GLenum MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C; + static constexpr const GLenum FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D; + static constexpr const GLenum MAX_VERTEX_STREAMS = 0x8E71; + static constexpr const GLenum DOUBLE_VEC2 = 0x8FFC; + static constexpr const GLenum DOUBLE_VEC3 = 0x8FFD; + static constexpr const GLenum DOUBLE_VEC4 = 0x8FFE; + static constexpr const GLenum DOUBLE_MAT2 = 0x8F46; + static constexpr const GLenum DOUBLE_MAT3 = 0x8F47; + static constexpr const GLenum DOUBLE_MAT4 = 0x8F48; + static constexpr const GLenum DOUBLE_MAT2x3 = 0x8F49; + static constexpr const GLenum DOUBLE_MAT2x4 = 0x8F4A; + static constexpr const GLenum DOUBLE_MAT3x2 = 0x8F4B; + static constexpr const GLenum DOUBLE_MAT3x4 = 0x8F4C; + static constexpr const GLenum DOUBLE_MAT4x2 = 0x8F4D; + static constexpr const GLenum DOUBLE_MAT4x3 = 0x8F4E; + static constexpr const GLenum ACTIVE_SUBROUTINES = 0x8DE5; + static constexpr const GLenum ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6; + static constexpr const GLenum ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47; + static constexpr const GLenum ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48; + static constexpr const GLenum ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49; + static constexpr const GLenum MAX_SUBROUTINES = 0x8DE7; + static constexpr const GLenum MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8; + static constexpr const GLenum NUM_COMPATIBLE_SUBROUTINES = 0x8E4A; + static constexpr const GLenum COMPATIBLE_SUBROUTINES = 0x8E4B; + static constexpr const GLenum PATCHES = 0x000E; + static constexpr const GLenum PATCH_VERTICES = 0x8E72; + static constexpr const GLenum PATCH_DEFAULT_INNER_LEVEL = 0x8E73; + static constexpr const GLenum PATCH_DEFAULT_OUTER_LEVEL = 0x8E74; + static constexpr const GLenum TESS_CONTROL_OUTPUT_VERTICES = 0x8E75; + static constexpr const GLenum TESS_GEN_MODE = 0x8E76; + static constexpr const GLenum TESS_GEN_SPACING = 0x8E77; + static constexpr const GLenum TESS_GEN_VERTEX_ORDER = 0x8E78; + static constexpr const GLenum TESS_GEN_POINT_MODE = 0x8E79; + static constexpr const GLenum ISOLINES = 0x8E7A; + static constexpr const GLenum FRACTIONAL_ODD = 0x8E7B; + static constexpr const GLenum FRACTIONAL_EVEN = 0x8E7C; + static constexpr const GLenum MAX_PATCH_VERTICES = 0x8E7D; + static constexpr const GLenum MAX_TESS_GEN_LEVEL = 0x8E7E; + static constexpr const GLenum MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F; + static constexpr const GLenum MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80; + static constexpr const GLenum MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81; + static constexpr const GLenum MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82; + static constexpr const GLenum MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83; + static constexpr const GLenum MAX_TESS_PATCH_COMPONENTS = 0x8E84; + static constexpr const GLenum MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85; + static constexpr const GLenum MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86; + static constexpr const GLenum MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89; + static constexpr const GLenum MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A; + static constexpr const GLenum MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C; + static constexpr const GLenum MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D; + static constexpr const GLenum MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E; + static constexpr const GLenum MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F; + static constexpr const GLenum UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0; + static constexpr const GLenum UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1; + static constexpr const GLenum TESS_EVALUATION_SHADER = 0x8E87; + static constexpr const GLenum TESS_CONTROL_SHADER = 0x8E88; + static constexpr const GLenum TRANSFORM_FEEDBACK = 0x8E22; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24; + static constexpr const GLenum TRANSFORM_FEEDBACK_BINDING = 0x8E25; + static constexpr const GLenum MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70; + static constexpr const GLenum FIXED = 0x140C; + static constexpr const GLenum IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; + static constexpr const GLenum IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + static constexpr const GLenum LOW_FLOAT = 0x8DF0; + static constexpr const GLenum MEDIUM_FLOAT = 0x8DF1; + static constexpr const GLenum HIGH_FLOAT = 0x8DF2; + static constexpr const GLenum LOW_INT = 0x8DF3; + static constexpr const GLenum MEDIUM_INT = 0x8DF4; + static constexpr const GLenum HIGH_INT = 0x8DF5; + static constexpr const GLenum SHADER_COMPILER = 0x8DFA; + static constexpr const GLenum SHADER_BINARY_FORMATS = 0x8DF8; + static constexpr const GLenum NUM_SHADER_BINARY_FORMATS = 0x8DF9; + static constexpr const GLenum MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; + static constexpr const GLenum MAX_VARYING_VECTORS = 0x8DFC; + static constexpr const GLenum MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; + static constexpr const GLenum RGB565 = 0x8D62; + static constexpr const GLenum PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257; + static constexpr const GLenum PROGRAM_BINARY_LENGTH = 0x8741; + static constexpr const GLenum NUM_PROGRAM_BINARY_FORMATS = 0x87FE; + static constexpr const GLenum PROGRAM_BINARY_FORMATS = 0x87FF; + static constexpr const GLenum VERTEX_SHADER_BIT = 0x00000001; + static constexpr const GLenum FRAGMENT_SHADER_BIT = 0x00000002; + static constexpr const GLenum GEOMETRY_SHADER_BIT = 0x00000004; + static constexpr const GLenum TESS_CONTROL_SHADER_BIT = 0x00000008; + static constexpr const GLenum TESS_EVALUATION_SHADER_BIT = 0x00000010; + static constexpr const GLenum ALL_SHADER_BITS = 0xFFFFFFFF; + static constexpr const GLenum PROGRAM_SEPARABLE = 0x8258; + static constexpr const GLenum ACTIVE_PROGRAM = 0x8259; + static constexpr const GLenum PROGRAM_PIPELINE_BINDING = 0x825A; + static constexpr const GLenum MAX_VIEWPORTS = 0x825B; + static constexpr const GLenum VIEWPORT_SUBPIXEL_BITS = 0x825C; + static constexpr const GLenum VIEWPORT_BOUNDS_RANGE = 0x825D; + static constexpr const GLenum LAYER_PROVOKING_VERTEX = 0x825E; + static constexpr const GLenum VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F; + static constexpr const GLenum UNDEFINED_VERTEX = 0x8260; + static constexpr const GLenum COPY_READ_BUFFER_BINDING = 0x8F36; + static constexpr const GLenum COPY_WRITE_BUFFER_BINDING = 0x8F37; + static constexpr const GLenum TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; + static constexpr const GLenum TRANSFORM_FEEDBACK_PAUSED = 0x8E23; + static constexpr const GLenum UNPACK_COMPRESSED_BLOCK_WIDTH = 0x9127; + static constexpr const GLenum UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x9128; + static constexpr const GLenum UNPACK_COMPRESSED_BLOCK_DEPTH = 0x9129; + static constexpr const GLenum UNPACK_COMPRESSED_BLOCK_SIZE = 0x912A; + static constexpr const GLenum PACK_COMPRESSED_BLOCK_WIDTH = 0x912B; + static constexpr const GLenum PACK_COMPRESSED_BLOCK_HEIGHT = 0x912C; + static constexpr const GLenum PACK_COMPRESSED_BLOCK_DEPTH = 0x912D; + static constexpr const GLenum PACK_COMPRESSED_BLOCK_SIZE = 0x912E; + static constexpr const GLenum NUM_SAMPLE_COUNTS = 0x9380; + static constexpr const GLenum MIN_MAP_BUFFER_ALIGNMENT = 0x90BC; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER = 0x92C0; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_BINDING = 0x92C1; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_START = 0x92C2; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_SIZE = 0x92C3; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x92C4; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x92C5; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x92C6; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x92C7; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x92C8; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x92CA; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x92CB; + static constexpr const GLenum MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC; + static constexpr const GLenum MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD; + static constexpr const GLenum MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE; + static constexpr const GLenum MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF; + static constexpr const GLenum MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0; + static constexpr const GLenum MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x92D1; + static constexpr const GLenum MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2; + static constexpr const GLenum MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3; + static constexpr const GLenum MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4; + static constexpr const GLenum MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5; + static constexpr const GLenum MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6; + static constexpr const GLenum MAX_COMBINED_ATOMIC_COUNTERS = 0x92D7; + static constexpr const GLenum MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x92D8; + static constexpr const GLenum MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x92DC; + static constexpr const GLenum ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9; + static constexpr const GLenum UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA; + static constexpr const GLenum UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001; + static constexpr const GLenum ELEMENT_ARRAY_BARRIER_BIT = 0x00000002; + static constexpr const GLenum UNIFORM_BARRIER_BIT = 0x00000004; + static constexpr const GLenum TEXTURE_FETCH_BARRIER_BIT = 0x00000008; + static constexpr const GLenum SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020; + static constexpr const GLenum COMMAND_BARRIER_BIT = 0x00000040; + static constexpr const GLenum PIXEL_BUFFER_BARRIER_BIT = 0x00000080; + static constexpr const GLenum TEXTURE_UPDATE_BARRIER_BIT = 0x00000100; + static constexpr const GLenum BUFFER_UPDATE_BARRIER_BIT = 0x00000200; + static constexpr const GLenum FRAMEBUFFER_BARRIER_BIT = 0x00000400; + static constexpr const GLenum TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800; + static constexpr const GLenum ATOMIC_COUNTER_BARRIER_BIT = 0x00001000; + static constexpr const GLenum ALL_BARRIER_BITS = 0xFFFFFFFF; + static constexpr const GLenum MAX_IMAGE_UNITS = 0x8F38; + static constexpr const GLenum MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39; + static constexpr const GLenum IMAGE_BINDING_NAME = 0x8F3A; + static constexpr const GLenum IMAGE_BINDING_LEVEL = 0x8F3B; + static constexpr const GLenum IMAGE_BINDING_LAYERED = 0x8F3C; + static constexpr const GLenum IMAGE_BINDING_LAYER = 0x8F3D; + static constexpr const GLenum IMAGE_BINDING_ACCESS = 0x8F3E; + static constexpr const GLenum IMAGE_1D = 0x904C; + static constexpr const GLenum IMAGE_2D = 0x904D; + static constexpr const GLenum IMAGE_3D = 0x904E; + static constexpr const GLenum IMAGE_2D_RECT = 0x904F; + static constexpr const GLenum IMAGE_CUBE = 0x9050; + static constexpr const GLenum IMAGE_BUFFER = 0x9051; + static constexpr const GLenum IMAGE_1D_ARRAY = 0x9052; + static constexpr const GLenum IMAGE_2D_ARRAY = 0x9053; + static constexpr const GLenum IMAGE_CUBE_MAP_ARRAY = 0x9054; + static constexpr const GLenum IMAGE_2D_MULTISAMPLE = 0x9055; + static constexpr const GLenum IMAGE_2D_MULTISAMPLE_ARRAY = 0x9056; + static constexpr const GLenum INT_IMAGE_1D = 0x9057; + static constexpr const GLenum INT_IMAGE_2D = 0x9058; + static constexpr const GLenum INT_IMAGE_3D = 0x9059; + static constexpr const GLenum INT_IMAGE_2D_RECT = 0x905A; + static constexpr const GLenum INT_IMAGE_CUBE = 0x905B; + static constexpr const GLenum INT_IMAGE_BUFFER = 0x905C; + static constexpr const GLenum INT_IMAGE_1D_ARRAY = 0x905D; + static constexpr const GLenum INT_IMAGE_2D_ARRAY = 0x905E; + static constexpr const GLenum INT_IMAGE_CUBE_MAP_ARRAY = 0x905F; + static constexpr const GLenum INT_IMAGE_2D_MULTISAMPLE = 0x9060; + static constexpr const GLenum INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9061; + static constexpr const GLenum UNSIGNED_INT_IMAGE_1D = 0x9062; + static constexpr const GLenum UNSIGNED_INT_IMAGE_2D = 0x9063; + static constexpr const GLenum UNSIGNED_INT_IMAGE_3D = 0x9064; + static constexpr const GLenum UNSIGNED_INT_IMAGE_2D_RECT = 0x9065; + static constexpr const GLenum UNSIGNED_INT_IMAGE_CUBE = 0x9066; + static constexpr const GLenum UNSIGNED_INT_IMAGE_BUFFER = 0x9067; + static constexpr const GLenum UNSIGNED_INT_IMAGE_1D_ARRAY = 0x9068; + static constexpr const GLenum UNSIGNED_INT_IMAGE_2D_ARRAY = 0x9069; + static constexpr const GLenum UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x906A; + static constexpr const GLenum UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x906B; + static constexpr const GLenum UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x906C; + static constexpr const GLenum MAX_IMAGE_SAMPLES = 0x906D; + static constexpr const GLenum IMAGE_BINDING_FORMAT = 0x906E; + static constexpr const GLenum IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7; + static constexpr const GLenum IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x90C8; + static constexpr const GLenum IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x90C9; + static constexpr const GLenum MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA; + static constexpr const GLenum MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB; + static constexpr const GLenum MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC; + static constexpr const GLenum MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD; + static constexpr const GLenum MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE; + static constexpr const GLenum MAX_COMBINED_IMAGE_UNIFORMS = 0x90CF; + static constexpr const GLenum COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D; + static constexpr const GLenum COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E; + static constexpr const GLenum COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F; + static constexpr const GLenum TEXTURE_IMMUTABLE_FORMAT = 0x912F; + static constexpr const GLenum NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9; + static constexpr const GLenum VERTEX_ATTRIB_ARRAY_LONG = 0x874E; + static constexpr const GLenum COMPRESSED_RGB8_ETC2 = 0x9274; + static constexpr const GLenum COMPRESSED_SRGB8_ETC2 = 0x9275; + static constexpr const GLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; + static constexpr const GLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; + static constexpr const GLenum COMPRESSED_RGBA8_ETC2_EAC = 0x9278; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; + static constexpr const GLenum COMPRESSED_R11_EAC = 0x9270; + static constexpr const GLenum COMPRESSED_SIGNED_R11_EAC = 0x9271; + static constexpr const GLenum COMPRESSED_RG11_EAC = 0x9272; + static constexpr const GLenum COMPRESSED_SIGNED_RG11_EAC = 0x9273; + static constexpr const GLenum PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69; + static constexpr const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; + static constexpr const GLenum MAX_ELEMENT_INDEX = 0x8D6B; + static constexpr const GLenum COMPUTE_SHADER = 0x91B9; + static constexpr const GLenum MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB; + static constexpr const GLenum MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC; + static constexpr const GLenum MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD; + static constexpr const GLenum MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262; + static constexpr const GLenum MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263; + static constexpr const GLenum MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264; + static constexpr const GLenum MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265; + static constexpr const GLenum MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266; + static constexpr const GLenum MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB; + static constexpr const GLenum MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE; + static constexpr const GLenum MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF; + static constexpr const GLenum COMPUTE_WORK_GROUP_SIZE = 0x8267; + static constexpr const GLenum UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED; + static constexpr const GLenum DISPATCH_INDIRECT_BUFFER = 0x90EE; + static constexpr const GLenum DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF; + static constexpr const GLenum COMPUTE_SHADER_BIT = 0x00000020; + static constexpr const GLenum DEBUG_OUTPUT_SYNCHRONOUS = 0x8242; + static constexpr const GLenum DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243; + static constexpr const GLenum DEBUG_CALLBACK_FUNCTION = 0x8244; + static constexpr const GLenum DEBUG_CALLBACK_USER_PARAM = 0x8245; + static constexpr const GLenum DEBUG_SOURCE_API = 0x8246; + static constexpr const GLenum DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247; + static constexpr const GLenum DEBUG_SOURCE_SHADER_COMPILER = 0x8248; + static constexpr const GLenum DEBUG_SOURCE_THIRD_PARTY = 0x8249; + static constexpr const GLenum DEBUG_SOURCE_APPLICATION = 0x824A; + static constexpr const GLenum DEBUG_SOURCE_OTHER = 0x824B; + static constexpr const GLenum DEBUG_TYPE_ERROR = 0x824C; + static constexpr const GLenum DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D; + static constexpr const GLenum DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824E; + static constexpr const GLenum DEBUG_TYPE_PORTABILITY = 0x824F; + static constexpr const GLenum DEBUG_TYPE_PERFORMANCE = 0x8250; + static constexpr const GLenum DEBUG_TYPE_OTHER = 0x8251; + static constexpr const GLenum MAX_DEBUG_MESSAGE_LENGTH = 0x9143; + static constexpr const GLenum MAX_DEBUG_LOGGED_MESSAGES = 0x9144; + static constexpr const GLenum DEBUG_LOGGED_MESSAGES = 0x9145; + static constexpr const GLenum DEBUG_SEVERITY_HIGH = 0x9146; + static constexpr const GLenum DEBUG_SEVERITY_MEDIUM = 0x9147; + static constexpr const GLenum DEBUG_SEVERITY_LOW = 0x9148; + static constexpr const GLenum DEBUG_TYPE_MARKER = 0x8268; + static constexpr const GLenum DEBUG_TYPE_PUSH_GROUP = 0x8269; + static constexpr const GLenum DEBUG_TYPE_POP_GROUP = 0x826A; + static constexpr const GLenum DEBUG_SEVERITY_NOTIFICATION = 0x826B; + static constexpr const GLenum MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C; + static constexpr const GLenum DEBUG_GROUP_STACK_DEPTH = 0x826D; + static constexpr const GLenum BUFFER = 0x82E0; + static constexpr const GLenum SHADER = 0x82E1; + static constexpr const GLenum PROGRAM = 0x82E2; + static constexpr const GLenum QUERY = 0x82E3; + static constexpr const GLenum PROGRAM_PIPELINE = 0x82E4; + static constexpr const GLenum SAMPLER = 0x82E6; + static constexpr const GLenum MAX_LABEL_LENGTH = 0x82E8; + static constexpr const GLenum DEBUG_OUTPUT = 0x92E0; + static constexpr const GLenum CONTEXT_FLAG_DEBUG_BIT = 0x00000002; + static constexpr const GLenum MAX_UNIFORM_LOCATIONS = 0x826E; + static constexpr const GLenum FRAMEBUFFER_DEFAULT_WIDTH = 0x9310; + static constexpr const GLenum FRAMEBUFFER_DEFAULT_HEIGHT = 0x9311; + static constexpr const GLenum FRAMEBUFFER_DEFAULT_LAYERS = 0x9312; + static constexpr const GLenum FRAMEBUFFER_DEFAULT_SAMPLES = 0x9313; + static constexpr const GLenum FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314; + static constexpr const GLenum MAX_FRAMEBUFFER_WIDTH = 0x9315; + static constexpr const GLenum MAX_FRAMEBUFFER_HEIGHT = 0x9316; + static constexpr const GLenum MAX_FRAMEBUFFER_LAYERS = 0x9317; + static constexpr const GLenum MAX_FRAMEBUFFER_SAMPLES = 0x9318; + static constexpr const GLenum INTERNALFORMAT_SUPPORTED = 0x826F; + static constexpr const GLenum INTERNALFORMAT_PREFERRED = 0x8270; + static constexpr const GLenum INTERNALFORMAT_RED_SIZE = 0x8271; + static constexpr const GLenum INTERNALFORMAT_GREEN_SIZE = 0x8272; + static constexpr const GLenum INTERNALFORMAT_BLUE_SIZE = 0x8273; + static constexpr const GLenum INTERNALFORMAT_ALPHA_SIZE = 0x8274; + static constexpr const GLenum INTERNALFORMAT_DEPTH_SIZE = 0x8275; + static constexpr const GLenum INTERNALFORMAT_STENCIL_SIZE = 0x8276; + static constexpr const GLenum INTERNALFORMAT_SHARED_SIZE = 0x8277; + static constexpr const GLenum INTERNALFORMAT_RED_TYPE = 0x8278; + static constexpr const GLenum INTERNALFORMAT_GREEN_TYPE = 0x8279; + static constexpr const GLenum INTERNALFORMAT_BLUE_TYPE = 0x827A; + static constexpr const GLenum INTERNALFORMAT_ALPHA_TYPE = 0x827B; + static constexpr const GLenum INTERNALFORMAT_DEPTH_TYPE = 0x827C; + static constexpr const GLenum INTERNALFORMAT_STENCIL_TYPE = 0x827D; + static constexpr const GLenum MAX_WIDTH = 0x827E; + static constexpr const GLenum MAX_HEIGHT = 0x827F; + static constexpr const GLenum MAX_DEPTH = 0x8280; + static constexpr const GLenum MAX_LAYERS = 0x8281; + static constexpr const GLenum MAX_COMBINED_DIMENSIONS = 0x8282; + static constexpr const GLenum COLOR_COMPONENTS = 0x8283; + static constexpr const GLenum DEPTH_COMPONENTS = 0x8284; + static constexpr const GLenum STENCIL_COMPONENTS = 0x8285; + static constexpr const GLenum COLOR_RENDERABLE = 0x8286; + static constexpr const GLenum DEPTH_RENDERABLE = 0x8287; + static constexpr const GLenum STENCIL_RENDERABLE = 0x8288; + static constexpr const GLenum FRAMEBUFFER_RENDERABLE = 0x8289; + static constexpr const GLenum FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A; + static constexpr const GLenum FRAMEBUFFER_BLEND = 0x828B; + static constexpr const GLenum READ_PIXELS = 0x828C; + static constexpr const GLenum READ_PIXELS_FORMAT = 0x828D; + static constexpr const GLenum READ_PIXELS_TYPE = 0x828E; + static constexpr const GLenum TEXTURE_IMAGE_FORMAT = 0x828F; + static constexpr const GLenum TEXTURE_IMAGE_TYPE = 0x8290; + static constexpr const GLenum GET_TEXTURE_IMAGE_FORMAT = 0x8291; + static constexpr const GLenum GET_TEXTURE_IMAGE_TYPE = 0x8292; + static constexpr const GLenum MIPMAP = 0x8293; + static constexpr const GLenum MANUAL_GENERATE_MIPMAP = 0x8294; + static constexpr const GLenum AUTO_GENERATE_MIPMAP = 0x8295; + static constexpr const GLenum COLOR_ENCODING = 0x8296; + static constexpr const GLenum SRGB_READ = 0x8297; + static constexpr const GLenum SRGB_WRITE = 0x8298; + static constexpr const GLenum FILTER = 0x829A; + static constexpr const GLenum VERTEX_TEXTURE = 0x829B; + static constexpr const GLenum TESS_CONTROL_TEXTURE = 0x829C; + static constexpr const GLenum TESS_EVALUATION_TEXTURE = 0x829D; + static constexpr const GLenum GEOMETRY_TEXTURE = 0x829E; + static constexpr const GLenum FRAGMENT_TEXTURE = 0x829F; + static constexpr const GLenum COMPUTE_TEXTURE = 0x82A0; + static constexpr const GLenum TEXTURE_SHADOW = 0x82A1; + static constexpr const GLenum TEXTURE_GATHER = 0x82A2; + static constexpr const GLenum TEXTURE_GATHER_SHADOW = 0x82A3; + static constexpr const GLenum SHADER_IMAGE_LOAD = 0x82A4; + static constexpr const GLenum SHADER_IMAGE_STORE = 0x82A5; + static constexpr const GLenum SHADER_IMAGE_ATOMIC = 0x82A6; + static constexpr const GLenum IMAGE_TEXEL_SIZE = 0x82A7; + static constexpr const GLenum IMAGE_COMPATIBILITY_CLASS = 0x82A8; + static constexpr const GLenum IMAGE_PIXEL_FORMAT = 0x82A9; + static constexpr const GLenum IMAGE_PIXEL_TYPE = 0x82AA; + static constexpr const GLenum SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC; + static constexpr const GLenum SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD; + static constexpr const GLenum SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE; + static constexpr const GLenum SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF; + static constexpr const GLenum TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1; + static constexpr const GLenum TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2; + static constexpr const GLenum TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3; + static constexpr const GLenum CLEAR_BUFFER = 0x82B4; + static constexpr const GLenum TEXTURE_VIEW = 0x82B5; + static constexpr const GLenum VIEW_COMPATIBILITY_CLASS = 0x82B6; + static constexpr const GLenum FULL_SUPPORT = 0x82B7; + static constexpr const GLenum CAVEAT_SUPPORT = 0x82B8; + static constexpr const GLenum IMAGE_CLASS_4_X_32 = 0x82B9; + static constexpr const GLenum IMAGE_CLASS_2_X_32 = 0x82BA; + static constexpr const GLenum IMAGE_CLASS_1_X_32 = 0x82BB; + static constexpr const GLenum IMAGE_CLASS_4_X_16 = 0x82BC; + static constexpr const GLenum IMAGE_CLASS_2_X_16 = 0x82BD; + static constexpr const GLenum IMAGE_CLASS_1_X_16 = 0x82BE; + static constexpr const GLenum IMAGE_CLASS_4_X_8 = 0x82BF; + static constexpr const GLenum IMAGE_CLASS_2_X_8 = 0x82C0; + static constexpr const GLenum IMAGE_CLASS_1_X_8 = 0x82C1; + static constexpr const GLenum IMAGE_CLASS_11_11_10 = 0x82C2; + static constexpr const GLenum IMAGE_CLASS_10_10_10_2 = 0x82C3; + static constexpr const GLenum VIEW_CLASS_128_BITS = 0x82C4; + static constexpr const GLenum VIEW_CLASS_96_BITS = 0x82C5; + static constexpr const GLenum VIEW_CLASS_64_BITS = 0x82C6; + static constexpr const GLenum VIEW_CLASS_48_BITS = 0x82C7; + static constexpr const GLenum VIEW_CLASS_32_BITS = 0x82C8; + static constexpr const GLenum VIEW_CLASS_24_BITS = 0x82C9; + static constexpr const GLenum VIEW_CLASS_16_BITS = 0x82CA; + static constexpr const GLenum VIEW_CLASS_8_BITS = 0x82CB; + static constexpr const GLenum VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC; + static constexpr const GLenum VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD; + static constexpr const GLenum VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE; + static constexpr const GLenum VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF; + static constexpr const GLenum VIEW_CLASS_RGTC1_RED = 0x82D0; + static constexpr const GLenum VIEW_CLASS_RGTC2_RG = 0x82D1; + static constexpr const GLenum VIEW_CLASS_BPTC_UNORM = 0x82D2; + static constexpr const GLenum VIEW_CLASS_BPTC_FLOAT = 0x82D3; + static constexpr const GLenum UNIFORM = 0x92E1; + static constexpr const GLenum UNIFORM_BLOCK = 0x92E2; + static constexpr const GLenum PROGRAM_INPUT = 0x92E3; + static constexpr const GLenum PROGRAM_OUTPUT = 0x92E4; + static constexpr const GLenum BUFFER_VARIABLE = 0x92E5; + static constexpr const GLenum SHADER_STORAGE_BLOCK = 0x92E6; + static constexpr const GLenum VERTEX_SUBROUTINE = 0x92E8; + static constexpr const GLenum TESS_CONTROL_SUBROUTINE = 0x92E9; + static constexpr const GLenum TESS_EVALUATION_SUBROUTINE = 0x92EA; + static constexpr const GLenum GEOMETRY_SUBROUTINE = 0x92EB; + static constexpr const GLenum FRAGMENT_SUBROUTINE = 0x92EC; + static constexpr const GLenum COMPUTE_SUBROUTINE = 0x92ED; + static constexpr const GLenum VERTEX_SUBROUTINE_UNIFORM = 0x92EE; + static constexpr const GLenum TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF; + static constexpr const GLenum TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0; + static constexpr const GLenum GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1; + static constexpr const GLenum FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2; + static constexpr const GLenum COMPUTE_SUBROUTINE_UNIFORM = 0x92F3; + static constexpr const GLenum TRANSFORM_FEEDBACK_VARYING = 0x92F4; + static constexpr const GLenum ACTIVE_RESOURCES = 0x92F5; + static constexpr const GLenum MAX_NAME_LENGTH = 0x92F6; + static constexpr const GLenum MAX_NUM_ACTIVE_VARIABLES = 0x92F7; + static constexpr const GLenum MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8; + static constexpr const GLenum NAME_LENGTH = 0x92F9; + static constexpr const GLenum TYPE = 0x92FA; + static constexpr const GLenum ARRAY_SIZE = 0x92FB; + static constexpr const GLenum OFFSET = 0x92FC; + static constexpr const GLenum BLOCK_INDEX = 0x92FD; + static constexpr const GLenum ARRAY_STRIDE = 0x92FE; + static constexpr const GLenum MATRIX_STRIDE = 0x92FF; + static constexpr const GLenum IS_ROW_MAJOR = 0x9300; + static constexpr const GLenum ATOMIC_COUNTER_BUFFER_INDEX = 0x9301; + static constexpr const GLenum BUFFER_BINDING = 0x9302; + static constexpr const GLenum BUFFER_DATA_SIZE = 0x9303; + static constexpr const GLenum NUM_ACTIVE_VARIABLES = 0x9304; + static constexpr const GLenum ACTIVE_VARIABLES = 0x9305; + static constexpr const GLenum REFERENCED_BY_VERTEX_SHADER = 0x9306; + static constexpr const GLenum REFERENCED_BY_TESS_CONTROL_SHADER = 0x9307; + static constexpr const GLenum REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308; + static constexpr const GLenum REFERENCED_BY_GEOMETRY_SHADER = 0x9309; + static constexpr const GLenum REFERENCED_BY_FRAGMENT_SHADER = 0x930A; + static constexpr const GLenum REFERENCED_BY_COMPUTE_SHADER = 0x930B; + static constexpr const GLenum TOP_LEVEL_ARRAY_SIZE = 0x930C; + static constexpr const GLenum TOP_LEVEL_ARRAY_STRIDE = 0x930D; + static constexpr const GLenum LOCATION = 0x930E; + static constexpr const GLenum LOCATION_INDEX = 0x930F; + static constexpr const GLenum IS_PER_PATCH = 0x92E7; + static constexpr const GLenum SHADER_STORAGE_BUFFER = 0x90D2; + static constexpr const GLenum SHADER_STORAGE_BUFFER_BINDING = 0x90D3; + static constexpr const GLenum SHADER_STORAGE_BUFFER_START = 0x90D4; + static constexpr const GLenum SHADER_STORAGE_BUFFER_SIZE = 0x90D5; + static constexpr const GLenum MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6; + static constexpr const GLenum MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7; + static constexpr const GLenum MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8; + static constexpr const GLenum MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9; + static constexpr const GLenum MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA; + static constexpr const GLenum MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB; + static constexpr const GLenum MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC; + static constexpr const GLenum MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD; + static constexpr const GLenum MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE; + static constexpr const GLenum SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF; + static constexpr const GLenum SHADER_STORAGE_BARRIER_BIT = 0x00002000; + static constexpr const GLenum MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39; + static constexpr const GLenum DEPTH_STENCIL_TEXTURE_MODE = 0x90EA; + static constexpr const GLenum TEXTURE_BUFFER_OFFSET = 0x919D; + static constexpr const GLenum TEXTURE_BUFFER_SIZE = 0x919E; + static constexpr const GLenum TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F; + static constexpr const GLenum TEXTURE_VIEW_MIN_LEVEL = 0x82DB; + static constexpr const GLenum TEXTURE_VIEW_NUM_LEVELS = 0x82DC; + static constexpr const GLenum TEXTURE_VIEW_MIN_LAYER = 0x82DD; + static constexpr const GLenum TEXTURE_VIEW_NUM_LAYERS = 0x82DE; + static constexpr const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF; + static constexpr const GLenum VERTEX_ATTRIB_BINDING = 0x82D4; + static constexpr const GLenum VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5; + static constexpr const GLenum VERTEX_BINDING_DIVISOR = 0x82D6; + static constexpr const GLenum VERTEX_BINDING_OFFSET = 0x82D7; + static constexpr const GLenum VERTEX_BINDING_STRIDE = 0x82D8; + static constexpr const GLenum MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9; + static constexpr const GLenum MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA; + static constexpr const GLenum VERTEX_BINDING_BUFFER = 0x8F4F; + static constexpr const GLenum MAX_VERTEX_ATTRIB_STRIDE = 0x82E5; + static constexpr const GLenum PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221; + static constexpr const GLenum TEXTURE_BUFFER_BINDING = 0x8C2A; + static constexpr const GLenum MAP_PERSISTENT_BIT = 0x0040; + static constexpr const GLenum MAP_COHERENT_BIT = 0x0080; + static constexpr const GLenum DYNAMIC_STORAGE_BIT = 0x0100; + static constexpr const GLenum CLIENT_STORAGE_BIT = 0x0200; + static constexpr const GLenum CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000; + static constexpr const GLenum BUFFER_IMMUTABLE_STORAGE = 0x821F; + static constexpr const GLenum BUFFER_STORAGE_FLAGS = 0x8220; + static constexpr const GLenum CLEAR_TEXTURE = 0x9365; + static constexpr const GLenum LOCATION_COMPONENT = 0x934A; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B; + static constexpr const GLenum TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C; + static constexpr const GLenum QUERY_BUFFER = 0x9192; + static constexpr const GLenum QUERY_BUFFER_BARRIER_BIT = 0x00008000; + static constexpr const GLenum QUERY_BUFFER_BINDING = 0x9193; + static constexpr const GLenum QUERY_RESULT_NO_WAIT = 0x9194; + static constexpr const GLenum MIRROR_CLAMP_TO_EDGE = 0x8743; + static constexpr const GLenum CONTEXT_LOST = 0x0507; + static constexpr const GLenum NEGATIVE_ONE_TO_ONE = 0x935E; + static constexpr const GLenum ZERO_TO_ONE = 0x935F; + static constexpr const GLenum CLIP_ORIGIN = 0x935C; + static constexpr const GLenum CLIP_DEPTH_MODE = 0x935D; + static constexpr const GLenum QUERY_WAIT_INVERTED = 0x8E17; + static constexpr const GLenum QUERY_NO_WAIT_INVERTED = 0x8E18; + static constexpr const GLenum QUERY_BY_REGION_WAIT_INVERTED = 0x8E19; + static constexpr const GLenum QUERY_BY_REGION_NO_WAIT_INVERTED = 0x8E1A; + static constexpr const GLenum MAX_CULL_DISTANCES = 0x82F9; + static constexpr const GLenum MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA; + static constexpr const GLenum TEXTURE_TARGET = 0x1006; + static constexpr const GLenum QUERY_TARGET = 0x82EA; + static constexpr const GLenum GUILTY_CONTEXT_RESET = 0x8253; + static constexpr const GLenum INNOCENT_CONTEXT_RESET = 0x8254; + static constexpr const GLenum UNKNOWN_CONTEXT_RESET = 0x8255; + static constexpr const GLenum RESET_NOTIFICATION_STRATEGY = 0x8256; + static constexpr const GLenum LOSE_CONTEXT_ON_RESET = 0x8252; + static constexpr const GLenum NO_RESET_NOTIFICATION = 0x8261; + static constexpr const GLenum CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004; + static constexpr const GLenum CONTEXT_RELEASE_BEHAVIOR = 0x82FB; + static constexpr const GLenum CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC; + static constexpr const GLenum SHADER_BINARY_FORMAT_SPIR_V = 0x9551; + static constexpr const GLenum SPIR_V_BINARY = 0x9552; + static constexpr const GLenum PARAMETER_BUFFER = 0x80EE; + static constexpr const GLenum PARAMETER_BUFFER_BINDING = 0x80EF; + static constexpr const GLenum CONTEXT_FLAG_NO_ERROR_BIT = 0x00000008; + static constexpr const GLenum VERTICES_SUBMITTED = 0x82EE; + static constexpr const GLenum PRIMITIVES_SUBMITTED = 0x82EF; + static constexpr const GLenum VERTEX_SHADER_INVOCATIONS = 0x82F0; + static constexpr const GLenum TESS_CONTROL_SHADER_PATCHES = 0x82F1; + static constexpr const GLenum TESS_EVALUATION_SHADER_INVOCATIONS = 0x82F2; + static constexpr const GLenum GEOMETRY_SHADER_PRIMITIVES_EMITTED = 0x82F3; + static constexpr const GLenum FRAGMENT_SHADER_INVOCATIONS = 0x82F4; + static constexpr const GLenum COMPUTE_SHADER_INVOCATIONS = 0x82F5; + static constexpr const GLenum CLIPPING_INPUT_PRIMITIVES = 0x82F6; + static constexpr const GLenum CLIPPING_OUTPUT_PRIMITIVES = 0x82F7; + static constexpr const GLenum POLYGON_OFFSET_CLAMP = 0x8E1B; + static constexpr const GLenum SPIR_V_EXTENSIONS = 0x9553; + static constexpr const GLenum NUM_SPIR_V_EXTENSIONS = 0x9554; + static constexpr const GLenum TEXTURE_MAX_ANISOTROPY = 0x84FE; + static constexpr const GLenum MAX_TEXTURE_MAX_ANISOTROPY = 0x84FF; + static constexpr const GLenum TRANSFORM_FEEDBACK_OVERFLOW = 0x82EC; + static constexpr const GLenum TRANSFORM_FEEDBACK_STREAM_OVERFLOW = 0x82ED; + static constexpr const GLenum PRIMITIVE_BOUNDING_BOX = 0x92BE; + static constexpr const GLenum MULTISAMPLE_LINE_WIDTH_RANGE = 0x9381; + static constexpr const GLenum MULTISAMPLE_LINE_WIDTH_GRANULARITY = 0x9382; + static constexpr const GLenum UNSIGNED_INT64 = 0x140F; + static constexpr const GLenum SYNC_CL_EVENT = 0x8240; + static constexpr const GLenum SYNC_CL_EVENT_COMPLETE = 0x8241; + static constexpr const GLenum MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS = 0x9344; + static constexpr const GLenum MAX_COMPUTE_FIXED_GROUP_INVOCATIONS = 0x90EB; + static constexpr const GLenum MAX_COMPUTE_VARIABLE_GROUP_SIZE = 0x9345; + static constexpr const GLenum MAX_COMPUTE_FIXED_GROUP_SIZE = 0x91BF; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_LAYER_COUNT = 0x8DA9; + static constexpr const GLenum MAX_GEOMETRY_VARYING_COMPONENTS = 0x8DDD; + static constexpr const GLenum MAX_VERTEX_VARYING_COMPONENTS = 0x8DDE; + static constexpr const GLenum INT64 = 0x140E; + static constexpr const GLenum INT64_VEC2 = 0x8FE9; + static constexpr const GLenum INT64_VEC3 = 0x8FEA; + static constexpr const GLenum INT64_VEC4 = 0x8FEB; + static constexpr const GLenum UNSIGNED_INT64_VEC2 = 0x8FF5; + static constexpr const GLenum UNSIGNED_INT64_VEC3 = 0x8FF6; + static constexpr const GLenum UNSIGNED_INT64_VEC4 = 0x8FF7; + static constexpr const GLenum SRGB_DECODE = 0x8299; + static constexpr const GLenum VIEW_CLASS_EAC_R11 = 0x9383; + static constexpr const GLenum VIEW_CLASS_EAC_RG11 = 0x9384; + static constexpr const GLenum VIEW_CLASS_ETC2_RGB = 0x9385; + static constexpr const GLenum VIEW_CLASS_ETC2_RGBA = 0x9386; + static constexpr const GLenum VIEW_CLASS_ETC2_EAC_RGBA = 0x9387; + static constexpr const GLenum VIEW_CLASS_ASTC_4x4_RGBA = 0x9388; + static constexpr const GLenum VIEW_CLASS_ASTC_5x4_RGBA = 0x9389; + static constexpr const GLenum VIEW_CLASS_ASTC_5x5_RGBA = 0x938A; + static constexpr const GLenum VIEW_CLASS_ASTC_6x5_RGBA = 0x938B; + static constexpr const GLenum VIEW_CLASS_ASTC_6x6_RGBA = 0x938C; + static constexpr const GLenum VIEW_CLASS_ASTC_8x5_RGBA = 0x938D; + static constexpr const GLenum VIEW_CLASS_ASTC_8x6_RGBA = 0x938E; + static constexpr const GLenum VIEW_CLASS_ASTC_8x8_RGBA = 0x938F; + static constexpr const GLenum VIEW_CLASS_ASTC_10x5_RGBA = 0x9390; + static constexpr const GLenum VIEW_CLASS_ASTC_10x6_RGBA = 0x9391; + static constexpr const GLenum VIEW_CLASS_ASTC_10x8_RGBA = 0x9392; + static constexpr const GLenum VIEW_CLASS_ASTC_10x10_RGBA = 0x9393; + static constexpr const GLenum VIEW_CLASS_ASTC_12x10_RGBA = 0x9394; + static constexpr const GLenum VIEW_CLASS_ASTC_12x12_RGBA = 0x9395; + static constexpr const GLenum MAX_SHADER_COMPILER_THREADS = 0x91B0; + static constexpr const GLenum COMPLETION_STATUS = 0x91B1; + static constexpr const GLenum SAMPLE_LOCATION_SUBPIXEL_BITS = 0x933D; + static constexpr const GLenum SAMPLE_LOCATION_PIXEL_GRID_WIDTH = 0x933E; + static constexpr const GLenum SAMPLE_LOCATION_PIXEL_GRID_HEIGHT = 0x933F; + static constexpr const GLenum PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE = 0x9340; + static constexpr const GLenum SAMPLE_LOCATION = 0x8E50; + static constexpr const GLenum PROGRAMMABLE_SAMPLE_LOCATION = 0x9341; + static constexpr const GLenum FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS = 0x9342; + static constexpr const GLenum FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID = 0x9343; + static constexpr const GLenum SHADER_INCLUDE = 0x8DAE; + static constexpr const GLenum NAMED_STRING_LENGTH = 0x8DE9; + static constexpr const GLenum NAMED_STRING_TYPE = 0x8DEA; + static constexpr const GLenum SPARSE_STORAGE_BIT = 0x0400; + static constexpr const GLenum SPARSE_BUFFER_PAGE_SIZE = 0x82F8; + static constexpr const GLenum TEXTURE_SPARSE = 0x91A6; + static constexpr const GLenum VIRTUAL_PAGE_SIZE_INDEX = 0x91A7; + static constexpr const GLenum NUM_SPARSE_LEVELS = 0x91AA; + static constexpr const GLenum NUM_VIRTUAL_PAGE_SIZES = 0x91A8; + static constexpr const GLenum VIRTUAL_PAGE_SIZE_X = 0x9195; + static constexpr const GLenum VIRTUAL_PAGE_SIZE_Y = 0x9196; + static constexpr const GLenum VIRTUAL_PAGE_SIZE_Z = 0x9197; + static constexpr const GLenum MAX_SPARSE_TEXTURE_SIZE = 0x9198; + static constexpr const GLenum MAX_SPARSE_3D_TEXTURE_SIZE = 0x9199; + static constexpr const GLenum MAX_SPARSE_ARRAY_TEXTURE_LAYERS = 0x919A; + static constexpr const GLenum SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS = 0x91A9; + static constexpr const GLenum TEXTURE_BUFFER_FORMAT = 0x8C2E; + static constexpr const GLenum TEXTURE_REDUCTION_MODE = 0x9366; + static constexpr const GLenum WEIGHTED_AVERAGE = 0x9367; + static constexpr const GLenum MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS = 0x8F9F; + static constexpr const GLenum MULTIPLY = 0x9294; + static constexpr const GLenum SCREEN = 0x9295; + static constexpr const GLenum OVERLAY = 0x9296; + static constexpr const GLenum DARKEN = 0x9297; + static constexpr const GLenum LIGHTEN = 0x9298; + static constexpr const GLenum COLORDODGE = 0x9299; + static constexpr const GLenum COLORBURN = 0x929A; + static constexpr const GLenum HARDLIGHT = 0x929B; + static constexpr const GLenum SOFTLIGHT = 0x929C; + static constexpr const GLenum _DIFFERENCE = 0x929E; + static constexpr const GLenum EXCLUSION = 0x92A0; + static constexpr const GLenum HSL_HUE = 0x92AD; + static constexpr const GLenum HSL_SATURATION = 0x92AE; + static constexpr const GLenum HSL_COLOR = 0x92AF; + static constexpr const GLenum HSL_LUMINOSITY = 0x92B0; + static constexpr const GLenum BLEND_ADVANCED_COHERENT = 0x9285; + static constexpr const GLenum CONTEXT_ROBUST_ACCESS = 0x90F3; + static constexpr const GLenum SUBGROUP_SIZE = 0x9532; + static constexpr const GLenum SUBGROUP_SUPPORTED_STAGES = 0x9533; + static constexpr const GLenum SUBGROUP_SUPPORTED_FEATURES = 0x9534; + static constexpr const GLenum SUBGROUP_QUAD_ALL_STAGES = 0x9535; + static constexpr const GLenum SUBGROUP_FEATURE_BASIC_BIT = 0x00000001; + static constexpr const GLenum SUBGROUP_FEATURE_VOTE_BIT = 0x00000002; + static constexpr const GLenum SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004; + static constexpr const GLenum SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008; + static constexpr const GLenum SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010; + static constexpr const GLenum SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020; + static constexpr const GLenum SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040; + static constexpr const GLenum SUBGROUP_FEATURE_QUAD_BIT = 0x00000080; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_4x4 = 0x93B0; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_5x4 = 0x93B1; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_5x5 = 0x93B2; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_6x5 = 0x93B3; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_6x6 = 0x93B4; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_8x5 = 0x93B5; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_8x6 = 0x93B6; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_8x8 = 0x93B7; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_10x5 = 0x93B8; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_10x6 = 0x93B9; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_10x8 = 0x93BA; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_10x10 = 0x93BB; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_12x10 = 0x93BC; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_12x12 = 0x93BD; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = 0x93D0; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = 0x93D1; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = 0x93D2; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = 0x93D3; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = 0x93D4; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = 0x93D5; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = 0x93D6; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = 0x93D7; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = 0x93D8; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = 0x93D9; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = 0x93DA; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = 0x93DB; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = 0x93DC; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = 0x93DD; + static constexpr const GLenum PROGRAM_PIPELINE_OBJECT = 0x8A4F; + static constexpr const GLenum PROGRAM_OBJECT = 0x8B40; + static constexpr const GLenum SHADER_OBJECT = 0x8B48; + static constexpr const GLenum BUFFER_OBJECT = 0x9151; + static constexpr const GLenum QUERY_OBJECT = 0x9153; + static constexpr const GLenum VERTEX_ARRAY_OBJECT = 0x9154; + static constexpr const GLenum PROGRAM_MATRIX = 0x8E2D; + static constexpr const GLenum TRANSPOSE_PROGRAM_MATRIX = 0x8E2E; + static constexpr const GLenum PROGRAM_MATRIX_STACK_DEPTH = 0x8E2F; + static constexpr const GLenum RASTER_MULTISAMPLE = 0x9327; + static constexpr const GLenum RASTER_SAMPLES = 0x9328; + static constexpr const GLenum MAX_RASTER_SAMPLES = 0x9329; + static constexpr const GLenum RASTER_FIXED_SAMPLE_LOCATIONS = 0x932A; + static constexpr const GLenum MULTISAMPLE_RASTERIZATION_ALLOWED = 0x932B; + static constexpr const GLenum EFFECTIVE_RASTER_SAMPLES = 0x932C; + static constexpr const GLenum FRAGMENT_SHADER_DISCARDS_SAMPLES = 0x8A52; + static constexpr const GLenum COMPRESSED_RGB_S3TC_DXT1 = 0x83F0; + static constexpr const GLenum COMPRESSED_RGBA_S3TC_DXT1 = 0x83F1; + static constexpr const GLenum COMPRESSED_RGBA_S3TC_DXT3 = 0x83F2; + static constexpr const GLenum COMPRESSED_RGBA_S3TC_DXT5 = 0x83F3; + static constexpr const GLenum SR8 = 0x8FBD; + static constexpr const GLenum SRG8 = 0x8FBE; + static constexpr const GLenum TEXTURE_SRGB_DECODE = 0x8A48; + static constexpr const GLenum DECODE = 0x8A49; + static constexpr const GLenum SKIP_DECODE = 0x8A4A; + static constexpr const GLenum INCLUSIVE = 0x8F10; + static constexpr const GLenum EXCLUSIVE = 0x8F11; + static constexpr const GLenum WINDOW_RECTANGLE = 0x8F12; + static constexpr const GLenum WINDOW_RECTANGLE_MODE = 0x8F13; + static constexpr const GLenum MAX_WINDOW_RECTANGLES = 0x8F14; + static constexpr const GLenum NUM_WINDOW_RECTANGLES = 0x8F15; + static constexpr const GLenum TEXTURE_EXTERNAL = 0x8D65; + static constexpr const GLenum TEXTURE_BINDING_EXTERNAL = 0x8D67; + static constexpr const GLenum REQUIRED_TEXTURE_IMAGE_UNITS = 0x8D68; + static constexpr const GLenum SAMPLER_EXTERNAL = 0x8D66; + static constexpr const GLenum ETC1_RGB8 = 0x8D64; + static constexpr const GLenum PALETTE4_RGB8 = 0x8B90; + static constexpr const GLenum PALETTE4_RGBA8 = 0x8B91; + static constexpr const GLenum PALETTE4_R5_G6_B5 = 0x8B92; + static constexpr const GLenum PALETTE4_RGBA4 = 0x8B93; + static constexpr const GLenum PALETTE4_RGB5_A1 = 0x8B94; + static constexpr const GLenum PALETTE8_RGB8 = 0x8B95; + static constexpr const GLenum PALETTE8_RGBA8 = 0x8B96; + static constexpr const GLenum PALETTE8_R5_G6_B5 = 0x8B97; + static constexpr const GLenum PALETTE8_RGBA4 = 0x8B98; + static constexpr const GLenum PALETTE8_RGB5_A1 = 0x8B99; + static constexpr const GLenum GEOMETRY_LINKED_VERTICES_OUT = 0x8916; + static constexpr const GLenum GEOMETRY_LINKED_INPUT_TYPE = 0x8917; + static constexpr const GLenum GEOMETRY_LINKED_OUTPUT_TYPE = 0x8918; + static constexpr const GLenum ALPHA8 = 0x803C; + static constexpr const GLenum LUMINANCE4_ALPHA4 = 0x8043; + static constexpr const GLenum LUMINANCE8_ALPHA8 = 0x8045; + static constexpr const GLenum LUMINANCE8 = 0x8040; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET = 0x8CD4; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_3x3x3 = 0x93C0; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_4x3x3 = 0x93C1; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_4x4x3 = 0x93C2; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_4x4x4 = 0x93C3; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_5x4x4 = 0x93C4; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_5x5x4 = 0x93C5; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_5x5x5 = 0x93C6; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_6x5x5 = 0x93C7; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_6x6x5 = 0x93C8; + static constexpr const GLenum COMPRESSED_RGBA_ASTC_6x6x6 = 0x93C9; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3 = 0x93E0; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3 = 0x93E1; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3 = 0x93E2; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4 = 0x93E3; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4 = 0x93E4; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4 = 0x93E5; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5 = 0x93E6; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5 = 0x93E7; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5 = 0x93E8; + static constexpr const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6 = 0x93E9; + static constexpr const GLenum INT_10_10_10_2 = 0x8DF7; + static constexpr const GLenum BGRA8 = 0x93A1; + static constexpr const GLenum MALI_PROGRAM_BINARY_ARM = 0x8F61; + static constexpr const GLenum MALI_SHADER_BINARY_ARM = 0x8F60; + static constexpr const GLenum FETCH_PER_SAMPLE_ARM = 0x8F65; + static constexpr const GLenum FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = 0x8F66; + static constexpr const GLenum TEXTURE_UNNORMALIZED_COORDINATES_ARM = 0x8F6A; + static constexpr const GLenum SMAPHS30_PROGRAM_BINARY_DMP = 0x9251; + static constexpr const GLenum SMAPHS_PROGRAM_BINARY_DMP = 0x9252; + static constexpr const GLenum DMP_PROGRAM_BINARY_DMP = 0x9253; + static constexpr const GLenum SHADER_BINARY_DMP = 0x9250; + static constexpr const GLenum SAMPLER_EXTERNAL_2D_Y2Y = 0x8BE7; + static constexpr const GLenum GPU_DISJOINT = 0x8FBB; + static constexpr const GLenum TEXTURE_TILING = 0x9580; + static constexpr const GLenum DEDICATED_MEMORY_OBJECT = 0x9581; + static constexpr const GLenum PROTECTED_MEMORY_OBJECT = 0x959B; + static constexpr const GLenum NUM_TILING_TYPES = 0x9582; + static constexpr const GLenum TILING_TYPES = 0x9583; + static constexpr const GLenum OPTIMAL_TILING = 0x9584; + static constexpr const GLenum LINEAR_TILING = 0x9585; + static constexpr const GLenum NUM_DEVICE_UUIDS = 0x9596; + static constexpr const GLenum DEVICE_UUID = 0x9597; + static constexpr const GLenum DRIVER_UUID = 0x9598; + static constexpr const GLenum HANDLE_TYPE_OPAQUE_FD = 0x9586; + static constexpr const GLenum HANDLE_TYPE_OPAQUE_WIN32 = 0x9587; + static constexpr const GLenum HANDLE_TYPE_OPAQUE_WIN32_KMT = 0x9588; + static constexpr const GLenum DEVICE_LUID = 0x9599; + static constexpr const GLenum DEVICE_NODE_MASK = 0x959A; + static constexpr const GLenum HANDLE_TYPE_D3D12_TILEPOOL = 0x9589; + static constexpr const GLenum HANDLE_TYPE_D3D12_RESOURCE = 0x958A; + static constexpr const GLenum HANDLE_TYPE_D3D11_IMAGE = 0x958B; + static constexpr const GLenum HANDLE_TYPE_D3D11_IMAGE_KMT = 0x958C; + static constexpr const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES = 0x8D6C; + static constexpr const GLenum COLOR_ATTACHMENT = 0x90F0; + static constexpr const GLenum MULTIVIEW = 0x90F1; + static constexpr const GLenum MAX_MULTIVIEW_BUFFERS = 0x90F2; + static constexpr const GLenum CONTEXT_FLAG_PROTECTED_CONTENT_BIT = 0x00000010; + static constexpr const GLenum TEXTURE_PROTECTED = 0x8BFA; + static constexpr const GLenum COMPRESSED_SRGB_PVRTC_2BPPV1 = 0x8A54; + static constexpr const GLenum COMPRESSED_SRGB_PVRTC_4BPPV1 = 0x8A55; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1 = 0x8A56; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1 = 0x8A57; + static constexpr const GLenum LAYOUT_GENERAL = 0x958D; + static constexpr const GLenum LAYOUT_COLOR_ATTACHMENT = 0x958E; + static constexpr const GLenum LAYOUT_DEPTH_STENCIL_ATTACHMENT = 0x958F; + static constexpr const GLenum LAYOUT_DEPTH_STENCIL_READ_ONLY = 0x9590; + static constexpr const GLenum LAYOUT_SHADER_READ_ONLY = 0x9591; + static constexpr const GLenum LAYOUT_TRANSFER_SRC = 0x9592; + static constexpr const GLenum LAYOUT_TRANSFER_DST = 0x9593; + static constexpr const GLenum LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT = 0x9530; + static constexpr const GLenum LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY = 0x9531; + static constexpr const GLenum HANDLE_TYPE_D3D12_FENCE = 0x9594; + static constexpr const GLenum D3D12_FENCE_VALUE = 0x9595; + static constexpr const GLenum MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE = 0x8F63; + static constexpr const GLenum MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE = 0x8F67; + static constexpr const GLenum SHADER_PIXEL_LOCAL_STORAGE = 0x8F64; + static constexpr const GLenum MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE = 0x9650; + static constexpr const GLenum MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE = 0x9651; + static constexpr const GLenum FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE = 0x9652; + static constexpr const GLenum TEXTURE_ASTC_DECODE_PRECISION = 0x8F69; + static constexpr const GLenum COMPRESSED_RED_GREEN_RGTC2 = 0x8DBD; + static constexpr const GLenum COMPRESSED_SIGNED_RED_GREEN_RGTC2 = 0x8DBE; + static constexpr const GLenum COMPRESSED_SRGB_S3TC_DXT1 = 0x8C4C; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT1 = 0x8C4D; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT3 = 0x8C4E; + static constexpr const GLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT5 = 0x8C4F; + static constexpr const GLenum TEXTURE_FORMAT_SRGB_OVERRIDE = 0x8FBF; + static constexpr const GLenum ALPHA32F = 0x8816; + static constexpr const GLenum LUMINANCE32F = 0x8818; + static constexpr const GLenum LUMINANCE_ALPHA32F = 0x8819; + static constexpr const GLenum ALPHA16F = 0x881C; + static constexpr const GLenum LUMINANCE16F = 0x881E; + static constexpr const GLenum LUMINANCE_ALPHA16F = 0x881F; + static constexpr const GLenum GCCSO_SHADER_BINARY_FJ = 0x9260; + static constexpr const GLenum STATE_RESTORE = 0x8BDC; + static constexpr const GLenum SHADER_BINARY_VIV = 0x8FC4; + +}; + +//Global GL procedures object. +IRRLICHT_API extern OpenGLProcedures GL; diff --git a/scripts/BindingGenerator.lua b/scripts/BindingGenerator.lua new file mode 100755 index 0000000..a1f2f2c --- /dev/null +++ b/scripts/BindingGenerator.lua @@ -0,0 +1,430 @@ +#!/usr/bin/lua +-- BindingGenerator.lua (c) hecks 2021 +-- This script is a part of IrrlichtMT, released under the same license. + +-- By default we assume you're running this from /scripts/ +-- and that you have the necessary headers there (gitignored for your convenience) +local sourceTreePath = os.getenv( "IRRMTREPO" ) or ".."; +-- Otherwise run this from wherever you want and set the above env variable. +local glHeaderPath = os.getenv( "GLHEADERPATH" ) or "."; +-- GL headers will be looked for in the current directory or GLHEADERPATH. +-- At the moment we require: +-- "glcorearb.h" +-- "gl2ext.h" +-- Files other than glcorearb.h are only parsed for vendor specific defines +-- and aliases. Otherwise we only use what exists in glcorearb.h, further +-- restricted to procedures that are either core or ARB. + + +-- Emulate a portion of the libraries that this was written against. +getmetatable( "" ).__index = string; +getmetatable( "" ).__len = string.len; +getmetatable( "" ).__call = string.format; +function string:Split( pat ) + local r = {}; + local pos = 1; + local from, to; + while pos and pos <= #self do + from, to = self:find( pat, pos ); + if not from then + break; + end + r[#r+1] = self:sub( pos, from - 1 ); + pos = to + 1; + end + r[#r+1] = self:sub( pos, #self ); + return r; +end +function string:TrimBothEnds() + return self:gsub("^%s+",""):gsub("%s+$",""); +end +local List; +List = function( t ) + return setmetatable( t or {}, { + __index = { + Add = function( t, v ) + t[#t+1] = v; + end; + AddFormat = function( t, str, ... ) + t:Add( str( ... ) ); + end; + Where = function( t, f ) + local r = {}; + for i=1, #t do + if f(t[i]) then r[#r+1] = t[i]; end + end + return List( r ); + end; + Select = function( t, f ) + local r = {}; + for i=1, #t do + r[#r+1] = f( t[i] ); + end + return List( r ); + end; + Join = function( t, n ) + local r = {}; + for i=1, #t do + r[i] = t[i]; + end + for i=1, #n do + r[#r+1] = n[i]; + end + return List( r ); + end; + Concat = table.concat; + }; + } ); +end + + +------------ Header parsing ------------ + +-- GL and GLES alike +local driverVendors = { + "NV", "AMD", "INTEL", "OVR", "QCOM", "IMG", "ANGLE", "APPLE", "MESA" +} +local vendorSuffixes = { + "ARB", "EXT", "KHR", "OES", + unpack( driverVendors ) +}; +local vendorSuffixPattern = {}; +local constSuffixPattern = {}; +for i=1, #vendorSuffixes do + vendorSuffixPattern[i] = vendorSuffixes[i] .. "$"; + constSuffixPattern[i] = ("_%s$")( vendorSuffixes[i] ); +end +local constBanned = {}; +for i=1, #driverVendors do + constBanned[driverVendors[i]] = true; +end +-- Strip the uppercase extension vendor suffix from a name. +local function StripVendorSuffix( str, const ) + local patterns = const and constSuffixPattern or vendorSuffixPattern; + local n; + for i=1, #patterns do + str, n = str:gsub( patterns[i], "" ); + if n > 0 then + return str, vendorSuffixes[i]; + end + end + return str; +end + +-- Normalize the type of an argument or return, also stripping any suffix +-- and normalizing all whitespace regions to single spaces. +local function NormalizeType( str ) + local chunks = str:Split( "%s+" ); + for j=1, #chunks do + chunks[j] = StripVendorSuffix( chunks[j] ); + end + local T = table.concat(chunks, " " ); + return T:TrimBothEnds(); +end + +-- Normalize an argument, returning the normalized type and the name separately, +-- always sticking the * of a pointer to the type rather than the name. +-- We need this to generate a normalized arg list and function signature (below) +local function NormalizeArgument( str ) + local chunks = str:Split( "%s+" ); + for j=1, #chunks do + chunks[j] = StripVendorSuffix( chunks[j] ); + end + local last = chunks[#chunks]; + local name = last:match( "[%w_]+$" ); + chunks[#chunks] = #name ~= #last and last:sub( 1, #last-#name) or nil; + local T = table.concat(chunks, " " ):TrimBothEnds(); + return T, name +end + +-- Normalize an argument list so that two matching prototypes +-- will produce the same table if fed to this function. +local function NormalizeArgList( str ) + local args = str:Split( ",%s*" ); + local r = {}; + for i=1, #args do + local T, name = NormalizeArgument( args[i] ); + r[i] = { T, name }; + end + return r; +end + +-- Normalize a function signature into a unique string for keying +-- in such a way that if two different GL procedures may be assigned +-- to the same function pointer, this will produce an identical string for both. +-- This makes it possible to detect function aliases that may work as a fallback. +-- You still have to check for the appropriate extension. +local function NormalizeFunctionSignature( T, str ) + local args = str:Split( ",%s*" ); + local r = {}; + for i=1, #args do + r[i] = NormalizeArgument( args[i] ); + end + return ("%s(%s)")( T, table.concat( r, ", " ) ); +end + +-- Mangle the PFN name so that we don't collide with a +-- typedef from any of the GL headers. +local pfnFormat = "PFNGL%sPROC_MT"; + +--( T, name, args ) +local typedefFormat = "\ttypedef %s (APIENTRYP %s) (%s);" +-- Generate a PFN...GL style typedef for a procedure +-- +local function GetProcedureTypedef( proc ) + local args = {}; + for i=1, #proc.args do + args[i] = ("%s %s")( unpack( proc.args[i] ) ) + end + return typedefFormat( proc.retType, pfnFormat( proc.name:upper() ), table.concat( args, ", " ) ); +end + +local procedures = List(); +local nameset = {}; +local definitions = List(); +local consts = List(); + +--[[ + Structured procedure representation: + + ProcSpec = { + string name; -- Normalized name as it appears in the GL spec + string? vendor; -- Uppercase vendor string (ARB, EXT, AMD, NV etc) + string signature; + string retType; + args = { { type, name } }; + }; +]] +-- Parse a whole header, extracting the data. +local function ParseHeader( path, into, apiRegex, defs, consts, nameSet, noNewNames ) + defs:AddFormat( "\t// %s", path ); + local f = assert( io.open( path, "r" ), "Could not open " .. path ); + for line in f:lines() do + -- Do not parse PFN typedefs; they're easily reconstructible. + local T, rawName, args = line:match( apiRegex ); + if T then + T = NormalizeType( T ); + -- Strip the 'gl' namespace prefix. + local procName = rawName:sub(3,-1); + local name, vendor = StripVendorSuffix( procName ); + if not (noNewNames and nameSet[name]) then + nameSet[name] = true; + into:Add{ + name = name; + vendor = vendor; + -- pfnType = pfnFormat( procName:upper() ); + signature = NormalizeFunctionSignature( T, args ); + retType = T; + args = NormalizeArgList( args ); + }; + end + elseif ( line:find( "#" ) and not line:find( "#include" ) ) then + local rawName, value = line:match( "#define%s+GL_([_%w]+)%s+0x(%w+)" ); + if rawName and value then + local name, vendor = StripVendorSuffix( rawName, true ); + if not constBanned[vendor] then + consts:Add{ name = name, vendor = vendor, value = "0x"..value }; + end + end + ::skip:: + elseif( line:find( "typedef" ) and not line:find( "%(" ) ) then + -- Passthrough non-PFN typedefs + defs:Add( "\t" .. line ); + end + end + defs:Add ""; + f:close(); +end + +------------ Parse the headers ------------ + +-- ES/gl2.h is a subset of glcorearb.h and does not need parsing. + +local funcRegex = "GLAPI%s+(.+)APIENTRY%s+(%w+)%s*%((.*)%)"; +local funcRegexES = "GL_APICALL%s+(.+)GL_APIENTRY%s+(%w+)%s*%((.*)%)"; +ParseHeader( glHeaderPath .. "/glcorearb.h", procedures, funcRegex, definitions, consts, nameset ); +ParseHeader( glHeaderPath .. "/gl2ext.h", procedures, funcRegexES, List(), consts, nameset, true ); +-- Typedefs are redirected to a dummy list here on purpose. +-- The only unique typedef from gl2ext is this: +definitions:Add "\ttypedef void *GLeglClientBufferEXT;"; + +------------ Sort out constants ------------ + +local cppConsts = List(); +do + local constBuckets = {}; + for i=1, #consts do + local vendor = consts[i].vendor or "core"; + constBuckets[consts[i].name] = constBuckets[consts[i].name] or {}; + constBuckets[consts[i].name][vendor] = consts[i].value; + end + local names = {}; + for i=1, #consts do + local k = consts[i].name; + local b = constBuckets[k]; + if k == "WAIT_FAILED" or k == "DIFFERENCE" then + -- This is why using #define as const is evil. + k = "_" .. k; + end + if b and not names[k] then + names[k] = true; + -- I have empirically tested that constants in GL with the same name do not differ, + -- at least for these suffixes. + local v = b.core or b.KHR or b.ARB or b.OES or b.EXT; + if v then + local T = v:find( "ull" ) and "GLuint64" or "GLenum"; + cppConsts:AddFormat( "\tstatic constexpr const %s %s = %s;", T, k, v ); + end + end + end +end + + +------------ Sort out procedures ------------ + +local procTable = {}; + +local coreProcedures = procedures:Where( function(x) return not x.vendor; end ); +local arbProcedures = procedures:Where( function(x) return x.vendor == "ARB"; end ); + +-- Only consider core and ARB functions. +local nameList = coreProcedures:Join( arbProcedures ):Select( + function(p) + return p.name; + end ); + +local nameSet = {}; +local uniqueNames = List(); + +for s, k in ipairs( nameList ) do + if not nameSet[k] then + nameSet[k] = true; + uniqueNames:Add( k ); + end +end + +for i=1, #procedures do + local p = procedures[i]; + procTable[p.name] = procTable[p.name] or {}; + local key = p.vendor or "core"; + procTable[p.name][key] = p; +end + +local priorityList = List{ "core", "ARB", "OES", "KHR" }; + +local typedefs = List(); +local pointers = List(); +local loader = List(); + +for s, str in ipairs( uniqueNames ) do + pointers:Add( ("\t%s %s = NULL;")( pfnFormat( str:upper() ), str ) ); + local typeDefGenerated = false; + for i=1, #priorityList do + local k = priorityList[i]; + local proc = procTable[str][k] + if proc then + if not typeDefGenerated then + typedefs:Add( GetProcedureTypedef( proc ) ); + typeDefGenerated = true; + end + local vendor = k == "core" and "" or k; + loader:AddFormat( + '\tif (!%s) %s = (%s)cmgr->getProcAddress("%s");\n', + str, str, pfnFormat( proc.name:upper() ), ("gl%s%s")(str,vendor) + ); + end + end +end + + +------------ Write files ------------ + +-- Write loader header +local f = io.open( sourceTreePath .. "/include/mt_opengl.h", "wb" ); +f:write[[ +// This code was generated by scripts/BindingGenerator.lua +// Do not modify it, modify and run the generator instead. + +#pragma once + +#include +#include +#include "IrrCompileConfig.h" +#include "irrTypes.h" +#include "IContextManager.h" +#include + +#ifndef APIENTRY + #define APIENTRY +#endif +#ifndef APIENTRYP + #define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI + #define GLAPI extern +#endif + +]]; + +f:write[[ +class OpenGLProcedures { +private: +]]; +f:write( definitions:Concat( "\n" ) ); +f:write( "\n" ); +f:write[[ + // The script will miss this particular typedef thinking it's a PFN, + // so we have to paste it in manually. It's the only such type in OpenGL. + typedef void (APIENTRY *GLDEBUGPROC) + (GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); + +]] +f:write( typedefs:Concat( "\n" ) ); +f:write( "\n\n" ); +f:write [[ + std::unordered_set extensions; +public: + // Call this once after creating the context. + void LoadAllProcedures(irr::video::IContextManager *cmgr); + // Check if an extension is supported. + inline bool IsExtensionPresent(const std::string &ext) + { + return extensions.find(ext) != extensions.end(); + } + +]]; +f:write( pointers:Concat( "\n" ) ); +f:write( "\n\n" ); +f:write( cppConsts:Concat( "\n" ) ); +f:write( "\n\n" ); +f:write( "};\n" ); +f:write( "\n//Global GL procedures object.\n" ); +f:write( "IRRLICHT_API extern OpenGLProcedures GL;\n" ); +f:close(); + +-- Write loader implementation +f = io.open( sourceTreePath .. "/source/Irrlicht/mt_opengl_loader.cpp", "wb" ); +f:write[[ +#include "mt_opengl.h" +#include +#include + +OpenGLProcedures GL = OpenGLProcedures(); + +void OpenGLProcedures::LoadAllProcedures(irr::video::IContextManager *cmgr) +{ + +]]; +f:write( loader:Concat() ); +f:write[[ + + // get the extension string, chop it up + std::string ext_string = std::string((char*)GetString(EXTENSIONS)); + std::stringstream ext_ss(ext_string); + std::string tmp; + while (std::getline(ext_ss, tmp, ' ')) + extensions.emplace(tmp); + +} +]]; +f:close(); diff --git a/source/Irrlicht/CEGLManager.cpp b/source/Irrlicht/CEGLManager.cpp index 9f616b5..dc854c0 100755 --- a/source/Irrlicht/CEGLManager.cpp +++ b/source/Irrlicht/CEGLManager.cpp @@ -9,6 +9,7 @@ #include "irrString.h" #include "irrArray.h" #include "os.h" +#include #if defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #include @@ -20,7 +21,7 @@ namespace video { CEGLManager::CEGLManager() : IContextManager(), EglWindow(0), EglDisplay(EGL_NO_DISPLAY), - EglSurface(EGL_NO_SURFACE), EglContext(EGL_NO_CONTEXT), EglConfig(0), MajorVersion(0), MinorVersion(0) + EglSurface(EGL_NO_SURFACE), EglContext(EGL_NO_CONTEXT), EglConfig(0), MajorVersion(0), MinorVersion(0), libHandle(NULL) { #ifdef _DEBUG setDebugName("CEGLManager"); @@ -109,6 +110,9 @@ void CEGLManager::terminate() MajorVersion = 0; MinorVersion = 0; + + if (libHandle) + dlclose(libHandle); } bool CEGLManager::generateSurface() @@ -590,6 +594,19 @@ const SExposedVideoData& CEGLManager::getContext() const return Data; } +void* CEGLManager::getProcAddress(const std::string &procName) +{ + void* proc = NULL; + proc = (void*)eglGetProcAddress(procName.c_str()); + if (!proc) { // fallback + if (!libHandle) + libHandle = dlopen("libGLESv2.so", RTLD_LAZY); + if (libHandle) + proc = dlsym(libHandle, procName.c_str()); + } + return proc; +} + bool CEGLManager::swapBuffers() { return (eglSwapBuffers(EglDisplay, EglSurface)==EGL_TRUE); diff --git a/source/Irrlicht/CEGLManager.h b/source/Irrlicht/CEGLManager.h index c82d48c..58d7f29 100755 --- a/source/Irrlicht/CEGLManager.h +++ b/source/Irrlicht/CEGLManager.h @@ -67,6 +67,9 @@ namespace video virtual bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) _IRR_OVERRIDE_; + // Get procedure address. + virtual void* getProcAddress(const std::string &procName) _IRR_OVERRIDE_; + // Swap buffers. virtual bool swapBuffers() _IRR_OVERRIDE_; @@ -112,6 +115,8 @@ namespace video EGLint MajorVersion; EGLint MinorVersion; + + void* libHandle; }; } } diff --git a/source/Irrlicht/CGLXManager.cpp b/source/Irrlicht/CGLXManager.cpp index 6edf779..a5dc95d 100644 --- a/source/Irrlicht/CGLXManager.cpp +++ b/source/Irrlicht/CGLXManager.cpp @@ -7,6 +7,7 @@ #ifdef _IRR_COMPILE_WITH_GLX_MANAGER_ #include "os.h" +#include #if defined(_IRR_OPENGL_USE_EXTPOINTER_) #define GL_GLEXT_LEGACY 1 @@ -28,7 +29,7 @@ namespace video { CGLXManager::CGLXManager(const SIrrlichtCreationParameters& params, const SExposedVideoData& videodata, int screennr) - : Params(params), PrimaryContext(videodata), VisualInfo(0), glxFBConfig(0), GlxWin(0) + : Params(params), PrimaryContext(videodata), VisualInfo(0), glxFBConfig(0), GlxWin(0), libHandle(NULL) { #ifdef _DEBUG setDebugName("CGLXManager"); @@ -279,6 +280,8 @@ bool CGLXManager::initialize(const SIrrlichtCreationParameters& params, const SE void CGLXManager::terminate() { + if (libHandle) + dlclose(libHandle); memset(&CurrentContext, 0, sizeof(CurrentContext)); } @@ -428,6 +431,19 @@ void CGLXManager::destroyContext() } } +void* CGLXManager::getProcAddress(const std::string &procName) +{ + void* proc = NULL; + proc = (void*)glXGetProcAddressARB(reinterpret_cast(procName.c_str())); + if (!proc) { + if (!libHandle) + libHandle = dlopen("libGL.so", RTLD_LAZY); + if (libHandle) + proc = dlsym(libHandle, procName.c_str()); + } + return proc; +} + bool CGLXManager::swapBuffers() { glXSwapBuffers((Display*)CurrentContext.OpenGLLinux.X11Display, CurrentContext.OpenGLLinux.GLXWindow); diff --git a/source/Irrlicht/CGLXManager.h b/source/Irrlicht/CGLXManager.h index ef2566e..d3cb9ad 100644 --- a/source/Irrlicht/CGLXManager.h +++ b/source/Irrlicht/CGLXManager.h @@ -57,6 +57,9 @@ namespace video //! Change render context, disable old and activate new defined by videoData virtual bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) _IRR_OVERRIDE_; + // Get procedure address. + virtual void* getProcAddress(const std::string &procName) _IRR_OVERRIDE_; + // Swap buffers. virtual bool swapBuffers() _IRR_OVERRIDE_; @@ -69,6 +72,7 @@ namespace video XVisualInfo* VisualInfo; void* glxFBConfig; // GLXFBConfig XID GlxWin; // GLXWindow + void* libHandle; // handle to libGL.so }; } } diff --git a/source/Irrlicht/CMakeLists.txt b/source/Irrlicht/CMakeLists.txt index bb17563..6e716af 100644 --- a/source/Irrlicht/CMakeLists.txt +++ b/source/Irrlicht/CMakeLists.txt @@ -10,6 +10,8 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-D_DEBUG) endif() set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") set(CMAKE_CXX_FLAGS_RELEASE "-O3") @@ -153,6 +155,7 @@ set(IRRDRVROBJ CGLXManager.cpp CWGLManager.cpp CEGLManager.cpp + mt_opengl_loader.cpp ) set(IRRIMAGEOBJ diff --git a/source/Irrlicht/CNSOGLManager.h b/source/Irrlicht/CNSOGLManager.h index c4e3812..91ad7ce 100644 --- a/source/Irrlicht/CNSOGLManager.h +++ b/source/Irrlicht/CNSOGLManager.h @@ -54,6 +54,9 @@ namespace video //! Change render context, disable old and activate new defined by videoData bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) _IRR_OVERRIDE_; + // Get procedure address. + virtual void* getProcAddress(const std::string &procName) _IRR_OVERRIDE_; + // Swap buffers. bool swapBuffers(); diff --git a/source/Irrlicht/CNSOGLManager.mm b/source/Irrlicht/CNSOGLManager.mm index 3409a3e..7ce6b34 100644 --- a/source/Irrlicht/CNSOGLManager.mm +++ b/source/Irrlicht/CNSOGLManager.mm @@ -6,6 +6,7 @@ #ifdef _IRR_COMPILE_WITH_NSOGL_MANAGER_ +#include #include "os.h" namespace irr @@ -37,15 +38,15 @@ void CNSOGLManager::terminate() } bool CNSOGLManager::generateSurface() -{ +{ if (Params.DriverType == video::EDT_OPENGL) { int alphaSize = Params.WithAlphaChannel ? 4 : 0; int depthSize = Params.ZBufferBits; - + if (Params.WithAlphaChannel && Params.Bits == 32) alphaSize = 8; - + NSOpenGLPixelFormatAttribute Attribs[] = { NSOpenGLPFANoRecovery, @@ -62,7 +63,7 @@ bool CNSOGLManager::generateSurface() }; u32 Steps = 6; - + // Choose the best pixel format. do { @@ -85,7 +86,7 @@ bool CNSOGLManager::generateSurface() if (Attribs[8]) { Attribs[8] = 0; - + if (Params.AntiAlias) { Attribs[10] = 1; @@ -100,7 +101,7 @@ bool CNSOGLManager::generateSurface() if (Attribs[14]) { Attribs[14] = 0; - + if (Params.AntiAlias) { Attribs[10] = 1; @@ -131,23 +132,23 @@ bool CNSOGLManager::generateSurface() os::Printer::log("Could not get pixel format."); return false; } - + PixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:Attribs]; } while (PixelFormat == nil); - + if (Params.AntiAlias && !Attribs[10]) os::Printer::log("No multisampling."); - + if (Params.WithAlphaChannel && !Attribs[8]) os::Printer::log("No alpha."); - + if (Params.Stencilbuffer && !Attribs[14]) os::Printer::log("No stencil buffer."); - + if (Params.ZBufferBits > Attribs[4]) os::Printer::log("No full depth buffer."); - + if (Params.Bits > Attribs[6]) os::Printer::log("No full color buffer."); } @@ -164,7 +165,7 @@ void CNSOGLManager::destroySurface() bool CNSOGLManager::generateContext() { NSOpenGLContext* Context = [[NSOpenGLContext alloc] initWithFormat:PixelFormat shareContext:nil]; - + GLint Vsync = Params.Vsync ? 1 : 0; [Context setValues:&Vsync forParameter:NSOpenGLCPSwapInterval]; @@ -176,7 +177,7 @@ bool CNSOGLManager::generateContext() // set exposed data CurrentContext.OpenGLOSX.Context = Context; - + if (!PrimaryContext.OpenGLOSX.Context) PrimaryContext.OpenGLOSX.Context = CurrentContext.OpenGLOSX.Context; @@ -196,7 +197,7 @@ bool CNSOGLManager::activateContext(const SExposedVideoData& videoData, bool res if ((NSOpenGLContext*)videoData.OpenGLOSX.Context != [NSOpenGLContext currentContext]) { [(NSOpenGLContext*)videoData.OpenGLOSX.Context makeCurrentContext]; - + CurrentContext = videoData; } } @@ -206,11 +207,11 @@ bool CNSOGLManager::activateContext(const SExposedVideoData& videoData, bool res if ((NSOpenGLContext*)PrimaryContext.OpenGLOSX.Context != [NSOpenGLContext currentContext]) { [(NSOpenGLContext*)PrimaryContext.OpenGLOSX.Context makeCurrentContext]; - + CurrentContext = PrimaryContext; } } - + return true; } @@ -225,11 +226,23 @@ void CNSOGLManager::destroyContext() [(NSOpenGLContext *)CurrentContext.OpenGLOSX.Context clearDrawable]; [(NSOpenGLContext *)CurrentContext.OpenGLOSX.Context release]; [NSOpenGLContext clearCurrentContext]; - + CurrentContext.OpenGLOSX.Context = nil; } } +// It appears that there is no separate GL proc address getter on OSX. +// https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_entrypts/opengl_entrypts.html +void* CNSOGLManager::getProcAddress(const std::string &procName) +{ + NSSymbol symbol = NULL; + // Allocate a buffer for the name, an underscore prefix, and a cstring terminator. + std::string mangledName = "_" + procName; + if (NSIsSymbolNameDefined(mangledName.c_str())) + symbol = NSLookupAndBindSymbol(mangledName.c_str()); + return symbol ? NSAddressOfSymbol(symbol) : NULL; +} + bool CNSOGLManager::swapBuffers() { [(NSOpenGLContext*)CurrentContext.OpenGLOSX.Context flushBuffer]; diff --git a/source/Irrlicht/COGLES2Driver.cpp b/source/Irrlicht/COGLES2Driver.cpp index a36f911..13a257a 100644 --- a/source/Irrlicht/COGLES2Driver.cpp +++ b/source/Irrlicht/COGLES2Driver.cpp @@ -29,6 +29,8 @@ #include "android_native_app_glue.h" #endif +#include "mt_opengl.h" + namespace irr { namespace video @@ -76,6 +78,7 @@ COGLES2Driver::COGLES2Driver(const SIrrlichtCreationParameters& params, io::IFil ContextManager->generateContext(); ExposedData = ContextManager->getContext(); ContextManager->activateContext(ExposedData, false); + GL.LoadAllProcedures(ContextManager); } COGLES2Driver::~COGLES2Driver() diff --git a/source/Irrlicht/COpenGLDriver.cpp b/source/Irrlicht/COpenGLDriver.cpp index 604bd7e..454f0e3 100644 --- a/source/Irrlicht/COpenGLDriver.cpp +++ b/source/Irrlicht/COpenGLDriver.cpp @@ -20,6 +20,8 @@ #include "COpenGLCoreTexture.h" #include "COpenGLCoreRenderTarget.h" +#include "mt_opengl.h" + #ifdef _IRR_COMPILE_WITH_SDL_DEVICE_ #include #endif @@ -80,6 +82,8 @@ bool COpenGLDriver::initDriver() extGlSwapInterval(Params.Vsync ? 1 : 0); #endif + GL.LoadAllProcedures(ContextManager); + return true; } diff --git a/source/Irrlicht/CWGLManager.cpp b/source/Irrlicht/CWGLManager.cpp index b807acb..3d6e4f8 100644 --- a/source/Irrlicht/CWGLManager.cpp +++ b/source/Irrlicht/CWGLManager.cpp @@ -21,7 +21,7 @@ namespace video { CWGLManager::CWGLManager() - : PrimaryContext(SExposedVideoData(0)), PixelFormat(0) + : PrimaryContext(SExposedVideoData(0)), PixelFormat(0), libHandle(NULL) { #ifdef _DEBUG setDebugName("CWGLManager"); @@ -322,6 +322,8 @@ void CWGLManager::terminate() if (PrimaryContext.OpenGLWin32.HDc && PrimaryContext.OpenGLWin32.HDc == CurrentContext.OpenGLWin32.HDc) memset(&PrimaryContext, 0, sizeof(PrimaryContext)); memset(&CurrentContext, 0, sizeof(CurrentContext)); + if (libHandle) + FreeLibrary(libHandle); } bool CWGLManager::generateSurface() @@ -367,7 +369,7 @@ bool CWGLManager::generateSurface() if (PixelFormat) break; } - + // set pixel format if (!SetPixelFormat(HDc, PixelFormat, &pfd)) { @@ -490,6 +492,19 @@ void CWGLManager::destroyContext() } } +void* CWGLManager::getProcAddress(const std::string &procName) +{ + void* proc = NULL; + proc = (void*)wglGetProcAddress(procName.c_str()); + if (!proc) { // Fallback + if (!libHandle) + libHandle = LoadLibraryA("opengl32.dll"); + if (libHandle) + proc = (void*)GetProcAddress(libHandle, procName.c_str()); + } + return proc; +} + bool CWGLManager::swapBuffers() { return SwapBuffers((HDC)CurrentContext.OpenGLWin32.HDc) == TRUE; diff --git a/source/Irrlicht/CWGLManager.h b/source/Irrlicht/CWGLManager.h index ff4af34..23d1485 100644 --- a/source/Irrlicht/CWGLManager.h +++ b/source/Irrlicht/CWGLManager.h @@ -16,6 +16,7 @@ #define WIN32_LEAN_AND_MEAN #include +#include namespace irr { @@ -55,6 +56,9 @@ namespace video //! Change render context, disable old and activate new defined by videoData virtual bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) _IRR_OVERRIDE_; + // Get procedure address. + virtual void* getProcAddress(const std::string &procName) _IRR_OVERRIDE_; + // Swap buffers. virtual bool swapBuffers() _IRR_OVERRIDE_; @@ -66,6 +70,8 @@ namespace video PIXELFORMATDESCRIPTOR pfd; ECOLOR_FORMAT ColorFormat; void* FunctionPointers[1]; + + HMODULE libHandle; }; } } diff --git a/source/Irrlicht/mt_opengl_loader.cpp b/source/Irrlicht/mt_opengl_loader.cpp new file mode 100755 index 0000000..96d7587 --- /dev/null +++ b/source/Irrlicht/mt_opengl_loader.cpp @@ -0,0 +1,766 @@ +#include "mt_opengl.h" +#include +#include + +OpenGLProcedures GL = OpenGLProcedures(); + +void OpenGLProcedures::LoadAllProcedures(irr::video::IContextManager *cmgr) +{ + + if (!CullFace) CullFace = (PFNGLCULLFACEPROC_MT)cmgr->getProcAddress("glCullFace"); + if (!FrontFace) FrontFace = (PFNGLFRONTFACEPROC_MT)cmgr->getProcAddress("glFrontFace"); + if (!Hint) Hint = (PFNGLHINTPROC_MT)cmgr->getProcAddress("glHint"); + if (!LineWidth) LineWidth = (PFNGLLINEWIDTHPROC_MT)cmgr->getProcAddress("glLineWidth"); + if (!PointSize) PointSize = (PFNGLPOINTSIZEPROC_MT)cmgr->getProcAddress("glPointSize"); + if (!PolygonMode) PolygonMode = (PFNGLPOLYGONMODEPROC_MT)cmgr->getProcAddress("glPolygonMode"); + if (!Scissor) Scissor = (PFNGLSCISSORPROC_MT)cmgr->getProcAddress("glScissor"); + if (!TexParameterf) TexParameterf = (PFNGLTEXPARAMETERFPROC_MT)cmgr->getProcAddress("glTexParameterf"); + if (!TexParameterfv) TexParameterfv = (PFNGLTEXPARAMETERFVPROC_MT)cmgr->getProcAddress("glTexParameterfv"); + if (!TexParameteri) TexParameteri = (PFNGLTEXPARAMETERIPROC_MT)cmgr->getProcAddress("glTexParameteri"); + if (!TexParameteriv) TexParameteriv = (PFNGLTEXPARAMETERIVPROC_MT)cmgr->getProcAddress("glTexParameteriv"); + if (!TexImage1D) TexImage1D = (PFNGLTEXIMAGE1DPROC_MT)cmgr->getProcAddress("glTexImage1D"); + if (!TexImage2D) TexImage2D = (PFNGLTEXIMAGE2DPROC_MT)cmgr->getProcAddress("glTexImage2D"); + if (!DrawBuffer) DrawBuffer = (PFNGLDRAWBUFFERPROC_MT)cmgr->getProcAddress("glDrawBuffer"); + if (!Clear) Clear = (PFNGLCLEARPROC_MT)cmgr->getProcAddress("glClear"); + if (!ClearColor) ClearColor = (PFNGLCLEARCOLORPROC_MT)cmgr->getProcAddress("glClearColor"); + if (!ClearStencil) ClearStencil = (PFNGLCLEARSTENCILPROC_MT)cmgr->getProcAddress("glClearStencil"); + if (!ClearDepth) ClearDepth = (PFNGLCLEARDEPTHPROC_MT)cmgr->getProcAddress("glClearDepth"); + if (!StencilMask) StencilMask = (PFNGLSTENCILMASKPROC_MT)cmgr->getProcAddress("glStencilMask"); + if (!ColorMask) ColorMask = (PFNGLCOLORMASKPROC_MT)cmgr->getProcAddress("glColorMask"); + if (!DepthMask) DepthMask = (PFNGLDEPTHMASKPROC_MT)cmgr->getProcAddress("glDepthMask"); + if (!Disable) Disable = (PFNGLDISABLEPROC_MT)cmgr->getProcAddress("glDisable"); + if (!Enable) Enable = (PFNGLENABLEPROC_MT)cmgr->getProcAddress("glEnable"); + if (!Finish) Finish = (PFNGLFINISHPROC_MT)cmgr->getProcAddress("glFinish"); + if (!Flush) Flush = (PFNGLFLUSHPROC_MT)cmgr->getProcAddress("glFlush"); + if (!BlendFunc) BlendFunc = (PFNGLBLENDFUNCPROC_MT)cmgr->getProcAddress("glBlendFunc"); + if (!LogicOp) LogicOp = (PFNGLLOGICOPPROC_MT)cmgr->getProcAddress("glLogicOp"); + if (!StencilFunc) StencilFunc = (PFNGLSTENCILFUNCPROC_MT)cmgr->getProcAddress("glStencilFunc"); + if (!StencilOp) StencilOp = (PFNGLSTENCILOPPROC_MT)cmgr->getProcAddress("glStencilOp"); + if (!DepthFunc) DepthFunc = (PFNGLDEPTHFUNCPROC_MT)cmgr->getProcAddress("glDepthFunc"); + if (!PixelStoref) PixelStoref = (PFNGLPIXELSTOREFPROC_MT)cmgr->getProcAddress("glPixelStoref"); + if (!PixelStorei) PixelStorei = (PFNGLPIXELSTOREIPROC_MT)cmgr->getProcAddress("glPixelStorei"); + if (!ReadBuffer) ReadBuffer = (PFNGLREADBUFFERPROC_MT)cmgr->getProcAddress("glReadBuffer"); + if (!ReadPixels) ReadPixels = (PFNGLREADPIXELSPROC_MT)cmgr->getProcAddress("glReadPixels"); + if (!GetBooleanv) GetBooleanv = (PFNGLGETBOOLEANVPROC_MT)cmgr->getProcAddress("glGetBooleanv"); + if (!GetDoublev) GetDoublev = (PFNGLGETDOUBLEVPROC_MT)cmgr->getProcAddress("glGetDoublev"); + if (!GetError) GetError = (PFNGLGETERRORPROC_MT)cmgr->getProcAddress("glGetError"); + if (!GetFloatv) GetFloatv = (PFNGLGETFLOATVPROC_MT)cmgr->getProcAddress("glGetFloatv"); + if (!GetIntegerv) GetIntegerv = (PFNGLGETINTEGERVPROC_MT)cmgr->getProcAddress("glGetIntegerv"); + if (!GetString) GetString = (PFNGLGETSTRINGPROC_MT)cmgr->getProcAddress("glGetString"); + if (!GetTexImage) GetTexImage = (PFNGLGETTEXIMAGEPROC_MT)cmgr->getProcAddress("glGetTexImage"); + if (!GetTexParameterfv) GetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC_MT)cmgr->getProcAddress("glGetTexParameterfv"); + if (!GetTexParameteriv) GetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetTexParameteriv"); + if (!GetTexLevelParameterfv) GetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC_MT)cmgr->getProcAddress("glGetTexLevelParameterfv"); + if (!GetTexLevelParameteriv) GetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetTexLevelParameteriv"); + if (!IsEnabled) IsEnabled = (PFNGLISENABLEDPROC_MT)cmgr->getProcAddress("glIsEnabled"); + if (!DepthRange) DepthRange = (PFNGLDEPTHRANGEPROC_MT)cmgr->getProcAddress("glDepthRange"); + if (!Viewport) Viewport = (PFNGLVIEWPORTPROC_MT)cmgr->getProcAddress("glViewport"); + if (!DrawArrays) DrawArrays = (PFNGLDRAWARRAYSPROC_MT)cmgr->getProcAddress("glDrawArrays"); + if (!DrawElements) DrawElements = (PFNGLDRAWELEMENTSPROC_MT)cmgr->getProcAddress("glDrawElements"); + if (!GetPointerv) GetPointerv = (PFNGLGETPOINTERVPROC_MT)cmgr->getProcAddress("glGetPointerv"); + if (!PolygonOffset) PolygonOffset = (PFNGLPOLYGONOFFSETPROC_MT)cmgr->getProcAddress("glPolygonOffset"); + if (!CopyTexImage1D) CopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC_MT)cmgr->getProcAddress("glCopyTexImage1D"); + if (!CopyTexImage2D) CopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC_MT)cmgr->getProcAddress("glCopyTexImage2D"); + if (!CopyTexSubImage1D) CopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC_MT)cmgr->getProcAddress("glCopyTexSubImage1D"); + if (!CopyTexSubImage2D) CopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC_MT)cmgr->getProcAddress("glCopyTexSubImage2D"); + if (!TexSubImage1D) TexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC_MT)cmgr->getProcAddress("glTexSubImage1D"); + if (!TexSubImage2D) TexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC_MT)cmgr->getProcAddress("glTexSubImage2D"); + if (!BindTexture) BindTexture = (PFNGLBINDTEXTUREPROC_MT)cmgr->getProcAddress("glBindTexture"); + if (!DeleteTextures) DeleteTextures = (PFNGLDELETETEXTURESPROC_MT)cmgr->getProcAddress("glDeleteTextures"); + if (!GenTextures) GenTextures = (PFNGLGENTEXTURESPROC_MT)cmgr->getProcAddress("glGenTextures"); + if (!IsTexture) IsTexture = (PFNGLISTEXTUREPROC_MT)cmgr->getProcAddress("glIsTexture"); + if (!DrawRangeElements) DrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC_MT)cmgr->getProcAddress("glDrawRangeElements"); + if (!TexImage3D) TexImage3D = (PFNGLTEXIMAGE3DPROC_MT)cmgr->getProcAddress("glTexImage3D"); + if (!TexSubImage3D) TexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC_MT)cmgr->getProcAddress("glTexSubImage3D"); + if (!CopyTexSubImage3D) CopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC_MT)cmgr->getProcAddress("glCopyTexSubImage3D"); + if (!ActiveTexture) ActiveTexture = (PFNGLACTIVETEXTUREPROC_MT)cmgr->getProcAddress("glActiveTexture"); + if (!SampleCoverage) SampleCoverage = (PFNGLSAMPLECOVERAGEPROC_MT)cmgr->getProcAddress("glSampleCoverage"); + if (!CompressedTexImage3D) CompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC_MT)cmgr->getProcAddress("glCompressedTexImage3D"); + if (!CompressedTexImage2D) CompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC_MT)cmgr->getProcAddress("glCompressedTexImage2D"); + if (!CompressedTexImage1D) CompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC_MT)cmgr->getProcAddress("glCompressedTexImage1D"); + if (!CompressedTexSubImage3D) CompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC_MT)cmgr->getProcAddress("glCompressedTexSubImage3D"); + if (!CompressedTexSubImage2D) CompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC_MT)cmgr->getProcAddress("glCompressedTexSubImage2D"); + if (!CompressedTexSubImage1D) CompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC_MT)cmgr->getProcAddress("glCompressedTexSubImage1D"); + if (!GetCompressedTexImage) GetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC_MT)cmgr->getProcAddress("glGetCompressedTexImage"); + if (!BlendFuncSeparate) BlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC_MT)cmgr->getProcAddress("glBlendFuncSeparate"); + if (!MultiDrawArrays) MultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC_MT)cmgr->getProcAddress("glMultiDrawArrays"); + if (!MultiDrawElements) MultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC_MT)cmgr->getProcAddress("glMultiDrawElements"); + if (!PointParameterf) PointParameterf = (PFNGLPOINTPARAMETERFPROC_MT)cmgr->getProcAddress("glPointParameterf"); + if (!PointParameterfv) PointParameterfv = (PFNGLPOINTPARAMETERFVPROC_MT)cmgr->getProcAddress("glPointParameterfv"); + if (!PointParameteri) PointParameteri = (PFNGLPOINTPARAMETERIPROC_MT)cmgr->getProcAddress("glPointParameteri"); + if (!PointParameteriv) PointParameteriv = (PFNGLPOINTPARAMETERIVPROC_MT)cmgr->getProcAddress("glPointParameteriv"); + if (!BlendColor) BlendColor = (PFNGLBLENDCOLORPROC_MT)cmgr->getProcAddress("glBlendColor"); + if (!BlendEquation) BlendEquation = (PFNGLBLENDEQUATIONPROC_MT)cmgr->getProcAddress("glBlendEquation"); + if (!GenQueries) GenQueries = (PFNGLGENQUERIESPROC_MT)cmgr->getProcAddress("glGenQueries"); + if (!DeleteQueries) DeleteQueries = (PFNGLDELETEQUERIESPROC_MT)cmgr->getProcAddress("glDeleteQueries"); + if (!IsQuery) IsQuery = (PFNGLISQUERYPROC_MT)cmgr->getProcAddress("glIsQuery"); + if (!BeginQuery) BeginQuery = (PFNGLBEGINQUERYPROC_MT)cmgr->getProcAddress("glBeginQuery"); + if (!EndQuery) EndQuery = (PFNGLENDQUERYPROC_MT)cmgr->getProcAddress("glEndQuery"); + if (!GetQueryiv) GetQueryiv = (PFNGLGETQUERYIVPROC_MT)cmgr->getProcAddress("glGetQueryiv"); + if (!GetQueryObjectiv) GetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC_MT)cmgr->getProcAddress("glGetQueryObjectiv"); + if (!GetQueryObjectuiv) GetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC_MT)cmgr->getProcAddress("glGetQueryObjectuiv"); + if (!BindBuffer) BindBuffer = (PFNGLBINDBUFFERPROC_MT)cmgr->getProcAddress("glBindBuffer"); + if (!DeleteBuffers) DeleteBuffers = (PFNGLDELETEBUFFERSPROC_MT)cmgr->getProcAddress("glDeleteBuffers"); + if (!GenBuffers) GenBuffers = (PFNGLGENBUFFERSPROC_MT)cmgr->getProcAddress("glGenBuffers"); + if (!IsBuffer) IsBuffer = (PFNGLISBUFFERPROC_MT)cmgr->getProcAddress("glIsBuffer"); + if (!BufferData) BufferData = (PFNGLBUFFERDATAPROC_MT)cmgr->getProcAddress("glBufferData"); + if (!BufferSubData) BufferSubData = (PFNGLBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glBufferSubData"); + if (!GetBufferSubData) GetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glGetBufferSubData"); + if (!MapBuffer) MapBuffer = (PFNGLMAPBUFFERPROC_MT)cmgr->getProcAddress("glMapBuffer"); + if (!UnmapBuffer) UnmapBuffer = (PFNGLUNMAPBUFFERPROC_MT)cmgr->getProcAddress("glUnmapBuffer"); + if (!GetBufferParameteriv) GetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetBufferParameteriv"); + if (!GetBufferPointerv) GetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC_MT)cmgr->getProcAddress("glGetBufferPointerv"); + if (!BlendEquationSeparate) BlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC_MT)cmgr->getProcAddress("glBlendEquationSeparate"); + if (!DrawBuffers) DrawBuffers = (PFNGLDRAWBUFFERSPROC_MT)cmgr->getProcAddress("glDrawBuffers"); + if (!StencilOpSeparate) StencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC_MT)cmgr->getProcAddress("glStencilOpSeparate"); + if (!StencilFuncSeparate) StencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC_MT)cmgr->getProcAddress("glStencilFuncSeparate"); + if (!StencilMaskSeparate) StencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC_MT)cmgr->getProcAddress("glStencilMaskSeparate"); + if (!AttachShader) AttachShader = (PFNGLATTACHSHADERPROC_MT)cmgr->getProcAddress("glAttachShader"); + if (!BindAttribLocation) BindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC_MT)cmgr->getProcAddress("glBindAttribLocation"); + if (!CompileShader) CompileShader = (PFNGLCOMPILESHADERPROC_MT)cmgr->getProcAddress("glCompileShader"); + if (!CreateProgram) CreateProgram = (PFNGLCREATEPROGRAMPROC_MT)cmgr->getProcAddress("glCreateProgram"); + if (!CreateShader) CreateShader = (PFNGLCREATESHADERPROC_MT)cmgr->getProcAddress("glCreateShader"); + if (!DeleteProgram) DeleteProgram = (PFNGLDELETEPROGRAMPROC_MT)cmgr->getProcAddress("glDeleteProgram"); + if (!DeleteShader) DeleteShader = (PFNGLDELETESHADERPROC_MT)cmgr->getProcAddress("glDeleteShader"); + if (!DetachShader) DetachShader = (PFNGLDETACHSHADERPROC_MT)cmgr->getProcAddress("glDetachShader"); + if (!DisableVertexAttribArray) DisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC_MT)cmgr->getProcAddress("glDisableVertexAttribArray"); + if (!EnableVertexAttribArray) EnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC_MT)cmgr->getProcAddress("glEnableVertexAttribArray"); + if (!GetActiveAttrib) GetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC_MT)cmgr->getProcAddress("glGetActiveAttrib"); + if (!GetActiveUniform) GetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC_MT)cmgr->getProcAddress("glGetActiveUniform"); + if (!GetAttachedShaders) GetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC_MT)cmgr->getProcAddress("glGetAttachedShaders"); + if (!GetAttribLocation) GetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC_MT)cmgr->getProcAddress("glGetAttribLocation"); + if (!GetProgramiv) GetProgramiv = (PFNGLGETPROGRAMIVPROC_MT)cmgr->getProcAddress("glGetProgramiv"); + if (!GetProgramInfoLog) GetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC_MT)cmgr->getProcAddress("glGetProgramInfoLog"); + if (!GetShaderiv) GetShaderiv = (PFNGLGETSHADERIVPROC_MT)cmgr->getProcAddress("glGetShaderiv"); + if (!GetShaderInfoLog) GetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC_MT)cmgr->getProcAddress("glGetShaderInfoLog"); + if (!GetShaderSource) GetShaderSource = (PFNGLGETSHADERSOURCEPROC_MT)cmgr->getProcAddress("glGetShaderSource"); + if (!GetUniformLocation) GetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC_MT)cmgr->getProcAddress("glGetUniformLocation"); + if (!GetUniformfv) GetUniformfv = (PFNGLGETUNIFORMFVPROC_MT)cmgr->getProcAddress("glGetUniformfv"); + if (!GetUniformiv) GetUniformiv = (PFNGLGETUNIFORMIVPROC_MT)cmgr->getProcAddress("glGetUniformiv"); + if (!GetVertexAttribdv) GetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC_MT)cmgr->getProcAddress("glGetVertexAttribdv"); + if (!GetVertexAttribfv) GetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC_MT)cmgr->getProcAddress("glGetVertexAttribfv"); + if (!GetVertexAttribiv) GetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC_MT)cmgr->getProcAddress("glGetVertexAttribiv"); + if (!GetVertexAttribPointerv) GetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC_MT)cmgr->getProcAddress("glGetVertexAttribPointerv"); + if (!IsProgram) IsProgram = (PFNGLISPROGRAMPROC_MT)cmgr->getProcAddress("glIsProgram"); + if (!IsShader) IsShader = (PFNGLISSHADERPROC_MT)cmgr->getProcAddress("glIsShader"); + if (!LinkProgram) LinkProgram = (PFNGLLINKPROGRAMPROC_MT)cmgr->getProcAddress("glLinkProgram"); + if (!ShaderSource) ShaderSource = (PFNGLSHADERSOURCEPROC_MT)cmgr->getProcAddress("glShaderSource"); + if (!UseProgram) UseProgram = (PFNGLUSEPROGRAMPROC_MT)cmgr->getProcAddress("glUseProgram"); + if (!Uniform1f) Uniform1f = (PFNGLUNIFORM1FPROC_MT)cmgr->getProcAddress("glUniform1f"); + if (!Uniform2f) Uniform2f = (PFNGLUNIFORM2FPROC_MT)cmgr->getProcAddress("glUniform2f"); + if (!Uniform3f) Uniform3f = (PFNGLUNIFORM3FPROC_MT)cmgr->getProcAddress("glUniform3f"); + if (!Uniform4f) Uniform4f = (PFNGLUNIFORM4FPROC_MT)cmgr->getProcAddress("glUniform4f"); + if (!Uniform1i) Uniform1i = (PFNGLUNIFORM1IPROC_MT)cmgr->getProcAddress("glUniform1i"); + if (!Uniform2i) Uniform2i = (PFNGLUNIFORM2IPROC_MT)cmgr->getProcAddress("glUniform2i"); + if (!Uniform3i) Uniform3i = (PFNGLUNIFORM3IPROC_MT)cmgr->getProcAddress("glUniform3i"); + if (!Uniform4i) Uniform4i = (PFNGLUNIFORM4IPROC_MT)cmgr->getProcAddress("glUniform4i"); + if (!Uniform1fv) Uniform1fv = (PFNGLUNIFORM1FVPROC_MT)cmgr->getProcAddress("glUniform1fv"); + if (!Uniform2fv) Uniform2fv = (PFNGLUNIFORM2FVPROC_MT)cmgr->getProcAddress("glUniform2fv"); + if (!Uniform3fv) Uniform3fv = (PFNGLUNIFORM3FVPROC_MT)cmgr->getProcAddress("glUniform3fv"); + if (!Uniform4fv) Uniform4fv = (PFNGLUNIFORM4FVPROC_MT)cmgr->getProcAddress("glUniform4fv"); + if (!Uniform1iv) Uniform1iv = (PFNGLUNIFORM1IVPROC_MT)cmgr->getProcAddress("glUniform1iv"); + if (!Uniform2iv) Uniform2iv = (PFNGLUNIFORM2IVPROC_MT)cmgr->getProcAddress("glUniform2iv"); + if (!Uniform3iv) Uniform3iv = (PFNGLUNIFORM3IVPROC_MT)cmgr->getProcAddress("glUniform3iv"); + if (!Uniform4iv) Uniform4iv = (PFNGLUNIFORM4IVPROC_MT)cmgr->getProcAddress("glUniform4iv"); + if (!UniformMatrix2fv) UniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC_MT)cmgr->getProcAddress("glUniformMatrix2fv"); + if (!UniformMatrix3fv) UniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC_MT)cmgr->getProcAddress("glUniformMatrix3fv"); + if (!UniformMatrix4fv) UniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC_MT)cmgr->getProcAddress("glUniformMatrix4fv"); + if (!ValidateProgram) ValidateProgram = (PFNGLVALIDATEPROGRAMPROC_MT)cmgr->getProcAddress("glValidateProgram"); + if (!VertexAttrib1d) VertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC_MT)cmgr->getProcAddress("glVertexAttrib1d"); + if (!VertexAttrib1dv) VertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC_MT)cmgr->getProcAddress("glVertexAttrib1dv"); + if (!VertexAttrib1f) VertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC_MT)cmgr->getProcAddress("glVertexAttrib1f"); + if (!VertexAttrib1fv) VertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC_MT)cmgr->getProcAddress("glVertexAttrib1fv"); + if (!VertexAttrib1s) VertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC_MT)cmgr->getProcAddress("glVertexAttrib1s"); + if (!VertexAttrib1sv) VertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC_MT)cmgr->getProcAddress("glVertexAttrib1sv"); + if (!VertexAttrib2d) VertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC_MT)cmgr->getProcAddress("glVertexAttrib2d"); + if (!VertexAttrib2dv) VertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC_MT)cmgr->getProcAddress("glVertexAttrib2dv"); + if (!VertexAttrib2f) VertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC_MT)cmgr->getProcAddress("glVertexAttrib2f"); + if (!VertexAttrib2fv) VertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC_MT)cmgr->getProcAddress("glVertexAttrib2fv"); + if (!VertexAttrib2s) VertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC_MT)cmgr->getProcAddress("glVertexAttrib2s"); + if (!VertexAttrib2sv) VertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC_MT)cmgr->getProcAddress("glVertexAttrib2sv"); + if (!VertexAttrib3d) VertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC_MT)cmgr->getProcAddress("glVertexAttrib3d"); + if (!VertexAttrib3dv) VertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC_MT)cmgr->getProcAddress("glVertexAttrib3dv"); + if (!VertexAttrib3f) VertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC_MT)cmgr->getProcAddress("glVertexAttrib3f"); + if (!VertexAttrib3fv) VertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC_MT)cmgr->getProcAddress("glVertexAttrib3fv"); + if (!VertexAttrib3s) VertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC_MT)cmgr->getProcAddress("glVertexAttrib3s"); + if (!VertexAttrib3sv) VertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC_MT)cmgr->getProcAddress("glVertexAttrib3sv"); + if (!VertexAttrib4Nbv) VertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC_MT)cmgr->getProcAddress("glVertexAttrib4Nbv"); + if (!VertexAttrib4Niv) VertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC_MT)cmgr->getProcAddress("glVertexAttrib4Niv"); + if (!VertexAttrib4Nsv) VertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC_MT)cmgr->getProcAddress("glVertexAttrib4Nsv"); + if (!VertexAttrib4Nub) VertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC_MT)cmgr->getProcAddress("glVertexAttrib4Nub"); + if (!VertexAttrib4Nubv) VertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC_MT)cmgr->getProcAddress("glVertexAttrib4Nubv"); + if (!VertexAttrib4Nuiv) VertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC_MT)cmgr->getProcAddress("glVertexAttrib4Nuiv"); + if (!VertexAttrib4Nusv) VertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC_MT)cmgr->getProcAddress("glVertexAttrib4Nusv"); + if (!VertexAttrib4bv) VertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC_MT)cmgr->getProcAddress("glVertexAttrib4bv"); + if (!VertexAttrib4d) VertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC_MT)cmgr->getProcAddress("glVertexAttrib4d"); + if (!VertexAttrib4dv) VertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC_MT)cmgr->getProcAddress("glVertexAttrib4dv"); + if (!VertexAttrib4f) VertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC_MT)cmgr->getProcAddress("glVertexAttrib4f"); + if (!VertexAttrib4fv) VertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC_MT)cmgr->getProcAddress("glVertexAttrib4fv"); + if (!VertexAttrib4iv) VertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC_MT)cmgr->getProcAddress("glVertexAttrib4iv"); + if (!VertexAttrib4s) VertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC_MT)cmgr->getProcAddress("glVertexAttrib4s"); + if (!VertexAttrib4sv) VertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC_MT)cmgr->getProcAddress("glVertexAttrib4sv"); + if (!VertexAttrib4ubv) VertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC_MT)cmgr->getProcAddress("glVertexAttrib4ubv"); + if (!VertexAttrib4uiv) VertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC_MT)cmgr->getProcAddress("glVertexAttrib4uiv"); + if (!VertexAttrib4usv) VertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC_MT)cmgr->getProcAddress("glVertexAttrib4usv"); + if (!VertexAttribPointer) VertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC_MT)cmgr->getProcAddress("glVertexAttribPointer"); + if (!UniformMatrix2x3fv) UniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC_MT)cmgr->getProcAddress("glUniformMatrix2x3fv"); + if (!UniformMatrix3x2fv) UniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC_MT)cmgr->getProcAddress("glUniformMatrix3x2fv"); + if (!UniformMatrix2x4fv) UniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC_MT)cmgr->getProcAddress("glUniformMatrix2x4fv"); + if (!UniformMatrix4x2fv) UniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC_MT)cmgr->getProcAddress("glUniformMatrix4x2fv"); + if (!UniformMatrix3x4fv) UniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC_MT)cmgr->getProcAddress("glUniformMatrix3x4fv"); + if (!UniformMatrix4x3fv) UniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC_MT)cmgr->getProcAddress("glUniformMatrix4x3fv"); + if (!ColorMaski) ColorMaski = (PFNGLCOLORMASKIPROC_MT)cmgr->getProcAddress("glColorMaski"); + if (!Enablei) Enablei = (PFNGLENABLEIPROC_MT)cmgr->getProcAddress("glEnablei"); + if (!Disablei) Disablei = (PFNGLDISABLEIPROC_MT)cmgr->getProcAddress("glDisablei"); + if (!IsEnabledi) IsEnabledi = (PFNGLISENABLEDIPROC_MT)cmgr->getProcAddress("glIsEnabledi"); + if (!BeginTransformFeedback) BeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glBeginTransformFeedback"); + if (!EndTransformFeedback) EndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glEndTransformFeedback"); + if (!BindBufferRange) BindBufferRange = (PFNGLBINDBUFFERRANGEPROC_MT)cmgr->getProcAddress("glBindBufferRange"); + if (!BindBufferBase) BindBufferBase = (PFNGLBINDBUFFERBASEPROC_MT)cmgr->getProcAddress("glBindBufferBase"); + if (!TransformFeedbackVaryings) TransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC_MT)cmgr->getProcAddress("glTransformFeedbackVaryings"); + if (!GetTransformFeedbackVarying) GetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC_MT)cmgr->getProcAddress("glGetTransformFeedbackVarying"); + if (!ClampColor) ClampColor = (PFNGLCLAMPCOLORPROC_MT)cmgr->getProcAddress("glClampColor"); + if (!BeginConditionalRender) BeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC_MT)cmgr->getProcAddress("glBeginConditionalRender"); + if (!EndConditionalRender) EndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC_MT)cmgr->getProcAddress("glEndConditionalRender"); + if (!VertexAttribIPointer) VertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC_MT)cmgr->getProcAddress("glVertexAttribIPointer"); + if (!GetVertexAttribIiv) GetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC_MT)cmgr->getProcAddress("glGetVertexAttribIiv"); + if (!GetVertexAttribIuiv) GetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC_MT)cmgr->getProcAddress("glGetVertexAttribIuiv"); + if (!VertexAttribI1i) VertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC_MT)cmgr->getProcAddress("glVertexAttribI1i"); + if (!VertexAttribI2i) VertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC_MT)cmgr->getProcAddress("glVertexAttribI2i"); + if (!VertexAttribI3i) VertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC_MT)cmgr->getProcAddress("glVertexAttribI3i"); + if (!VertexAttribI4i) VertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC_MT)cmgr->getProcAddress("glVertexAttribI4i"); + if (!VertexAttribI1ui) VertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC_MT)cmgr->getProcAddress("glVertexAttribI1ui"); + if (!VertexAttribI2ui) VertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC_MT)cmgr->getProcAddress("glVertexAttribI2ui"); + if (!VertexAttribI3ui) VertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC_MT)cmgr->getProcAddress("glVertexAttribI3ui"); + if (!VertexAttribI4ui) VertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC_MT)cmgr->getProcAddress("glVertexAttribI4ui"); + if (!VertexAttribI1iv) VertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC_MT)cmgr->getProcAddress("glVertexAttribI1iv"); + if (!VertexAttribI2iv) VertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC_MT)cmgr->getProcAddress("glVertexAttribI2iv"); + if (!VertexAttribI3iv) VertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC_MT)cmgr->getProcAddress("glVertexAttribI3iv"); + if (!VertexAttribI4iv) VertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC_MT)cmgr->getProcAddress("glVertexAttribI4iv"); + if (!VertexAttribI1uiv) VertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC_MT)cmgr->getProcAddress("glVertexAttribI1uiv"); + if (!VertexAttribI2uiv) VertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC_MT)cmgr->getProcAddress("glVertexAttribI2uiv"); + if (!VertexAttribI3uiv) VertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC_MT)cmgr->getProcAddress("glVertexAttribI3uiv"); + if (!VertexAttribI4uiv) VertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC_MT)cmgr->getProcAddress("glVertexAttribI4uiv"); + if (!VertexAttribI4bv) VertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC_MT)cmgr->getProcAddress("glVertexAttribI4bv"); + if (!VertexAttribI4sv) VertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC_MT)cmgr->getProcAddress("glVertexAttribI4sv"); + if (!VertexAttribI4ubv) VertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC_MT)cmgr->getProcAddress("glVertexAttribI4ubv"); + if (!VertexAttribI4usv) VertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC_MT)cmgr->getProcAddress("glVertexAttribI4usv"); + if (!GetUniformuiv) GetUniformuiv = (PFNGLGETUNIFORMUIVPROC_MT)cmgr->getProcAddress("glGetUniformuiv"); + if (!BindFragDataLocation) BindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC_MT)cmgr->getProcAddress("glBindFragDataLocation"); + if (!GetFragDataLocation) GetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC_MT)cmgr->getProcAddress("glGetFragDataLocation"); + if (!Uniform1ui) Uniform1ui = (PFNGLUNIFORM1UIPROC_MT)cmgr->getProcAddress("glUniform1ui"); + if (!Uniform2ui) Uniform2ui = (PFNGLUNIFORM2UIPROC_MT)cmgr->getProcAddress("glUniform2ui"); + if (!Uniform3ui) Uniform3ui = (PFNGLUNIFORM3UIPROC_MT)cmgr->getProcAddress("glUniform3ui"); + if (!Uniform4ui) Uniform4ui = (PFNGLUNIFORM4UIPROC_MT)cmgr->getProcAddress("glUniform4ui"); + if (!Uniform1uiv) Uniform1uiv = (PFNGLUNIFORM1UIVPROC_MT)cmgr->getProcAddress("glUniform1uiv"); + if (!Uniform2uiv) Uniform2uiv = (PFNGLUNIFORM2UIVPROC_MT)cmgr->getProcAddress("glUniform2uiv"); + if (!Uniform3uiv) Uniform3uiv = (PFNGLUNIFORM3UIVPROC_MT)cmgr->getProcAddress("glUniform3uiv"); + if (!Uniform4uiv) Uniform4uiv = (PFNGLUNIFORM4UIVPROC_MT)cmgr->getProcAddress("glUniform4uiv"); + if (!TexParameterIiv) TexParameterIiv = (PFNGLTEXPARAMETERIIVPROC_MT)cmgr->getProcAddress("glTexParameterIiv"); + if (!TexParameterIuiv) TexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC_MT)cmgr->getProcAddress("glTexParameterIuiv"); + if (!GetTexParameterIiv) GetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC_MT)cmgr->getProcAddress("glGetTexParameterIiv"); + if (!GetTexParameterIuiv) GetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC_MT)cmgr->getProcAddress("glGetTexParameterIuiv"); + if (!ClearBufferiv) ClearBufferiv = (PFNGLCLEARBUFFERIVPROC_MT)cmgr->getProcAddress("glClearBufferiv"); + if (!ClearBufferuiv) ClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC_MT)cmgr->getProcAddress("glClearBufferuiv"); + if (!ClearBufferfv) ClearBufferfv = (PFNGLCLEARBUFFERFVPROC_MT)cmgr->getProcAddress("glClearBufferfv"); + if (!ClearBufferfi) ClearBufferfi = (PFNGLCLEARBUFFERFIPROC_MT)cmgr->getProcAddress("glClearBufferfi"); + if (!GetStringi) GetStringi = (PFNGLGETSTRINGIPROC_MT)cmgr->getProcAddress("glGetStringi"); + if (!IsRenderbuffer) IsRenderbuffer = (PFNGLISRENDERBUFFERPROC_MT)cmgr->getProcAddress("glIsRenderbuffer"); + if (!BindRenderbuffer) BindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC_MT)cmgr->getProcAddress("glBindRenderbuffer"); + if (!DeleteRenderbuffers) DeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC_MT)cmgr->getProcAddress("glDeleteRenderbuffers"); + if (!GenRenderbuffers) GenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC_MT)cmgr->getProcAddress("glGenRenderbuffers"); + if (!RenderbufferStorage) RenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC_MT)cmgr->getProcAddress("glRenderbufferStorage"); + if (!GetRenderbufferParameteriv) GetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetRenderbufferParameteriv"); + if (!IsFramebuffer) IsFramebuffer = (PFNGLISFRAMEBUFFERPROC_MT)cmgr->getProcAddress("glIsFramebuffer"); + if (!BindFramebuffer) BindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC_MT)cmgr->getProcAddress("glBindFramebuffer"); + if (!DeleteFramebuffers) DeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC_MT)cmgr->getProcAddress("glDeleteFramebuffers"); + if (!GenFramebuffers) GenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC_MT)cmgr->getProcAddress("glGenFramebuffers"); + if (!CheckFramebufferStatus) CheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC_MT)cmgr->getProcAddress("glCheckFramebufferStatus"); + if (!FramebufferTexture1D) FramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC_MT)cmgr->getProcAddress("glFramebufferTexture1D"); + if (!FramebufferTexture2D) FramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC_MT)cmgr->getProcAddress("glFramebufferTexture2D"); + if (!FramebufferTexture3D) FramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC_MT)cmgr->getProcAddress("glFramebufferTexture3D"); + if (!FramebufferRenderbuffer) FramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC_MT)cmgr->getProcAddress("glFramebufferRenderbuffer"); + if (!GetFramebufferAttachmentParameteriv) GetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetFramebufferAttachmentParameteriv"); + if (!GenerateMipmap) GenerateMipmap = (PFNGLGENERATEMIPMAPPROC_MT)cmgr->getProcAddress("glGenerateMipmap"); + if (!BlitFramebuffer) BlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC_MT)cmgr->getProcAddress("glBlitFramebuffer"); + if (!RenderbufferStorageMultisample) RenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC_MT)cmgr->getProcAddress("glRenderbufferStorageMultisample"); + if (!FramebufferTextureLayer) FramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC_MT)cmgr->getProcAddress("glFramebufferTextureLayer"); + if (!FramebufferTextureLayer) FramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC_MT)cmgr->getProcAddress("glFramebufferTextureLayerARB"); + if (!MapBufferRange) MapBufferRange = (PFNGLMAPBUFFERRANGEPROC_MT)cmgr->getProcAddress("glMapBufferRange"); + if (!FlushMappedBufferRange) FlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC_MT)cmgr->getProcAddress("glFlushMappedBufferRange"); + if (!BindVertexArray) BindVertexArray = (PFNGLBINDVERTEXARRAYPROC_MT)cmgr->getProcAddress("glBindVertexArray"); + if (!DeleteVertexArrays) DeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC_MT)cmgr->getProcAddress("glDeleteVertexArrays"); + if (!GenVertexArrays) GenVertexArrays = (PFNGLGENVERTEXARRAYSPROC_MT)cmgr->getProcAddress("glGenVertexArrays"); + if (!IsVertexArray) IsVertexArray = (PFNGLISVERTEXARRAYPROC_MT)cmgr->getProcAddress("glIsVertexArray"); + if (!DrawArraysInstanced) DrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC_MT)cmgr->getProcAddress("glDrawArraysInstanced"); + if (!DrawArraysInstanced) DrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC_MT)cmgr->getProcAddress("glDrawArraysInstancedARB"); + if (!DrawElementsInstanced) DrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC_MT)cmgr->getProcAddress("glDrawElementsInstanced"); + if (!DrawElementsInstanced) DrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC_MT)cmgr->getProcAddress("glDrawElementsInstancedARB"); + if (!TexBuffer) TexBuffer = (PFNGLTEXBUFFERPROC_MT)cmgr->getProcAddress("glTexBuffer"); + if (!TexBuffer) TexBuffer = (PFNGLTEXBUFFERPROC_MT)cmgr->getProcAddress("glTexBufferARB"); + if (!PrimitiveRestartIndex) PrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC_MT)cmgr->getProcAddress("glPrimitiveRestartIndex"); + if (!CopyBufferSubData) CopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glCopyBufferSubData"); + if (!GetUniformIndices) GetUniformIndices = (PFNGLGETUNIFORMINDICESPROC_MT)cmgr->getProcAddress("glGetUniformIndices"); + if (!GetActiveUniformsiv) GetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC_MT)cmgr->getProcAddress("glGetActiveUniformsiv"); + if (!GetActiveUniformName) GetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC_MT)cmgr->getProcAddress("glGetActiveUniformName"); + if (!GetUniformBlockIndex) GetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC_MT)cmgr->getProcAddress("glGetUniformBlockIndex"); + if (!GetActiveUniformBlockiv) GetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC_MT)cmgr->getProcAddress("glGetActiveUniformBlockiv"); + if (!GetActiveUniformBlockName) GetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC_MT)cmgr->getProcAddress("glGetActiveUniformBlockName"); + if (!UniformBlockBinding) UniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC_MT)cmgr->getProcAddress("glUniformBlockBinding"); + if (!DrawElementsBaseVertex) DrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC_MT)cmgr->getProcAddress("glDrawElementsBaseVertex"); + if (!DrawRangeElementsBaseVertex) DrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC_MT)cmgr->getProcAddress("glDrawRangeElementsBaseVertex"); + if (!DrawElementsInstancedBaseVertex) DrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC_MT)cmgr->getProcAddress("glDrawElementsInstancedBaseVertex"); + if (!MultiDrawElementsBaseVertex) MultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC_MT)cmgr->getProcAddress("glMultiDrawElementsBaseVertex"); + if (!ProvokingVertex) ProvokingVertex = (PFNGLPROVOKINGVERTEXPROC_MT)cmgr->getProcAddress("glProvokingVertex"); + if (!FenceSync) FenceSync = (PFNGLFENCESYNCPROC_MT)cmgr->getProcAddress("glFenceSync"); + if (!IsSync) IsSync = (PFNGLISSYNCPROC_MT)cmgr->getProcAddress("glIsSync"); + if (!DeleteSync) DeleteSync = (PFNGLDELETESYNCPROC_MT)cmgr->getProcAddress("glDeleteSync"); + if (!ClientWaitSync) ClientWaitSync = (PFNGLCLIENTWAITSYNCPROC_MT)cmgr->getProcAddress("glClientWaitSync"); + if (!WaitSync) WaitSync = (PFNGLWAITSYNCPROC_MT)cmgr->getProcAddress("glWaitSync"); + if (!GetInteger64v) GetInteger64v = (PFNGLGETINTEGER64VPROC_MT)cmgr->getProcAddress("glGetInteger64v"); + if (!GetSynciv) GetSynciv = (PFNGLGETSYNCIVPROC_MT)cmgr->getProcAddress("glGetSynciv"); + if (!GetBufferParameteri64v) GetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC_MT)cmgr->getProcAddress("glGetBufferParameteri64v"); + if (!FramebufferTexture) FramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC_MT)cmgr->getProcAddress("glFramebufferTexture"); + if (!FramebufferTexture) FramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC_MT)cmgr->getProcAddress("glFramebufferTextureARB"); + if (!TexImage2DMultisample) TexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC_MT)cmgr->getProcAddress("glTexImage2DMultisample"); + if (!TexImage3DMultisample) TexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC_MT)cmgr->getProcAddress("glTexImage3DMultisample"); + if (!GetMultisamplefv) GetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC_MT)cmgr->getProcAddress("glGetMultisamplefv"); + if (!SampleMaski) SampleMaski = (PFNGLSAMPLEMASKIPROC_MT)cmgr->getProcAddress("glSampleMaski"); + if (!BindFragDataLocationIndexed) BindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC_MT)cmgr->getProcAddress("glBindFragDataLocationIndexed"); + if (!GetFragDataIndex) GetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC_MT)cmgr->getProcAddress("glGetFragDataIndex"); + if (!GenSamplers) GenSamplers = (PFNGLGENSAMPLERSPROC_MT)cmgr->getProcAddress("glGenSamplers"); + if (!DeleteSamplers) DeleteSamplers = (PFNGLDELETESAMPLERSPROC_MT)cmgr->getProcAddress("glDeleteSamplers"); + if (!IsSampler) IsSampler = (PFNGLISSAMPLERPROC_MT)cmgr->getProcAddress("glIsSampler"); + if (!BindSampler) BindSampler = (PFNGLBINDSAMPLERPROC_MT)cmgr->getProcAddress("glBindSampler"); + if (!SamplerParameteri) SamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC_MT)cmgr->getProcAddress("glSamplerParameteri"); + if (!SamplerParameteriv) SamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC_MT)cmgr->getProcAddress("glSamplerParameteriv"); + if (!SamplerParameterf) SamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC_MT)cmgr->getProcAddress("glSamplerParameterf"); + if (!SamplerParameterfv) SamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC_MT)cmgr->getProcAddress("glSamplerParameterfv"); + if (!SamplerParameterIiv) SamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC_MT)cmgr->getProcAddress("glSamplerParameterIiv"); + if (!SamplerParameterIuiv) SamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC_MT)cmgr->getProcAddress("glSamplerParameterIuiv"); + if (!GetSamplerParameteriv) GetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetSamplerParameteriv"); + if (!GetSamplerParameterIiv) GetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC_MT)cmgr->getProcAddress("glGetSamplerParameterIiv"); + if (!GetSamplerParameterfv) GetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC_MT)cmgr->getProcAddress("glGetSamplerParameterfv"); + if (!GetSamplerParameterIuiv) GetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC_MT)cmgr->getProcAddress("glGetSamplerParameterIuiv"); + if (!QueryCounter) QueryCounter = (PFNGLQUERYCOUNTERPROC_MT)cmgr->getProcAddress("glQueryCounter"); + if (!GetQueryObjecti64v) GetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC_MT)cmgr->getProcAddress("glGetQueryObjecti64v"); + if (!GetQueryObjectui64v) GetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC_MT)cmgr->getProcAddress("glGetQueryObjectui64v"); + if (!VertexAttribDivisor) VertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC_MT)cmgr->getProcAddress("glVertexAttribDivisor"); + if (!VertexAttribDivisor) VertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC_MT)cmgr->getProcAddress("glVertexAttribDivisorARB"); + if (!VertexAttribP1ui) VertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC_MT)cmgr->getProcAddress("glVertexAttribP1ui"); + if (!VertexAttribP1uiv) VertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC_MT)cmgr->getProcAddress("glVertexAttribP1uiv"); + if (!VertexAttribP2ui) VertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC_MT)cmgr->getProcAddress("glVertexAttribP2ui"); + if (!VertexAttribP2uiv) VertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC_MT)cmgr->getProcAddress("glVertexAttribP2uiv"); + if (!VertexAttribP3ui) VertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC_MT)cmgr->getProcAddress("glVertexAttribP3ui"); + if (!VertexAttribP3uiv) VertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC_MT)cmgr->getProcAddress("glVertexAttribP3uiv"); + if (!VertexAttribP4ui) VertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC_MT)cmgr->getProcAddress("glVertexAttribP4ui"); + if (!VertexAttribP4uiv) VertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC_MT)cmgr->getProcAddress("glVertexAttribP4uiv"); + if (!MinSampleShading) MinSampleShading = (PFNGLMINSAMPLESHADINGPROC_MT)cmgr->getProcAddress("glMinSampleShading"); + if (!MinSampleShading) MinSampleShading = (PFNGLMINSAMPLESHADINGPROC_MT)cmgr->getProcAddress("glMinSampleShadingARB"); + if (!BlendEquationi) BlendEquationi = (PFNGLBLENDEQUATIONIPROC_MT)cmgr->getProcAddress("glBlendEquationi"); + if (!BlendEquationi) BlendEquationi = (PFNGLBLENDEQUATIONIPROC_MT)cmgr->getProcAddress("glBlendEquationiARB"); + if (!BlendEquationSeparatei) BlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC_MT)cmgr->getProcAddress("glBlendEquationSeparatei"); + if (!BlendEquationSeparatei) BlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC_MT)cmgr->getProcAddress("glBlendEquationSeparateiARB"); + if (!BlendFunci) BlendFunci = (PFNGLBLENDFUNCIPROC_MT)cmgr->getProcAddress("glBlendFunci"); + if (!BlendFunci) BlendFunci = (PFNGLBLENDFUNCIPROC_MT)cmgr->getProcAddress("glBlendFunciARB"); + if (!BlendFuncSeparatei) BlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC_MT)cmgr->getProcAddress("glBlendFuncSeparatei"); + if (!BlendFuncSeparatei) BlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC_MT)cmgr->getProcAddress("glBlendFuncSeparateiARB"); + if (!DrawArraysIndirect) DrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC_MT)cmgr->getProcAddress("glDrawArraysIndirect"); + if (!DrawElementsIndirect) DrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC_MT)cmgr->getProcAddress("glDrawElementsIndirect"); + if (!Uniform1d) Uniform1d = (PFNGLUNIFORM1DPROC_MT)cmgr->getProcAddress("glUniform1d"); + if (!Uniform2d) Uniform2d = (PFNGLUNIFORM2DPROC_MT)cmgr->getProcAddress("glUniform2d"); + if (!Uniform3d) Uniform3d = (PFNGLUNIFORM3DPROC_MT)cmgr->getProcAddress("glUniform3d"); + if (!Uniform4d) Uniform4d = (PFNGLUNIFORM4DPROC_MT)cmgr->getProcAddress("glUniform4d"); + if (!Uniform1dv) Uniform1dv = (PFNGLUNIFORM1DVPROC_MT)cmgr->getProcAddress("glUniform1dv"); + if (!Uniform2dv) Uniform2dv = (PFNGLUNIFORM2DVPROC_MT)cmgr->getProcAddress("glUniform2dv"); + if (!Uniform3dv) Uniform3dv = (PFNGLUNIFORM3DVPROC_MT)cmgr->getProcAddress("glUniform3dv"); + if (!Uniform4dv) Uniform4dv = (PFNGLUNIFORM4DVPROC_MT)cmgr->getProcAddress("glUniform4dv"); + if (!UniformMatrix2dv) UniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC_MT)cmgr->getProcAddress("glUniformMatrix2dv"); + if (!UniformMatrix3dv) UniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC_MT)cmgr->getProcAddress("glUniformMatrix3dv"); + if (!UniformMatrix4dv) UniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC_MT)cmgr->getProcAddress("glUniformMatrix4dv"); + if (!UniformMatrix2x3dv) UniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC_MT)cmgr->getProcAddress("glUniformMatrix2x3dv"); + if (!UniformMatrix2x4dv) UniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC_MT)cmgr->getProcAddress("glUniformMatrix2x4dv"); + if (!UniformMatrix3x2dv) UniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC_MT)cmgr->getProcAddress("glUniformMatrix3x2dv"); + if (!UniformMatrix3x4dv) UniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC_MT)cmgr->getProcAddress("glUniformMatrix3x4dv"); + if (!UniformMatrix4x2dv) UniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC_MT)cmgr->getProcAddress("glUniformMatrix4x2dv"); + if (!UniformMatrix4x3dv) UniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC_MT)cmgr->getProcAddress("glUniformMatrix4x3dv"); + if (!GetUniformdv) GetUniformdv = (PFNGLGETUNIFORMDVPROC_MT)cmgr->getProcAddress("glGetUniformdv"); + if (!GetSubroutineUniformLocation) GetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC_MT)cmgr->getProcAddress("glGetSubroutineUniformLocation"); + if (!GetSubroutineIndex) GetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC_MT)cmgr->getProcAddress("glGetSubroutineIndex"); + if (!GetActiveSubroutineUniformiv) GetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC_MT)cmgr->getProcAddress("glGetActiveSubroutineUniformiv"); + if (!GetActiveSubroutineUniformName) GetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC_MT)cmgr->getProcAddress("glGetActiveSubroutineUniformName"); + if (!GetActiveSubroutineName) GetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC_MT)cmgr->getProcAddress("glGetActiveSubroutineName"); + if (!UniformSubroutinesuiv) UniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC_MT)cmgr->getProcAddress("glUniformSubroutinesuiv"); + if (!GetUniformSubroutineuiv) GetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC_MT)cmgr->getProcAddress("glGetUniformSubroutineuiv"); + if (!GetProgramStageiv) GetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC_MT)cmgr->getProcAddress("glGetProgramStageiv"); + if (!PatchParameteri) PatchParameteri = (PFNGLPATCHPARAMETERIPROC_MT)cmgr->getProcAddress("glPatchParameteri"); + if (!PatchParameterfv) PatchParameterfv = (PFNGLPATCHPARAMETERFVPROC_MT)cmgr->getProcAddress("glPatchParameterfv"); + if (!BindTransformFeedback) BindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glBindTransformFeedback"); + if (!DeleteTransformFeedbacks) DeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC_MT)cmgr->getProcAddress("glDeleteTransformFeedbacks"); + if (!GenTransformFeedbacks) GenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC_MT)cmgr->getProcAddress("glGenTransformFeedbacks"); + if (!IsTransformFeedback) IsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glIsTransformFeedback"); + if (!PauseTransformFeedback) PauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glPauseTransformFeedback"); + if (!ResumeTransformFeedback) ResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glResumeTransformFeedback"); + if (!DrawTransformFeedback) DrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC_MT)cmgr->getProcAddress("glDrawTransformFeedback"); + if (!DrawTransformFeedbackStream) DrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC_MT)cmgr->getProcAddress("glDrawTransformFeedbackStream"); + if (!BeginQueryIndexed) BeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC_MT)cmgr->getProcAddress("glBeginQueryIndexed"); + if (!EndQueryIndexed) EndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC_MT)cmgr->getProcAddress("glEndQueryIndexed"); + if (!GetQueryIndexediv) GetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC_MT)cmgr->getProcAddress("glGetQueryIndexediv"); + if (!ReleaseShaderCompiler) ReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC_MT)cmgr->getProcAddress("glReleaseShaderCompiler"); + if (!ShaderBinary) ShaderBinary = (PFNGLSHADERBINARYPROC_MT)cmgr->getProcAddress("glShaderBinary"); + if (!GetShaderPrecisionFormat) GetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC_MT)cmgr->getProcAddress("glGetShaderPrecisionFormat"); + if (!DepthRangef) DepthRangef = (PFNGLDEPTHRANGEFPROC_MT)cmgr->getProcAddress("glDepthRangef"); + if (!ClearDepthf) ClearDepthf = (PFNGLCLEARDEPTHFPROC_MT)cmgr->getProcAddress("glClearDepthf"); + if (!GetProgramBinary) GetProgramBinary = (PFNGLGETPROGRAMBINARYPROC_MT)cmgr->getProcAddress("glGetProgramBinary"); + if (!ProgramBinary) ProgramBinary = (PFNGLPROGRAMBINARYPROC_MT)cmgr->getProcAddress("glProgramBinary"); + if (!ProgramParameteri) ProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC_MT)cmgr->getProcAddress("glProgramParameteri"); + if (!ProgramParameteri) ProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC_MT)cmgr->getProcAddress("glProgramParameteriARB"); + if (!UseProgramStages) UseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC_MT)cmgr->getProcAddress("glUseProgramStages"); + if (!ActiveShaderProgram) ActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC_MT)cmgr->getProcAddress("glActiveShaderProgram"); + if (!CreateShaderProgramv) CreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC_MT)cmgr->getProcAddress("glCreateShaderProgramv"); + if (!BindProgramPipeline) BindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC_MT)cmgr->getProcAddress("glBindProgramPipeline"); + if (!DeleteProgramPipelines) DeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC_MT)cmgr->getProcAddress("glDeleteProgramPipelines"); + if (!GenProgramPipelines) GenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC_MT)cmgr->getProcAddress("glGenProgramPipelines"); + if (!IsProgramPipeline) IsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC_MT)cmgr->getProcAddress("glIsProgramPipeline"); + if (!GetProgramPipelineiv) GetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC_MT)cmgr->getProcAddress("glGetProgramPipelineiv"); + if (!ProgramUniform1i) ProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC_MT)cmgr->getProcAddress("glProgramUniform1i"); + if (!ProgramUniform1iv) ProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC_MT)cmgr->getProcAddress("glProgramUniform1iv"); + if (!ProgramUniform1f) ProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC_MT)cmgr->getProcAddress("glProgramUniform1f"); + if (!ProgramUniform1fv) ProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC_MT)cmgr->getProcAddress("glProgramUniform1fv"); + if (!ProgramUniform1d) ProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC_MT)cmgr->getProcAddress("glProgramUniform1d"); + if (!ProgramUniform1dv) ProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC_MT)cmgr->getProcAddress("glProgramUniform1dv"); + if (!ProgramUniform1ui) ProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC_MT)cmgr->getProcAddress("glProgramUniform1ui"); + if (!ProgramUniform1uiv) ProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC_MT)cmgr->getProcAddress("glProgramUniform1uiv"); + if (!ProgramUniform2i) ProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC_MT)cmgr->getProcAddress("glProgramUniform2i"); + if (!ProgramUniform2iv) ProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC_MT)cmgr->getProcAddress("glProgramUniform2iv"); + if (!ProgramUniform2f) ProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC_MT)cmgr->getProcAddress("glProgramUniform2f"); + if (!ProgramUniform2fv) ProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC_MT)cmgr->getProcAddress("glProgramUniform2fv"); + if (!ProgramUniform2d) ProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC_MT)cmgr->getProcAddress("glProgramUniform2d"); + if (!ProgramUniform2dv) ProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC_MT)cmgr->getProcAddress("glProgramUniform2dv"); + if (!ProgramUniform2ui) ProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC_MT)cmgr->getProcAddress("glProgramUniform2ui"); + if (!ProgramUniform2uiv) ProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC_MT)cmgr->getProcAddress("glProgramUniform2uiv"); + if (!ProgramUniform3i) ProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC_MT)cmgr->getProcAddress("glProgramUniform3i"); + if (!ProgramUniform3iv) ProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC_MT)cmgr->getProcAddress("glProgramUniform3iv"); + if (!ProgramUniform3f) ProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC_MT)cmgr->getProcAddress("glProgramUniform3f"); + if (!ProgramUniform3fv) ProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC_MT)cmgr->getProcAddress("glProgramUniform3fv"); + if (!ProgramUniform3d) ProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC_MT)cmgr->getProcAddress("glProgramUniform3d"); + if (!ProgramUniform3dv) ProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC_MT)cmgr->getProcAddress("glProgramUniform3dv"); + if (!ProgramUniform3ui) ProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC_MT)cmgr->getProcAddress("glProgramUniform3ui"); + if (!ProgramUniform3uiv) ProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC_MT)cmgr->getProcAddress("glProgramUniform3uiv"); + if (!ProgramUniform4i) ProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC_MT)cmgr->getProcAddress("glProgramUniform4i"); + if (!ProgramUniform4iv) ProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC_MT)cmgr->getProcAddress("glProgramUniform4iv"); + if (!ProgramUniform4f) ProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC_MT)cmgr->getProcAddress("glProgramUniform4f"); + if (!ProgramUniform4fv) ProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC_MT)cmgr->getProcAddress("glProgramUniform4fv"); + if (!ProgramUniform4d) ProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC_MT)cmgr->getProcAddress("glProgramUniform4d"); + if (!ProgramUniform4dv) ProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC_MT)cmgr->getProcAddress("glProgramUniform4dv"); + if (!ProgramUniform4ui) ProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC_MT)cmgr->getProcAddress("glProgramUniform4ui"); + if (!ProgramUniform4uiv) ProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC_MT)cmgr->getProcAddress("glProgramUniform4uiv"); + if (!ProgramUniformMatrix2fv) ProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix2fv"); + if (!ProgramUniformMatrix3fv) ProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix3fv"); + if (!ProgramUniformMatrix4fv) ProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix4fv"); + if (!ProgramUniformMatrix2dv) ProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix2dv"); + if (!ProgramUniformMatrix3dv) ProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix3dv"); + if (!ProgramUniformMatrix4dv) ProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix4dv"); + if (!ProgramUniformMatrix2x3fv) ProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix2x3fv"); + if (!ProgramUniformMatrix3x2fv) ProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix3x2fv"); + if (!ProgramUniformMatrix2x4fv) ProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix2x4fv"); + if (!ProgramUniformMatrix4x2fv) ProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix4x2fv"); + if (!ProgramUniformMatrix3x4fv) ProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix3x4fv"); + if (!ProgramUniformMatrix4x3fv) ProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix4x3fv"); + if (!ProgramUniformMatrix2x3dv) ProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix2x3dv"); + if (!ProgramUniformMatrix3x2dv) ProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix3x2dv"); + if (!ProgramUniformMatrix2x4dv) ProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix2x4dv"); + if (!ProgramUniformMatrix4x2dv) ProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix4x2dv"); + if (!ProgramUniformMatrix3x4dv) ProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix3x4dv"); + if (!ProgramUniformMatrix4x3dv) ProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC_MT)cmgr->getProcAddress("glProgramUniformMatrix4x3dv"); + if (!ValidateProgramPipeline) ValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC_MT)cmgr->getProcAddress("glValidateProgramPipeline"); + if (!GetProgramPipelineInfoLog) GetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC_MT)cmgr->getProcAddress("glGetProgramPipelineInfoLog"); + if (!VertexAttribL1d) VertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC_MT)cmgr->getProcAddress("glVertexAttribL1d"); + if (!VertexAttribL2d) VertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC_MT)cmgr->getProcAddress("glVertexAttribL2d"); + if (!VertexAttribL3d) VertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC_MT)cmgr->getProcAddress("glVertexAttribL3d"); + if (!VertexAttribL4d) VertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC_MT)cmgr->getProcAddress("glVertexAttribL4d"); + if (!VertexAttribL1dv) VertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC_MT)cmgr->getProcAddress("glVertexAttribL1dv"); + if (!VertexAttribL2dv) VertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC_MT)cmgr->getProcAddress("glVertexAttribL2dv"); + if (!VertexAttribL3dv) VertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC_MT)cmgr->getProcAddress("glVertexAttribL3dv"); + if (!VertexAttribL4dv) VertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC_MT)cmgr->getProcAddress("glVertexAttribL4dv"); + if (!VertexAttribLPointer) VertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC_MT)cmgr->getProcAddress("glVertexAttribLPointer"); + if (!GetVertexAttribLdv) GetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC_MT)cmgr->getProcAddress("glGetVertexAttribLdv"); + if (!ViewportArrayv) ViewportArrayv = (PFNGLVIEWPORTARRAYVPROC_MT)cmgr->getProcAddress("glViewportArrayv"); + if (!ViewportIndexedf) ViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC_MT)cmgr->getProcAddress("glViewportIndexedf"); + if (!ViewportIndexedfv) ViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC_MT)cmgr->getProcAddress("glViewportIndexedfv"); + if (!ScissorArrayv) ScissorArrayv = (PFNGLSCISSORARRAYVPROC_MT)cmgr->getProcAddress("glScissorArrayv"); + if (!ScissorIndexed) ScissorIndexed = (PFNGLSCISSORINDEXEDPROC_MT)cmgr->getProcAddress("glScissorIndexed"); + if (!ScissorIndexedv) ScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC_MT)cmgr->getProcAddress("glScissorIndexedv"); + if (!DepthRangeArrayv) DepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC_MT)cmgr->getProcAddress("glDepthRangeArrayv"); + if (!DepthRangeIndexed) DepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC_MT)cmgr->getProcAddress("glDepthRangeIndexed"); + if (!DrawArraysInstancedBaseInstance) DrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC_MT)cmgr->getProcAddress("glDrawArraysInstancedBaseInstance"); + if (!DrawElementsInstancedBaseInstance) DrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC_MT)cmgr->getProcAddress("glDrawElementsInstancedBaseInstance"); + if (!DrawElementsInstancedBaseVertexBaseInstance) DrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC_MT)cmgr->getProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"); + if (!GetInternalformativ) GetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC_MT)cmgr->getProcAddress("glGetInternalformativ"); + if (!GetActiveAtomicCounterBufferiv) GetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC_MT)cmgr->getProcAddress("glGetActiveAtomicCounterBufferiv"); + if (!BindImageTexture) BindImageTexture = (PFNGLBINDIMAGETEXTUREPROC_MT)cmgr->getProcAddress("glBindImageTexture"); + if (!MemoryBarrier) MemoryBarrier = (PFNGLMEMORYBARRIERPROC_MT)cmgr->getProcAddress("glMemoryBarrier"); + if (!TexStorage1D) TexStorage1D = (PFNGLTEXSTORAGE1DPROC_MT)cmgr->getProcAddress("glTexStorage1D"); + if (!TexStorage2D) TexStorage2D = (PFNGLTEXSTORAGE2DPROC_MT)cmgr->getProcAddress("glTexStorage2D"); + if (!TexStorage3D) TexStorage3D = (PFNGLTEXSTORAGE3DPROC_MT)cmgr->getProcAddress("glTexStorage3D"); + if (!DrawTransformFeedbackInstanced) DrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC_MT)cmgr->getProcAddress("glDrawTransformFeedbackInstanced"); + if (!DrawTransformFeedbackStreamInstanced) DrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC_MT)cmgr->getProcAddress("glDrawTransformFeedbackStreamInstanced"); + if (!ClearBufferData) ClearBufferData = (PFNGLCLEARBUFFERDATAPROC_MT)cmgr->getProcAddress("glClearBufferData"); + if (!ClearBufferSubData) ClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glClearBufferSubData"); + if (!DispatchCompute) DispatchCompute = (PFNGLDISPATCHCOMPUTEPROC_MT)cmgr->getProcAddress("glDispatchCompute"); + if (!DispatchComputeIndirect) DispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC_MT)cmgr->getProcAddress("glDispatchComputeIndirect"); + if (!CopyImageSubData) CopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC_MT)cmgr->getProcAddress("glCopyImageSubData"); + if (!FramebufferParameteri) FramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC_MT)cmgr->getProcAddress("glFramebufferParameteri"); + if (!GetFramebufferParameteriv) GetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetFramebufferParameteriv"); + if (!GetInternalformati64v) GetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC_MT)cmgr->getProcAddress("glGetInternalformati64v"); + if (!InvalidateTexSubImage) InvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC_MT)cmgr->getProcAddress("glInvalidateTexSubImage"); + if (!InvalidateTexImage) InvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC_MT)cmgr->getProcAddress("glInvalidateTexImage"); + if (!InvalidateBufferSubData) InvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glInvalidateBufferSubData"); + if (!InvalidateBufferData) InvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC_MT)cmgr->getProcAddress("glInvalidateBufferData"); + if (!InvalidateFramebuffer) InvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC_MT)cmgr->getProcAddress("glInvalidateFramebuffer"); + if (!InvalidateSubFramebuffer) InvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC_MT)cmgr->getProcAddress("glInvalidateSubFramebuffer"); + if (!MultiDrawArraysIndirect) MultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC_MT)cmgr->getProcAddress("glMultiDrawArraysIndirect"); + if (!MultiDrawElementsIndirect) MultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC_MT)cmgr->getProcAddress("glMultiDrawElementsIndirect"); + if (!GetProgramInterfaceiv) GetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC_MT)cmgr->getProcAddress("glGetProgramInterfaceiv"); + if (!GetProgramResourceIndex) GetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC_MT)cmgr->getProcAddress("glGetProgramResourceIndex"); + if (!GetProgramResourceName) GetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC_MT)cmgr->getProcAddress("glGetProgramResourceName"); + if (!GetProgramResourceiv) GetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC_MT)cmgr->getProcAddress("glGetProgramResourceiv"); + if (!GetProgramResourceLocation) GetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC_MT)cmgr->getProcAddress("glGetProgramResourceLocation"); + if (!GetProgramResourceLocationIndex) GetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC_MT)cmgr->getProcAddress("glGetProgramResourceLocationIndex"); + if (!ShaderStorageBlockBinding) ShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC_MT)cmgr->getProcAddress("glShaderStorageBlockBinding"); + if (!TexBufferRange) TexBufferRange = (PFNGLTEXBUFFERRANGEPROC_MT)cmgr->getProcAddress("glTexBufferRange"); + if (!TexStorage2DMultisample) TexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC_MT)cmgr->getProcAddress("glTexStorage2DMultisample"); + if (!TexStorage3DMultisample) TexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC_MT)cmgr->getProcAddress("glTexStorage3DMultisample"); + if (!TextureView) TextureView = (PFNGLTEXTUREVIEWPROC_MT)cmgr->getProcAddress("glTextureView"); + if (!BindVertexBuffer) BindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC_MT)cmgr->getProcAddress("glBindVertexBuffer"); + if (!VertexAttribFormat) VertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC_MT)cmgr->getProcAddress("glVertexAttribFormat"); + if (!VertexAttribIFormat) VertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC_MT)cmgr->getProcAddress("glVertexAttribIFormat"); + if (!VertexAttribLFormat) VertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC_MT)cmgr->getProcAddress("glVertexAttribLFormat"); + if (!VertexAttribBinding) VertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC_MT)cmgr->getProcAddress("glVertexAttribBinding"); + if (!VertexBindingDivisor) VertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC_MT)cmgr->getProcAddress("glVertexBindingDivisor"); + if (!DebugMessageControl) DebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC_MT)cmgr->getProcAddress("glDebugMessageControl"); + if (!DebugMessageControl) DebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC_MT)cmgr->getProcAddress("glDebugMessageControlARB"); + if (!DebugMessageInsert) DebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC_MT)cmgr->getProcAddress("glDebugMessageInsert"); + if (!DebugMessageInsert) DebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC_MT)cmgr->getProcAddress("glDebugMessageInsertARB"); + if (!DebugMessageCallback) DebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC_MT)cmgr->getProcAddress("glDebugMessageCallback"); + if (!DebugMessageCallback) DebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC_MT)cmgr->getProcAddress("glDebugMessageCallbackARB"); + if (!GetDebugMessageLog) GetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC_MT)cmgr->getProcAddress("glGetDebugMessageLog"); + if (!GetDebugMessageLog) GetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC_MT)cmgr->getProcAddress("glGetDebugMessageLogARB"); + if (!PushDebugGroup) PushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC_MT)cmgr->getProcAddress("glPushDebugGroup"); + if (!PopDebugGroup) PopDebugGroup = (PFNGLPOPDEBUGGROUPPROC_MT)cmgr->getProcAddress("glPopDebugGroup"); + if (!ObjectLabel) ObjectLabel = (PFNGLOBJECTLABELPROC_MT)cmgr->getProcAddress("glObjectLabel"); + if (!GetObjectLabel) GetObjectLabel = (PFNGLGETOBJECTLABELPROC_MT)cmgr->getProcAddress("glGetObjectLabel"); + if (!ObjectPtrLabel) ObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC_MT)cmgr->getProcAddress("glObjectPtrLabel"); + if (!GetObjectPtrLabel) GetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC_MT)cmgr->getProcAddress("glGetObjectPtrLabel"); + if (!BufferStorage) BufferStorage = (PFNGLBUFFERSTORAGEPROC_MT)cmgr->getProcAddress("glBufferStorage"); + if (!ClearTexImage) ClearTexImage = (PFNGLCLEARTEXIMAGEPROC_MT)cmgr->getProcAddress("glClearTexImage"); + if (!ClearTexSubImage) ClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC_MT)cmgr->getProcAddress("glClearTexSubImage"); + if (!BindBuffersBase) BindBuffersBase = (PFNGLBINDBUFFERSBASEPROC_MT)cmgr->getProcAddress("glBindBuffersBase"); + if (!BindBuffersRange) BindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC_MT)cmgr->getProcAddress("glBindBuffersRange"); + if (!BindTextures) BindTextures = (PFNGLBINDTEXTURESPROC_MT)cmgr->getProcAddress("glBindTextures"); + if (!BindSamplers) BindSamplers = (PFNGLBINDSAMPLERSPROC_MT)cmgr->getProcAddress("glBindSamplers"); + if (!BindImageTextures) BindImageTextures = (PFNGLBINDIMAGETEXTURESPROC_MT)cmgr->getProcAddress("glBindImageTextures"); + if (!BindVertexBuffers) BindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC_MT)cmgr->getProcAddress("glBindVertexBuffers"); + if (!ClipControl) ClipControl = (PFNGLCLIPCONTROLPROC_MT)cmgr->getProcAddress("glClipControl"); + if (!CreateTransformFeedbacks) CreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC_MT)cmgr->getProcAddress("glCreateTransformFeedbacks"); + if (!TransformFeedbackBufferBase) TransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC_MT)cmgr->getProcAddress("glTransformFeedbackBufferBase"); + if (!TransformFeedbackBufferRange) TransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC_MT)cmgr->getProcAddress("glTransformFeedbackBufferRange"); + if (!GetTransformFeedbackiv) GetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC_MT)cmgr->getProcAddress("glGetTransformFeedbackiv"); + if (!CreateBuffers) CreateBuffers = (PFNGLCREATEBUFFERSPROC_MT)cmgr->getProcAddress("glCreateBuffers"); + if (!NamedBufferStorage) NamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC_MT)cmgr->getProcAddress("glNamedBufferStorage"); + if (!NamedBufferData) NamedBufferData = (PFNGLNAMEDBUFFERDATAPROC_MT)cmgr->getProcAddress("glNamedBufferData"); + if (!NamedBufferSubData) NamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glNamedBufferSubData"); + if (!CopyNamedBufferSubData) CopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glCopyNamedBufferSubData"); + if (!ClearNamedBufferData) ClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC_MT)cmgr->getProcAddress("glClearNamedBufferData"); + if (!ClearNamedBufferSubData) ClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glClearNamedBufferSubData"); + if (!MapNamedBuffer) MapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC_MT)cmgr->getProcAddress("glMapNamedBuffer"); + if (!MapNamedBufferRange) MapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC_MT)cmgr->getProcAddress("glMapNamedBufferRange"); + if (!UnmapNamedBuffer) UnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC_MT)cmgr->getProcAddress("glUnmapNamedBuffer"); + if (!FlushMappedNamedBufferRange) FlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC_MT)cmgr->getProcAddress("glFlushMappedNamedBufferRange"); + if (!GetNamedBufferParameteriv) GetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetNamedBufferParameteriv"); + if (!GetNamedBufferParameteri64v) GetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC_MT)cmgr->getProcAddress("glGetNamedBufferParameteri64v"); + if (!GetNamedBufferPointerv) GetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC_MT)cmgr->getProcAddress("glGetNamedBufferPointerv"); + if (!GetNamedBufferSubData) GetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glGetNamedBufferSubData"); + if (!CreateFramebuffers) CreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC_MT)cmgr->getProcAddress("glCreateFramebuffers"); + if (!NamedFramebufferRenderbuffer) NamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC_MT)cmgr->getProcAddress("glNamedFramebufferRenderbuffer"); + if (!NamedFramebufferParameteri) NamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC_MT)cmgr->getProcAddress("glNamedFramebufferParameteri"); + if (!NamedFramebufferTexture) NamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC_MT)cmgr->getProcAddress("glNamedFramebufferTexture"); + if (!NamedFramebufferTextureLayer) NamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC_MT)cmgr->getProcAddress("glNamedFramebufferTextureLayer"); + if (!NamedFramebufferDrawBuffer) NamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC_MT)cmgr->getProcAddress("glNamedFramebufferDrawBuffer"); + if (!NamedFramebufferDrawBuffers) NamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC_MT)cmgr->getProcAddress("glNamedFramebufferDrawBuffers"); + if (!NamedFramebufferReadBuffer) NamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC_MT)cmgr->getProcAddress("glNamedFramebufferReadBuffer"); + if (!InvalidateNamedFramebufferData) InvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC_MT)cmgr->getProcAddress("glInvalidateNamedFramebufferData"); + if (!InvalidateNamedFramebufferSubData) InvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC_MT)cmgr->getProcAddress("glInvalidateNamedFramebufferSubData"); + if (!ClearNamedFramebufferiv) ClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC_MT)cmgr->getProcAddress("glClearNamedFramebufferiv"); + if (!ClearNamedFramebufferuiv) ClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC_MT)cmgr->getProcAddress("glClearNamedFramebufferuiv"); + if (!ClearNamedFramebufferfv) ClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC_MT)cmgr->getProcAddress("glClearNamedFramebufferfv"); + if (!ClearNamedFramebufferfi) ClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC_MT)cmgr->getProcAddress("glClearNamedFramebufferfi"); + if (!BlitNamedFramebuffer) BlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC_MT)cmgr->getProcAddress("glBlitNamedFramebuffer"); + if (!CheckNamedFramebufferStatus) CheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC_MT)cmgr->getProcAddress("glCheckNamedFramebufferStatus"); + if (!GetNamedFramebufferParameteriv) GetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetNamedFramebufferParameteriv"); + if (!GetNamedFramebufferAttachmentParameteriv) GetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetNamedFramebufferAttachmentParameteriv"); + if (!CreateRenderbuffers) CreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC_MT)cmgr->getProcAddress("glCreateRenderbuffers"); + if (!NamedRenderbufferStorage) NamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC_MT)cmgr->getProcAddress("glNamedRenderbufferStorage"); + if (!NamedRenderbufferStorageMultisample) NamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC_MT)cmgr->getProcAddress("glNamedRenderbufferStorageMultisample"); + if (!GetNamedRenderbufferParameteriv) GetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetNamedRenderbufferParameteriv"); + if (!CreateTextures) CreateTextures = (PFNGLCREATETEXTURESPROC_MT)cmgr->getProcAddress("glCreateTextures"); + if (!TextureBuffer) TextureBuffer = (PFNGLTEXTUREBUFFERPROC_MT)cmgr->getProcAddress("glTextureBuffer"); + if (!TextureBufferRange) TextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC_MT)cmgr->getProcAddress("glTextureBufferRange"); + if (!TextureStorage1D) TextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC_MT)cmgr->getProcAddress("glTextureStorage1D"); + if (!TextureStorage2D) TextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC_MT)cmgr->getProcAddress("glTextureStorage2D"); + if (!TextureStorage3D) TextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC_MT)cmgr->getProcAddress("glTextureStorage3D"); + if (!TextureStorage2DMultisample) TextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC_MT)cmgr->getProcAddress("glTextureStorage2DMultisample"); + if (!TextureStorage3DMultisample) TextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC_MT)cmgr->getProcAddress("glTextureStorage3DMultisample"); + if (!TextureSubImage1D) TextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC_MT)cmgr->getProcAddress("glTextureSubImage1D"); + if (!TextureSubImage2D) TextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC_MT)cmgr->getProcAddress("glTextureSubImage2D"); + if (!TextureSubImage3D) TextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC_MT)cmgr->getProcAddress("glTextureSubImage3D"); + if (!CompressedTextureSubImage1D) CompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC_MT)cmgr->getProcAddress("glCompressedTextureSubImage1D"); + if (!CompressedTextureSubImage2D) CompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC_MT)cmgr->getProcAddress("glCompressedTextureSubImage2D"); + if (!CompressedTextureSubImage3D) CompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC_MT)cmgr->getProcAddress("glCompressedTextureSubImage3D"); + if (!CopyTextureSubImage1D) CopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC_MT)cmgr->getProcAddress("glCopyTextureSubImage1D"); + if (!CopyTextureSubImage2D) CopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC_MT)cmgr->getProcAddress("glCopyTextureSubImage2D"); + if (!CopyTextureSubImage3D) CopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC_MT)cmgr->getProcAddress("glCopyTextureSubImage3D"); + if (!TextureParameterf) TextureParameterf = (PFNGLTEXTUREPARAMETERFPROC_MT)cmgr->getProcAddress("glTextureParameterf"); + if (!TextureParameterfv) TextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC_MT)cmgr->getProcAddress("glTextureParameterfv"); + if (!TextureParameteri) TextureParameteri = (PFNGLTEXTUREPARAMETERIPROC_MT)cmgr->getProcAddress("glTextureParameteri"); + if (!TextureParameterIiv) TextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC_MT)cmgr->getProcAddress("glTextureParameterIiv"); + if (!TextureParameterIuiv) TextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC_MT)cmgr->getProcAddress("glTextureParameterIuiv"); + if (!TextureParameteriv) TextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC_MT)cmgr->getProcAddress("glTextureParameteriv"); + if (!GenerateTextureMipmap) GenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC_MT)cmgr->getProcAddress("glGenerateTextureMipmap"); + if (!BindTextureUnit) BindTextureUnit = (PFNGLBINDTEXTUREUNITPROC_MT)cmgr->getProcAddress("glBindTextureUnit"); + if (!GetTextureImage) GetTextureImage = (PFNGLGETTEXTUREIMAGEPROC_MT)cmgr->getProcAddress("glGetTextureImage"); + if (!GetCompressedTextureImage) GetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC_MT)cmgr->getProcAddress("glGetCompressedTextureImage"); + if (!GetTextureLevelParameterfv) GetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC_MT)cmgr->getProcAddress("glGetTextureLevelParameterfv"); + if (!GetTextureLevelParameteriv) GetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetTextureLevelParameteriv"); + if (!GetTextureParameterfv) GetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC_MT)cmgr->getProcAddress("glGetTextureParameterfv"); + if (!GetTextureParameterIiv) GetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC_MT)cmgr->getProcAddress("glGetTextureParameterIiv"); + if (!GetTextureParameterIuiv) GetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC_MT)cmgr->getProcAddress("glGetTextureParameterIuiv"); + if (!GetTextureParameteriv) GetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC_MT)cmgr->getProcAddress("glGetTextureParameteriv"); + if (!CreateVertexArrays) CreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC_MT)cmgr->getProcAddress("glCreateVertexArrays"); + if (!DisableVertexArrayAttrib) DisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC_MT)cmgr->getProcAddress("glDisableVertexArrayAttrib"); + if (!EnableVertexArrayAttrib) EnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC_MT)cmgr->getProcAddress("glEnableVertexArrayAttrib"); + if (!VertexArrayElementBuffer) VertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC_MT)cmgr->getProcAddress("glVertexArrayElementBuffer"); + if (!VertexArrayVertexBuffer) VertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC_MT)cmgr->getProcAddress("glVertexArrayVertexBuffer"); + if (!VertexArrayVertexBuffers) VertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC_MT)cmgr->getProcAddress("glVertexArrayVertexBuffers"); + if (!VertexArrayAttribBinding) VertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC_MT)cmgr->getProcAddress("glVertexArrayAttribBinding"); + if (!VertexArrayAttribFormat) VertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC_MT)cmgr->getProcAddress("glVertexArrayAttribFormat"); + if (!VertexArrayAttribIFormat) VertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC_MT)cmgr->getProcAddress("glVertexArrayAttribIFormat"); + if (!VertexArrayAttribLFormat) VertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC_MT)cmgr->getProcAddress("glVertexArrayAttribLFormat"); + if (!VertexArrayBindingDivisor) VertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC_MT)cmgr->getProcAddress("glVertexArrayBindingDivisor"); + if (!GetVertexArrayiv) GetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC_MT)cmgr->getProcAddress("glGetVertexArrayiv"); + if (!GetVertexArrayIndexediv) GetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC_MT)cmgr->getProcAddress("glGetVertexArrayIndexediv"); + if (!GetVertexArrayIndexed64iv) GetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC_MT)cmgr->getProcAddress("glGetVertexArrayIndexed64iv"); + if (!CreateSamplers) CreateSamplers = (PFNGLCREATESAMPLERSPROC_MT)cmgr->getProcAddress("glCreateSamplers"); + if (!CreateProgramPipelines) CreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC_MT)cmgr->getProcAddress("glCreateProgramPipelines"); + if (!CreateQueries) CreateQueries = (PFNGLCREATEQUERIESPROC_MT)cmgr->getProcAddress("glCreateQueries"); + if (!GetQueryBufferObjecti64v) GetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC_MT)cmgr->getProcAddress("glGetQueryBufferObjecti64v"); + if (!GetQueryBufferObjectiv) GetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC_MT)cmgr->getProcAddress("glGetQueryBufferObjectiv"); + if (!GetQueryBufferObjectui64v) GetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC_MT)cmgr->getProcAddress("glGetQueryBufferObjectui64v"); + if (!GetQueryBufferObjectuiv) GetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC_MT)cmgr->getProcAddress("glGetQueryBufferObjectuiv"); + if (!MemoryBarrierByRegion) MemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC_MT)cmgr->getProcAddress("glMemoryBarrierByRegion"); + if (!GetTextureSubImage) GetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC_MT)cmgr->getProcAddress("glGetTextureSubImage"); + if (!GetCompressedTextureSubImage) GetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC_MT)cmgr->getProcAddress("glGetCompressedTextureSubImage"); + if (!GetGraphicsResetStatus) GetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC_MT)cmgr->getProcAddress("glGetGraphicsResetStatus"); + if (!GetGraphicsResetStatus) GetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC_MT)cmgr->getProcAddress("glGetGraphicsResetStatusARB"); + if (!GetnCompressedTexImage) GetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC_MT)cmgr->getProcAddress("glGetnCompressedTexImage"); + if (!GetnCompressedTexImage) GetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC_MT)cmgr->getProcAddress("glGetnCompressedTexImageARB"); + if (!GetnTexImage) GetnTexImage = (PFNGLGETNTEXIMAGEPROC_MT)cmgr->getProcAddress("glGetnTexImage"); + if (!GetnTexImage) GetnTexImage = (PFNGLGETNTEXIMAGEPROC_MT)cmgr->getProcAddress("glGetnTexImageARB"); + if (!GetnUniformdv) GetnUniformdv = (PFNGLGETNUNIFORMDVPROC_MT)cmgr->getProcAddress("glGetnUniformdv"); + if (!GetnUniformdv) GetnUniformdv = (PFNGLGETNUNIFORMDVPROC_MT)cmgr->getProcAddress("glGetnUniformdvARB"); + if (!GetnUniformfv) GetnUniformfv = (PFNGLGETNUNIFORMFVPROC_MT)cmgr->getProcAddress("glGetnUniformfv"); + if (!GetnUniformfv) GetnUniformfv = (PFNGLGETNUNIFORMFVPROC_MT)cmgr->getProcAddress("glGetnUniformfvARB"); + if (!GetnUniformiv) GetnUniformiv = (PFNGLGETNUNIFORMIVPROC_MT)cmgr->getProcAddress("glGetnUniformiv"); + if (!GetnUniformiv) GetnUniformiv = (PFNGLGETNUNIFORMIVPROC_MT)cmgr->getProcAddress("glGetnUniformivARB"); + if (!GetnUniformuiv) GetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC_MT)cmgr->getProcAddress("glGetnUniformuiv"); + if (!GetnUniformuiv) GetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC_MT)cmgr->getProcAddress("glGetnUniformuivARB"); + if (!ReadnPixels) ReadnPixels = (PFNGLREADNPIXELSPROC_MT)cmgr->getProcAddress("glReadnPixels"); + if (!ReadnPixels) ReadnPixels = (PFNGLREADNPIXELSPROC_MT)cmgr->getProcAddress("glReadnPixelsARB"); + if (!TextureBarrier) TextureBarrier = (PFNGLTEXTUREBARRIERPROC_MT)cmgr->getProcAddress("glTextureBarrier"); + if (!SpecializeShader) SpecializeShader = (PFNGLSPECIALIZESHADERPROC_MT)cmgr->getProcAddress("glSpecializeShader"); + if (!SpecializeShader) SpecializeShader = (PFNGLSPECIALIZESHADERPROC_MT)cmgr->getProcAddress("glSpecializeShaderARB"); + if (!MultiDrawArraysIndirectCount) MultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC_MT)cmgr->getProcAddress("glMultiDrawArraysIndirectCount"); + if (!MultiDrawArraysIndirectCount) MultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC_MT)cmgr->getProcAddress("glMultiDrawArraysIndirectCountARB"); + if (!MultiDrawElementsIndirectCount) MultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC_MT)cmgr->getProcAddress("glMultiDrawElementsIndirectCount"); + if (!MultiDrawElementsIndirectCount) MultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC_MT)cmgr->getProcAddress("glMultiDrawElementsIndirectCountARB"); + if (!PolygonOffsetClamp) PolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC_MT)cmgr->getProcAddress("glPolygonOffsetClamp"); + if (!GenPerfMonitorsEX) GenPerfMonitorsEX = (PFNGLGENPERFMONITORSEXPROC_MT)cmgr->getProcAddress("glGenPerfMonitorsEX"); + if (!PrimitiveBoundingBox) PrimitiveBoundingBox = (PFNGLPRIMITIVEBOUNDINGBOXPROC_MT)cmgr->getProcAddress("glPrimitiveBoundingBoxARB"); + if (!GetTextureHandle) GetTextureHandle = (PFNGLGETTEXTUREHANDLEPROC_MT)cmgr->getProcAddress("glGetTextureHandleARB"); + if (!GetTextureSamplerHandle) GetTextureSamplerHandle = (PFNGLGETTEXTURESAMPLERHANDLEPROC_MT)cmgr->getProcAddress("glGetTextureSamplerHandleARB"); + if (!MakeTextureHandleResident) MakeTextureHandleResident = (PFNGLMAKETEXTUREHANDLERESIDENTPROC_MT)cmgr->getProcAddress("glMakeTextureHandleResidentARB"); + if (!MakeTextureHandleNonResident) MakeTextureHandleNonResident = (PFNGLMAKETEXTUREHANDLENONRESIDENTPROC_MT)cmgr->getProcAddress("glMakeTextureHandleNonResidentARB"); + if (!GetImageHandle) GetImageHandle = (PFNGLGETIMAGEHANDLEPROC_MT)cmgr->getProcAddress("glGetImageHandleARB"); + if (!MakeImageHandleResident) MakeImageHandleResident = (PFNGLMAKEIMAGEHANDLERESIDENTPROC_MT)cmgr->getProcAddress("glMakeImageHandleResidentARB"); + if (!MakeImageHandleNonResident) MakeImageHandleNonResident = (PFNGLMAKEIMAGEHANDLENONRESIDENTPROC_MT)cmgr->getProcAddress("glMakeImageHandleNonResidentARB"); + if (!UniformHandleui64) UniformHandleui64 = (PFNGLUNIFORMHANDLEUI64PROC_MT)cmgr->getProcAddress("glUniformHandleui64ARB"); + if (!UniformHandleui64v) UniformHandleui64v = (PFNGLUNIFORMHANDLEUI64VPROC_MT)cmgr->getProcAddress("glUniformHandleui64vARB"); + if (!ProgramUniformHandleui64) ProgramUniformHandleui64 = (PFNGLPROGRAMUNIFORMHANDLEUI64PROC_MT)cmgr->getProcAddress("glProgramUniformHandleui64ARB"); + if (!ProgramUniformHandleui64v) ProgramUniformHandleui64v = (PFNGLPROGRAMUNIFORMHANDLEUI64VPROC_MT)cmgr->getProcAddress("glProgramUniformHandleui64vARB"); + if (!IsTextureHandleResident) IsTextureHandleResident = (PFNGLISTEXTUREHANDLERESIDENTPROC_MT)cmgr->getProcAddress("glIsTextureHandleResidentARB"); + if (!IsImageHandleResident) IsImageHandleResident = (PFNGLISIMAGEHANDLERESIDENTPROC_MT)cmgr->getProcAddress("glIsImageHandleResidentARB"); + if (!VertexAttribL1ui64) VertexAttribL1ui64 = (PFNGLVERTEXATTRIBL1UI64PROC_MT)cmgr->getProcAddress("glVertexAttribL1ui64ARB"); + if (!VertexAttribL1ui64v) VertexAttribL1ui64v = (PFNGLVERTEXATTRIBL1UI64VPROC_MT)cmgr->getProcAddress("glVertexAttribL1ui64vARB"); + if (!GetVertexAttribLui64v) GetVertexAttribLui64v = (PFNGLGETVERTEXATTRIBLUI64VPROC_MT)cmgr->getProcAddress("glGetVertexAttribLui64vARB"); + if (!CreateSyncFromCLevent) CreateSyncFromCLevent = (PFNGLCREATESYNCFROMCLEVENTPROC_MT)cmgr->getProcAddress("glCreateSyncFromCLeventARB"); + if (!DispatchComputeGroupSize) DispatchComputeGroupSize = (PFNGLDISPATCHCOMPUTEGROUPSIZEPROC_MT)cmgr->getProcAddress("glDispatchComputeGroupSizeARB"); + if (!FramebufferTextureFace) FramebufferTextureFace = (PFNGLFRAMEBUFFERTEXTUREFACEPROC_MT)cmgr->getProcAddress("glFramebufferTextureFaceARB"); + if (!Uniform1i64) Uniform1i64 = (PFNGLUNIFORM1I64PROC_MT)cmgr->getProcAddress("glUniform1i64ARB"); + if (!Uniform2i64) Uniform2i64 = (PFNGLUNIFORM2I64PROC_MT)cmgr->getProcAddress("glUniform2i64ARB"); + if (!Uniform3i64) Uniform3i64 = (PFNGLUNIFORM3I64PROC_MT)cmgr->getProcAddress("glUniform3i64ARB"); + if (!Uniform4i64) Uniform4i64 = (PFNGLUNIFORM4I64PROC_MT)cmgr->getProcAddress("glUniform4i64ARB"); + if (!Uniform1i64v) Uniform1i64v = (PFNGLUNIFORM1I64VPROC_MT)cmgr->getProcAddress("glUniform1i64vARB"); + if (!Uniform2i64v) Uniform2i64v = (PFNGLUNIFORM2I64VPROC_MT)cmgr->getProcAddress("glUniform2i64vARB"); + if (!Uniform3i64v) Uniform3i64v = (PFNGLUNIFORM3I64VPROC_MT)cmgr->getProcAddress("glUniform3i64vARB"); + if (!Uniform4i64v) Uniform4i64v = (PFNGLUNIFORM4I64VPROC_MT)cmgr->getProcAddress("glUniform4i64vARB"); + if (!Uniform1ui64) Uniform1ui64 = (PFNGLUNIFORM1UI64PROC_MT)cmgr->getProcAddress("glUniform1ui64ARB"); + if (!Uniform2ui64) Uniform2ui64 = (PFNGLUNIFORM2UI64PROC_MT)cmgr->getProcAddress("glUniform2ui64ARB"); + if (!Uniform3ui64) Uniform3ui64 = (PFNGLUNIFORM3UI64PROC_MT)cmgr->getProcAddress("glUniform3ui64ARB"); + if (!Uniform4ui64) Uniform4ui64 = (PFNGLUNIFORM4UI64PROC_MT)cmgr->getProcAddress("glUniform4ui64ARB"); + if (!Uniform1ui64v) Uniform1ui64v = (PFNGLUNIFORM1UI64VPROC_MT)cmgr->getProcAddress("glUniform1ui64vARB"); + if (!Uniform2ui64v) Uniform2ui64v = (PFNGLUNIFORM2UI64VPROC_MT)cmgr->getProcAddress("glUniform2ui64vARB"); + if (!Uniform3ui64v) Uniform3ui64v = (PFNGLUNIFORM3UI64VPROC_MT)cmgr->getProcAddress("glUniform3ui64vARB"); + if (!Uniform4ui64v) Uniform4ui64v = (PFNGLUNIFORM4UI64VPROC_MT)cmgr->getProcAddress("glUniform4ui64vARB"); + if (!GetUniformi64v) GetUniformi64v = (PFNGLGETUNIFORMI64VPROC_MT)cmgr->getProcAddress("glGetUniformi64vARB"); + if (!GetUniformui64v) GetUniformui64v = (PFNGLGETUNIFORMUI64VPROC_MT)cmgr->getProcAddress("glGetUniformui64vARB"); + if (!GetnUniformi64v) GetnUniformi64v = (PFNGLGETNUNIFORMI64VPROC_MT)cmgr->getProcAddress("glGetnUniformi64vARB"); + if (!GetnUniformui64v) GetnUniformui64v = (PFNGLGETNUNIFORMUI64VPROC_MT)cmgr->getProcAddress("glGetnUniformui64vARB"); + if (!ProgramUniform1i64) ProgramUniform1i64 = (PFNGLPROGRAMUNIFORM1I64PROC_MT)cmgr->getProcAddress("glProgramUniform1i64ARB"); + if (!ProgramUniform2i64) ProgramUniform2i64 = (PFNGLPROGRAMUNIFORM2I64PROC_MT)cmgr->getProcAddress("glProgramUniform2i64ARB"); + if (!ProgramUniform3i64) ProgramUniform3i64 = (PFNGLPROGRAMUNIFORM3I64PROC_MT)cmgr->getProcAddress("glProgramUniform3i64ARB"); + if (!ProgramUniform4i64) ProgramUniform4i64 = (PFNGLPROGRAMUNIFORM4I64PROC_MT)cmgr->getProcAddress("glProgramUniform4i64ARB"); + if (!ProgramUniform1i64v) ProgramUniform1i64v = (PFNGLPROGRAMUNIFORM1I64VPROC_MT)cmgr->getProcAddress("glProgramUniform1i64vARB"); + if (!ProgramUniform2i64v) ProgramUniform2i64v = (PFNGLPROGRAMUNIFORM2I64VPROC_MT)cmgr->getProcAddress("glProgramUniform2i64vARB"); + if (!ProgramUniform3i64v) ProgramUniform3i64v = (PFNGLPROGRAMUNIFORM3I64VPROC_MT)cmgr->getProcAddress("glProgramUniform3i64vARB"); + if (!ProgramUniform4i64v) ProgramUniform4i64v = (PFNGLPROGRAMUNIFORM4I64VPROC_MT)cmgr->getProcAddress("glProgramUniform4i64vARB"); + if (!ProgramUniform1ui64) ProgramUniform1ui64 = (PFNGLPROGRAMUNIFORM1UI64PROC_MT)cmgr->getProcAddress("glProgramUniform1ui64ARB"); + if (!ProgramUniform2ui64) ProgramUniform2ui64 = (PFNGLPROGRAMUNIFORM2UI64PROC_MT)cmgr->getProcAddress("glProgramUniform2ui64ARB"); + if (!ProgramUniform3ui64) ProgramUniform3ui64 = (PFNGLPROGRAMUNIFORM3UI64PROC_MT)cmgr->getProcAddress("glProgramUniform3ui64ARB"); + if (!ProgramUniform4ui64) ProgramUniform4ui64 = (PFNGLPROGRAMUNIFORM4UI64PROC_MT)cmgr->getProcAddress("glProgramUniform4ui64ARB"); + if (!ProgramUniform1ui64v) ProgramUniform1ui64v = (PFNGLPROGRAMUNIFORM1UI64VPROC_MT)cmgr->getProcAddress("glProgramUniform1ui64vARB"); + if (!ProgramUniform2ui64v) ProgramUniform2ui64v = (PFNGLPROGRAMUNIFORM2UI64VPROC_MT)cmgr->getProcAddress("glProgramUniform2ui64vARB"); + if (!ProgramUniform3ui64v) ProgramUniform3ui64v = (PFNGLPROGRAMUNIFORM3UI64VPROC_MT)cmgr->getProcAddress("glProgramUniform3ui64vARB"); + if (!ProgramUniform4ui64v) ProgramUniform4ui64v = (PFNGLPROGRAMUNIFORM4UI64VPROC_MT)cmgr->getProcAddress("glProgramUniform4ui64vARB"); + if (!MaxShaderCompilerThreads) MaxShaderCompilerThreads = (PFNGLMAXSHADERCOMPILERTHREADSPROC_MT)cmgr->getProcAddress("glMaxShaderCompilerThreadsARB"); + if (!MaxShaderCompilerThreads) MaxShaderCompilerThreads = (PFNGLMAXSHADERCOMPILERTHREADSPROC_MT)cmgr->getProcAddress("glMaxShaderCompilerThreadsKHR"); + if (!FramebufferSampleLocationsfv) FramebufferSampleLocationsfv = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVPROC_MT)cmgr->getProcAddress("glFramebufferSampleLocationsfvARB"); + if (!NamedFramebufferSampleLocationsfv) NamedFramebufferSampleLocationsfv = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVPROC_MT)cmgr->getProcAddress("glNamedFramebufferSampleLocationsfvARB"); + if (!EvaluateDepthValues) EvaluateDepthValues = (PFNGLEVALUATEDEPTHVALUESPROC_MT)cmgr->getProcAddress("glEvaluateDepthValuesARB"); + if (!NamedString) NamedString = (PFNGLNAMEDSTRINGPROC_MT)cmgr->getProcAddress("glNamedStringARB"); + if (!DeleteNamedString) DeleteNamedString = (PFNGLDELETENAMEDSTRINGPROC_MT)cmgr->getProcAddress("glDeleteNamedStringARB"); + if (!CompileShaderInclude) CompileShaderInclude = (PFNGLCOMPILESHADERINCLUDEPROC_MT)cmgr->getProcAddress("glCompileShaderIncludeARB"); + if (!IsNamedString) IsNamedString = (PFNGLISNAMEDSTRINGPROC_MT)cmgr->getProcAddress("glIsNamedStringARB"); + if (!GetNamedString) GetNamedString = (PFNGLGETNAMEDSTRINGPROC_MT)cmgr->getProcAddress("glGetNamedStringARB"); + if (!GetNamedStringiv) GetNamedStringiv = (PFNGLGETNAMEDSTRINGIVPROC_MT)cmgr->getProcAddress("glGetNamedStringivARB"); + if (!BufferPageCommitment) BufferPageCommitment = (PFNGLBUFFERPAGECOMMITMENTPROC_MT)cmgr->getProcAddress("glBufferPageCommitmentARB"); + if (!NamedBufferPageCommitment) NamedBufferPageCommitment = (PFNGLNAMEDBUFFERPAGECOMMITMENTPROC_MT)cmgr->getProcAddress("glNamedBufferPageCommitmentARB"); + if (!TexPageCommitment) TexPageCommitment = (PFNGLTEXPAGECOMMITMENTPROC_MT)cmgr->getProcAddress("glTexPageCommitmentARB"); + + // get the extension string, chop it up + std::string ext_string = std::string((char*)GetString(EXTENSIONS)); + std::stringstream ext_ss(ext_string); + std::string tmp; + while (std::getline(ext_ss, tmp, ' ')) + extensions.emplace(tmp); + +}