Index: gl3w.c
===================================================================
--- gl3w.c	(revision 4e0b82bb1cf32f3d0d00dabfec2f819d7bb962f8)
+++ gl3w.c	(revision 4e0b82bb1cf32f3d0d00dabfec2f819d7bb962f8)
@@ -0,0 +1,1344 @@
+#include "gl3w.h"
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4055) // warning C4055: 'type cast' : from data pointer 'void *' to function pointer
+#pragma warning (disable: 4152) // warning C4152: nonstandard extension, function/data pointer conversion in expression
+#endif
+
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+
+static HMODULE libgl;
+
+static void open_libgl(void)
+{
+   libgl = LoadLibraryA("opengl32.dll");
+}
+
+static void close_libgl(void)
+{
+   FreeLibrary(libgl);
+}
+
+static void *get_proc(const char *proc)
+{
+   void *res;
+
+   res = wglGetProcAddress(proc);
+   if (!res)
+      res = GetProcAddress(libgl, proc);
+   return res;
+}
+#elif defined(__APPLE__) || defined(__APPLE_CC__)
+#include <Carbon/Carbon.h>
+
+CFBundleRef bundle;
+CFURLRef bundleURL;
+
+static void open_libgl(void)
+{
+   bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
+      CFSTR("/System/Library/Frameworks/OpenGL.framework"),
+      kCFURLPOSIXPathStyle, true);
+
+   bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
+   assert(bundle != NULL);
+}
+
+static void close_libgl(void)
+{
+   CFRelease(bundle);
+   CFRelease(bundleURL);
+}
+
+static void *get_proc(const char *proc)
+{
+   void *res;
+
+   CFStringRef procname = CFStringCreateWithCString(kCFAllocatorDefault, proc,
+      kCFStringEncodingASCII);
+   res = CFBundleGetFunctionPointerForName(bundle, procname);
+   CFRelease(procname);
+   return res;
+}
+#else
+#include <dlfcn.h>
+#include <GL/glx.h>
+
+static void *libgl;
+
+static void open_libgl(void)
+{
+   libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_GLOBAL);
+}
+
+static void close_libgl(void)
+{
+   dlclose(libgl);
+}
+
+static void *get_proc(const char *proc)
+{
+   void *res;
+
+   res = (void*)glXGetProcAddress((const GLubyte *)proc);
+   if (!res)
+      res = dlsym(libgl, proc);
+   return res;
+}
+#endif
+
+static struct {
+   int major, minor;
+} version;
+
+static int parse_version(void)
+{
+   if (!glGetIntegerv)
+      return -1;
+
+   glGetIntegerv(GL_MAJOR_VERSION, &version.major);
+   glGetIntegerv(GL_MINOR_VERSION, &version.minor);
+
+   if (version.major < 3)
+      return -1;
+   return 0;
+}
+
+static void load_procs(void);
+
+int gl3wInit(void)
+{
+   open_libgl();
+   load_procs();
+   close_libgl();
+   return parse_version();
+}
+
+int gl3wIsSupported(int major, int minor)
+{
+   if (major < 3)
+      return 0;
+   if (version.major == major)
+      return version.minor >= minor;
+   return version.major >= major;
+}
+
+void *gl3wGetProcAddress(const char *proc)
+{
+   return get_proc(proc);
+}
+
+PFNGLCULLFACEPROC gl3wCullFace;
+PFNGLFRONTFACEPROC gl3wFrontFace;
+PFNGLHINTPROC gl3wHint;
+PFNGLLINEWIDTHPROC gl3wLineWidth;
+PFNGLPOINTSIZEPROC gl3wPointSize;
+PFNGLPOLYGONMODEPROC gl3wPolygonMode;
+PFNGLSCISSORPROC gl3wScissor;
+PFNGLTEXPARAMETERFPROC gl3wTexParameterf;
+PFNGLTEXPARAMETERFVPROC gl3wTexParameterfv;
+PFNGLTEXPARAMETERIPROC gl3wTexParameteri;
+PFNGLTEXPARAMETERIVPROC gl3wTexParameteriv;
+PFNGLTEXIMAGE1DPROC gl3wTexImage1D;
+PFNGLTEXIMAGE2DPROC gl3wTexImage2D;
+PFNGLDRAWBUFFERPROC gl3wDrawBuffer;
+PFNGLCLEARPROC gl3wClear;
+PFNGLCLEARCOLORPROC gl3wClearColor;
+PFNGLCLEARSTENCILPROC gl3wClearStencil;
+PFNGLCLEARDEPTHPROC gl3wClearDepth;
+PFNGLSTENCILMASKPROC gl3wStencilMask;
+PFNGLCOLORMASKPROC gl3wColorMask;
+PFNGLDEPTHMASKPROC gl3wDepthMask;
+PFNGLDISABLEPROC gl3wDisable;
+PFNGLENABLEPROC gl3wEnable;
+PFNGLFINISHPROC gl3wFinish;
+PFNGLFLUSHPROC gl3wFlush;
+PFNGLBLENDFUNCPROC gl3wBlendFunc;
+PFNGLLOGICOPPROC gl3wLogicOp;
+PFNGLSTENCILFUNCPROC gl3wStencilFunc;
+PFNGLSTENCILOPPROC gl3wStencilOp;
+PFNGLDEPTHFUNCPROC gl3wDepthFunc;
+PFNGLPIXELSTOREFPROC gl3wPixelStoref;
+PFNGLPIXELSTOREIPROC gl3wPixelStorei;
+PFNGLREADBUFFERPROC gl3wReadBuffer;
+PFNGLREADPIXELSPROC gl3wReadPixels;
+PFNGLGETBOOLEANVPROC gl3wGetBooleanv;
+PFNGLGETDOUBLEVPROC gl3wGetDoublev;
+PFNGLGETERRORPROC gl3wGetError;
+PFNGLGETFLOATVPROC gl3wGetFloatv;
+PFNGLGETINTEGERVPROC gl3wGetIntegerv;
+PFNGLGETSTRINGPROC gl3wGetString;
+PFNGLGETTEXIMAGEPROC gl3wGetTexImage;
+PFNGLGETTEXPARAMETERFVPROC gl3wGetTexParameterfv;
+PFNGLGETTEXPARAMETERIVPROC gl3wGetTexParameteriv;
+PFNGLGETTEXLEVELPARAMETERFVPROC gl3wGetTexLevelParameterfv;
+PFNGLGETTEXLEVELPARAMETERIVPROC gl3wGetTexLevelParameteriv;
+PFNGLISENABLEDPROC gl3wIsEnabled;
+PFNGLDEPTHRANGEPROC gl3wDepthRange;
+PFNGLVIEWPORTPROC gl3wViewport;
+PFNGLDRAWARRAYSPROC gl3wDrawArrays;
+PFNGLDRAWELEMENTSPROC gl3wDrawElements;
+PFNGLGETPOINTERVPROC gl3wGetPointerv;
+PFNGLPOLYGONOFFSETPROC gl3wPolygonOffset;
+PFNGLCOPYTEXIMAGE1DPROC gl3wCopyTexImage1D;
+PFNGLCOPYTEXIMAGE2DPROC gl3wCopyTexImage2D;
+PFNGLCOPYTEXSUBIMAGE1DPROC gl3wCopyTexSubImage1D;
+PFNGLCOPYTEXSUBIMAGE2DPROC gl3wCopyTexSubImage2D;
+PFNGLTEXSUBIMAGE1DPROC gl3wTexSubImage1D;
+PFNGLTEXSUBIMAGE2DPROC gl3wTexSubImage2D;
+PFNGLBINDTEXTUREPROC gl3wBindTexture;
+PFNGLDELETETEXTURESPROC gl3wDeleteTextures;
+PFNGLGENTEXTURESPROC gl3wGenTextures;
+PFNGLISTEXTUREPROC gl3wIsTexture;
+PFNGLBLENDCOLORPROC gl3wBlendColor;
+PFNGLBLENDEQUATIONPROC gl3wBlendEquation;
+PFNGLDRAWRANGEELEMENTSPROC gl3wDrawRangeElements;
+PFNGLTEXIMAGE3DPROC gl3wTexImage3D;
+PFNGLTEXSUBIMAGE3DPROC gl3wTexSubImage3D;
+PFNGLCOPYTEXSUBIMAGE3DPROC gl3wCopyTexSubImage3D;
+PFNGLACTIVETEXTUREPROC gl3wActiveTexture;
+PFNGLSAMPLECOVERAGEPROC gl3wSampleCoverage;
+PFNGLCOMPRESSEDTEXIMAGE3DPROC gl3wCompressedTexImage3D;
+PFNGLCOMPRESSEDTEXIMAGE2DPROC gl3wCompressedTexImage2D;
+PFNGLCOMPRESSEDTEXIMAGE1DPROC gl3wCompressedTexImage1D;
+PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC gl3wCompressedTexSubImage3D;
+PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC gl3wCompressedTexSubImage2D;
+PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC gl3wCompressedTexSubImage1D;
+PFNGLGETCOMPRESSEDTEXIMAGEPROC gl3wGetCompressedTexImage;
+PFNGLBLENDFUNCSEPARATEPROC gl3wBlendFuncSeparate;
+PFNGLMULTIDRAWARRAYSPROC gl3wMultiDrawArrays;
+PFNGLMULTIDRAWELEMENTSPROC gl3wMultiDrawElements;
+PFNGLPOINTPARAMETERFPROC gl3wPointParameterf;
+PFNGLPOINTPARAMETERFVPROC gl3wPointParameterfv;
+PFNGLPOINTPARAMETERIPROC gl3wPointParameteri;
+PFNGLPOINTPARAMETERIVPROC gl3wPointParameteriv;
+PFNGLGENQUERIESPROC gl3wGenQueries;
+PFNGLDELETEQUERIESPROC gl3wDeleteQueries;
+PFNGLISQUERYPROC gl3wIsQuery;
+PFNGLBEGINQUERYPROC gl3wBeginQuery;
+PFNGLENDQUERYPROC gl3wEndQuery;
+PFNGLGETQUERYIVPROC gl3wGetQueryiv;
+PFNGLGETQUERYOBJECTIVPROC gl3wGetQueryObjectiv;
+PFNGLGETQUERYOBJECTUIVPROC gl3wGetQueryObjectuiv;
+PFNGLBINDBUFFERPROC gl3wBindBuffer;
+PFNGLDELETEBUFFERSPROC gl3wDeleteBuffers;
+PFNGLGENBUFFERSPROC gl3wGenBuffers;
+PFNGLISBUFFERPROC gl3wIsBuffer;
+PFNGLBUFFERDATAPROC gl3wBufferData;
+PFNGLBUFFERSUBDATAPROC gl3wBufferSubData;
+PFNGLGETBUFFERSUBDATAPROC gl3wGetBufferSubData;
+PFNGLMAPBUFFERPROC gl3wMapBuffer;
+PFNGLUNMAPBUFFERPROC gl3wUnmapBuffer;
+PFNGLGETBUFFERPARAMETERIVPROC gl3wGetBufferParameteriv;
+PFNGLGETBUFFERPOINTERVPROC gl3wGetBufferPointerv;
+PFNGLBLENDEQUATIONSEPARATEPROC gl3wBlendEquationSeparate;
+PFNGLDRAWBUFFERSPROC gl3wDrawBuffers;
+PFNGLSTENCILOPSEPARATEPROC gl3wStencilOpSeparate;
+PFNGLSTENCILFUNCSEPARATEPROC gl3wStencilFuncSeparate;
+PFNGLSTENCILMASKSEPARATEPROC gl3wStencilMaskSeparate;
+PFNGLATTACHSHADERPROC gl3wAttachShader;
+PFNGLBINDATTRIBLOCATIONPROC gl3wBindAttribLocation;
+PFNGLCOMPILESHADERPROC gl3wCompileShader;
+PFNGLCREATEPROGRAMPROC gl3wCreateProgram;
+PFNGLCREATESHADERPROC gl3wCreateShader;
+PFNGLDELETEPROGRAMPROC gl3wDeleteProgram;
+PFNGLDELETESHADERPROC gl3wDeleteShader;
+PFNGLDETACHSHADERPROC gl3wDetachShader;
+PFNGLDISABLEVERTEXATTRIBARRAYPROC gl3wDisableVertexAttribArray;
+PFNGLENABLEVERTEXATTRIBARRAYPROC gl3wEnableVertexAttribArray;
+PFNGLGETACTIVEATTRIBPROC gl3wGetActiveAttrib;
+PFNGLGETACTIVEUNIFORMPROC gl3wGetActiveUniform;
+PFNGLGETATTACHEDSHADERSPROC gl3wGetAttachedShaders;
+PFNGLGETATTRIBLOCATIONPROC gl3wGetAttribLocation;
+PFNGLGETPROGRAMIVPROC gl3wGetProgramiv;
+PFNGLGETPROGRAMINFOLOGPROC gl3wGetProgramInfoLog;
+PFNGLGETSHADERIVPROC gl3wGetShaderiv;
+PFNGLGETSHADERINFOLOGPROC gl3wGetShaderInfoLog;
+PFNGLGETSHADERSOURCEPROC gl3wGetShaderSource;
+PFNGLGETUNIFORMLOCATIONPROC gl3wGetUniformLocation;
+PFNGLGETUNIFORMFVPROC gl3wGetUniformfv;
+PFNGLGETUNIFORMIVPROC gl3wGetUniformiv;
+PFNGLGETVERTEXATTRIBDVPROC gl3wGetVertexAttribdv;
+PFNGLGETVERTEXATTRIBFVPROC gl3wGetVertexAttribfv;
+PFNGLGETVERTEXATTRIBIVPROC gl3wGetVertexAttribiv;
+PFNGLGETVERTEXATTRIBPOINTERVPROC gl3wGetVertexAttribPointerv;
+PFNGLISPROGRAMPROC gl3wIsProgram;
+PFNGLISSHADERPROC gl3wIsShader;
+PFNGLLINKPROGRAMPROC gl3wLinkProgram;
+PFNGLSHADERSOURCEPROC gl3wShaderSource;
+PFNGLUSEPROGRAMPROC gl3wUseProgram;
+PFNGLUNIFORM1FPROC gl3wUniform1f;
+PFNGLUNIFORM2FPROC gl3wUniform2f;
+PFNGLUNIFORM3FPROC gl3wUniform3f;
+PFNGLUNIFORM4FPROC gl3wUniform4f;
+PFNGLUNIFORM1IPROC gl3wUniform1i;
+PFNGLUNIFORM2IPROC gl3wUniform2i;
+PFNGLUNIFORM3IPROC gl3wUniform3i;
+PFNGLUNIFORM4IPROC gl3wUniform4i;
+PFNGLUNIFORM1FVPROC gl3wUniform1fv;
+PFNGLUNIFORM2FVPROC gl3wUniform2fv;
+PFNGLUNIFORM3FVPROC gl3wUniform3fv;
+PFNGLUNIFORM4FVPROC gl3wUniform4fv;
+PFNGLUNIFORM1IVPROC gl3wUniform1iv;
+PFNGLUNIFORM2IVPROC gl3wUniform2iv;
+PFNGLUNIFORM3IVPROC gl3wUniform3iv;
+PFNGLUNIFORM4IVPROC gl3wUniform4iv;
+PFNGLUNIFORMMATRIX2FVPROC gl3wUniformMatrix2fv;
+PFNGLUNIFORMMATRIX3FVPROC gl3wUniformMatrix3fv;
+PFNGLUNIFORMMATRIX4FVPROC gl3wUniformMatrix4fv;
+PFNGLVALIDATEPROGRAMPROC gl3wValidateProgram;
+PFNGLVERTEXATTRIB1DPROC gl3wVertexAttrib1d;
+PFNGLVERTEXATTRIB1DVPROC gl3wVertexAttrib1dv;
+PFNGLVERTEXATTRIB1FPROC gl3wVertexAttrib1f;
+PFNGLVERTEXATTRIB1FVPROC gl3wVertexAttrib1fv;
+PFNGLVERTEXATTRIB1SPROC gl3wVertexAttrib1s;
+PFNGLVERTEXATTRIB1SVPROC gl3wVertexAttrib1sv;
+PFNGLVERTEXATTRIB2DPROC gl3wVertexAttrib2d;
+PFNGLVERTEXATTRIB2DVPROC gl3wVertexAttrib2dv;
+PFNGLVERTEXATTRIB2FPROC gl3wVertexAttrib2f;
+PFNGLVERTEXATTRIB2FVPROC gl3wVertexAttrib2fv;
+PFNGLVERTEXATTRIB2SPROC gl3wVertexAttrib2s;
+PFNGLVERTEXATTRIB2SVPROC gl3wVertexAttrib2sv;
+PFNGLVERTEXATTRIB3DPROC gl3wVertexAttrib3d;
+PFNGLVERTEXATTRIB3DVPROC gl3wVertexAttrib3dv;
+PFNGLVERTEXATTRIB3FPROC gl3wVertexAttrib3f;
+PFNGLVERTEXATTRIB3FVPROC gl3wVertexAttrib3fv;
+PFNGLVERTEXATTRIB3SPROC gl3wVertexAttrib3s;
+PFNGLVERTEXATTRIB3SVPROC gl3wVertexAttrib3sv;
+PFNGLVERTEXATTRIB4NBVPROC gl3wVertexAttrib4Nbv;
+PFNGLVERTEXATTRIB4NIVPROC gl3wVertexAttrib4Niv;
+PFNGLVERTEXATTRIB4NSVPROC gl3wVertexAttrib4Nsv;
+PFNGLVERTEXATTRIB4NUBPROC gl3wVertexAttrib4Nub;
+PFNGLVERTEXATTRIB4NUBVPROC gl3wVertexAttrib4Nubv;
+PFNGLVERTEXATTRIB4NUIVPROC gl3wVertexAttrib4Nuiv;
+PFNGLVERTEXATTRIB4NUSVPROC gl3wVertexAttrib4Nusv;
+PFNGLVERTEXATTRIB4BVPROC gl3wVertexAttrib4bv;
+PFNGLVERTEXATTRIB4DPROC gl3wVertexAttrib4d;
+PFNGLVERTEXATTRIB4DVPROC gl3wVertexAttrib4dv;
+PFNGLVERTEXATTRIB4FPROC gl3wVertexAttrib4f;
+PFNGLVERTEXATTRIB4FVPROC gl3wVertexAttrib4fv;
+PFNGLVERTEXATTRIB4IVPROC gl3wVertexAttrib4iv;
+PFNGLVERTEXATTRIB4SPROC gl3wVertexAttrib4s;
+PFNGLVERTEXATTRIB4SVPROC gl3wVertexAttrib4sv;
+PFNGLVERTEXATTRIB4UBVPROC gl3wVertexAttrib4ubv;
+PFNGLVERTEXATTRIB4UIVPROC gl3wVertexAttrib4uiv;
+PFNGLVERTEXATTRIB4USVPROC gl3wVertexAttrib4usv;
+PFNGLVERTEXATTRIBPOINTERPROC gl3wVertexAttribPointer;
+PFNGLUNIFORMMATRIX2X3FVPROC gl3wUniformMatrix2x3fv;
+PFNGLUNIFORMMATRIX3X2FVPROC gl3wUniformMatrix3x2fv;
+PFNGLUNIFORMMATRIX2X4FVPROC gl3wUniformMatrix2x4fv;
+PFNGLUNIFORMMATRIX4X2FVPROC gl3wUniformMatrix4x2fv;
+PFNGLUNIFORMMATRIX3X4FVPROC gl3wUniformMatrix3x4fv;
+PFNGLUNIFORMMATRIX4X3FVPROC gl3wUniformMatrix4x3fv;
+PFNGLCOLORMASKIPROC gl3wColorMaski;
+PFNGLGETBOOLEANI_VPROC gl3wGetBooleani_v;
+PFNGLGETINTEGERI_VPROC gl3wGetIntegeri_v;
+PFNGLENABLEIPROC gl3wEnablei;
+PFNGLDISABLEIPROC gl3wDisablei;
+PFNGLISENABLEDIPROC gl3wIsEnabledi;
+PFNGLBEGINTRANSFORMFEEDBACKPROC gl3wBeginTransformFeedback;
+PFNGLENDTRANSFORMFEEDBACKPROC gl3wEndTransformFeedback;
+PFNGLBINDBUFFERRANGEPROC gl3wBindBufferRange;
+PFNGLBINDBUFFERBASEPROC gl3wBindBufferBase;
+PFNGLTRANSFORMFEEDBACKVARYINGSPROC gl3wTransformFeedbackVaryings;
+PFNGLGETTRANSFORMFEEDBACKVARYINGPROC gl3wGetTransformFeedbackVarying;
+PFNGLCLAMPCOLORPROC gl3wClampColor;
+PFNGLBEGINCONDITIONALRENDERPROC gl3wBeginConditionalRender;
+PFNGLENDCONDITIONALRENDERPROC gl3wEndConditionalRender;
+PFNGLVERTEXATTRIBIPOINTERPROC gl3wVertexAttribIPointer;
+PFNGLGETVERTEXATTRIBIIVPROC gl3wGetVertexAttribIiv;
+PFNGLGETVERTEXATTRIBIUIVPROC gl3wGetVertexAttribIuiv;
+PFNGLVERTEXATTRIBI1IPROC gl3wVertexAttribI1i;
+PFNGLVERTEXATTRIBI2IPROC gl3wVertexAttribI2i;
+PFNGLVERTEXATTRIBI3IPROC gl3wVertexAttribI3i;
+PFNGLVERTEXATTRIBI4IPROC gl3wVertexAttribI4i;
+PFNGLVERTEXATTRIBI1UIPROC gl3wVertexAttribI1ui;
+PFNGLVERTEXATTRIBI2UIPROC gl3wVertexAttribI2ui;
+PFNGLVERTEXATTRIBI3UIPROC gl3wVertexAttribI3ui;
+PFNGLVERTEXATTRIBI4UIPROC gl3wVertexAttribI4ui;
+PFNGLVERTEXATTRIBI1IVPROC gl3wVertexAttribI1iv;
+PFNGLVERTEXATTRIBI2IVPROC gl3wVertexAttribI2iv;
+PFNGLVERTEXATTRIBI3IVPROC gl3wVertexAttribI3iv;
+PFNGLVERTEXATTRIBI4IVPROC gl3wVertexAttribI4iv;
+PFNGLVERTEXATTRIBI1UIVPROC gl3wVertexAttribI1uiv;
+PFNGLVERTEXATTRIBI2UIVPROC gl3wVertexAttribI2uiv;
+PFNGLVERTEXATTRIBI3UIVPROC gl3wVertexAttribI3uiv;
+PFNGLVERTEXATTRIBI4UIVPROC gl3wVertexAttribI4uiv;
+PFNGLVERTEXATTRIBI4BVPROC gl3wVertexAttribI4bv;
+PFNGLVERTEXATTRIBI4SVPROC gl3wVertexAttribI4sv;
+PFNGLVERTEXATTRIBI4UBVPROC gl3wVertexAttribI4ubv;
+PFNGLVERTEXATTRIBI4USVPROC gl3wVertexAttribI4usv;
+PFNGLGETUNIFORMUIVPROC gl3wGetUniformuiv;
+PFNGLBINDFRAGDATALOCATIONPROC gl3wBindFragDataLocation;
+PFNGLGETFRAGDATALOCATIONPROC gl3wGetFragDataLocation;
+PFNGLUNIFORM1UIPROC gl3wUniform1ui;
+PFNGLUNIFORM2UIPROC gl3wUniform2ui;
+PFNGLUNIFORM3UIPROC gl3wUniform3ui;
+PFNGLUNIFORM4UIPROC gl3wUniform4ui;
+PFNGLUNIFORM1UIVPROC gl3wUniform1uiv;
+PFNGLUNIFORM2UIVPROC gl3wUniform2uiv;
+PFNGLUNIFORM3UIVPROC gl3wUniform3uiv;
+PFNGLUNIFORM4UIVPROC gl3wUniform4uiv;
+PFNGLTEXPARAMETERIIVPROC gl3wTexParameterIiv;
+PFNGLTEXPARAMETERIUIVPROC gl3wTexParameterIuiv;
+PFNGLGETTEXPARAMETERIIVPROC gl3wGetTexParameterIiv;
+PFNGLGETTEXPARAMETERIUIVPROC gl3wGetTexParameterIuiv;
+PFNGLCLEARBUFFERIVPROC gl3wClearBufferiv;
+PFNGLCLEARBUFFERUIVPROC gl3wClearBufferuiv;
+PFNGLCLEARBUFFERFVPROC gl3wClearBufferfv;
+PFNGLCLEARBUFFERFIPROC gl3wClearBufferfi;
+PFNGLGETSTRINGIPROC gl3wGetStringi;
+PFNGLDRAWARRAYSINSTANCEDPROC gl3wDrawArraysInstanced;
+PFNGLDRAWELEMENTSINSTANCEDPROC gl3wDrawElementsInstanced;
+PFNGLTEXBUFFERPROC gl3wTexBuffer;
+PFNGLPRIMITIVERESTARTINDEXPROC gl3wPrimitiveRestartIndex;
+PFNGLGETINTEGER64I_VPROC gl3wGetInteger64i_v;
+PFNGLGETBUFFERPARAMETERI64VPROC gl3wGetBufferParameteri64v;
+PFNGLFRAMEBUFFERTEXTUREPROC gl3wFramebufferTexture;
+PFNGLVERTEXATTRIBDIVISORPROC gl3wVertexAttribDivisor;
+PFNGLMINSAMPLESHADINGPROC gl3wMinSampleShading;
+PFNGLBLENDEQUATIONIPROC gl3wBlendEquationi;
+PFNGLBLENDEQUATIONSEPARATEIPROC gl3wBlendEquationSeparatei;
+PFNGLBLENDFUNCIPROC gl3wBlendFunci;
+PFNGLBLENDFUNCSEPARATEIPROC gl3wBlendFuncSeparatei;
+PFNGLISRENDERBUFFERPROC gl3wIsRenderbuffer;
+PFNGLBINDRENDERBUFFERPROC gl3wBindRenderbuffer;
+PFNGLDELETERENDERBUFFERSPROC gl3wDeleteRenderbuffers;
+PFNGLGENRENDERBUFFERSPROC gl3wGenRenderbuffers;
+PFNGLRENDERBUFFERSTORAGEPROC gl3wRenderbufferStorage;
+PFNGLGETRENDERBUFFERPARAMETERIVPROC gl3wGetRenderbufferParameteriv;
+PFNGLISFRAMEBUFFERPROC gl3wIsFramebuffer;
+PFNGLBINDFRAMEBUFFERPROC gl3wBindFramebuffer;
+PFNGLDELETEFRAMEBUFFERSPROC gl3wDeleteFramebuffers;
+PFNGLGENFRAMEBUFFERSPROC gl3wGenFramebuffers;
+PFNGLCHECKFRAMEBUFFERSTATUSPROC gl3wCheckFramebufferStatus;
+PFNGLFRAMEBUFFERTEXTURE1DPROC gl3wFramebufferTexture1D;
+PFNGLFRAMEBUFFERTEXTURE2DPROC gl3wFramebufferTexture2D;
+PFNGLFRAMEBUFFERTEXTURE3DPROC gl3wFramebufferTexture3D;
+PFNGLFRAMEBUFFERRENDERBUFFERPROC gl3wFramebufferRenderbuffer;
+PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC gl3wGetFramebufferAttachmentParameteriv;
+PFNGLGENERATEMIPMAPPROC gl3wGenerateMipmap;
+PFNGLBLITFRAMEBUFFERPROC gl3wBlitFramebuffer;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC gl3wRenderbufferStorageMultisample;
+PFNGLFRAMEBUFFERTEXTURELAYERPROC gl3wFramebufferTextureLayer;
+PFNGLMAPBUFFERRANGEPROC gl3wMapBufferRange;
+PFNGLFLUSHMAPPEDBUFFERRANGEPROC gl3wFlushMappedBufferRange;
+PFNGLBINDVERTEXARRAYPROC gl3wBindVertexArray;
+PFNGLDELETEVERTEXARRAYSPROC gl3wDeleteVertexArrays;
+PFNGLGENVERTEXARRAYSPROC gl3wGenVertexArrays;
+PFNGLISVERTEXARRAYPROC gl3wIsVertexArray;
+PFNGLGETUNIFORMINDICESPROC gl3wGetUniformIndices;
+PFNGLGETACTIVEUNIFORMSIVPROC gl3wGetActiveUniformsiv;
+PFNGLGETACTIVEUNIFORMNAMEPROC gl3wGetActiveUniformName;
+PFNGLGETUNIFORMBLOCKINDEXPROC gl3wGetUniformBlockIndex;
+PFNGLGETACTIVEUNIFORMBLOCKIVPROC gl3wGetActiveUniformBlockiv;
+PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC gl3wGetActiveUniformBlockName;
+PFNGLUNIFORMBLOCKBINDINGPROC gl3wUniformBlockBinding;
+PFNGLCOPYBUFFERSUBDATAPROC gl3wCopyBufferSubData;
+PFNGLDRAWELEMENTSBASEVERTEXPROC gl3wDrawElementsBaseVertex;
+PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC gl3wDrawRangeElementsBaseVertex;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC gl3wDrawElementsInstancedBaseVertex;
+PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC gl3wMultiDrawElementsBaseVertex;
+PFNGLPROVOKINGVERTEXPROC gl3wProvokingVertex;
+PFNGLFENCESYNCPROC gl3wFenceSync;
+PFNGLISSYNCPROC gl3wIsSync;
+PFNGLDELETESYNCPROC gl3wDeleteSync;
+PFNGLCLIENTWAITSYNCPROC gl3wClientWaitSync;
+PFNGLWAITSYNCPROC gl3wWaitSync;
+PFNGLGETINTEGER64VPROC gl3wGetInteger64v;
+PFNGLGETSYNCIVPROC gl3wGetSynciv;
+PFNGLTEXIMAGE2DMULTISAMPLEPROC gl3wTexImage2DMultisample;
+PFNGLTEXIMAGE3DMULTISAMPLEPROC gl3wTexImage3DMultisample;
+PFNGLGETMULTISAMPLEFVPROC gl3wGetMultisamplefv;
+PFNGLSAMPLEMASKIPROC gl3wSampleMaski;
+PFNGLBLENDEQUATIONIARBPROC gl3wBlendEquationiARB;
+PFNGLBLENDEQUATIONSEPARATEIARBPROC gl3wBlendEquationSeparateiARB;
+PFNGLBLENDFUNCIARBPROC gl3wBlendFunciARB;
+PFNGLBLENDFUNCSEPARATEIARBPROC gl3wBlendFuncSeparateiARB;
+PFNGLMINSAMPLESHADINGARBPROC gl3wMinSampleShadingARB;
+PFNGLNAMEDSTRINGARBPROC gl3wNamedStringARB;
+PFNGLDELETENAMEDSTRINGARBPROC gl3wDeleteNamedStringARB;
+PFNGLCOMPILESHADERINCLUDEARBPROC gl3wCompileShaderIncludeARB;
+PFNGLISNAMEDSTRINGARBPROC gl3wIsNamedStringARB;
+PFNGLGETNAMEDSTRINGARBPROC gl3wGetNamedStringARB;
+PFNGLGETNAMEDSTRINGIVARBPROC gl3wGetNamedStringivARB;
+PFNGLBINDFRAGDATALOCATIONINDEXEDPROC gl3wBindFragDataLocationIndexed;
+PFNGLGETFRAGDATAINDEXPROC gl3wGetFragDataIndex;
+PFNGLGENSAMPLERSPROC gl3wGenSamplers;
+PFNGLDELETESAMPLERSPROC gl3wDeleteSamplers;
+PFNGLISSAMPLERPROC gl3wIsSampler;
+PFNGLBINDSAMPLERPROC gl3wBindSampler;
+PFNGLSAMPLERPARAMETERIPROC gl3wSamplerParameteri;
+PFNGLSAMPLERPARAMETERIVPROC gl3wSamplerParameteriv;
+PFNGLSAMPLERPARAMETERFPROC gl3wSamplerParameterf;
+PFNGLSAMPLERPARAMETERFVPROC gl3wSamplerParameterfv;
+PFNGLSAMPLERPARAMETERIIVPROC gl3wSamplerParameterIiv;
+PFNGLSAMPLERPARAMETERIUIVPROC gl3wSamplerParameterIuiv;
+PFNGLGETSAMPLERPARAMETERIVPROC gl3wGetSamplerParameteriv;
+PFNGLGETSAMPLERPARAMETERIIVPROC gl3wGetSamplerParameterIiv;
+PFNGLGETSAMPLERPARAMETERFVPROC gl3wGetSamplerParameterfv;
+PFNGLGETSAMPLERPARAMETERIUIVPROC gl3wGetSamplerParameterIuiv;
+PFNGLQUERYCOUNTERPROC gl3wQueryCounter;
+PFNGLGETQUERYOBJECTI64VPROC gl3wGetQueryObjecti64v;
+PFNGLGETQUERYOBJECTUI64VPROC gl3wGetQueryObjectui64v;
+PFNGLVERTEXP2UIPROC gl3wVertexP2ui;
+PFNGLVERTEXP2UIVPROC gl3wVertexP2uiv;
+PFNGLVERTEXP3UIPROC gl3wVertexP3ui;
+PFNGLVERTEXP3UIVPROC gl3wVertexP3uiv;
+PFNGLVERTEXP4UIPROC gl3wVertexP4ui;
+PFNGLVERTEXP4UIVPROC gl3wVertexP4uiv;
+PFNGLTEXCOORDP1UIPROC gl3wTexCoordP1ui;
+PFNGLTEXCOORDP1UIVPROC gl3wTexCoordP1uiv;
+PFNGLTEXCOORDP2UIPROC gl3wTexCoordP2ui;
+PFNGLTEXCOORDP2UIVPROC gl3wTexCoordP2uiv;
+PFNGLTEXCOORDP3UIPROC gl3wTexCoordP3ui;
+PFNGLTEXCOORDP3UIVPROC gl3wTexCoordP3uiv;
+PFNGLTEXCOORDP4UIPROC gl3wTexCoordP4ui;
+PFNGLTEXCOORDP4UIVPROC gl3wTexCoordP4uiv;
+PFNGLMULTITEXCOORDP1UIPROC gl3wMultiTexCoordP1ui;
+PFNGLMULTITEXCOORDP1UIVPROC gl3wMultiTexCoordP1uiv;
+PFNGLMULTITEXCOORDP2UIPROC gl3wMultiTexCoordP2ui;
+PFNGLMULTITEXCOORDP2UIVPROC gl3wMultiTexCoordP2uiv;
+PFNGLMULTITEXCOORDP3UIPROC gl3wMultiTexCoordP3ui;
+PFNGLMULTITEXCOORDP3UIVPROC gl3wMultiTexCoordP3uiv;
+PFNGLMULTITEXCOORDP4UIPROC gl3wMultiTexCoordP4ui;
+PFNGLMULTITEXCOORDP4UIVPROC gl3wMultiTexCoordP4uiv;
+PFNGLNORMALP3UIPROC gl3wNormalP3ui;
+PFNGLNORMALP3UIVPROC gl3wNormalP3uiv;
+PFNGLCOLORP3UIPROC gl3wColorP3ui;
+PFNGLCOLORP3UIVPROC gl3wColorP3uiv;
+PFNGLCOLORP4UIPROC gl3wColorP4ui;
+PFNGLCOLORP4UIVPROC gl3wColorP4uiv;
+PFNGLSECONDARYCOLORP3UIPROC gl3wSecondaryColorP3ui;
+PFNGLSECONDARYCOLORP3UIVPROC gl3wSecondaryColorP3uiv;
+PFNGLVERTEXATTRIBP1UIPROC gl3wVertexAttribP1ui;
+PFNGLVERTEXATTRIBP1UIVPROC gl3wVertexAttribP1uiv;
+PFNGLVERTEXATTRIBP2UIPROC gl3wVertexAttribP2ui;
+PFNGLVERTEXATTRIBP2UIVPROC gl3wVertexAttribP2uiv;
+PFNGLVERTEXATTRIBP3UIPROC gl3wVertexAttribP3ui;
+PFNGLVERTEXATTRIBP3UIVPROC gl3wVertexAttribP3uiv;
+PFNGLVERTEXATTRIBP4UIPROC gl3wVertexAttribP4ui;
+PFNGLVERTEXATTRIBP4UIVPROC gl3wVertexAttribP4uiv;
+PFNGLDRAWARRAYSINDIRECTPROC gl3wDrawArraysIndirect;
+PFNGLDRAWELEMENTSINDIRECTPROC gl3wDrawElementsIndirect;
+PFNGLUNIFORM1DPROC gl3wUniform1d;
+PFNGLUNIFORM2DPROC gl3wUniform2d;
+PFNGLUNIFORM3DPROC gl3wUniform3d;
+PFNGLUNIFORM4DPROC gl3wUniform4d;
+PFNGLUNIFORM1DVPROC gl3wUniform1dv;
+PFNGLUNIFORM2DVPROC gl3wUniform2dv;
+PFNGLUNIFORM3DVPROC gl3wUniform3dv;
+PFNGLUNIFORM4DVPROC gl3wUniform4dv;
+PFNGLUNIFORMMATRIX2DVPROC gl3wUniformMatrix2dv;
+PFNGLUNIFORMMATRIX3DVPROC gl3wUniformMatrix3dv;
+PFNGLUNIFORMMATRIX4DVPROC gl3wUniformMatrix4dv;
+PFNGLUNIFORMMATRIX2X3DVPROC gl3wUniformMatrix2x3dv;
+PFNGLUNIFORMMATRIX2X4DVPROC gl3wUniformMatrix2x4dv;
+PFNGLUNIFORMMATRIX3X2DVPROC gl3wUniformMatrix3x2dv;
+PFNGLUNIFORMMATRIX3X4DVPROC gl3wUniformMatrix3x4dv;
+PFNGLUNIFORMMATRIX4X2DVPROC gl3wUniformMatrix4x2dv;
+PFNGLUNIFORMMATRIX4X3DVPROC gl3wUniformMatrix4x3dv;
+PFNGLGETUNIFORMDVPROC gl3wGetUniformdv;
+PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC gl3wGetSubroutineUniformLocation;
+PFNGLGETSUBROUTINEINDEXPROC gl3wGetSubroutineIndex;
+PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC gl3wGetActiveSubroutineUniformiv;
+PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC gl3wGetActiveSubroutineUniformName;
+PFNGLGETACTIVESUBROUTINENAMEPROC gl3wGetActiveSubroutineName;
+PFNGLUNIFORMSUBROUTINESUIVPROC gl3wUniformSubroutinesuiv;
+PFNGLGETUNIFORMSUBROUTINEUIVPROC gl3wGetUniformSubroutineuiv;
+PFNGLGETPROGRAMSTAGEIVPROC gl3wGetProgramStageiv;
+PFNGLPATCHPARAMETERIPROC gl3wPatchParameteri;
+PFNGLPATCHPARAMETERFVPROC gl3wPatchParameterfv;
+PFNGLBINDTRANSFORMFEEDBACKPROC gl3wBindTransformFeedback;
+PFNGLDELETETRANSFORMFEEDBACKSPROC gl3wDeleteTransformFeedbacks;
+PFNGLGENTRANSFORMFEEDBACKSPROC gl3wGenTransformFeedbacks;
+PFNGLISTRANSFORMFEEDBACKPROC gl3wIsTransformFeedback;
+PFNGLPAUSETRANSFORMFEEDBACKPROC gl3wPauseTransformFeedback;
+PFNGLRESUMETRANSFORMFEEDBACKPROC gl3wResumeTransformFeedback;
+PFNGLDRAWTRANSFORMFEEDBACKPROC gl3wDrawTransformFeedback;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC gl3wDrawTransformFeedbackStream;
+PFNGLBEGINQUERYINDEXEDPROC gl3wBeginQueryIndexed;
+PFNGLENDQUERYINDEXEDPROC gl3wEndQueryIndexed;
+PFNGLGETQUERYINDEXEDIVPROC gl3wGetQueryIndexediv;
+PFNGLRELEASESHADERCOMPILERPROC gl3wReleaseShaderCompiler;
+PFNGLSHADERBINARYPROC gl3wShaderBinary;
+PFNGLGETSHADERPRECISIONFORMATPROC gl3wGetShaderPrecisionFormat;
+PFNGLDEPTHRANGEFPROC gl3wDepthRangef;
+PFNGLCLEARDEPTHFPROC gl3wClearDepthf;
+PFNGLGETPROGRAMBINARYPROC gl3wGetProgramBinary;
+PFNGLPROGRAMBINARYPROC gl3wProgramBinary;
+PFNGLPROGRAMPARAMETERIPROC gl3wProgramParameteri;
+PFNGLUSEPROGRAMSTAGESPROC gl3wUseProgramStages;
+PFNGLACTIVESHADERPROGRAMPROC gl3wActiveShaderProgram;
+PFNGLCREATESHADERPROGRAMVPROC gl3wCreateShaderProgramv;
+PFNGLBINDPROGRAMPIPELINEPROC gl3wBindProgramPipeline;
+PFNGLDELETEPROGRAMPIPELINESPROC gl3wDeleteProgramPipelines;
+PFNGLGENPROGRAMPIPELINESPROC gl3wGenProgramPipelines;
+PFNGLISPROGRAMPIPELINEPROC gl3wIsProgramPipeline;
+PFNGLGETPROGRAMPIPELINEIVPROC gl3wGetProgramPipelineiv;
+PFNGLPROGRAMUNIFORM1IPROC gl3wProgramUniform1i;
+PFNGLPROGRAMUNIFORM1IVPROC gl3wProgramUniform1iv;
+PFNGLPROGRAMUNIFORM1FPROC gl3wProgramUniform1f;
+PFNGLPROGRAMUNIFORM1FVPROC gl3wProgramUniform1fv;
+PFNGLPROGRAMUNIFORM1DPROC gl3wProgramUniform1d;
+PFNGLPROGRAMUNIFORM1DVPROC gl3wProgramUniform1dv;
+PFNGLPROGRAMUNIFORM1UIPROC gl3wProgramUniform1ui;
+PFNGLPROGRAMUNIFORM1UIVPROC gl3wProgramUniform1uiv;
+PFNGLPROGRAMUNIFORM2IPROC gl3wProgramUniform2i;
+PFNGLPROGRAMUNIFORM2IVPROC gl3wProgramUniform2iv;
+PFNGLPROGRAMUNIFORM2FPROC gl3wProgramUniform2f;
+PFNGLPROGRAMUNIFORM2FVPROC gl3wProgramUniform2fv;
+PFNGLPROGRAMUNIFORM2DPROC gl3wProgramUniform2d;
+PFNGLPROGRAMUNIFORM2DVPROC gl3wProgramUniform2dv;
+PFNGLPROGRAMUNIFORM2UIPROC gl3wProgramUniform2ui;
+PFNGLPROGRAMUNIFORM2UIVPROC gl3wProgramUniform2uiv;
+PFNGLPROGRAMUNIFORM3IPROC gl3wProgramUniform3i;
+PFNGLPROGRAMUNIFORM3IVPROC gl3wProgramUniform3iv;
+PFNGLPROGRAMUNIFORM3FPROC gl3wProgramUniform3f;
+PFNGLPROGRAMUNIFORM3FVPROC gl3wProgramUniform3fv;
+PFNGLPROGRAMUNIFORM3DPROC gl3wProgramUniform3d;
+PFNGLPROGRAMUNIFORM3DVPROC gl3wProgramUniform3dv;
+PFNGLPROGRAMUNIFORM3UIPROC gl3wProgramUniform3ui;
+PFNGLPROGRAMUNIFORM3UIVPROC gl3wProgramUniform3uiv;
+PFNGLPROGRAMUNIFORM4IPROC gl3wProgramUniform4i;
+PFNGLPROGRAMUNIFORM4IVPROC gl3wProgramUniform4iv;
+PFNGLPROGRAMUNIFORM4FPROC gl3wProgramUniform4f;
+PFNGLPROGRAMUNIFORM4FVPROC gl3wProgramUniform4fv;
+PFNGLPROGRAMUNIFORM4DPROC gl3wProgramUniform4d;
+PFNGLPROGRAMUNIFORM4DVPROC gl3wProgramUniform4dv;
+PFNGLPROGRAMUNIFORM4UIPROC gl3wProgramUniform4ui;
+PFNGLPROGRAMUNIFORM4UIVPROC gl3wProgramUniform4uiv;
+PFNGLPROGRAMUNIFORMMATRIX2FVPROC gl3wProgramUniformMatrix2fv;
+PFNGLPROGRAMUNIFORMMATRIX3FVPROC gl3wProgramUniformMatrix3fv;
+PFNGLPROGRAMUNIFORMMATRIX4FVPROC gl3wProgramUniformMatrix4fv;
+PFNGLPROGRAMUNIFORMMATRIX2DVPROC gl3wProgramUniformMatrix2dv;
+PFNGLPROGRAMUNIFORMMATRIX3DVPROC gl3wProgramUniformMatrix3dv;
+PFNGLPROGRAMUNIFORMMATRIX4DVPROC gl3wProgramUniformMatrix4dv;
+PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC gl3wProgramUniformMatrix2x3fv;
+PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC gl3wProgramUniformMatrix3x2fv;
+PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC gl3wProgramUniformMatrix2x4fv;
+PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC gl3wProgramUniformMatrix4x2fv;
+PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC gl3wProgramUniformMatrix3x4fv;
+PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC gl3wProgramUniformMatrix4x3fv;
+PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC gl3wProgramUniformMatrix2x3dv;
+PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC gl3wProgramUniformMatrix3x2dv;
+PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC gl3wProgramUniformMatrix2x4dv;
+PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC gl3wProgramUniformMatrix4x2dv;
+PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC gl3wProgramUniformMatrix3x4dv;
+PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC gl3wProgramUniformMatrix4x3dv;
+PFNGLVALIDATEPROGRAMPIPELINEPROC gl3wValidateProgramPipeline;
+PFNGLGETPROGRAMPIPELINEINFOLOGPROC gl3wGetProgramPipelineInfoLog;
+PFNGLVERTEXATTRIBL1DPROC gl3wVertexAttribL1d;
+PFNGLVERTEXATTRIBL2DPROC gl3wVertexAttribL2d;
+PFNGLVERTEXATTRIBL3DPROC gl3wVertexAttribL3d;
+PFNGLVERTEXATTRIBL4DPROC gl3wVertexAttribL4d;
+PFNGLVERTEXATTRIBL1DVPROC gl3wVertexAttribL1dv;
+PFNGLVERTEXATTRIBL2DVPROC gl3wVertexAttribL2dv;
+PFNGLVERTEXATTRIBL3DVPROC gl3wVertexAttribL3dv;
+PFNGLVERTEXATTRIBL4DVPROC gl3wVertexAttribL4dv;
+PFNGLVERTEXATTRIBLPOINTERPROC gl3wVertexAttribLPointer;
+PFNGLGETVERTEXATTRIBLDVPROC gl3wGetVertexAttribLdv;
+PFNGLVIEWPORTARRAYVPROC gl3wViewportArrayv;
+PFNGLVIEWPORTINDEXEDFPROC gl3wViewportIndexedf;
+PFNGLVIEWPORTINDEXEDFVPROC gl3wViewportIndexedfv;
+PFNGLSCISSORARRAYVPROC gl3wScissorArrayv;
+PFNGLSCISSORINDEXEDPROC gl3wScissorIndexed;
+PFNGLSCISSORINDEXEDVPROC gl3wScissorIndexedv;
+PFNGLDEPTHRANGEARRAYVPROC gl3wDepthRangeArrayv;
+PFNGLDEPTHRANGEINDEXEDPROC gl3wDepthRangeIndexed;
+PFNGLGETFLOATI_VPROC gl3wGetFloati_v;
+PFNGLGETDOUBLEI_VPROC gl3wGetDoublei_v;
+PFNGLCREATESYNCFROMCLEVENTARBPROC gl3wCreateSyncFromCLeventARB;
+PFNGLDEBUGMESSAGECONTROLARBPROC gl3wDebugMessageControlARB;
+PFNGLDEBUGMESSAGEINSERTARBPROC gl3wDebugMessageInsertARB;
+PFNGLDEBUGMESSAGECALLBACKARBPROC gl3wDebugMessageCallbackARB;
+PFNGLGETDEBUGMESSAGELOGARBPROC gl3wGetDebugMessageLogARB;
+PFNGLGETGRAPHICSRESETSTATUSARBPROC gl3wGetGraphicsResetStatusARB;
+PFNGLGETNTEXIMAGEARBPROC gl3wGetnTexImageARB;
+PFNGLREADNPIXELSARBPROC gl3wReadnPixelsARB;
+PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC gl3wGetnCompressedTexImageARB;
+PFNGLGETNUNIFORMFVARBPROC gl3wGetnUniformfvARB;
+PFNGLGETNUNIFORMIVARBPROC gl3wGetnUniformivARB;
+PFNGLGETNUNIFORMUIVARBPROC gl3wGetnUniformuivARB;
+PFNGLGETNUNIFORMDVARBPROC gl3wGetnUniformdvARB;
+PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC gl3wDrawArraysInstancedBaseInstance;
+PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC gl3wDrawElementsInstancedBaseInstance;
+PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC gl3wDrawElementsInstancedBaseVertexBaseInstance;
+PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC gl3wDrawTransformFeedbackInstanced;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC gl3wDrawTransformFeedbackStreamInstanced;
+PFNGLGETINTERNALFORMATIVPROC gl3wGetInternalformativ;
+PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC gl3wGetActiveAtomicCounterBufferiv;
+PFNGLBINDIMAGETEXTUREPROC gl3wBindImageTexture;
+PFNGLMEMORYBARRIERPROC gl3wMemoryBarrier;
+PFNGLTEXSTORAGE1DPROC gl3wTexStorage1D;
+PFNGLTEXSTORAGE2DPROC gl3wTexStorage2D;
+PFNGLTEXSTORAGE3DPROC gl3wTexStorage3D;
+PFNGLTEXTURESTORAGE1DEXTPROC gl3wTextureStorage1DEXT;
+PFNGLTEXTURESTORAGE2DEXTPROC gl3wTextureStorage2DEXT;
+PFNGLTEXTURESTORAGE3DEXTPROC gl3wTextureStorage3DEXT;
+PFNGLDEBUGMESSAGECONTROLPROC gl3wDebugMessageControl;
+PFNGLDEBUGMESSAGEINSERTPROC gl3wDebugMessageInsert;
+PFNGLDEBUGMESSAGECALLBACKPROC gl3wDebugMessageCallback;
+PFNGLGETDEBUGMESSAGELOGPROC gl3wGetDebugMessageLog;
+PFNGLPUSHDEBUGGROUPPROC gl3wPushDebugGroup;
+PFNGLPOPDEBUGGROUPPROC gl3wPopDebugGroup;
+PFNGLOBJECTLABELPROC gl3wObjectLabel;
+PFNGLGETOBJECTLABELPROC gl3wGetObjectLabel;
+PFNGLOBJECTPTRLABELPROC gl3wObjectPtrLabel;
+PFNGLGETOBJECTPTRLABELPROC gl3wGetObjectPtrLabel;
+PFNGLCLEARBUFFERDATAPROC gl3wClearBufferData;
+PFNGLCLEARBUFFERSUBDATAPROC gl3wClearBufferSubData;
+PFNGLCLEARNAMEDBUFFERDATAEXTPROC gl3wClearNamedBufferDataEXT;
+PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC gl3wClearNamedBufferSubDataEXT;
+PFNGLDISPATCHCOMPUTEPROC gl3wDispatchCompute;
+PFNGLDISPATCHCOMPUTEINDIRECTPROC gl3wDispatchComputeIndirect;
+PFNGLCOPYIMAGESUBDATAPROC gl3wCopyImageSubData;
+PFNGLTEXTUREVIEWPROC gl3wTextureView;
+PFNGLBINDVERTEXBUFFERPROC gl3wBindVertexBuffer;
+PFNGLVERTEXATTRIBFORMATPROC gl3wVertexAttribFormat;
+PFNGLVERTEXATTRIBIFORMATPROC gl3wVertexAttribIFormat;
+PFNGLVERTEXATTRIBLFORMATPROC gl3wVertexAttribLFormat;
+PFNGLVERTEXATTRIBBINDINGPROC gl3wVertexAttribBinding;
+PFNGLVERTEXBINDINGDIVISORPROC gl3wVertexBindingDivisor;
+PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC gl3wVertexArrayBindVertexBufferEXT;
+PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC gl3wVertexArrayVertexAttribFormatEXT;
+PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC gl3wVertexArrayVertexAttribIFormatEXT;
+PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC gl3wVertexArrayVertexAttribLFormatEXT;
+PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC gl3wVertexArrayVertexAttribBindingEXT;
+PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC gl3wVertexArrayVertexBindingDivisorEXT;
+PFNGLFRAMEBUFFERPARAMETERIPROC gl3wFramebufferParameteri;
+PFNGLGETFRAMEBUFFERPARAMETERIVPROC gl3wGetFramebufferParameteriv;
+PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC gl3wNamedFramebufferParameteriEXT;
+PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC gl3wGetNamedFramebufferParameterivEXT;
+PFNGLGETINTERNALFORMATI64VPROC gl3wGetInternalformati64v;
+PFNGLINVALIDATETEXSUBIMAGEPROC gl3wInvalidateTexSubImage;
+PFNGLINVALIDATETEXIMAGEPROC gl3wInvalidateTexImage;
+PFNGLINVALIDATEBUFFERSUBDATAPROC gl3wInvalidateBufferSubData;
+PFNGLINVALIDATEBUFFERDATAPROC gl3wInvalidateBufferData;
+PFNGLINVALIDATEFRAMEBUFFERPROC gl3wInvalidateFramebuffer;
+PFNGLINVALIDATESUBFRAMEBUFFERPROC gl3wInvalidateSubFramebuffer;
+PFNGLMULTIDRAWARRAYSINDIRECTPROC gl3wMultiDrawArraysIndirect;
+PFNGLMULTIDRAWELEMENTSINDIRECTPROC gl3wMultiDrawElementsIndirect;
+PFNGLGETPROGRAMINTERFACEIVPROC gl3wGetProgramInterfaceiv;
+PFNGLGETPROGRAMRESOURCEINDEXPROC gl3wGetProgramResourceIndex;
+PFNGLGETPROGRAMRESOURCENAMEPROC gl3wGetProgramResourceName;
+PFNGLGETPROGRAMRESOURCEIVPROC gl3wGetProgramResourceiv;
+PFNGLGETPROGRAMRESOURCELOCATIONPROC gl3wGetProgramResourceLocation;
+PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC gl3wGetProgramResourceLocationIndex;
+PFNGLSHADERSTORAGEBLOCKBINDINGPROC gl3wShaderStorageBlockBinding;
+PFNGLTEXBUFFERRANGEPROC gl3wTexBufferRange;
+PFNGLTEXTUREBUFFERRANGEEXTPROC gl3wTextureBufferRangeEXT;
+PFNGLTEXSTORAGE2DMULTISAMPLEPROC gl3wTexStorage2DMultisample;
+PFNGLTEXSTORAGE3DMULTISAMPLEPROC gl3wTexStorage3DMultisample;
+PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC gl3wTextureStorage2DMultisampleEXT;
+PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEXT;
+
+static void load_procs(void)
+{
+   gl3wCullFace = (PFNGLCULLFACEPROC)get_proc("glCullFace");
+   gl3wFrontFace = (PFNGLFRONTFACEPROC)get_proc("glFrontFace");
+   gl3wHint = (PFNGLHINTPROC)get_proc("glHint");
+   gl3wLineWidth = (PFNGLLINEWIDTHPROC)get_proc("glLineWidth");
+   gl3wPointSize = (PFNGLPOINTSIZEPROC)get_proc("glPointSize");
+   gl3wPolygonMode = (PFNGLPOLYGONMODEPROC)get_proc("glPolygonMode");
+   gl3wScissor = (PFNGLSCISSORPROC)get_proc("glScissor");
+   gl3wTexParameterf = (PFNGLTEXPARAMETERFPROC)get_proc("glTexParameterf");
+   gl3wTexParameterfv = (PFNGLTEXPARAMETERFVPROC)get_proc("glTexParameterfv");
+   gl3wTexParameteri = (PFNGLTEXPARAMETERIPROC)get_proc("glTexParameteri");
+   gl3wTexParameteriv = (PFNGLTEXPARAMETERIVPROC)get_proc("glTexParameteriv");
+   gl3wTexImage1D = (PFNGLTEXIMAGE1DPROC)get_proc("glTexImage1D");
+   gl3wTexImage2D = (PFNGLTEXIMAGE2DPROC)get_proc("glTexImage2D");
+   gl3wDrawBuffer = (PFNGLDRAWBUFFERPROC)get_proc("glDrawBuffer");
+   gl3wClear = (PFNGLCLEARPROC)get_proc("glClear");
+   gl3wClearColor = (PFNGLCLEARCOLORPROC)get_proc("glClearColor");
+   gl3wClearStencil = (PFNGLCLEARSTENCILPROC)get_proc("glClearStencil");
+   gl3wClearDepth = (PFNGLCLEARDEPTHPROC)get_proc("glClearDepth");
+   gl3wStencilMask = (PFNGLSTENCILMASKPROC)get_proc("glStencilMask");
+   gl3wColorMask = (PFNGLCOLORMASKPROC)get_proc("glColorMask");
+   gl3wDepthMask = (PFNGLDEPTHMASKPROC)get_proc("glDepthMask");
+   gl3wDisable = (PFNGLDISABLEPROC)get_proc("glDisable");
+   gl3wEnable = (PFNGLENABLEPROC)get_proc("glEnable");
+   gl3wFinish = (PFNGLFINISHPROC)get_proc("glFinish");
+   gl3wFlush = (PFNGLFLUSHPROC)get_proc("glFlush");
+   gl3wBlendFunc = (PFNGLBLENDFUNCPROC)get_proc("glBlendFunc");
+   gl3wLogicOp = (PFNGLLOGICOPPROC)get_proc("glLogicOp");
+   gl3wStencilFunc = (PFNGLSTENCILFUNCPROC)get_proc("glStencilFunc");
+   gl3wStencilOp = (PFNGLSTENCILOPPROC)get_proc("glStencilOp");
+   gl3wDepthFunc = (PFNGLDEPTHFUNCPROC)get_proc("glDepthFunc");
+   gl3wPixelStoref = (PFNGLPIXELSTOREFPROC)get_proc("glPixelStoref");
+   gl3wPixelStorei = (PFNGLPIXELSTOREIPROC)get_proc("glPixelStorei");
+   gl3wReadBuffer = (PFNGLREADBUFFERPROC)get_proc("glReadBuffer");
+   gl3wReadPixels = (PFNGLREADPIXELSPROC)get_proc("glReadPixels");
+   gl3wGetBooleanv = (PFNGLGETBOOLEANVPROC)get_proc("glGetBooleanv");
+   gl3wGetDoublev = (PFNGLGETDOUBLEVPROC)get_proc("glGetDoublev");
+   gl3wGetError = (PFNGLGETERRORPROC)get_proc("glGetError");
+   gl3wGetFloatv = (PFNGLGETFLOATVPROC)get_proc("glGetFloatv");
+   gl3wGetIntegerv = (PFNGLGETINTEGERVPROC)get_proc("glGetIntegerv");
+   gl3wGetString = (PFNGLGETSTRINGPROC)get_proc("glGetString");
+   gl3wGetTexImage = (PFNGLGETTEXIMAGEPROC)get_proc("glGetTexImage");
+   gl3wGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)get_proc("glGetTexParameterfv");
+   gl3wGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)get_proc("glGetTexParameteriv");
+   gl3wGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)get_proc("glGetTexLevelParameterfv");
+   gl3wGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)get_proc("glGetTexLevelParameteriv");
+   gl3wIsEnabled = (PFNGLISENABLEDPROC)get_proc("glIsEnabled");
+   gl3wDepthRange = (PFNGLDEPTHRANGEPROC)get_proc("glDepthRange");
+   gl3wViewport = (PFNGLVIEWPORTPROC)get_proc("glViewport");
+   gl3wDrawArrays = (PFNGLDRAWARRAYSPROC)get_proc("glDrawArrays");
+   gl3wDrawElements = (PFNGLDRAWELEMENTSPROC)get_proc("glDrawElements");
+   gl3wGetPointerv = (PFNGLGETPOINTERVPROC)get_proc("glGetPointerv");
+   gl3wPolygonOffset = (PFNGLPOLYGONOFFSETPROC)get_proc("glPolygonOffset");
+   gl3wCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)get_proc("glCopyTexImage1D");
+   gl3wCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)get_proc("glCopyTexImage2D");
+   gl3wCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)get_proc("glCopyTexSubImage1D");
+   gl3wCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)get_proc("glCopyTexSubImage2D");
+   gl3wTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)get_proc("glTexSubImage1D");
+   gl3wTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)get_proc("glTexSubImage2D");
+   gl3wBindTexture = (PFNGLBINDTEXTUREPROC)get_proc("glBindTexture");
+   gl3wDeleteTextures = (PFNGLDELETETEXTURESPROC)get_proc("glDeleteTextures");
+   gl3wGenTextures = (PFNGLGENTEXTURESPROC)get_proc("glGenTextures");
+   gl3wIsTexture = (PFNGLISTEXTUREPROC)get_proc("glIsTexture");
+   gl3wBlendColor = (PFNGLBLENDCOLORPROC)get_proc("glBlendColor");
+   gl3wBlendEquation = (PFNGLBLENDEQUATIONPROC)get_proc("glBlendEquation");
+   gl3wDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)get_proc("glDrawRangeElements");
+   gl3wTexImage3D = (PFNGLTEXIMAGE3DPROC)get_proc("glTexImage3D");
+   gl3wTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)get_proc("glTexSubImage3D");
+   gl3wCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)get_proc("glCopyTexSubImage3D");
+   gl3wActiveTexture = (PFNGLACTIVETEXTUREPROC)get_proc("glActiveTexture");
+   gl3wSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)get_proc("glSampleCoverage");
+   gl3wCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)get_proc("glCompressedTexImage3D");
+   gl3wCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)get_proc("glCompressedTexImage2D");
+   gl3wCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)get_proc("glCompressedTexImage1D");
+   gl3wCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)get_proc("glCompressedTexSubImage3D");
+   gl3wCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)get_proc("glCompressedTexSubImage2D");
+   gl3wCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)get_proc("glCompressedTexSubImage1D");
+   gl3wGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)get_proc("glGetCompressedTexImage");
+   gl3wBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)get_proc("glBlendFuncSeparate");
+   gl3wMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)get_proc("glMultiDrawArrays");
+   gl3wMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)get_proc("glMultiDrawElements");
+   gl3wPointParameterf = (PFNGLPOINTPARAMETERFPROC)get_proc("glPointParameterf");
+   gl3wPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)get_proc("glPointParameterfv");
+   gl3wPointParameteri = (PFNGLPOINTPARAMETERIPROC)get_proc("glPointParameteri");
+   gl3wPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)get_proc("glPointParameteriv");
+   gl3wGenQueries = (PFNGLGENQUERIESPROC)get_proc("glGenQueries");
+   gl3wDeleteQueries = (PFNGLDELETEQUERIESPROC)get_proc("glDeleteQueries");
+   gl3wIsQuery = (PFNGLISQUERYPROC)get_proc("glIsQuery");
+   gl3wBeginQuery = (PFNGLBEGINQUERYPROC)get_proc("glBeginQuery");
+   gl3wEndQuery = (PFNGLENDQUERYPROC)get_proc("glEndQuery");
+   gl3wGetQueryiv = (PFNGLGETQUERYIVPROC)get_proc("glGetQueryiv");
+   gl3wGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)get_proc("glGetQueryObjectiv");
+   gl3wGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)get_proc("glGetQueryObjectuiv");
+   gl3wBindBuffer = (PFNGLBINDBUFFERPROC)get_proc("glBindBuffer");
+   gl3wDeleteBuffers = (PFNGLDELETEBUFFERSPROC)get_proc("glDeleteBuffers");
+   gl3wGenBuffers = (PFNGLGENBUFFERSPROC)get_proc("glGenBuffers");
+   gl3wIsBuffer = (PFNGLISBUFFERPROC)get_proc("glIsBuffer");
+   gl3wBufferData = (PFNGLBUFFERDATAPROC)get_proc("glBufferData");
+   gl3wBufferSubData = (PFNGLBUFFERSUBDATAPROC)get_proc("glBufferSubData");
+   gl3wGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)get_proc("glGetBufferSubData");
+   gl3wMapBuffer = (PFNGLMAPBUFFERPROC)get_proc("glMapBuffer");
+   gl3wUnmapBuffer = (PFNGLUNMAPBUFFERPROC)get_proc("glUnmapBuffer");
+   gl3wGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)get_proc("glGetBufferParameteriv");
+   gl3wGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)get_proc("glGetBufferPointerv");
+   gl3wBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)get_proc("glBlendEquationSeparate");
+   gl3wDrawBuffers = (PFNGLDRAWBUFFERSPROC)get_proc("glDrawBuffers");
+   gl3wStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)get_proc("glStencilOpSeparate");
+   gl3wStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)get_proc("glStencilFuncSeparate");
+   gl3wStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)get_proc("glStencilMaskSeparate");
+   gl3wAttachShader = (PFNGLATTACHSHADERPROC)get_proc("glAttachShader");
+   gl3wBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)get_proc("glBindAttribLocation");
+   gl3wCompileShader = (PFNGLCOMPILESHADERPROC)get_proc("glCompileShader");
+   gl3wCreateProgram = (PFNGLCREATEPROGRAMPROC)get_proc("glCreateProgram");
+   gl3wCreateShader = (PFNGLCREATESHADERPROC)get_proc("glCreateShader");
+   gl3wDeleteProgram = (PFNGLDELETEPROGRAMPROC)get_proc("glDeleteProgram");
+   gl3wDeleteShader = (PFNGLDELETESHADERPROC)get_proc("glDeleteShader");
+   gl3wDetachShader = (PFNGLDETACHSHADERPROC)get_proc("glDetachShader");
+   gl3wDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)get_proc("glDisableVertexAttribArray");
+   gl3wEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)get_proc("glEnableVertexAttribArray");
+   gl3wGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)get_proc("glGetActiveAttrib");
+   gl3wGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)get_proc("glGetActiveUniform");
+   gl3wGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)get_proc("glGetAttachedShaders");
+   gl3wGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)get_proc("glGetAttribLocation");
+   gl3wGetProgramiv = (PFNGLGETPROGRAMIVPROC)get_proc("glGetProgramiv");
+   gl3wGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)get_proc("glGetProgramInfoLog");
+   gl3wGetShaderiv = (PFNGLGETSHADERIVPROC)get_proc("glGetShaderiv");
+   gl3wGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)get_proc("glGetShaderInfoLog");
+   gl3wGetShaderSource = (PFNGLGETSHADERSOURCEPROC)get_proc("glGetShaderSource");
+   gl3wGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)get_proc("glGetUniformLocation");
+   gl3wGetUniformfv = (PFNGLGETUNIFORMFVPROC)get_proc("glGetUniformfv");
+   gl3wGetUniformiv = (PFNGLGETUNIFORMIVPROC)get_proc("glGetUniformiv");
+   gl3wGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)get_proc("glGetVertexAttribdv");
+   gl3wGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)get_proc("glGetVertexAttribfv");
+   gl3wGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)get_proc("glGetVertexAttribiv");
+   gl3wGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)get_proc("glGetVertexAttribPointerv");
+   gl3wIsProgram = (PFNGLISPROGRAMPROC)get_proc("glIsProgram");
+   gl3wIsShader = (PFNGLISSHADERPROC)get_proc("glIsShader");
+   gl3wLinkProgram = (PFNGLLINKPROGRAMPROC)get_proc("glLinkProgram");
+   gl3wShaderSource = (PFNGLSHADERSOURCEPROC)get_proc("glShaderSource");
+   gl3wUseProgram = (PFNGLUSEPROGRAMPROC)get_proc("glUseProgram");
+   gl3wUniform1f = (PFNGLUNIFORM1FPROC)get_proc("glUniform1f");
+   gl3wUniform2f = (PFNGLUNIFORM2FPROC)get_proc("glUniform2f");
+   gl3wUniform3f = (PFNGLUNIFORM3FPROC)get_proc("glUniform3f");
+   gl3wUniform4f = (PFNGLUNIFORM4FPROC)get_proc("glUniform4f");
+   gl3wUniform1i = (PFNGLUNIFORM1IPROC)get_proc("glUniform1i");
+   gl3wUniform2i = (PFNGLUNIFORM2IPROC)get_proc("glUniform2i");
+   gl3wUniform3i = (PFNGLUNIFORM3IPROC)get_proc("glUniform3i");
+   gl3wUniform4i = (PFNGLUNIFORM4IPROC)get_proc("glUniform4i");
+   gl3wUniform1fv = (PFNGLUNIFORM1FVPROC)get_proc("glUniform1fv");
+   gl3wUniform2fv = (PFNGLUNIFORM2FVPROC)get_proc("glUniform2fv");
+   gl3wUniform3fv = (PFNGLUNIFORM3FVPROC)get_proc("glUniform3fv");
+   gl3wUniform4fv = (PFNGLUNIFORM4FVPROC)get_proc("glUniform4fv");
+   gl3wUniform1iv = (PFNGLUNIFORM1IVPROC)get_proc("glUniform1iv");
+   gl3wUniform2iv = (PFNGLUNIFORM2IVPROC)get_proc("glUniform2iv");
+   gl3wUniform3iv = (PFNGLUNIFORM3IVPROC)get_proc("glUniform3iv");
+   gl3wUniform4iv = (PFNGLUNIFORM4IVPROC)get_proc("glUniform4iv");
+   gl3wUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)get_proc("glUniformMatrix2fv");
+   gl3wUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)get_proc("glUniformMatrix3fv");
+   gl3wUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)get_proc("glUniformMatrix4fv");
+   gl3wValidateProgram = (PFNGLVALIDATEPROGRAMPROC)get_proc("glValidateProgram");
+   gl3wVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)get_proc("glVertexAttrib1d");
+   gl3wVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)get_proc("glVertexAttrib1dv");
+   gl3wVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)get_proc("glVertexAttrib1f");
+   gl3wVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)get_proc("glVertexAttrib1fv");
+   gl3wVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)get_proc("glVertexAttrib1s");
+   gl3wVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)get_proc("glVertexAttrib1sv");
+   gl3wVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)get_proc("glVertexAttrib2d");
+   gl3wVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)get_proc("glVertexAttrib2dv");
+   gl3wVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)get_proc("glVertexAttrib2f");
+   gl3wVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)get_proc("glVertexAttrib2fv");
+   gl3wVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)get_proc("glVertexAttrib2s");
+   gl3wVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)get_proc("glVertexAttrib2sv");
+   gl3wVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)get_proc("glVertexAttrib3d");
+   gl3wVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)get_proc("glVertexAttrib3dv");
+   gl3wVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)get_proc("glVertexAttrib3f");
+   gl3wVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)get_proc("glVertexAttrib3fv");
+   gl3wVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)get_proc("glVertexAttrib3s");
+   gl3wVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)get_proc("glVertexAttrib3sv");
+   gl3wVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)get_proc("glVertexAttrib4Nbv");
+   gl3wVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)get_proc("glVertexAttrib4Niv");
+   gl3wVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)get_proc("glVertexAttrib4Nsv");
+   gl3wVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)get_proc("glVertexAttrib4Nub");
+   gl3wVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)get_proc("glVertexAttrib4Nubv");
+   gl3wVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)get_proc("glVertexAttrib4Nuiv");
+   gl3wVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)get_proc("glVertexAttrib4Nusv");
+   gl3wVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)get_proc("glVertexAttrib4bv");
+   gl3wVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)get_proc("glVertexAttrib4d");
+   gl3wVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)get_proc("glVertexAttrib4dv");
+   gl3wVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)get_proc("glVertexAttrib4f");
+   gl3wVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)get_proc("glVertexAttrib4fv");
+   gl3wVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)get_proc("glVertexAttrib4iv");
+   gl3wVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)get_proc("glVertexAttrib4s");
+   gl3wVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)get_proc("glVertexAttrib4sv");
+   gl3wVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)get_proc("glVertexAttrib4ubv");
+   gl3wVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)get_proc("glVertexAttrib4uiv");
+   gl3wVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)get_proc("glVertexAttrib4usv");
+   gl3wVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)get_proc("glVertexAttribPointer");
+   gl3wUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)get_proc("glUniformMatrix2x3fv");
+   gl3wUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)get_proc("glUniformMatrix3x2fv");
+   gl3wUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)get_proc("glUniformMatrix2x4fv");
+   gl3wUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)get_proc("glUniformMatrix4x2fv");
+   gl3wUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)get_proc("glUniformMatrix3x4fv");
+   gl3wUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)get_proc("glUniformMatrix4x3fv");
+   gl3wColorMaski = (PFNGLCOLORMASKIPROC)get_proc("glColorMaski");
+   gl3wGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)get_proc("glGetBooleani_v");
+   gl3wGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)get_proc("glGetIntegeri_v");
+   gl3wEnablei = (PFNGLENABLEIPROC)get_proc("glEnablei");
+   gl3wDisablei = (PFNGLDISABLEIPROC)get_proc("glDisablei");
+   gl3wIsEnabledi = (PFNGLISENABLEDIPROC)get_proc("glIsEnabledi");
+   gl3wBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)get_proc("glBeginTransformFeedback");
+   gl3wEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)get_proc("glEndTransformFeedback");
+   gl3wBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)get_proc("glBindBufferRange");
+   gl3wBindBufferBase = (PFNGLBINDBUFFERBASEPROC)get_proc("glBindBufferBase");
+   gl3wTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)get_proc("glTransformFeedbackVaryings");
+   gl3wGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)get_proc("glGetTransformFeedbackVarying");
+   gl3wClampColor = (PFNGLCLAMPCOLORPROC)get_proc("glClampColor");
+   gl3wBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)get_proc("glBeginConditionalRender");
+   gl3wEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)get_proc("glEndConditionalRender");
+   gl3wVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)get_proc("glVertexAttribIPointer");
+   gl3wGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)get_proc("glGetVertexAttribIiv");
+   gl3wGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)get_proc("glGetVertexAttribIuiv");
+   gl3wVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)get_proc("glVertexAttribI1i");
+   gl3wVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)get_proc("glVertexAttribI2i");
+   gl3wVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)get_proc("glVertexAttribI3i");
+   gl3wVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)get_proc("glVertexAttribI4i");
+   gl3wVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)get_proc("glVertexAttribI1ui");
+   gl3wVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)get_proc("glVertexAttribI2ui");
+   gl3wVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)get_proc("glVertexAttribI3ui");
+   gl3wVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)get_proc("glVertexAttribI4ui");
+   gl3wVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)get_proc("glVertexAttribI1iv");
+   gl3wVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)get_proc("glVertexAttribI2iv");
+   gl3wVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)get_proc("glVertexAttribI3iv");
+   gl3wVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)get_proc("glVertexAttribI4iv");
+   gl3wVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)get_proc("glVertexAttribI1uiv");
+   gl3wVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)get_proc("glVertexAttribI2uiv");
+   gl3wVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)get_proc("glVertexAttribI3uiv");
+   gl3wVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)get_proc("glVertexAttribI4uiv");
+   gl3wVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)get_proc("glVertexAttribI4bv");
+   gl3wVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)get_proc("glVertexAttribI4sv");
+   gl3wVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)get_proc("glVertexAttribI4ubv");
+   gl3wVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)get_proc("glVertexAttribI4usv");
+   gl3wGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)get_proc("glGetUniformuiv");
+   gl3wBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)get_proc("glBindFragDataLocation");
+   gl3wGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)get_proc("glGetFragDataLocation");
+   gl3wUniform1ui = (PFNGLUNIFORM1UIPROC)get_proc("glUniform1ui");
+   gl3wUniform2ui = (PFNGLUNIFORM2UIPROC)get_proc("glUniform2ui");
+   gl3wUniform3ui = (PFNGLUNIFORM3UIPROC)get_proc("glUniform3ui");
+   gl3wUniform4ui = (PFNGLUNIFORM4UIPROC)get_proc("glUniform4ui");
+   gl3wUniform1uiv = (PFNGLUNIFORM1UIVPROC)get_proc("glUniform1uiv");
+   gl3wUniform2uiv = (PFNGLUNIFORM2UIVPROC)get_proc("glUniform2uiv");
+   gl3wUniform3uiv = (PFNGLUNIFORM3UIVPROC)get_proc("glUniform3uiv");
+   gl3wUniform4uiv = (PFNGLUNIFORM4UIVPROC)get_proc("glUniform4uiv");
+   gl3wTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)get_proc("glTexParameterIiv");
+   gl3wTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)get_proc("glTexParameterIuiv");
+   gl3wGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)get_proc("glGetTexParameterIiv");
+   gl3wGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)get_proc("glGetTexParameterIuiv");
+   gl3wClearBufferiv = (PFNGLCLEARBUFFERIVPROC)get_proc("glClearBufferiv");
+   gl3wClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)get_proc("glClearBufferuiv");
+   gl3wClearBufferfv = (PFNGLCLEARBUFFERFVPROC)get_proc("glClearBufferfv");
+   gl3wClearBufferfi = (PFNGLCLEARBUFFERFIPROC)get_proc("glClearBufferfi");
+   gl3wGetStringi = (PFNGLGETSTRINGIPROC)get_proc("glGetStringi");
+   gl3wDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)get_proc("glDrawArraysInstanced");
+   gl3wDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)get_proc("glDrawElementsInstanced");
+   gl3wTexBuffer = (PFNGLTEXBUFFERPROC)get_proc("glTexBuffer");
+   gl3wPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)get_proc("glPrimitiveRestartIndex");
+   gl3wGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)get_proc("glGetInteger64i_v");
+   gl3wGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)get_proc("glGetBufferParameteri64v");
+   gl3wFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)get_proc("glFramebufferTexture");
+   gl3wVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)get_proc("glVertexAttribDivisor");
+   gl3wMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)get_proc("glMinSampleShading");
+   gl3wBlendEquationi = (PFNGLBLENDEQUATIONIPROC)get_proc("glBlendEquationi");
+   gl3wBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)get_proc("glBlendEquationSeparatei");
+   gl3wBlendFunci = (PFNGLBLENDFUNCIPROC)get_proc("glBlendFunci");
+   gl3wBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)get_proc("glBlendFuncSeparatei");
+   gl3wIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)get_proc("glIsRenderbuffer");
+   gl3wBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)get_proc("glBindRenderbuffer");
+   gl3wDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)get_proc("glDeleteRenderbuffers");
+   gl3wGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)get_proc("glGenRenderbuffers");
+   gl3wRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)get_proc("glRenderbufferStorage");
+   gl3wGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)get_proc("glGetRenderbufferParameteriv");
+   gl3wIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)get_proc("glIsFramebuffer");
+   gl3wBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)get_proc("glBindFramebuffer");
+   gl3wDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)get_proc("glDeleteFramebuffers");
+   gl3wGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)get_proc("glGenFramebuffers");
+   gl3wCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)get_proc("glCheckFramebufferStatus");
+   gl3wFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)get_proc("glFramebufferTexture1D");
+   gl3wFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)get_proc("glFramebufferTexture2D");
+   gl3wFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)get_proc("glFramebufferTexture3D");
+   gl3wFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)get_proc("glFramebufferRenderbuffer");
+   gl3wGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)get_proc("glGetFramebufferAttachmentParameteriv");
+   gl3wGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)get_proc("glGenerateMipmap");
+   gl3wBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)get_proc("glBlitFramebuffer");
+   gl3wRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)get_proc("glRenderbufferStorageMultisample");
+   gl3wFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)get_proc("glFramebufferTextureLayer");
+   gl3wMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)get_proc("glMapBufferRange");
+   gl3wFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)get_proc("glFlushMappedBufferRange");
+   gl3wBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)get_proc("glBindVertexArray");
+   gl3wDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)get_proc("glDeleteVertexArrays");
+   gl3wGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)get_proc("glGenVertexArrays");
+   gl3wIsVertexArray = (PFNGLISVERTEXARRAYPROC)get_proc("glIsVertexArray");
+   gl3wGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)get_proc("glGetUniformIndices");
+   gl3wGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)get_proc("glGetActiveUniformsiv");
+   gl3wGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)get_proc("glGetActiveUniformName");
+   gl3wGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)get_proc("glGetUniformBlockIndex");
+   gl3wGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)get_proc("glGetActiveUniformBlockiv");
+   gl3wGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)get_proc("glGetActiveUniformBlockName");
+   gl3wUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)get_proc("glUniformBlockBinding");
+   gl3wCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)get_proc("glCopyBufferSubData");
+   gl3wDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)get_proc("glDrawElementsBaseVertex");
+   gl3wDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)get_proc("glDrawRangeElementsBaseVertex");
+   gl3wDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)get_proc("glDrawElementsInstancedBaseVertex");
+   gl3wMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)get_proc("glMultiDrawElementsBaseVertex");
+   gl3wProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)get_proc("glProvokingVertex");
+   gl3wFenceSync = (PFNGLFENCESYNCPROC)get_proc("glFenceSync");
+   gl3wIsSync = (PFNGLISSYNCPROC)get_proc("glIsSync");
+   gl3wDeleteSync = (PFNGLDELETESYNCPROC)get_proc("glDeleteSync");
+   gl3wClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)get_proc("glClientWaitSync");
+   gl3wWaitSync = (PFNGLWAITSYNCPROC)get_proc("glWaitSync");
+   gl3wGetInteger64v = (PFNGLGETINTEGER64VPROC)get_proc("glGetInteger64v");
+   gl3wGetSynciv = (PFNGLGETSYNCIVPROC)get_proc("glGetSynciv");
+   gl3wTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)get_proc("glTexImage2DMultisample");
+   gl3wTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)get_proc("glTexImage3DMultisample");
+   gl3wGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)get_proc("glGetMultisamplefv");
+   gl3wSampleMaski = (PFNGLSAMPLEMASKIPROC)get_proc("glSampleMaski");
+   gl3wBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)get_proc("glBlendEquationiARB");
+   gl3wBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)get_proc("glBlendEquationSeparateiARB");
+   gl3wBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)get_proc("glBlendFunciARB");
+   gl3wBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)get_proc("glBlendFuncSeparateiARB");
+   gl3wMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)get_proc("glMinSampleShadingARB");
+   gl3wNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)get_proc("glNamedStringARB");
+   gl3wDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)get_proc("glDeleteNamedStringARB");
+   gl3wCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)get_proc("glCompileShaderIncludeARB");
+   gl3wIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)get_proc("glIsNamedStringARB");
+   gl3wGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)get_proc("glGetNamedStringARB");
+   gl3wGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)get_proc("glGetNamedStringivARB");
+   gl3wBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)get_proc("glBindFragDataLocationIndexed");
+   gl3wGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)get_proc("glGetFragDataIndex");
+   gl3wGenSamplers = (PFNGLGENSAMPLERSPROC)get_proc("glGenSamplers");
+   gl3wDeleteSamplers = (PFNGLDELETESAMPLERSPROC)get_proc("glDeleteSamplers");
+   gl3wIsSampler = (PFNGLISSAMPLERPROC)get_proc("glIsSampler");
+   gl3wBindSampler = (PFNGLBINDSAMPLERPROC)get_proc("glBindSampler");
+   gl3wSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)get_proc("glSamplerParameteri");
+   gl3wSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)get_proc("glSamplerParameteriv");
+   gl3wSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)get_proc("glSamplerParameterf");
+   gl3wSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)get_proc("glSamplerParameterfv");
+   gl3wSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)get_proc("glSamplerParameterIiv");
+   gl3wSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)get_proc("glSamplerParameterIuiv");
+   gl3wGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)get_proc("glGetSamplerParameteriv");
+   gl3wGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)get_proc("glGetSamplerParameterIiv");
+   gl3wGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)get_proc("glGetSamplerParameterfv");
+   gl3wGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)get_proc("glGetSamplerParameterIuiv");
+   gl3wQueryCounter = (PFNGLQUERYCOUNTERPROC)get_proc("glQueryCounter");
+   gl3wGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)get_proc("glGetQueryObjecti64v");
+   gl3wGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)get_proc("glGetQueryObjectui64v");
+   gl3wVertexP2ui = (PFNGLVERTEXP2UIPROC)get_proc("glVertexP2ui");
+   gl3wVertexP2uiv = (PFNGLVERTEXP2UIVPROC)get_proc("glVertexP2uiv");
+   gl3wVertexP3ui = (PFNGLVERTEXP3UIPROC)get_proc("glVertexP3ui");
+   gl3wVertexP3uiv = (PFNGLVERTEXP3UIVPROC)get_proc("glVertexP3uiv");
+   gl3wVertexP4ui = (PFNGLVERTEXP4UIPROC)get_proc("glVertexP4ui");
+   gl3wVertexP4uiv = (PFNGLVERTEXP4UIVPROC)get_proc("glVertexP4uiv");
+   gl3wTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)get_proc("glTexCoordP1ui");
+   gl3wTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)get_proc("glTexCoordP1uiv");
+   gl3wTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)get_proc("glTexCoordP2ui");
+   gl3wTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)get_proc("glTexCoordP2uiv");
+   gl3wTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)get_proc("glTexCoordP3ui");
+   gl3wTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)get_proc("glTexCoordP3uiv");
+   gl3wTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)get_proc("glTexCoordP4ui");
+   gl3wTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)get_proc("glTexCoordP4uiv");
+   gl3wMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)get_proc("glMultiTexCoordP1ui");
+   gl3wMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)get_proc("glMultiTexCoordP1uiv");
+   gl3wMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)get_proc("glMultiTexCoordP2ui");
+   gl3wMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)get_proc("glMultiTexCoordP2uiv");
+   gl3wMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)get_proc("glMultiTexCoordP3ui");
+   gl3wMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)get_proc("glMultiTexCoordP3uiv");
+   gl3wMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)get_proc("glMultiTexCoordP4ui");
+   gl3wMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)get_proc("glMultiTexCoordP4uiv");
+   gl3wNormalP3ui = (PFNGLNORMALP3UIPROC)get_proc("glNormalP3ui");
+   gl3wNormalP3uiv = (PFNGLNORMALP3UIVPROC)get_proc("glNormalP3uiv");
+   gl3wColorP3ui = (PFNGLCOLORP3UIPROC)get_proc("glColorP3ui");
+   gl3wColorP3uiv = (PFNGLCOLORP3UIVPROC)get_proc("glColorP3uiv");
+   gl3wColorP4ui = (PFNGLCOLORP4UIPROC)get_proc("glColorP4ui");
+   gl3wColorP4uiv = (PFNGLCOLORP4UIVPROC)get_proc("glColorP4uiv");
+   gl3wSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)get_proc("glSecondaryColorP3ui");
+   gl3wSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)get_proc("glSecondaryColorP3uiv");
+   gl3wVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)get_proc("glVertexAttribP1ui");
+   gl3wVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)get_proc("glVertexAttribP1uiv");
+   gl3wVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)get_proc("glVertexAttribP2ui");
+   gl3wVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)get_proc("glVertexAttribP2uiv");
+   gl3wVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)get_proc("glVertexAttribP3ui");
+   gl3wVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)get_proc("glVertexAttribP3uiv");
+   gl3wVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)get_proc("glVertexAttribP4ui");
+   gl3wVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)get_proc("glVertexAttribP4uiv");
+   gl3wDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)get_proc("glDrawArraysIndirect");
+   gl3wDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)get_proc("glDrawElementsIndirect");
+   gl3wUniform1d = (PFNGLUNIFORM1DPROC)get_proc("glUniform1d");
+   gl3wUniform2d = (PFNGLUNIFORM2DPROC)get_proc("glUniform2d");
+   gl3wUniform3d = (PFNGLUNIFORM3DPROC)get_proc("glUniform3d");
+   gl3wUniform4d = (PFNGLUNIFORM4DPROC)get_proc("glUniform4d");
+   gl3wUniform1dv = (PFNGLUNIFORM1DVPROC)get_proc("glUniform1dv");
+   gl3wUniform2dv = (PFNGLUNIFORM2DVPROC)get_proc("glUniform2dv");
+   gl3wUniform3dv = (PFNGLUNIFORM3DVPROC)get_proc("glUniform3dv");
+   gl3wUniform4dv = (PFNGLUNIFORM4DVPROC)get_proc("glUniform4dv");
+   gl3wUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)get_proc("glUniformMatrix2dv");
+   gl3wUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)get_proc("glUniformMatrix3dv");
+   gl3wUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)get_proc("glUniformMatrix4dv");
+   gl3wUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)get_proc("glUniformMatrix2x3dv");
+   gl3wUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)get_proc("glUniformMatrix2x4dv");
+   gl3wUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)get_proc("glUniformMatrix3x2dv");
+   gl3wUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)get_proc("glUniformMatrix3x4dv");
+   gl3wUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)get_proc("glUniformMatrix4x2dv");
+   gl3wUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)get_proc("glUniformMatrix4x3dv");
+   gl3wGetUniformdv = (PFNGLGETUNIFORMDVPROC)get_proc("glGetUniformdv");
+   gl3wGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)get_proc("glGetSubroutineUniformLocation");
+   gl3wGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)get_proc("glGetSubroutineIndex");
+   gl3wGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)get_proc("glGetActiveSubroutineUniformiv");
+   gl3wGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)get_proc("glGetActiveSubroutineUniformName");
+   gl3wGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)get_proc("glGetActiveSubroutineName");
+   gl3wUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)get_proc("glUniformSubroutinesuiv");
+   gl3wGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)get_proc("glGetUniformSubroutineuiv");
+   gl3wGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)get_proc("glGetProgramStageiv");
+   gl3wPatchParameteri = (PFNGLPATCHPARAMETERIPROC)get_proc("glPatchParameteri");
+   gl3wPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)get_proc("glPatchParameterfv");
+   gl3wBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)get_proc("glBindTransformFeedback");
+   gl3wDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)get_proc("glDeleteTransformFeedbacks");
+   gl3wGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)get_proc("glGenTransformFeedbacks");
+   gl3wIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)get_proc("glIsTransformFeedback");
+   gl3wPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)get_proc("glPauseTransformFeedback");
+   gl3wResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)get_proc("glResumeTransformFeedback");
+   gl3wDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)get_proc("glDrawTransformFeedback");
+   gl3wDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)get_proc("glDrawTransformFeedbackStream");
+   gl3wBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)get_proc("glBeginQueryIndexed");
+   gl3wEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)get_proc("glEndQueryIndexed");
+   gl3wGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)get_proc("glGetQueryIndexediv");
+   gl3wReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)get_proc("glReleaseShaderCompiler");
+   gl3wShaderBinary = (PFNGLSHADERBINARYPROC)get_proc("glShaderBinary");
+   gl3wGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)get_proc("glGetShaderPrecisionFormat");
+   gl3wDepthRangef = (PFNGLDEPTHRANGEFPROC)get_proc("glDepthRangef");
+   gl3wClearDepthf = (PFNGLCLEARDEPTHFPROC)get_proc("glClearDepthf");
+   gl3wGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)get_proc("glGetProgramBinary");
+   gl3wProgramBinary = (PFNGLPROGRAMBINARYPROC)get_proc("glProgramBinary");
+   gl3wProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)get_proc("glProgramParameteri");
+   gl3wUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)get_proc("glUseProgramStages");
+   gl3wActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)get_proc("glActiveShaderProgram");
+   gl3wCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)get_proc("glCreateShaderProgramv");
+   gl3wBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)get_proc("glBindProgramPipeline");
+   gl3wDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)get_proc("glDeleteProgramPipelines");
+   gl3wGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)get_proc("glGenProgramPipelines");
+   gl3wIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)get_proc("glIsProgramPipeline");
+   gl3wGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)get_proc("glGetProgramPipelineiv");
+   gl3wProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)get_proc("glProgramUniform1i");
+   gl3wProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)get_proc("glProgramUniform1iv");
+   gl3wProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)get_proc("glProgramUniform1f");
+   gl3wProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)get_proc("glProgramUniform1fv");
+   gl3wProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)get_proc("glProgramUniform1d");
+   gl3wProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)get_proc("glProgramUniform1dv");
+   gl3wProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)get_proc("glProgramUniform1ui");
+   gl3wProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)get_proc("glProgramUniform1uiv");
+   gl3wProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)get_proc("glProgramUniform2i");
+   gl3wProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)get_proc("glProgramUniform2iv");
+   gl3wProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)get_proc("glProgramUniform2f");
+   gl3wProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)get_proc("glProgramUniform2fv");
+   gl3wProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)get_proc("glProgramUniform2d");
+   gl3wProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)get_proc("glProgramUniform2dv");
+   gl3wProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)get_proc("glProgramUniform2ui");
+   gl3wProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)get_proc("glProgramUniform2uiv");
+   gl3wProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)get_proc("glProgramUniform3i");
+   gl3wProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)get_proc("glProgramUniform3iv");
+   gl3wProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)get_proc("glProgramUniform3f");
+   gl3wProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)get_proc("glProgramUniform3fv");
+   gl3wProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)get_proc("glProgramUniform3d");
+   gl3wProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)get_proc("glProgramUniform3dv");
+   gl3wProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)get_proc("glProgramUniform3ui");
+   gl3wProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)get_proc("glProgramUniform3uiv");
+   gl3wProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)get_proc("glProgramUniform4i");
+   gl3wProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)get_proc("glProgramUniform4iv");
+   gl3wProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)get_proc("glProgramUniform4f");
+   gl3wProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)get_proc("glProgramUniform4fv");
+   gl3wProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)get_proc("glProgramUniform4d");
+   gl3wProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)get_proc("glProgramUniform4dv");
+   gl3wProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)get_proc("glProgramUniform4ui");
+   gl3wProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)get_proc("glProgramUniform4uiv");
+   gl3wProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)get_proc("glProgramUniformMatrix2fv");
+   gl3wProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)get_proc("glProgramUniformMatrix3fv");
+   gl3wProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)get_proc("glProgramUniformMatrix4fv");
+   gl3wProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)get_proc("glProgramUniformMatrix2dv");
+   gl3wProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)get_proc("glProgramUniformMatrix3dv");
+   gl3wProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)get_proc("glProgramUniformMatrix4dv");
+   gl3wProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)get_proc("glProgramUniformMatrix2x3fv");
+   gl3wProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)get_proc("glProgramUniformMatrix3x2fv");
+   gl3wProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)get_proc("glProgramUniformMatrix2x4fv");
+   gl3wProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)get_proc("glProgramUniformMatrix4x2fv");
+   gl3wProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)get_proc("glProgramUniformMatrix3x4fv");
+   gl3wProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)get_proc("glProgramUniformMatrix4x3fv");
+   gl3wProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)get_proc("glProgramUniformMatrix2x3dv");
+   gl3wProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)get_proc("glProgramUniformMatrix3x2dv");
+   gl3wProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)get_proc("glProgramUniformMatrix2x4dv");
+   gl3wProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)get_proc("glProgramUniformMatrix4x2dv");
+   gl3wProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)get_proc("glProgramUniformMatrix3x4dv");
+   gl3wProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)get_proc("glProgramUniformMatrix4x3dv");
+   gl3wValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)get_proc("glValidateProgramPipeline");
+   gl3wGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)get_proc("glGetProgramPipelineInfoLog");
+   gl3wVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)get_proc("glVertexAttribL1d");
+   gl3wVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)get_proc("glVertexAttribL2d");
+   gl3wVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)get_proc("glVertexAttribL3d");
+   gl3wVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)get_proc("glVertexAttribL4d");
+   gl3wVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)get_proc("glVertexAttribL1dv");
+   gl3wVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)get_proc("glVertexAttribL2dv");
+   gl3wVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)get_proc("glVertexAttribL3dv");
+   gl3wVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)get_proc("glVertexAttribL4dv");
+   gl3wVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)get_proc("glVertexAttribLPointer");
+   gl3wGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)get_proc("glGetVertexAttribLdv");
+   gl3wViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)get_proc("glViewportArrayv");
+   gl3wViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)get_proc("glViewportIndexedf");
+   gl3wViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)get_proc("glViewportIndexedfv");
+   gl3wScissorArrayv = (PFNGLSCISSORARRAYVPROC)get_proc("glScissorArrayv");
+   gl3wScissorIndexed = (PFNGLSCISSORINDEXEDPROC)get_proc("glScissorIndexed");
+   gl3wScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)get_proc("glScissorIndexedv");
+   gl3wDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)get_proc("glDepthRangeArrayv");
+   gl3wDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)get_proc("glDepthRangeIndexed");
+   gl3wGetFloati_v = (PFNGLGETFLOATI_VPROC)get_proc("glGetFloati_v");
+   gl3wGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)get_proc("glGetDoublei_v");
+   gl3wCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)get_proc("glCreateSyncFromCLeventARB");
+   gl3wDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)get_proc("glDebugMessageControlARB");
+   gl3wDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)get_proc("glDebugMessageInsertARB");
+   gl3wDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)get_proc("glDebugMessageCallbackARB");
+   gl3wGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)get_proc("glGetDebugMessageLogARB");
+   gl3wGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)get_proc("glGetGraphicsResetStatusARB");
+   gl3wGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)get_proc("glGetnTexImageARB");
+   gl3wReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)get_proc("glReadnPixelsARB");
+   gl3wGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)get_proc("glGetnCompressedTexImageARB");
+   gl3wGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)get_proc("glGetnUniformfvARB");
+   gl3wGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)get_proc("glGetnUniformivARB");
+   gl3wGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)get_proc("glGetnUniformuivARB");
+   gl3wGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)get_proc("glGetnUniformdvARB");
+   gl3wDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)get_proc("glDrawArraysInstancedBaseInstance");
+   gl3wDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)get_proc("glDrawElementsInstancedBaseInstance");
+   gl3wDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)get_proc("glDrawElementsInstancedBaseVertexBaseInstance");
+   gl3wDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)get_proc("glDrawTransformFeedbackInstanced");
+   gl3wDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)get_proc("glDrawTransformFeedbackStreamInstanced");
+   gl3wGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)get_proc("glGetInternalformativ");
+   gl3wGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)get_proc("glGetActiveAtomicCounterBufferiv");
+   gl3wBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)get_proc("glBindImageTexture");
+   gl3wMemoryBarrier = (PFNGLMEMORYBARRIERPROC)get_proc("glMemoryBarrier");
+   gl3wTexStorage1D = (PFNGLTEXSTORAGE1DPROC)get_proc("glTexStorage1D");
+   gl3wTexStorage2D = (PFNGLTEXSTORAGE2DPROC)get_proc("glTexStorage2D");
+   gl3wTexStorage3D = (PFNGLTEXSTORAGE3DPROC)get_proc("glTexStorage3D");
+   gl3wTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)get_proc("glTextureStorage1DEXT");
+   gl3wTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)get_proc("glTextureStorage2DEXT");
+   gl3wTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)get_proc("glTextureStorage3DEXT");
+   gl3wDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)get_proc("glDebugMessageControl");
+   gl3wDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)get_proc("glDebugMessageInsert");
+   gl3wDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)get_proc("glDebugMessageCallback");
+   gl3wGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)get_proc("glGetDebugMessageLog");
+   gl3wPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)get_proc("glPushDebugGroup");
+   gl3wPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)get_proc("glPopDebugGroup");
+   gl3wObjectLabel = (PFNGLOBJECTLABELPROC)get_proc("glObjectLabel");
+   gl3wGetObjectLabel = (PFNGLGETOBJECTLABELPROC)get_proc("glGetObjectLabel");
+   gl3wObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)get_proc("glObjectPtrLabel");
+   gl3wGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)get_proc("glGetObjectPtrLabel");
+   gl3wClearBufferData = (PFNGLCLEARBUFFERDATAPROC)get_proc("glClearBufferData");
+   gl3wClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)get_proc("glClearBufferSubData");
+   gl3wClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)get_proc("glClearNamedBufferDataEXT");
+   gl3wClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)get_proc("glClearNamedBufferSubDataEXT");
+   gl3wDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)get_proc("glDispatchCompute");
+   gl3wDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)get_proc("glDispatchComputeIndirect");
+   gl3wCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)get_proc("glCopyImageSubData");
+   gl3wTextureView = (PFNGLTEXTUREVIEWPROC)get_proc("glTextureView");
+   gl3wBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)get_proc("glBindVertexBuffer");
+   gl3wVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)get_proc("glVertexAttribFormat");
+   gl3wVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)get_proc("glVertexAttribIFormat");
+   gl3wVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)get_proc("glVertexAttribLFormat");
+   gl3wVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)get_proc("glVertexAttribBinding");
+   gl3wVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)get_proc("glVertexBindingDivisor");
+   gl3wVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)get_proc("glVertexArrayBindVertexBufferEXT");
+   gl3wVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)get_proc("glVertexArrayVertexAttribFormatEXT");
+   gl3wVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)get_proc("glVertexArrayVertexAttribIFormatEXT");
+   gl3wVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)get_proc("glVertexArrayVertexAttribLFormatEXT");
+   gl3wVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)get_proc("glVertexArrayVertexAttribBindingEXT");
+   gl3wVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)get_proc("glVertexArrayVertexBindingDivisorEXT");
+   gl3wFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)get_proc("glFramebufferParameteri");
+   gl3wGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)get_proc("glGetFramebufferParameteriv");
+   gl3wNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)get_proc("glNamedFramebufferParameteriEXT");
+   gl3wGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)get_proc("glGetNamedFramebufferParameterivEXT");
+   gl3wGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)get_proc("glGetInternalformati64v");
+   gl3wInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)get_proc("glInvalidateTexSubImage");
+   gl3wInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)get_proc("glInvalidateTexImage");
+   gl3wInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)get_proc("glInvalidateBufferSubData");
+   gl3wInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)get_proc("glInvalidateBufferData");
+   gl3wInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)get_proc("glInvalidateFramebuffer");
+   gl3wInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)get_proc("glInvalidateSubFramebuffer");
+   gl3wMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)get_proc("glMultiDrawArraysIndirect");
+   gl3wMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)get_proc("glMultiDrawElementsIndirect");
+   gl3wGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)get_proc("glGetProgramInterfaceiv");
+   gl3wGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)get_proc("glGetProgramResourceIndex");
+   gl3wGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)get_proc("glGetProgramResourceName");
+   gl3wGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)get_proc("glGetProgramResourceiv");
+   gl3wGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)get_proc("glGetProgramResourceLocation");
+   gl3wGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)get_proc("glGetProgramResourceLocationIndex");
+   gl3wShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)get_proc("glShaderStorageBlockBinding");
+   gl3wTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)get_proc("glTexBufferRange");
+   gl3wTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)get_proc("glTextureBufferRangeEXT");
+   gl3wTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)get_proc("glTexStorage2DMultisample");
+   gl3wTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)get_proc("glTexStorage3DMultisample");
+   gl3wTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)get_proc("glTextureStorage2DMultisampleEXT");
+   gl3wTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)get_proc("glTextureStorage3DMultisampleEXT");
+}
