text:
PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements = nullptr;
PFNGLTEXIMAGE3DPROC        glTexImage3D = nullptr;
PFNGLTEXSUBIMAGE3DPROC     glTexSubImage3D = nullptr;
PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D = nullptr;

// GL_VERSION_1_3
PFNGLACTIVETEXTUREPROC           glActiveTexture = nullptr;
PFNGLSAMPLECOVERAGEPROC          glSampleCoverage = nullptr;
PFNGLCOMPRESSEDTEXIMAGE3DPROC    glCompressedTexImage3D = nullptr;
PFNGLCOMPRESSEDTEXIMAGE2DPROC    glCompressedTexImage2D = nullptr;
PFNGLCOMPRESSEDTEXIMAGE1DPROC    glCompressedTexImage1D = nullptr;
PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D = nullptr;
PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D = nullptr;
PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D = nullptr;
PFNGLGETCOMPRESSEDTEXIMAGEPROC   glGetCompressedTexImage = nullptr;

// GL_VERSION_1_4
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate = nullptr;
PFNGLMULTIDRAWARRAYSPROC   glMultiDrawArrays = nullptr;
PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements = nullptr;
PFNGLPOINTPARAMETERFPROC   glPointParameterf = nullptr;
PFNGLPOINTPARAMETERFVPROC  glPointParameterfv = nullptr;
PFNGLPOINTPARAMETERIPROC   glPointParameteri = nullptr;
PFNGLPOINTPARAMETERIVPROC  glPointParameteriv = nullptr;
PFNGLBLENDCOLORPROC        glBlendColor = nullptr;
PFNGLBLENDEQUATIONPROC     glBlendEquation = nullptr;

// GL_VERSION_1_5
PFNGLGENQUERIESPROC           glGenQueries = nullptr;
PFNGLDELETEQUERIESPROC        glDeleteQueries = nullptr;
PFNGLISQUERYPROC              glIsQuery = nullptr;
PFNGLBEGINQUERYPROC           glBeginQuery = nullptr;
PFNGLENDQUERYPROC             glEndQuery = nullptr;
PFNGLGETQUERYIVPROC           glGetQueryiv = nullptr;
PFNGLGETQUERYOBJECTIVPROC     glGetQueryObjectiv = nullptr;
PFNGLGETQUERYOBJECTUIVPROC    glGetQueryObjectuiv = nullptr;
PFNGLBINDBUFFERPROC           glBindBuffer = nullptr;
PFNGLDELETEBUFFERSPROC        glDeleteBuffers = nullptr;
PFNGLGENBUFFERSPROC           glGenBuffers = nullptr;
PFNGLISBUFFERPROC             glIsBuffer = nullptr;
PFNGLBUFFERDATAPROC           glBufferData = nullptr;
PFNGLBUFFERSUBDATAPROC        glBufferSubData = nullptr;
PFNGLGETBUFFERSUBDATAPROC     glGetBufferSubData = nullptr;
PFNGLMAPBUFFERPROC            glMapBuffer = nullptr;
PFNGLUNMAPBUFFERPROC          glUnmapBuffer = nullptr;
PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv = nullptr;
PFNGLGETBUFFERPOINTERVPROC    glGetBufferPointerv = nullptr;

// GL_VERSION_2_0
PFNGLBLENDEQUATIONSEPARATEPROC    glBlendEquationSeparate = nullptr;
PFNGLDRAWBUFFERSPROC              glDrawBuffers = nullptr;
PFNGLSTENCILOPSEPARATEPROC        glStencilOpSeparate = nullptr;
PFNGLSTENCILFUNCSEPARATEPROC      glStencilFuncSeparate = nullptr;
PFNGLSTENCILMASKSEPARATEPROC      glStencilMaskSeparate = nullptr;
PFNGLATTACHSHADERPROC             glAttachShader = nullptr;
PFNGLBINDATTRIBLOCATIONPROC       glBindAttribLocation = nullptr;
PFNGLCOMPILESHADERPROC            glCompileShader = nullptr;
PFNGLCREATEPROGRAMPROC            glCreateProgram = nullptr;
PFNGLCREATESHADERPROC             glCreateShader = nullptr;
PFNGLDELETEPROGRAMPROC            glDeleteProgram = nullptr;
PFNGLDELETESHADERPROC             glDeleteShader = nullptr;
PFNGLDETACHSHADERPROC             glDetachShader = nullptr;
PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray = nullptr;
PFNGLENABLEVERTEXATTRIBARRAYPROC  glEnableVertexAttribArray = nullptr;
PFNGLGETACTIVEATTRIBPROC          glGetActiveAttrib = nullptr;
PFNGLGETACTIVEUNIFORMPROC         glGetActiveUniform = nullptr;
PFNGLGETATTACHEDSHADERSPROC       glGetAttachedShaders = nullptr;
PFNGLGETATTRIBLOCATIONPROC        glGetAttribLocation = nullptr;
PFNGLGETPROGRAMIVPROC             glGetProgramiv = nullptr;
PFNGLGETPROGRAMINFOLOGPROC        glGetProgramInfoLog = nullptr;
PFNGLGETSHADERIVPROC              glGetShaderiv = nullptr;
PFNGLGETSHADERINFOLOGPROC         glGetShaderInfoLog = nullptr;
PFNGLGETSHADERSOURCEPROC          glGetShaderSource = nullptr;
PFNGLGETUNIFORMLOCATIONPROC       glGetUniformLocation = nullptr;
PFNGLGETUNIFORMFVPROC             glGetUniformfv = nullptr;
PFNGLGETUNIFORMIVPROC             glGetUniformiv = nullptr;
PFNGLGETVERTEXATTRIBDVPROC        glGetVertexAttribdv = nullptr;
PFNGLGETVERTEXATTRIBFVPROC        glGetVertexAttribfv = nullptr;
PFNGLGETVERTEXATTRIBIVPROC        glGetVertexAttribiv = nullptr;
PFNGLGETVERTEXATTRIBPOINTERVPROC  glGetVertexAttribPointerv = nullptr;
PFNGLISPROGRAMPROC                glIsProgram = nullptr;
PFNGLISSHADERPROC                 glIsShader = nullptr;
PFNGLLINKPROGRAMPROC              glLinkProgram = nullptr;
PFNGLSHADERSOURCEPROC             glShaderSource = nullptr;
PFNGLUSEPROGRAMPROC               glUseProgram = nullptr;
PFNGLUNIFORM1FPROC                glUniform1f = nullptr;
PFNGLUNIFORM2FPROC                glUniform2f = nullptr;
PFNGLUNIFORM3FPROC                glUniform3f = nullptr;
PFNGLUNIFORM4FPROC                glUniform4f = nullptr;
PFNGLUNIFORM1IPROC                glUniform1i = nullptr;
PFNGLUNIFORM2IPROC                glUniform2i = nullptr;
PFNGLUNIFORM3IPROC                glUniform3i = nullptr;
PFNGLUNIFORM4IPROC                glUniform4i = nullptr;
PFNGLUNIFORM1FVPROC               glUniform1fv = nullptr;
PFNGLUNIFORM2FVPROC               glUniform2fv = nullptr;
PFNGLUNIFORM3FVPROC               glUniform3fv = nullptr;
PFNGLUNIFORM4FVPROC               glUniform4fv = nullptr;
PFNGLUNIFORM1IVPROC               glUniform1iv = nullptr;
PFNGLUNIFORM2IVPROC               glUniform2iv = nullptr;
PFNGLUNIFORM3IVPROC               glUniform3iv = nullptr;
PFNGLUNIFORM4IVPROC               glUniform4iv = nullptr;
PFNGLUNIFORMMATRIX2FVPROC         glUniformMatrix2fv = nullptr;
PFNGLUNIFORMMATRIX3FVPROC         glUniformMatrix3fv = nullptr;
PFNGLUNIFORMMATRIX4FVPROC         glUniformMatrix4fv = nullptr;
PFNGLVALIDATEPROGRAMPROC          glValidateProgram = nullptr;
PFNGLVERTEXATTRIB1DPROC           glVertexAttrib1d = nullptr;
PFNGLVERTEXATTRIB1DVPROC          glVertexAttrib1dv = nullptr;
PFNGLVERTEXATTRIB1FPROC           glVertexAttrib1f = nullptr;
PFNGLVERTEXATTRIB1FVPROC          glVertexAttrib1fv = nullptr;
PFNGLVERTEXATTRIB1SPROC           glVertexAttrib1s = nullptr;
PFNGLVERTEXATTRIB1SVPROC          glVertexAttrib1sv = nullptr;
PFNGLVERTEXATTRIB2DPROC           glVertexAttrib2d = nullptr;
PFNGLVERTEXATTRIB2DVPROC          glVertexAttrib2dv = nullptr;
PFNGLVERTEXATTRIB2FPROC           glVertexAttrib2f = nullptr;
PFNGLVERTEXATTRIB2FVPROC          glVertexAttrib2fv = nullptr;
PFNGLVERTEXATTRIB2SPROC           glVertexAttrib2s = nullptr;
PFNGLVERTEXATTRIB2SVPROC          glVertexAttrib2sv = nullptr;
PFNGLVERTEXATTRIB3DPROC           glVertexAttrib3d = nullptr;
PFNGLVERTEXATTRIB3DVPROC          glVertexAttrib3dv = nullptr;
PFNGLVERTEXATTRIB3FPROC           glVertexAttrib3f = nullptr;
PFNGLVERTEXATTRIB3FVPROC          glVertexAttrib3fv = nullptr;
PFNGLVERTEXATTRIB3SPROC           glVertexAttrib3s = nullptr;
PFNGLVERTEXATTRIB3SVPROC          glVertexAttrib3sv = nullptr;
PFNGLVERTEXATTRIB4NBVPROC         glVertexAttrib4Nbv = nullptr;
PFNGLVERTEXATTRIB4NIVPROC         glVertexAttrib4Niv = nullptr;
PFNGLVERTEXATTRIB4NSVPROC         glVertexAttrib4Nsv = nullptr;
PFNGLVERTEXATTRIB4NUBPROC         glVertexAttrib4Nub = nullptr;
PFNGLVERTEXATTRIB4NUBVPROC        glVertexAttrib4Nubv = nullptr;
PFNGLVERTEXATTRIB4NUIVPROC        glVertexAttrib4Nuiv = nullptr;
PFNGLVERTEXATTRIB4NUSVPROC        glVertexAttrib4Nusv = nullptr;
PFNGLVERTEXATTRIB4BVPROC          glVertexAttrib4bv = nullptr;
PFNGLVERTEXATTRIB4DPROC           glVertexAttrib4d = nullptr;
PFNGLVERTEXATTRIB4DVPROC          glVertexAttrib4dv = nullptr;
PFNGLVERTEXATTRIB4FPROC           glVertexAttrib4f = nullptr;
PFNGLVERTEXATTRIB4FVPROC          glVertexAttrib4fv = nullptr;
PFNGLVERTEXATTRIB4IVPROC          glVertexAttrib4iv = nullptr;
PFNGLVERTEXATTRIB4SPROC           glVertexAttrib4s = nullptr;
PFNGLVERTEXATTRIB4SVPROC          glVertexAttrib4sv = nullptr;
PFNGLVERTEXATTRIB4UBVPROC         glVertexAttrib4ubv = nullptr;
PFNGLVERTEXATTRIB4UIVPROC         glVertexAttrib4uiv = nullptr;
PFNGLVERTEXATTRIB4USVPROC         glVertexAttrib4usv = nullptr;
PFNGLVERTEXATTRIBPOINTERPROC      glVertexAttribPointer = nullptr;

// GL_VERSION_2_1
PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv = nullptr;
PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv = nullptr;
PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv = nullptr;
PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv = nullptr;
PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv = nullptr;
PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv = nullptr;

// GL_VERSION_3_0
PFNGLCOLORMASKIPROC                          glColorMaski = nullptr;
PFNGLGETBOOLEANI_VPROC                       glGetBooleani_v = nullptr;
PFNGLGETINTEGERI_VPROC                       glGetIntegeri_v = nullptr;
PFNGLENABLEIPROC                             glEnablei = nullptr;
PFNGLDISABLEIPROC                            glDisablei = nullptr;
PFNGLISENABLEDIPROC                          glIsEnabledi = nullptr;
PFNGLBEGINTRANSFORMFEEDBACKPROC              glBeginTransformFeedback = nullptr;
PFNGLENDTRANSFORMFEEDBACKPROC                glEndTransformFeedback = nullptr;
PFNGLBINDBUFFERRANGEPROC                     glBindBufferRange = nullptr;
PFNGLBINDBUFFERBASEPROC                      glBindBufferBase = nullptr;
PFNGLTRANSFORMFEEDBACKVARYINGSPROC           glTransformFeedbackVaryings = nullptr;
PFNGLGETTRANSFORMFEEDBACKVARYINGPROC         glGetTransformFeedbackVarying = nullptr;
PFNGLCLAMPCOLORPROC                          glClampColor = nullptr;
PFNGLBEGINCONDITIONALRENDERPROC              glBeginConditionalRender = nullptr;
PFNGLENDCONDITIONALRENDERPROC                glEndConditionalRender = nullptr;
PFNGLVERTEXATTRIBIPOINTERPROC                glVertexAttribIPointer = nullptr;
PFNGLGETVERTEXATTRIBIIVPROC                  glGetVertexAttribIiv = nullptr;
PFNGLGETVERTEXATTRIBIUIVPROC                 glGetVertexAttribIuiv = nullptr;
PFNGLVERTEXATTRIBI1IPROC                     glVertexAttribI1i = nullptr;
PFNGLVERTEXATTRIBI2IPROC                     glVertexAttribI2i = nullptr;
PFNGLVERTEXATTRIBI3IPROC                     glVertexAttribI3i = nullptr;
PFNGLVERTEXATTRIBI4IPROC                     glVertexAttribI4i = nullptr;
PFNGLVERTEXATTRIBI1UIPROC                    glVertexAttribI1ui = nullptr;
PFNGLVERTEXATTRIBI2UIPROC                    glVertexAttribI2ui = nullptr;
PFNGLVERTEXATTRIBI3UIPROC                    glVertexAttribI3ui = nullptr;
PFNGLVERTEXATTRIBI4UIPROC                    glVertexAttribI4ui = nullptr;
PFNGLVERTEXATTRIBI1IVPROC                    glVertexAttribI1iv = nullptr;
PFNGLVERTEXATTRIBI2IVPROC                    glVertexAttribI2iv = nullptr;
PFNGLVERTEXATTRIBI3IVPROC                    glVertexAttribI3iv = nullptr;
PFNGLVERTEXATTRIBI4IVPROC                    glVertexAttribI4iv = nullptr;
PFNGLVERTEXATTRIBI1UIVPROC                   glVertexAttribI1uiv = nullptr;
PFNGLVERTEXATTRIBI2UIVPROC                   glVertexAttribI2uiv = nullptr;
PFNGLVERTEXATTRIBI3UIVPROC                   glVertexAttribI3uiv = nullptr;
PFNGLVERTEXATTRIBI4UIVPROC                   glVertexAttribI4uiv = nullptr;
PFNGLVERTEXATTRIBI4BVPROC                    glVertexAttribI4bv = nullptr;
PFNGLVERTEXATTRIBI4SVPROC                    glVertexAttribI4sv = nullptr;
PFNGLVERTEXATTRIBI4UBVPROC                   glVertexAttribI4ubv = nullptr;
PFNGLVERTEXATTRIBI4USVPROC                   glVertexAttribI4usv = nullptr;
PFNGLGETUNIFORMUIVPROC                       glGetUniformuiv = nullptr;
PFNGLBINDFRAGDATALOCATIONPROC                glBindFragDataLocation = nullptr;
PFNGLGETFRAGDATALOCATIONPROC                 glGetFragDataLocation = nullptr;
PFNGLUNIFORM1UIPROC                          glUniform1ui = nullptr;
PFNGLUNIFORM2UIPROC                          glUniform2ui = nullptr;
PFNGLUNIFORM3UIPROC                          glUniform3ui = nullptr;
PFNGLUNIFORM4UIPROC                          glUniform4ui = nullptr;
PFNGLUNIFORM1UIVPROC                         glUniform1uiv = nullptr;
PFNGLUNIFORM2UIVPROC                         glUniform2uiv = nullptr;
PFNGLUNIFORM3UIVPROC                         glUniform3uiv = nullptr;
PFNGLUNIFORM4UIVPROC                         glUniform4uiv = nullptr;
PFNGLTEXPARAMETERIIVPROC                     glTexParameterIiv = nullptr;
PFNGLTEXPARAMETERIUIVPROC                    glTexParameterIuiv = nullptr;
PFNGLGETTEXPARAMETERIIVPROC                  glGetTexParameterIiv = nullptr;
PFNGLGETTEXPARAMETERIUIVPROC                 glGetTexParameterIuiv = nullptr;
PFNGLCLEARBUFFERIVPROC                       glClearBufferiv = nullptr;
PFNGLCLEARBUFFERUIVPROC                      glClearBufferuiv = nullptr;
PFNGLCLEARBUFFERFVPROC                       glClearBufferfv = nullptr;
PFNGLCLEARBUFFERFIPROC                       glClearBufferfi = nullptr;
PFNGLGETSTRINGIPROC                          glGetStringi = nullptr;
PFNGLISRENDERBUFFERPROC                      glIsRenderbuffer = nullptr;
PFNGLBINDRENDERBUFFERPROC                    glBindRenderbuffer = nullptr;
PFNGLDELETERENDERBUFFERSPROC                 glDeleteRenderbuffers = nullptr;
PFNGLGENRENDERBUFFERSPROC                    glGenRenderbuffers = nullptr;
PFNGLRENDERBUFFERSTORAGEPROC                 glRenderbufferStorage = nullptr;
PFNGLGETRENDERBUFFERPARAMETERIVPROC          glGetRenderbufferParameteriv = nullptr;
PFNGLISFRAMEBUFFERPROC                       glIsFramebuffer = nullptr;
PFNGLBINDFRAMEBUFFERPROC                     glBindFramebuffer = nullptr;
PFNGLDELETEFRAMEBUFFERSPROC                  glDeleteFramebuffers = nullptr;
PFNGLGENFRAMEBUFFERSPROC                     glGenFramebuffers = nullptr;
PFNGLCHECKFRAMEBUFFERSTATUSPROC              glCheckFramebufferStatus = nullptr;
PFNGLFRAMEBUFFERTEXTURE1DPROC                glFramebufferTexture1D = nullptr;
PFNGLFRAMEBUFFERTEXTURE2DPROC                glFramebufferTexture2D = nullptr;
PFNGLFRAMEBUFFERTEXTURE3DPROC                glFramebufferTexture3D = nullptr;
PFNGLFRAMEBUFFERRENDERBUFFERPROC             glFramebufferRenderbuffer = nullptr;
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv = nullptr;
PFNGLGENERATEMIPMAPPROC                      glGenerateMipmap = nullptr;
PFNGLBLITFRAMEBUFFERPROC                     glBlitFramebuffer = nullptr;
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC      glRenderbufferStorageMultisample = nullptr;
PFNGLFRAMEBUFFERTEXTURELAYERPROC             glFramebufferTextureLayer = nullptr;
PFNGLMAPBUFFERRANGEPROC                      glMapBufferRange = nullptr;
PFNGLFLUSHMAPPEDBUFFERRANGEPROC              glFlushMappedBufferRange = nullptr;
PFNGLBINDVERTEXARRAYPROC                     glBindVertexArray = nullptr;
PFNGLDELETEVERTEXARRAYSPROC                  glDeleteVertexArrays = nullptr;
PFNGLGENVERTEXARRAYSPROC                     glGenVertexArrays = nullptr;
PFNGLISVERTEXARRAYPROC                       glIsVertexArray = nullptr;

// GL_VERSION_3_1
PFNGLDRAWARRAYSINSTANCEDPROC       glDrawArraysInstanced = nullptr;
PFNGLDRAWELEMENTSINSTANCEDPROC     glDrawElementsInstanced = nullptr;
PFNGLTEXBUFFERPROC                 glTexBuffer = nullptr;
PFNGLPRIMITIVERESTARTINDEXPROC     glPrimitiveRestartIndex = nullptr;
PFNGLCOPYBUFFERSUBDATAPROC         glCopyBufferSubData = nullptr;
PFNGLGETUNIFORMINDICESPROC         glGetUniformIndices = nullptr;
PFNGLGETACTIVEUNIFORMSIVPROC       glGetActiveUniformsiv = nullptr;
PFNGLGETACTIVEUNIFORMNAMEPROC      glGetActiveUniformName = nullptr;
PFNGLGETUNIFORMBLOCKINDEXPROC      glGetUniformBlockIndex = nullptr;
PFNGLGETACTIVEUNIFORMBLOCKIVPROC   glGetActiveUniformBlockiv = nullptr;
PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName = nullptr;
PFNGLUNIFORMBLOCKBINDINGPROC       glUniformBlockBinding = nullptr;

// GL_VERSION_3_2
PFNGLDRAWELEMENTSBASEVERTEXPROC          glDrawElementsBaseVertex = nullptr;
PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC     glDrawRangeElementsBaseVertex = nullptr;
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex = nullptr;
PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC     glMultiDrawElementsBaseVertex = nullptr;
PFNGLPROVOKINGVERTEXPROC                 glProvokingVertex = nullptr;
PFNGLFENCESYNCPROC                       glFenceSync = nullptr;
PFNGLISSYNCPROC                          glIsSync = nullptr;
PFNGLDELETESYNCPROC                      glDeleteSync = nullptr;
PFNGLCLIENTWAITSYNCPROC                  glClientWaitSync = nullptr;
PFNGLWAITSYNCPROC                        glWaitSync = nullptr;
PFNGLGETINTEGER64VPROC                   glGetInteger64v = nullptr;
PFNGLGETSYNCIVPROC                       glGetSynciv = nullptr;
PFNGLGETINTEGER64I_VPROC                 glGetInteger64i_v = nullptr;
PFNGLGETBUFFERPARAMETERI64VPROC          glGetBufferParameteri64v = nullptr;
PFNGLFRAMEBUFFERTEXTUREPROC              glFramebufferTexture = nullptr;
PFNGLTEXIMAGE2DMULTISAMPLEPROC           glTexImage2DMultisample = nullptr;
PFNGLTEXIMAGE3DMULTISAMPLEPROC           glTexImage3DMultisample = nullptr;
PFNGLGETMULTISAMPLEFVPROC                glGetMultisamplefv = nullptr;
PFNGLSAMPLEMASKIPROC                     glSampleMaski = nullptr;

// GL_VERSION_3_3
PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed = nullptr;
PFNGLGETFRAGDATAINDEXPROC            glGetFragDataIndex = nullptr;
PFNGLGENSAMPLERSPROC                 glGenSamplers = nullptr;
PFNGLDELETESAMPLERSPROC              glDeleteSamplers = nullptr;
PFNGLISSAMPLERPROC                   glIsSampler = nullptr;
PFNGLBINDSAMPLERPROC                 glBindSampler = nullptr;
PFNGLSAMPLERPARAMETERIPROC           glSamplerParameteri = nullptr;
PFNGLSAMPLERPARAMETERIVPROC          glSamplerParameteriv = nullptr;
PFNGLSAMPLERPARAMETERFPROC           glSamplerParameterf = nullptr;
PFNGLSAMPLERPARAMETERFVPROC          glSamplerParameterfv = nullptr;
PFNGLSAMPLERPARAMETERIIVPROC         glSamplerParameterIiv = nullptr;
PFNGLSAMPLERPARAMETERIUIVPROC        glSamplerParameterIuiv = nullptr;
PFNGLGETSAMPLERPARAMETERIVPROC       glGetSamplerParameteriv = nullptr;
PFNGLGETSAMPLERPARAMETERIIVPROC      glGetSamplerParameterIiv = nullptr;
PFNGLGETSAMPLERPARAMETERFVPROC       glGetSamplerParameterfv = nullptr;
PFNGLGETSAMPLERPARAMETERIUIVPROC     glGetSamplerParameterIuiv = nullptr;
PFNGLQUERYCOUNTERPROC                glQueryCounter = nullptr;
PFNGLGETQUERYOBJECTI64VPROC          glGetQueryObjecti64v = nullptr;
PFNGLGETQUERYOBJECTUI64VPROC         glGetQueryObjectui64v = nullptr;
PFNGLVERTEXATTRIBDIVISORPROC         glVertexAttribDivisor = nullptr;
PFNGLVERTEXATTRIBP1UIPROC            glVertexAttribP1ui = nullptr;
PFNGLVERTEXATTRIBP1UIVPROC           glVertexAttribP1uiv = nullptr;
PFNGLVERTEXATTRIBP2UIPROC            glVertexAttribP2ui = nullptr;
PFNGLVERTEXATTRIBP2UIVPROC           glVertexAttribP2uiv = nullptr;
PFNGLVERTEXATTRIBP3UIPROC            glVertexAttribP3ui = nullptr;
PFNGLVERTEXATTRIBP3UIVPROC           glVertexAttribP3uiv = nullptr;
PFNGLVERTEXATTRIBP4UIPROC            glVertexAttribP4ui = nullptr;
PFNGLVERTEXATTRIBP4UIVPROC           glVertexAttribP4uiv = nullptr;

// GL_VERSION_4_0
PFNGLMINSAMPLESHADINGPROC               glMinSampleShading = nullptr;
PFNGLBLENDEQUATIONIPROC                 glBlendEquationi = nullptr;
PFNGLBLENDEQUATIONSEPARATEIPROC         glBlendEquationSeparatei = nullptr;
PFNGLBLENDFUNCIPROC                     glBlendFunci = nullptr;
PFNGLBLENDFUNCSEPARATEIPROC             glBlendFuncSeparatei = nullptr;
PFNGLDRAWARRAYSINDIRECTPROC             glDrawArraysIndirect = nullptr;
PFNGLDRAWELEMENTSINDIRECTPROC           glDrawElementsIndirect = nullptr;
PFNGLUNIFORM1DPROC                      glUniform1d = nullptr;
PFNGLUNIFORM2DPROC                      glUniform2d = nullptr;
PFNGLUNIFORM3DPROC                      glUniform3d = nullptr;
PFNGLUNIFORM4DPROC                      glUniform4d = nullptr;
PFNGLUNIFORM1DVPROC                     glUniform1dv = nullptr;
PFNGLUNIFORM2DVPROC                     glUniform2dv = nullptr;
PFNGLUNIFORM3DVPROC                     glUniform3dv = nullptr;
PFNGLUNIFORM4DVPROC                     glUniform4dv = nullptr;
PFNGLUNIFORMMATRIX2DVPROC               glUniformMatrix2dv = nullptr;
PFNGLUNIFORMMATRIX3DVPROC               glUniformMatrix3dv = nullptr;
PFNGLUNIFORMMATRIX4DVPROC               glUniformMatrix4dv = nullptr;
PFNGLUNIFORMMATRIX2X3DVPROC             glUniformMatrix2x3dv = nullptr;
PFNGLUNIFORMMATRIX2X4DVPROC             glUniformMatrix2x4dv = nullptr;
PFNGLUNIFORMMATRIX3X2DVPROC             glUniformMatrix3x2dv = nullptr;
PFNGLUNIFORMMATRIX3X4DVPROC             glUniformMatrix3x4dv = nullptr;
PFNGLUNIFORMMATRIX4X2DVPROC             glUniformMatrix4x2dv = nullptr;
PFNGLUNIFORMMATRIX4X3DVPROC             glUniformMatrix4x3dv = nullptr;
PFNGLGETUNIFORMDVPROC                   glGetUniformdv = nullptr;
PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC   glGetSubroutineUniformLocation = nullptr;
PFNGLGETSUBROUTINEINDEXPROC             glGetSubroutineIndex = nullptr;
PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC   glGetActiveSubroutineUniformiv = nullptr;
PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName = nullptr;
PFNGLGETACTIVESUBROUTINENAMEPROC        glGetActiveSubroutineName = nullptr;
PFNGLUNIFORMSUBROUTINESUIVPROC          glUniformSubroutinesuiv = nullptr;
PFNGLGETUNIFORMSUBROUTINEUIVPROC        glGetUniformSubroutineuiv = nullptr;
PFNGLGETPROGRAMSTAGEIVPROC              glGetProgramStageiv = nullptr;
PFNGLPATCHPARAMETERIPROC                glPatchParameteri = nullptr;
PFNGLPATCHPARAMETERFVPROC               glPatchParameterfv = nullptr;
PFNGLBINDTRANSFORMFEEDBACKPROC          glBindTransformFeedback = nullptr;
PFNGLDELETETRANSFORMFEEDBACKSPROC       glDeleteTransformFeedbacks = nullptr;
PFNGLGENTRANSFORMFEEDBACKSPROC          glGenTransformFeedbacks = nullptr;
PFNGLISTRANSFORMFEEDBACKPROC            glIsTransformFeedback = nullptr;
PFNGLPAUSETRANSFORMFEEDBACKPROC         glPauseTransformFeedback = nullptr;
PFNGLRESUMETRANSFORMFEEDBACKPROC        glResumeTransformFeedback = nullptr;
PFNGLDRAWTRANSFORMFEEDBACKPROC          glDrawTransformFeedback = nullptr;
PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC    glDrawTransformFeedbackStream = nullptr;
PFNGLBEGINQUERYINDEXEDPROC              glBeginQueryIndexed = nullptr;
PFNGLENDQUERYINDEXEDPROC                glEndQueryIndexed = nullptr;
PFNGLGETQUERYINDEXEDIVPROC              glGetQueryIndexediv = nullptr;

// GL_VERSION_4_1
PFNGLRELEASESHADERCOMPILERPROC     glReleaseShaderCompiler = nullptr;
PFNGLSHADERBINARYPROC              glShaderBinary = nullptr;
PFNGLGETSHADERPRECISIONFORMATPROC  glGetShaderPrecisionFormat = nullptr;
PFNGLDEPTHRANGEFPROC               glDepthRangef = nullptr;
PFNGLCLEARDEPTHFPROC               glClearDepthf = nullptr;
PFNGLGETPROGRAMBINARYPROC          glGetProgramBinary = nullptr;
PFNGLPROGRAMBINARYPROC             glProgramBinary = nullptr;
PFNGLPROGRAMPARAMETERIPROC         glProgramParameteri = nullptr;
PFNGLUSEPROGRAMSTAGESPROC          glUseProgramStages = nullptr;
PFNGLACTIVESHADERPROGRAMPROC       glActiveShaderProgram = nullptr;
PFNGLCREATESHADERPROGRAMVPROC      glCreateShaderProgramv = nullptr;
PFNGLBINDPROGRAMPIPELINEPROC       glBindProgramPipeline = nullptr;
PFNGLDELETEPROGRAMPIPELINESPROC    glDeleteProgramPipelines = nullptr;
PFNGLGENPROGRAMPIPELINESPROC       glGenProgramPipelines = nullptr;
PFNGLISPROGRAMPIPELINEPROC         glIsProgramPipeline = nullptr;
PFNGLGETPROGRAMPIPELINEIVPROC      glGetProgramPipelineiv = nullptr;
PFNGLPROGRAMUNIFORM1IPROC          glProgramUniform1i = nullptr;
PFNGLPROGRAMUNIFORM1IVPROC         glProgramUniform1iv = nullptr;
PFNGLPROGRAMUNIFORM1FPROC          glProgramUniform1f = nullptr;
PFNGLPROGRAMUNIFORM1FVPROC         glProgramUniform1fv = nullptr;
PFNGLPROGRAMUNIFORM1DPROC          glProgramUniform1d = nullptr;
PFNGLPROGRAMUNIFORM1DVPROC         glProgramUniform1dv = nullptr;
PFNGLPROGRAMUNIFORM1UIPROC         glProgramUniform1ui = nullptr;
PFNGLPROGRAMUNIFORM1UIVPROC        glProgramUniform1uiv = nullptr;
PFNGLPROGRAMUNIFORM2IPROC          glProgramUniform2i = nullptr;
PFNGLPROGRAMUNIFORM2IVPROC         glProgramUniform2iv = nullptr;
PFNGLPROGRAMUNIFORM2FPROC          glProgramUniform2f = nullptr;
PFNGLPROGRAMUNIFORM2FVPROC         glProgramUniform2fv = nullptr;
PFNGLPROGRAMUNIFORM2DPROC          glProgramUniform2d = nullptr;
PFNGLPROGRAMUNIFORM2DVPROC         glProgramUniform2dv = nullptr;
PFNGLPROGRAMUNIFORM2UIPROC         glProgramUniform2ui = nullptr;
PFNGLPROGRAMUNIFORM2UIVPROC        glProgramUniform2uiv = nullptr;
PFNGLPROGRAMUNIFORM3IPROC          glProgramUniform3i = nullptr;
PFNGLPROGRAMUNIFORM3IVPROC         glProgramUniform3iv = nullptr;
PFNGLPROGRAMUNIFORM3FPROC          glProgramUniform3f = nullptr;
PFNGLPROGRAMUNIFORM3FVPROC         glProgramUniform3fv = nullptr;
PFNGLPROGRAMUNIFORM3DPROC          glProgramUniform3d = nullptr;
PFNGLPROGRAMUNIFORM3DVPROC         glProgramUniform3dv = nullptr;
PFNGLPROGRAMUNIFORM3UIPROC         glProgramUniform3ui = nullptr;
PFNGLPROGRAMUNIFORM3UIVPROC        glProgramUniform3uiv = nullptr;
PFNGLPROGRAMUNIFORM4IPROC          glProgramUniform4i = nullptr;
PFNGLPROGRAMUNIFORM4IVPROC         glProgramUniform4iv = nullptr;
PFNGLPROGRAMUNIFORM4FPROC          glProgramUniform4f = nullptr;
PFNGLPROGRAMUNIFORM4FVPROC         glProgramUniform4fv = nullptr;
PFNGLPROGRAMUNIFORM4DPROC          glProgramUniform4d = nullptr;
PFNGLPROGRAMUNIFORM4DVPROC         glProgramUniform4dv = nullptr;
PFNGLPROGRAMUNIFORM4UIPROC         glProgramUniform4ui = nullptr;
PFNGLPROGRAMUNIFORM4UIVPROC        glProgramUniform4uiv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX2FVPROC   glProgramUniformMatrix2fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX3FVPROC   glProgramUniformMatrix3fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX4FVPROC   glProgramUniformMatrix4fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX2DVPROC   glProgramUniformMatrix2dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX3DVPROC   glProgramUniformMatrix3dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX4DVPROC   glProgramUniformMatrix4dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv = nullptr;
PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv = nullptr;
PFNGLVALIDATEPROGRAMPIPELINEPROC   glValidateProgramPipeline = nullptr;
PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog = nullptr;
PFNGLVERTEXATTRIBL1DPROC           glVertexAttribL1d = nullptr;
PFNGLVERTEXATTRIBL2DPROC           glVertexAttribL2d = nullptr;
PFNGLVERTEXATTRIBL3DPROC           glVertexAttribL3d = nullptr;
PFNGLVERTEXATTRIBL4DPROC           glVertexAttribL4d = nullptr;
PFNGLVERTEXATTRIBL1DVPROC          glVertexAttribL1dv = nullptr;
PFNGLVERTEXATTRIBL2DVPROC          glVertexAttribL2dv = nullptr;
PFNGLVERTEXATTRIBL3DVPROC          glVertexAttribL3dv = nullptr;
PFNGLVERTEXATTRIBL4DVPROC          glVertexAttribL4dv = nullptr;
PFNGLVERTEXATTRIBLPOINTERPROC      glVertexAttribLPointer = nullptr;
PFNGLGETVERTEXATTRIBLDVPROC        glGetVertexAttribLdv = nullptr;
PFNGLVIEWPORTARRAYVPROC            glViewportArrayv = nullptr;
PFNGLVIEWPORTINDEXEDFPROC          glViewportIndexedf = nullptr;
PFNGLVIEWPORTINDEXEDFVPROC         glViewportIndexedfv = nullptr;
PFNGLSCISSORARRAYVPROC             glScissorArrayv = nullptr;
PFNGLSCISSORINDEXEDPROC            glScissorIndexed = nullptr;
PFNGLSCISSORINDEXEDVPROC           glScissorIndexedv = nullptr;
PFNGLDEPTHRANGEARRAYVPROC          glDepthRangeArrayv = nullptr;
PFNGLDEPTHRANGEINDEXEDPROC         glDepthRangeIndexed = nullptr;
PFNGLGETFLOATI_VPROC               glGetFloati_v = nullptr;
PFNGLGETDOUBLEI_VPROC              glGetDoublei_v = nullptr;

// GL_VERSION_4_2
PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC             glDrawArraysInstancedBaseInstance = nullptr;
PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC           glDrawElementsInstancedBaseInstance = nullptr;
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance = nullptr;
PFNGLGETINTERNALFORMATIVPROC                         glGetInternalformativ = nullptr;
PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC              glGetActiveAtomicCounterBufferiv = nullptr;
PFNGLBINDIMAGETEXTUREPROC                            glBindImageTexture = nullptr;
PFNGLMEMORYBARRIERPROC                               glMemoryBarrier = nullptr;
PFNGLTEXSTORAGE1DPROC                                glTexStorage1D = nullptr;
PFNGLTEXSTORAGE2DPROC                                glTexStorage2D = nullptr;
PFNGLTEXSTORAGE3DPROC                                glTexStorage3D = nullptr;
PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC              glDrawTransformFeedbackInstanced = nullptr;
PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC        glDrawTransformFeedbackStreamInstanced = nullptr;

// GL_VERSION_4_3
PFNGLCLEARBUFFERDATAPROC                 glClearBufferData = nullptr;
PFNGLCLEARBUFFERSUBDATAPROC              glClearBufferSubData = nullptr;
PFNGLDISPATCHCOMPUTEPROC                 glDispatchCompute = nullptr;
PFNGLDISPATCHCOMPUTEINDIRECTPROC         glDispatchComputeIndirect = nullptr;
PFNGLCOPYIMAGESUBDATAPROC                glCopyImageSubData = nullptr;
PFNGLFRAMEBUFFERPARAMETERIPROC           glFramebufferParameteri = nullptr;
PFNGLGETFRAMEBUFFERPARAMETERIVPROC       glGetFramebufferParameteriv = nullptr;
PFNGLGETINTERNALFORMATI64VPROC           glGetInternalformati64v = nullptr;
PFNGLINVALIDATETEXSUBIMAGEPROC           glInvalidateTexSubImage = nullptr;
PFNGLINVALIDATETEXIMAGEPROC              glInvalidateTexImage = nullptr;
PFNGLINVALIDATEBUFFERSUBDATAPROC         glInvalidateBufferSubData = nullptr;
PFNGLINVALIDATEBUFFERDATAPROC            glInvalidateBufferData = nullptr;
PFNGLINVALIDATEFRAMEBUFFERPROC           glInvalidateFramebuffer = nullptr;
PFNGLINVALIDATESUBFRAMEBUFFERPROC        glInvalidateSubFramebuffer = nullptr;
PFNGLMULTIDRAWARRAYSINDIRECTPROC         glMultiDrawArraysIndirect = nullptr;
PFNGLMULTIDRAWELEMENTSINDIRECTPROC       glMultiDrawElementsIndirect = nullptr;
PFNGLGETPROGRAMINTERFACEIVPROC           glGetProgramInterfaceiv = nullptr;
PFNGLGETPROGRAMRESOURCEINDEXPROC         glGetProgramResourceIndex = nullptr;
PFNGLGETPROGRAMRESOURCENAMEPROC          glGetProgramResourceName = nullptr;
PFNGLGETPROGRAMRESOURCEIVPROC            glGetProgramResourceiv = nullptr;
PFNGLGETPROGRAMRESOURCELOCATIONPROC      glGetProgramResourceLocation = nullptr;
PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex = nullptr;
PFNGLSHADERSTORAGEBLOCKBINDINGPROC       glShaderStorageBlockBinding = nullptr;
PFNGLTEXBUFFERRANGEPROC                  glTexBufferRange = nullptr;
PFNGLTEXSTORAGE2DMULTISAMPLEPROC         glTexStorage2DMultisample = nullptr;
PFNGLTEXSTORAGE3DMULTISAMPLEPROC         glTexStorage3DMultisample = nullptr;
PFNGLTEXTUREVIEWPROC                     glTextureView = nullptr;
PFNGLBINDVERTEXBUFFERPROC                glBindVertexBuffer = nullptr;
PFNGLVERTEXATTRIBFORMATPROC              glVertexAttribFormat = nullptr;
PFNGLVERTEXATTRIBIFORMATPROC             glVertexAttribIFormat = nullptr;
PFNGLVERTEXATTRIBLFORMATPROC             glVertexAttribLFormat = nullptr;
PFNGLVERTEXATTRIBBINDINGPROC             glVertexAttribBinding = nullptr;
PFNGLVERTEXBINDINGDIVISORPROC            glVertexBindingDivisor = nullptr;
PFNGLDEBUGMESSAGECONTROLPROC             glDebugMessageControl = nullptr;
PFNGLDEBUGMESSAGEINSERTPROC              glDebugMessageInsert = nullptr;
PFNGLDEBUGMESSAGECALLBACKPROC            glDebugMessageCallback = nullptr;
PFNGLGETDEBUGMESSAGELOGPROC              glGetDebugMessageLog = nullptr;
PFNGLPUSHDEBUGGROUPPROC                  glPushDebugGroup = nullptr;
PFNGLPOPDEBUGGROUPPROC                   glPopDebugGroup = nullptr;
PFNGLOBJECTLABELPROC                     glObjectLabel = nullptr;
PFNGLGETOBJECTLABELPROC                  glGetObjectLabel = nullptr;
PFNGLOBJECTPTRLABELPROC                  glObjectPtrLabel = nullptr;
PFNGLGETOBJECTPTRLABELPROC               glGetObjectPtrLabel = nullptr;

// GL_VERSION_4_4
PFNGLBUFFERSTORAGEPROC     glBufferStorage = nullptr;
PFNGLCLEARTEXIMAGEPROC     glClearTexImage = nullptr;
PFNGLCLEARTEXSUBIMAGEPROC  glClearTexSubImage = nullptr;
PFNGLBINDBUFFERSBASEPROC   glBindBuffersBase = nullptr;
PFNGLBINDBUFFERSRANGEPROC  glBindBuffersRange = nullptr;
PFNGLBINDTEXTURESPROC      glBindTextures = nullptr;
PFNGLBINDSAMPLERSPROC      glBindSamplers = nullptr;
PFNGLBINDIMAGETEXTURESPROC glBindImageTextures = nullptr;
PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers = nullptr;

// GL_VERSION_4_5
PFNGLCLIPCONTROLPROC                              glClipControl = nullptr;
PFNGLCREATETRANSFORMFEEDBACKSPROC                 glCreateTransformFeedbacks = nullptr;
PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC              glTransformFeedbackBufferBase = nullptr;
PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC             glTransformFeedbackBufferRange = nullptr;
PFNGLGETTRANSFORMFEEDBACKIVPROC                   glGetTransformFeedbackiv = nullptr;
PFNGLGETTRANSFORMFEEDBACKI_VPROC                  glGetTransformFeedbacki_v = nullptr;
PFNGLGETTRANSFORMFEEDBACKI64_VPROC                glGetTransformFeedbacki64_v = nullptr;
PFNGLCREATEBUFFERSPROC                            glCreateBuffers = nullptr;
PFNGLNAMEDBUFFERSTORAGEPROC                       glNamedBufferStorage = nullptr;
PFNGLNAMEDBUFFERDATAPROC                          glNamedBufferData = nullptr;
PFNGLNAMEDBUFFERSUBDATAPROC                       glNamedBufferSubData = nullptr;
PFNGLCOPYNAMEDBUFFERSUBDATAPROC                   glCopyNamedBufferSubData = nullptr;
PFNGLCLEARNAMEDBUFFERDATAPROC                     glClearNamedBufferData = nullptr;
PFNGLCLEARNAMEDBUFFERSUBDATAPROC                  glClearNamedBufferSubData = nullptr;
PFNGLMAPNAMEDBUFFERPROC                           glMapNamedBuffer = nullptr;
PFNGLMAPNAMEDBUFFERRANGEPROC                      glMapNamedBufferRange = nullptr;
PFNGLUNMAPNAMEDBUFFERPROC                         glUnmapNamedBuffer = nullptr;
PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC              glFlushMappedNamedBufferRange = nullptr;
PFNGLGETNAMEDBUFFERPARAMETERIVPROC                glGetNamedBufferParameteriv = nullptr;
PFNGLGETNAMEDBUFFERPARAMETERI64VPROC              glGetNamedBufferParameteri64v = nullptr;
PFNGLGETNAMEDBUFFERPOINTERVPROC                   glGetNamedBufferPointerv = nullptr;
PFNGLGETNAMEDBUFFERSUBDATAPROC                    glGetNamedBufferSubData = nullptr;
PFNGLCREATEFRAMEBUFFERSPROC                       glCreateFramebuffers = nullptr;
PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC             glNamedFramebufferRenderbuffer = nullptr;
PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC               glNamedFramebufferParameteri = nullptr;
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC                  glNamedFramebufferTexture = nullptr;
PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC             glNamedFramebufferTextureLayer = nullptr;
PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC               glNamedFramebufferDrawBuffer = nullptr;
PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC              glNamedFramebufferDrawBuffers = nullptr;
PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC               glNamedFramebufferReadBuffer = nullptr;
PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC           glInvalidateNamedFramebufferData = nullptr;
PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC        glInvalidateNamedFramebufferSubData = nullptr;
PFNGLCLEARNAMEDFRAMEBUFFERIVPROC                  glClearNamedFramebufferiv = nullptr;
PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC                 glClearNamedFramebufferuiv = nullptr;
PFNGLCLEARNAMEDFRAMEBUFFERFVPROC                  glClearNamedFramebufferfv = nullptr;
PFNGLCLEARNAMEDFRAMEBUFFERFIPROC                  glClearNamedFramebufferfi = nullptr;
PFNGLBLITNAMEDFRAMEBUFFERPROC                     glBlitNamedFramebuffer = nullptr;
PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC              glCheckNamedFramebufferStatus = nullptr;
PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC           glGetNamedFramebufferParameteriv = nullptr;
PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv = nullptr;
PFNGLCREATERENDERBUFFERSPROC                      glCreateRenderbuffers = nullptr;
PFNGLNAMEDRENDERBUFFERSTORAGEPROC                 glNamedRenderbufferStorage = nullptr;
PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC      glNamedRenderbufferStorageMultisample = nullptr;
PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC          glGetNamedRenderbufferParameteriv = nullptr;
PFNGLCREATETEXTURESPROC                           glCreateTextures = nullptr;
PFNGLTEXTUREBUFFERPROC                            glTextureBuffer = nullptr;
PFNGLTEXTUREBUFFERRANGEPROC                       glTextureBufferRange = nullptr;
PFNGLTEXTURESTORAGE1DPROC                         glTextureStorage1D = nullptr;
PFNGLTEXTURESTORAGE2DPROC                         glTextureStorage2D = nullptr;
PFNGLTEXTURESTORAGE3DPROC                         glTextureStorage3D = nullptr;
PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC              glTextureStorage2DMultisample = nullptr;
PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC              glTextureStorage3DMultisample = nullptr;
PFNGLTEXTURESUBIMAGE1DPROC                        glTextureSubImage1D = nullptr;
PFNGLTEXTURESUBIMAGE2DPROC                        glTextureSubImage2D = nullptr;
PFNGLTEXTURESUBIMAGE3DPROC                        glTextureSubImage3D = nullptr;
PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC              glCompressedTextureSubImage1D = nullptr;
PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC              glCompressedTextureSubImage2D = nullptr;
PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC              glCompressedTextureSubImage3D = nullptr;
PFNGLCOPYTEXTURESUBIMAGE1DPROC                    glCopyTextureSubImage1D = nullptr;
PFNGLCOPYTEXTURESUBIMAGE2DPROC                    glCopyTextureSubImage2D = nullptr;
PFNGLCOPYTEXTURESUBIMAGE3DPROC                    glCopyTextureSubImage3D = nullptr;
PFNGLTEXTUREPARAMETERFPROC                        glTextureParameterf = nullptr;
PFNGLTEXTUREPARAMETERFVPROC                       glTextureParameterfv = nullptr;
PFNGLTEXTUREPARAMETERIPROC                        glTextureParameteri = nullptr;
PFNGLTEXTUREPARAMETERIIVPROC                      glTextureParameterIiv = nullptr;
PFNGLTEXTUREPARAMETERIUIVPROC                     glTextureParameterIuiv = nullptr;
PFNGLTEXTUREPARAMETERIVPROC                       glTextureParameteriv = nullptr;
PFNGLGENERATETEXTUREMIPMAPPROC                    glGenerateTextureMipmap = nullptr;
PFNGLBINDTEXTUREUNITPROC                          glBindTextureUnit = nullptr;
PFNGLGETTEXTUREIMAGEPROC                          glGetTextureImage = nullptr;
PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC                glGetCompressedTextureImage = nullptr;
PFNGLGETTEXTURELEVELPARAMETERFVPROC               glGetTextureLevelParameterfv = nullptr;
PFNGLGETTEXTURELEVELPARAMETERIVPROC               glGetTextureLevelParameteriv = nullptr;
PFNGLGETTEXTUREPARAMETERFVPROC                    glGetTextureParameterfv = nullptr;
PFNGLGETTEXTUREPARAMETERIIVPROC                   glGetTextureParameterIiv = nullptr;
PFNGLGETTEXTUREPARAMETERIUIVPROC                  glGetTextureParameterIuiv = nullptr;
PFNGLGETTEXTUREPARAMETERIVPROC                    glGetTextureParameteriv = nullptr;
PFNGLCREATEVERTEXARRAYSPROC                       glCreateVertexArrays = nullptr;
PFNGLDISABLEVERTEXARRAYATTRIBPROC                 glDisableVertexArrayAttrib = nullptr;
PFNGLENABLEVERTEXARRAYATTRIBPROC                  glEnableVertexArrayAttrib = nullptr;
PFNGLVERTEXARRAYELEMENTBUFFERPROC                 glVertexArrayElementBuffer = nullptr;
PFNGLVERTEXARRAYVERTEXBUFFERPROC                  glVertexArrayVertexBuffer = nullptr;
PFNGLVERTEXARRAYVERTEXBUFFERSPROC                 glVertexArrayVertexBuffers = nullptr;
PFNGLVERTEXARRAYATTRIBBINDINGPROC                 glVertexArrayAttribBinding = nullptr;
PFNGLVERTEXARRAYATTRIBFORMATPROC                  glVertexArrayAttribFormat = nullptr;
PFNGLVERTEXARRAYATTRIBIFORMATPROC                 glVertexArrayAttribIFormat = nullptr;
PFNGLVERTEXARRAYATTRIBLFORMATPROC                 glVertexArrayAttribLFormat = nullptr;
PFNGLVERTEXARRAYBINDINGDIVISORPROC                glVertexArrayBindingDivisor = nullptr;
PFNGLGETVERTEXARRAYIVPROC                         glGetVertexArrayiv = nullptr;
PFNGLGETVERTEXARRAYINDEXEDIVPROC                  glGetVertexArrayIndexediv = nullptr;
PFNGLGETVERTEXARRAYINDEXED64IVPROC                glGetVertexArrayIndexed64iv = nullptr;
PFNGLCREATESAMPLERSPROC                           glCreateSamplers = nullptr;
PFNGLCREATEPROGRAMPIPELINESPROC                   glCreateProgramPipelines = nullptr;
PFNGLCREATEQUERIESPROC                            glCreateQueries = nullptr;
PFNGLGETQUERYBUFFEROBJECTI64VPROC                 glGetQueryBufferObjecti64v = nullptr;
PFNGLGETQUERYBUFFEROBJECTIVPROC                   glGetQueryBufferObjectiv = nullptr;
PFNGLGETQUERYBUFFEROBJECTUI64VPROC                glGetQueryBufferObjectui64v = nullptr;
PFNGLGETQUERYBUFFEROBJECTUIVPROC                  glGetQueryBufferObjectuiv = nullptr;
PFNGLMEMORYBARRIERBYREGIONPROC                    glMemoryBarrierByRegion = nullptr;
PFNGLGETTEXTURESUBIMAGEPROC                       glGetTextureSubImage = nullptr;
PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC             glGetCompressedTextureSubImage = nullptr;
PFNGLGETGRAPHICSRESETSTATUSPROC                   glGetGraphicsResetStatus = nullptr;
PFNGLGETNCOMPRESSEDTEXIMAGEPROC                   glGetnCompressedTexImage = nullptr;
PFNGLGETNTEXIMAGEPROC                             glGetnTexImage = nullptr;
PFNGLGETNUNIFORMDVPROC                            glGetnUniformdv = nullptr;
PFNGLGETNUNIFORMFVPROC                            glGetnUniformfv = nullptr;
PFNGLGETNUNIFORMIVPROC                            glGetnUniformiv = nullptr;
PFNGLGETNUNIFORMUIVPROC                           glGetnUniformuiv = nullptr;
PFNGLREADNPIXELSPROC                              glReadnPixels = nullptr;
PFNGLTEXTUREBARRIERPROC                           glTextureBarrier = nullptr;

// GL_VERSION_4_6
PFNGLSPECIALIZESHADERPROC               glSpecializeShader = nullptr;
PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC   glMultiDrawArraysIndirectCount = nullptr;
PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glMultiDrawElementsIndirectCount = nullptr;
PFNGLPOLYGONOFFSETCLAMPPROC             glPolygonOffsetClamp = nullptr;

// glcore4Init
extern void glcore4Init()
{
	// GL_VERSION_1_2
	glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GetProcAddress("glDrawRangeElements");
	glTexImage3D = (PFNGLTEXIMAGE3DPROC)GetProcAddress("glTexImage3D");
	glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)GetProcAddress("glTexSubImage3D");
	glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)GetProcAddress("glCopyTexSubImage3D");

	// GL_VERSION_1_3
	glActiveTexture = (PFNGLACTIVETEXTUREPROC)GetProcAddress("glActiveTexture");
	glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)GetProcAddress("glSampleCoverage");
	glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)GetProcAddress("glCompressedTexImage3D");
	glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)GetProcAddress("glCompressedTexImage2D");
	glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)GetProcAddress("glCompressedTexImage1D");
	glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)GetProcAddress("glCompressedTexSubImage3D");
	glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)GetProcAddress("glCompressedTexSubImage2D");
	glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)GetProcAddress("glCompressedTexSubImage1D");
	glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)GetProcAddress("glGetCompressedTexImage");

	// GL_VERSION_1_4
	glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)GetProcAddress("glBlendFuncSeparate");
	glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)GetProcAddress("glMultiDrawArrays");
	glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)GetProcAddress("glMultiDrawElements");
	glPointParameterf = (PFNGLPOINTPARAMETERFPROC)GetProcAddress("glPointParameterf");
	glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)GetProcAddress("glPointParameterfv");
	glPointParameteri = (PFNGLPOINTPARAMETERIPROC)GetProcAddress("glPointParameteri");
	glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)GetProcAddress("glPointParameteriv");
	glBlendColor = (PFNGLBLENDCOLORPROC)GetProcAddress("glBlendColor");
	glBlendEquation = (PFNGLBLENDEQUATIONPROC)GetProcAddress("glBlendEquation");

	// GL_VERSION_1_5
	glGenQueries = (PFNGLGENQUERIESPROC)GetProcAddress("glGenQueries");
	glDeleteQueries = (PFNGLDELETEQUERIESPROC)GetProcAddress("glDeleteQueries");
	glIsQuery = (PFNGLISQUERYPROC)GetProcAddress("glIsQuery");
	glBeginQuery = (PFNGLBEGINQUERYPROC)GetProcAddress("glBeginQuery");
	glEndQuery = (PFNGLENDQUERYPROC)GetProcAddress("glEndQuery");
	glGetQueryiv = (PFNGLGETQUERYIVPROC)GetProcAddress("glGetQueryiv");
	glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)GetProcAddress("glGetQueryObjectiv");
	glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)GetProcAddress("glGetQueryObjectuiv");
	glBindBuffer = (PFNGLBINDBUFFERPROC)GetProcAddress("glBindBuffer");
	glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)GetProcAddress("glDeleteBuffers");
	glGenBuffers = (PFNGLGENBUFFERSPROC)GetProcAddress("glGenBuffers");
	glIsBuffer = (PFNGLISBUFFERPROC)GetProcAddress("glIsBuffer");
	glBufferData = (PFNGLBUFFERDATAPROC)GetProcAddress("glBufferData");
	glBufferSubData = (PFNGLBUFFERSUBDATAPROC)GetProcAddress("glBufferSubData");
	glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)GetProcAddress("glGetBufferSubData");
	glMapBuffer = (PFNGLMAPBUFFERPROC)GetProcAddress("glMapBuffer");
	glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)GetProcAddress("glUnmapBuffer");
	glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)GetProcAddress("glGetBufferParameteriv");
	glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)GetProcAddress("glGetBufferPointerv");

	// GL_VERSION_2_0
	glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)GetProcAddress("glBlendEquationSeparate");
	glDrawBuffers = (PFNGLDRAWBUFFERSPROC)GetProcAddress("glDrawBuffers");
	glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)GetProcAddress("glStencilOpSeparate");
	glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)GetProcAddress("glStencilFuncSeparate");
	glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)GetProcAddress("glStencilMaskSeparate");
	glAttachShader = (PFNGLATTACHSHADERPROC)GetProcAddress("glAttachShader");
	glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)GetProcAddress("glBindAttribLocation");
	glCompileShader = (PFNGLCOMPILESHADERPROC)GetProcAddress("glCompileShader");
	glCreateProgram = (PFNGLCREATEPROGRAMPROC)GetProcAddress("glCreateProgram");
	glCreateShader = (PFNGLCREATESHADERPROC)GetProcAddress("glCreateShader");
	glDeleteProgram = (PFNGLDELETEPROGRAMPROC)GetProcAddress("glDeleteProgram");
	glDeleteShader = (PFNGLDELETESHADERPROC)GetProcAddress("glDeleteShader");
	glDetachShader = (PFNGLDETACHSHADERPROC)GetProcAddress("glDetachShader");
	glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)GetProcAddress("glDisableVertexAttribArray");
	glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)GetProcAddress("glEnableVertexAttribArray");
	glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)GetProcAddress("glGetActiveAttrib");
	glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)GetProcAddress("glGetActiveUniform");
	glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)GetProcAddress("glGetAttachedShaders");
	glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)GetProcAddress("glGetAttribLocation");
	glGetProgramiv = (PFNGLGETPROGRAMIVPROC)GetProcAddress("glGetProgramiv");
	glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)GetProcAddress("glGetProgramInfoLog");
	glGetShaderiv = (PFNGLGETSHADERIVPROC)GetProcAddress("glGetShaderiv");
	glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)GetProcAddress("glGetShaderInfoLog");
	glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)GetProcAddress("glGetShaderSource");
	glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)GetProcAddress("glGetUniformLocation");
	glGetUniformfv = (PFNGLGETUNIFORMFVPROC)GetProcAddress("glGetUniformfv");
	glGetUniformiv = (PFNGLGETUNIFORMIVPROC)GetProcAddress("glGetUniformiv");
	glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)GetProcAddress("glGetVertexAttribdv");
	glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)GetProcAddress("glGetVertexAttribfv");
	glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)GetProcAddress("glGetVertexAttribiv");
	glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)GetProcAddress("glGetVertexAttribPointerv");
	glIsProgram = (PFNGLISPROGRAMPROC)GetProcAddress("glIsProgram");
	glIsShader = (PFNGLISSHADERPROC)GetProcAddress("glIsShader");
	glLinkProgram = (PFNGLLINKPROGRAMPROC)GetProcAddress("glLinkProgram");
	glShaderSource = (PFNGLSHADERSOURCEPROC)GetProcAddress("glShaderSource");
	glUseProgram = (PFNGLUSEPROGRAMPROC)GetProcAddress("glUseProgram");
	glUniform1f = (PFNGLUNIFORM1FPROC)GetProcAddress("glUniform1f");
	glUniform2f = (PFNGLUNIFORM2FPROC)GetProcAddress("glUniform2f");
	glUniform3f = (PFNGLUNIFORM3FPROC)GetProcAddress("glUniform3f");
	glUniform4f = (PFNGLUNIFORM4FPROC)GetProcAddress("glUniform4f");
	glUniform1i = (PFNGLUNIFORM1IPROC)GetProcAddress("glUniform1i");
	glUniform2i = (PFNGLUNIFORM2IPROC)GetProcAddress("glUniform2i");
	glUniform3i = (PFNGLUNIFORM3IPROC)GetProcAddress("glUniform3i");
	glUniform4i = (PFNGLUNIFORM4IPROC)GetProcAddress("glUniform4i");
	glUniform1fv = (PFNGLUNIFORM1FVPROC)GetProcAddress("glUniform1fv");
	glUniform2fv = (PFNGLUNIFORM2FVPROC)GetProcAddress("glUniform2fv");
	glUniform3fv = (PFNGLUNIFORM3FVPROC)GetProcAddress("glUniform3fv");
	glUniform4fv = (PFNGLUNIFORM4FVPROC)GetProcAddress("glUniform4fv");
	glUniform1iv = (PFNGLUNIFORM1IVPROC)GetProcAddress("glUniform1iv");
	glUniform2iv = (PFNGLUNIFORM2IVPROC)GetProcAddress("glUniform2iv");
	glUniform3iv = (PFNGLUNIFORM3IVPROC)GetProcAddress("glUniform3iv");
	glUniform4iv = (PFNGLUNIFORM4IVPROC)GetProcAddress("glUniform4iv");
	glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)GetProcAddress("glUniformMatrix2fv");
	glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)GetProcAddress("glUniformMatrix3fv");
	glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)GetProcAddress("glUniformMatrix4fv");
	glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)GetProcAddress("glValidateProgram");
	glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)GetProcAddress("glVertexAttrib1d");
	glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)GetProcAddress("glVertexAttrib1dv");
	glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)GetProcAddress("glVertexAttrib1f");
	glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)GetProcAddress("glVertexAttrib1fv");
	glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)GetProcAddress("glVertexAttrib1s");
	glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)GetProcAddress("glVertexAttrib1sv");
	glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)GetProcAddress("glVertexAttrib2d");
	glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)GetProcAddress("glVertexAttrib2dv");
	glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)GetProcAddress("glVertexAttrib2f");
	glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)GetProcAddress("glVertexAttrib2fv");
	glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)GetProcAddress("glVertexAttrib2s");
	glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)GetProcAddress("glVertexAttrib2sv");
	glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)GetProcAddress("glVertexAttrib3d");
	glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)GetProcAddress("glVertexAttrib3dv");
	glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)GetProcAddress("glVertexAttrib3f");
	glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)GetProcAddress("glVertexAttrib3fv");
	glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)GetProcAddress("glVertexAttrib3s");
	glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)GetProcAddress("glVertexAttrib3sv");
	glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)GetProcAddress("glVertexAttrib4Nbv");
	glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)GetProcAddress("glVertexAttrib4Niv");
	glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)GetProcAddress("glVertexAttrib4Nsv");
	glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)GetProcAddress("glVertexAttrib4Nub");
	glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)GetProcAddress("glVertexAttrib4Nubv");
	glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)GetProcAddress("glVertexAttrib4Nuiv");
	glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)GetProcAddress("glVertexAttrib4Nusv");
	glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)GetProcAddress("glVertexAttrib4bv");
	glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)GetProcAddress("glVertexAttrib4d");
	glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)GetProcAddress("glVertexAttrib4dv");
	glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)GetProcAddress("glVertexAttrib4f");
	glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)GetProcAddress("glVertexAttrib4fv");
	glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)GetProcAddress("glVertexAttrib4iv");
	glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)GetProcAddress("glVertexAttrib4s");
	glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)GetProcAddress("glVertexAttrib4sv");
	glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)GetProcAddress("glVertexAttrib4ubv");
	glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)GetProcAddress("glVertexAttrib4uiv");
	glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)GetProcAddress("glVertexAttrib4usv");
	glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)GetProcAddress("glVertexAttribPointer");

	// GL_VERSION_2_1
	glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)GetProcAddress("glUniformMatrix2x3fv");
	glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)GetProcAddress("glUniformMatrix3x2fv");
	glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)GetProcAddress("glUniformMatrix2x4fv");
	glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)GetProcAddress("glUniformMatrix4x2fv");
	glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)GetProcAddress("glUniformMatrix3x4fv");
	glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)GetProcAddress("glUniformMatrix4x3fv");

	// GL_VERSION_3_0
	glColorMaski = (PFNGLCOLORMASKIPROC)GetProcAddress("glColorMaski");
	glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)GetProcAddress("glGetBooleani_v");
	glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)GetProcAddress("glGetIntegeri_v");
	glEnablei = (PFNGLENABLEIPROC)GetProcAddress("glEnablei");
	glDisablei = (PFNGLDISABLEIPROC)GetProcAddress("glDisablei");
	glIsEnabledi = (PFNGLISENABLEDIPROC)GetProcAddress("glIsEnabledi");
	glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)GetProcAddress("glBeginTransformFeedback");
	glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)GetProcAddress("glEndTransformFeedback");
	glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)GetProcAddress("glBindBufferRange");
	glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)GetProcAddress("glBindBufferBase");
	glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)GetProcAddress("glTransformFeedbackVaryings");
	glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)GetProcAddress("glGetTransformFeedbackVarying");
	glClampColor = (PFNGLCLAMPCOLORPROC)GetProcAddress("glClampColor");
	glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)GetProcAddress("glBeginConditionalRender");
	glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)GetProcAddress("glEndConditionalRender");
	glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)GetProcAddress("glVertexAttribIPointer");
	glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)GetProcAddress("glGetVertexAttribIiv");
	glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)GetProcAddress("glGetVertexAttribIuiv");
	glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)GetProcAddress("glVertexAttribI1i");
	glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)GetProcAddress("glVertexAttribI2i");
	glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)GetProcAddress("glVertexAttribI3i");
	glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)GetProcAddress("glVertexAttribI4i");
	glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)GetProcAddress("glVertexAttribI1ui");
	glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)GetProcAddress("glVertexAttribI2ui");
	glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)GetProcAddress("glVertexAttribI3ui");
	glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)GetProcAddress("glVertexAttribI4ui");
	glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)GetProcAddress("glVertexAttribI1iv");
	glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)GetProcAddress("glVertexAttribI2iv");
	glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)GetProcAddress("glVertexAttribI3iv");
	glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)GetProcAddress("glVertexAttribI4iv");
	glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)GetProcAddress("glVertexAttribI1uiv");
	glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)GetProcAddress("glVertexAttribI2uiv");
	glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)GetProcAddress("glVertexAttribI3uiv");
	glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)GetProcAddress("glVertexAttribI4uiv");
	glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)GetProcAddress("glVertexAttribI4bv");
	glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)GetProcAddress("glVertexAttribI4sv");
	glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)GetProcAddress("glVertexAttribI4ubv");
	glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)GetProcAddress("glVertexAttribI4usv");
	glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)GetProcAddress("glGetUniformuiv");
	glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)GetProcAddress("glBindFragDataLocation");
	glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)GetProcAddress("glGetFragDataLocation");
	glUniform1ui = (PFNGLUNIFORM1UIPROC)GetProcAddress("glUniform1ui");
	glUniform2ui = (PFNGLUNIFORM2UIPROC)GetProcAddress("glUniform2ui");
	glUniform3ui = (PFNGLUNIFORM3UIPROC)GetProcAddress("glUniform3ui");
	glUniform4ui = (PFNGLUNIFORM4UIPROC)GetProcAddress("glUniform4ui");
	glUniform1uiv = (PFNGLUNIFORM1UIVPROC)GetProcAddress("glUniform1uiv");
	glUniform2uiv = (PFNGLUNIFORM2UIVPROC)GetProcAddress("glUniform2uiv");
	glUniform3uiv = (PFNGLUNIFORM3UIVPROC)GetProcAddress("glUniform3uiv");
	glUniform4uiv = (PFNGLUNIFORM4UIVPROC)GetProcAddress("glUniform4uiv");
	glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)GetProcAddress("glTexParameterIiv");
	glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)GetProcAddress("glTexParameterIuiv");
	glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)GetProcAddress("glGetTexParameterIiv");
	glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)GetProcAddress("glGetTexParameterIuiv");
	glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)GetProcAddress("glClearBufferiv");
	glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)GetProcAddress("glClearBufferuiv");
	glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)GetProcAddress("glClearBufferfv");
	glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)GetProcAddress("glClearBufferfi");
	glGetStringi = (PFNGLGETSTRINGIPROC)GetProcAddress("glGetStringi");
	glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)GetProcAddress("glIsRenderbuffer");
	glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)GetProcAddress("glBindRenderbuffer");
	glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)GetProcAddress("glDeleteRenderbuffers");
	glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)GetProcAddress("glGenRenderbuffers");
	glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)GetProcAddress("glRenderbufferStorage");
	glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)GetProcAddress("glGetRenderbufferParameteriv");
	glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)GetProcAddress("glIsFramebuffer");
	glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)GetProcAddress("glBindFramebuffer");
	glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)GetProcAddress("glDeleteFramebuffers");
	glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)GetProcAddress("glGenFramebuffers");
	glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)GetProcAddress("glCheckFramebufferStatus");
	glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)GetProcAddress("glFramebufferTexture1D");
	glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)GetProcAddress("glFramebufferTexture2D");
	glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)GetProcAddress("glFramebufferTexture3D");
	glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)GetProcAddress("glFramebufferRenderbuffer");
	glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)GetProcAddress("glGetFramebufferAttachmentParameteriv");
	glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)GetProcAddress("glGenerateMipmap");
	glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)GetProcAddress("glBlitFramebuffer");
	glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)GetProcAddress("glRenderbufferStorageMultisample");
	glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)GetProcAddress("glFramebufferTextureLayer");
	glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)GetProcAddress("glMapBufferRange");
	glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)GetProcAddress("glFlushMappedBufferRange");
	glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)GetProcAddress("glBindVertexArray");
	glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)GetProcAddress("glDeleteVertexArrays");
	glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)GetProcAddress("glGenVertexArrays");
	glIsVertexArray = (PFNGLISVERTEXARRAYPROC)GetProcAddress("glIsVertexArray");

	// GL_VERSION_3_1
	glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)GetProcAddress("glDrawArraysInstanced");
	glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)GetProcAddress("glDrawElementsInstanced");
	glTexBuffer = (PFNGLTEXBUFFERPROC)GetProcAddress("glTexBuffer");
	glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)GetProcAddress("glPrimitiveRestartIndex");
	glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)GetProcAddress("glCopyBufferSubData");
	glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)GetProcAddress("glGetUniformIndices");
	glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)GetProcAddress("glGetActiveUniformsiv");
	glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)GetProcAddress("glGetActiveUniformName");
	glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)GetProcAddress("glGetUniformBlockIndex");
	glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)GetProcAddress("glGetActiveUniformBlockiv");
	glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)GetProcAddress("glGetActiveUniformBlockName");
	glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)GetProcAddress("glUniformBlockBinding");

	// GL_VERSION_3_2
	glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)GetProcAddress("glDrawElementsBaseVertex");
	glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)GetProcAddress("glDrawRangeElementsBaseVertex");
	glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)GetProcAddress("glDrawElementsInstancedBaseVertex");
	glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)GetProcAddress("glMultiDrawElementsBaseVertex");
	glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)GetProcAddress("glProvokingVertex");
	glFenceSync = (PFNGLFENCESYNCPROC)GetProcAddress("glFenceSync");
	glIsSync = (PFNGLISSYNCPROC)GetProcAddress("glIsSync");
	glDeleteSync = (PFNGLDELETESYNCPROC)GetProcAddress("glDeleteSync");
	glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)GetProcAddress("glClientWaitSync");
	glWaitSync = (PFNGLWAITSYNCPROC)GetProcAddress("glWaitSync");
	glGetInteger64v = (PFNGLGETINTEGER64VPROC)GetProcAddress("glGetInteger64v");
	glGetSynciv = (PFNGLGETSYNCIVPROC)GetProcAddress("glGetSynciv");
	glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)GetProcAddress("glGetInteger64i_v");
	glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)GetProcAddress("glGetBufferParameteri64v");
	glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)GetProcAddress("glFramebufferTexture");
	glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)GetProcAddress("glTexImage2DMultisample");
	glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)GetProcAddress("glTexImage3DMultisample");
	glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)GetProcAddress("glGetMultisamplefv");
	glSampleMaski = (PFNGLSAMPLEMASKIPROC)GetProcAddress("glSampleMaski");

	// GL_VERSION_3_3
	glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)GetProcAddress("glBindFragDataLocationIndexed");
	glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)GetProcAddress("glGetFragDataIndex");
	glGenSamplers = (PFNGLGENSAMPLERSPROC)GetProcAddress("glGenSamplers");
	glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)GetProcAddress("glDeleteSamplers");
	glIsSampler = (PFNGLISSAMPLERPROC)GetProcAddress("glIsSampler");
	glBindSampler = (PFNGLBINDSAMPLERPROC)GetProcAddress("glBindSampler");
	glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)GetProcAddress("glSamplerParameteri");
	glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)GetProcAddress("glSamplerParameteriv");
	glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)GetProcAddress("glSamplerParameterf");
	glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)GetProcAddress("glSamplerParameterfv");
	glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)GetProcAddress("glSamplerParameterIiv");
	glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)GetProcAddress("glSamplerParameterIuiv");
	glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)GetProcAddress("glGetSamplerParameteriv");
	glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)GetProcAddress("glGetSamplerParameterIiv");
	glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)GetProcAddress("glGetSamplerParameterfv");
	glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)GetProcAddress("glGetSamplerParameterIuiv");
	glQueryCounter = (PFNGLQUERYCOUNTERPROC)GetProcAddress("glQueryCounter");
	glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)GetProcAddress("glGetQueryObjecti64v");
	glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)GetProcAddress("glGetQueryObjectui64v");
	glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)GetProcAddress("glVertexAttribDivisor");
	glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)GetProcAddress("glVertexAttribP1ui");
	glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)GetProcAddress("glVertexAttribP1uiv");
	glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)GetProcAddress("glVertexAttribP2ui");
	glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)GetProcAddress("glVertexAttribP2uiv");
	glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)GetProcAddress("glVertexAttribP3ui");
	glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)GetProcAddress("glVertexAttribP3uiv");
	glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)GetProcAddress("glVertexAttribP4ui");
	glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)GetProcAddress("glVertexAttribP4uiv");

	// GL_VERSION_4_0
	glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)GetProcAddress("glMinSampleShading");
	glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)GetProcAddress("glBlendEquationi");
	glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)GetProcAddress("glBlendEquationSeparatei");
	glBlendFunci = (PFNGLBLENDFUNCIPROC)GetProcAddress("glBlendFunci");
	glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)GetProcAddress("glBlendFuncSeparatei");
	glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)GetProcAddress("glDrawArraysIndirect");
	glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)GetProcAddress("glDrawElementsIndirect");
	glUniform1d = (PFNGLUNIFORM1DPROC)GetProcAddress("glUniform1d");
	glUniform2d = (PFNGLUNIFORM2DPROC)GetProcAddress("glUniform2d");
	glUniform3d = (PFNGLUNIFORM3DPROC)GetProcAddress("glUniform3d");
	glUniform4d = (PFNGLUNIFORM4DPROC)GetProcAddress("glUniform4d");
	glUniform1dv = (PFNGLUNIFORM1DVPROC)GetProcAddress("glUniform1dv");
	glUniform2dv = (PFNGLUNIFORM2DVPROC)GetProcAddress("glUniform2dv");
	glUniform3dv = (PFNGLUNIFORM3DVPROC)GetProcAddress("glUniform3dv");
	glUniform4dv = (PFNGLUNIFORM4DVPROC)GetProcAddress("glUniform4dv");
	glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)GetProcAddress("glUniformMatrix2dv");
	glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)GetProcAddress("glUniformMatrix3dv");
	glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)GetProcAddress("glUniformMatrix4dv");
	glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)GetProcAddress("glUniformMatrix2x3dv");
	glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)GetProcAddress("glUniformMatrix2x4dv");
	glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)GetProcAddress("glUniformMatrix3x2dv");
	glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)GetProcAddress("glUniformMatrix3x4dv");
	glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)GetProcAddress("glUniformMatrix4x2dv");
	glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)GetProcAddress("glUniformMatrix4x3dv");
	glGetUniformdv = (PFNGLGETUNIFORMDVPROC)GetProcAddress("glGetUniformdv");
	glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)GetProcAddress("glGetSubroutineUniformLocation");
	glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)GetProcAddress("glGetSubroutineIndex");
	glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)GetProcAddress("glGetActiveSubroutineUniformiv");
	glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)GetProcAddress("glGetActiveSubroutineUniformName");
	glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)GetProcAddress("glGetActiveSubroutineName");
	glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)GetProcAddress("glUniformSubroutinesuiv");
	glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)GetProcAddress("glGetUniformSubroutineuiv");
	glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)GetProcAddress("glGetProgramStageiv");
	glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)GetProcAddress("glPatchParameteri");
	glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)GetProcAddress("glPatchParameterfv");
	glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)GetProcAddress("glBindTransformFeedback");
	glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)GetProcAddress("glDeleteTransformFeedbacks");
	glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)GetProcAddress("glGenTransformFeedbacks");
	glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)GetProcAddress("glIsTransformFeedback");
	glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)GetProcAddress("glPauseTransformFeedback");
	glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)GetProcAddress("glResumeTransformFeedback");
	glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)GetProcAddress("glDrawTransformFeedback");
	glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)GetProcAddress("glDrawTransformFeedbackStream");
	glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)GetProcAddress("glBeginQueryIndexed");
	glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)GetProcAddress("glEndQueryIndexed");
	glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)GetProcAddress("glGetQueryIndexediv");

	// GL_VERSION_4_1
	glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)GetProcAddress("glReleaseShaderCompiler");
	glShaderBinary = (PFNGLSHADERBINARYPROC)GetProcAddress("glShaderBinary");
	glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)GetProcAddress("glGetShaderPrecisionFormat");
	glDepthRangef = (PFNGLDEPTHRANGEFPROC)GetProcAddress("glDepthRangef");
	glClearDepthf = (PFNGLCLEARDEPTHFPROC)GetProcAddress("glClearDepthf");
	glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)GetProcAddress("glGetProgramBinary");
	glProgramBinary = (PFNGLPROGRAMBINARYPROC)GetProcAddress("glProgramBinary");
	glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)GetProcAddress("glProgramParameteri");
	glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)GetProcAddress("glUseProgramStages");
	glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)GetProcAddress("glActiveShaderProgram");
	glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)GetProcAddress("glCreateShaderProgramv");
	glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)GetProcAddress("glBindProgramPipeline");
	glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)GetProcAddress("glDeleteProgramPipelines");
	glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)GetProcAddress("glGenProgramPipelines");
	glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)GetProcAddress("glIsProgramPipeline");
	glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)GetProcAddress("glGetProgramPipelineiv");
	glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)GetProcAddress("glProgramUniform1i");
	glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)GetProcAddress("glProgramUniform1iv");
	glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)GetProcAddress("glProgramUniform1f");
	glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)GetProcAddress("glProgramUniform1fv");
	glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)GetProcAddress("glProgramUniform1d");
	glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)GetProcAddress("glProgramUniform1dv");
	glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)GetProcAddress("glProgramUniform1ui");
	glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)GetProcAddress("glProgramUniform1uiv");
	glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)GetProcAddress("glProgramUniform2i");
	glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)GetProcAddress("glProgramUniform2iv");
	glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)GetProcAddress("glProgramUniform2f");
	glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)GetProcAddress("glProgramUniform2fv");
	glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)GetProcAddress("glProgramUniform2d");
	glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)GetProcAddress("glProgramUniform2dv");
	glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)GetProcAddress("glProgramUniform2ui");
	glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)GetProcAddress("glProgramUniform2uiv");
	glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)GetProcAddress("glProgramUniform3i");
	glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)GetProcAddress("glProgramUniform3iv");
	glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)GetProcAddress("glProgramUniform3f");
	glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)GetProcAddress("glProgramUniform3fv");
	glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)GetProcAddress("glProgramUniform3d");
	glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)GetProcAddress("glProgramUniform3dv");
	glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)GetProcAddress("glProgramUniform3ui");
	glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)GetProcAddress("glProgramUniform3uiv");
	glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)GetProcAddress("glProgramUniform4i");
	glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)GetProcAddress("glProgramUniform4iv");
	glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)GetProcAddress("glProgramUniform4f");
	glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)GetProcAddress("glProgramUniform4fv");
	glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)GetProcAddress("glProgramUniform4d");
	glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)GetProcAddress("glProgramUniform4dv");
	glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)GetProcAddress("glProgramUniform4ui");
	glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)GetProcAddress("glProgramUniform4uiv");
	glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)GetProcAddress("glProgramUniformMatrix2fv");
	glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)GetProcAddress("glProgramUniformMatrix3fv");
	glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)GetProcAddress("glProgramUniformMatrix4fv");
	glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)GetProcAddress("glProgramUniformMatrix2dv");
	glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)GetProcAddress("glProgramUniformMatrix3dv");
	glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)GetProcAddress("glProgramUniformMatrix4dv");
	glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)GetProcAddress("glProgramUniformMatrix2x3fv");
	glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)GetProcAddress("glProgramUniformMatrix3x2fv");
	glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)GetProcAddress("glProgramUniformMatrix2x4fv");
	glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)GetProcAddress("glProgramUniformMatrix4x2fv");
	glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)GetProcAddress("glProgramUniformMatrix3x4fv");
	glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)GetProcAddress("glProgramUniformMatrix4x3fv");
	glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)GetProcAddress("glProgramUniformMatrix2x3dv");
	glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)GetProcAddress("glProgramUniformMatrix3x2dv");
	glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)GetProcAddress("glProgramUniformMatrix2x4dv");
	glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)GetProcAddress("glProgramUniformMatrix4x2dv");
	glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)GetProcAddress("glProgramUniformMatrix3x4dv");
	glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)GetProcAddress("glProgramUniformMatrix4x3dv");
	glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)GetProcAddress("glValidateProgramPipeline");
	glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)GetProcAddress("glGetProgramPipelineInfoLog");
	glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)GetProcAddress("glVertexAttribL1d");
	glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)GetProcAddress("glVertexAttribL2d");
	glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)GetProcAddress("glVertexAttribL3d");
	glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)GetProcAddress("glVertexAttribL4d");
	glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)GetProcAddress("glVertexAttribL1dv");
	glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)GetProcAddress("glVertexAttribL2dv");
	glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)GetProcAddress("glVertexAttribL3dv");
	glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)GetProcAddress("glVertexAttribL4dv");
	glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)GetProcAddress("glVertexAttribLPointer");
	glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)GetProcAddress("glGetVertexAttribLdv");
	glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)GetProcAddress("glViewportArrayv");
	glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)GetProcAddress("glViewportIndexedf");
	glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)GetProcAddress("glViewportIndexedfv");
	glScissorArrayv = (PFNGLSCISSORARRAYVPROC)GetProcAddress("glScissorArrayv");
	glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)GetProcAddress("glScissorIndexed");
	glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)GetProcAddress("glScissorIndexedv");
	glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)GetProcAddress("glDepthRangeArrayv");
	glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)GetProcAddress("glDepthRangeIndexed");
	glGetFloati_v = (PFNGLGETFLOATI_VPROC)GetProcAddress("glGetFloati_v");
	glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)GetProcAddress("glGetDoublei_v");

	// GL_VERSION_4_2
	glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)GetProcAddress("glDrawArraysInstancedBaseInstance");
	glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)GetProcAddress("glDrawElementsInstancedBaseInstance");
	glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)GetProcAddress("glDrawElementsInstancedBaseVertexBaseInstance");
	glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)GetProcAddress("glGetInternalformativ");
	glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)GetProcAddress("glGetActiveAtomicCounterBufferiv");
	glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)GetProcAddress("glBindImageTexture");
	glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)GetProcAddress("glMemoryBarrier");
	glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)GetProcAddress("glTexStorage1D");
	glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)GetProcAddress("glTexStorage2D");
	glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)GetProcAddress("glTexStorage3D");
	glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)GetProcAddress("glDrawTransformFeedbackInstanced");
	glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)GetProcAddress("glDrawTransformFeedbackStreamInstanced");

	// GL_VERSION_4_3
	glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)GetProcAddress("glClearBufferData");
	glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)GetProcAddress("glClearBufferSubData");
	glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)GetProcAddress("glDispatchCompute");
	glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)GetProcAddress("glDispatchComputeIndirect");
	glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)GetProcAddress("glCopyImageSubData");
	glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)GetProcAddress("glFramebufferParameteri");
	glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)GetProcAddress("glGetFramebufferParameteriv");
	glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)GetProcAddress("glGetInternalformati64v");
	glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)GetProcAddress("glInvalidateTexSubImage");
	glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)GetProcAddress("glInvalidateTexImage");
	glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)GetProcAddress("glInvalidateBufferSubData");
	glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)GetProcAddress("glInvalidateBufferData");
	glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)GetProcAddress("glInvalidateFramebuffer");
	glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)GetProcAddress("glInvalidateSubFramebuffer");
	glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)GetProcAddress("glMultiDrawArraysIndirect");
	glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)GetProcAddress("glMultiDrawElementsIndirect");
	glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)GetProcAddress("glGetProgramInterfaceiv");
	glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)GetProcAddress("glGetProgramResourceIndex");
	glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)GetProcAddress("glGetProgramResourceName");
	glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)GetProcAddress("glGetProgramResourceiv");
	glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)GetProcAddress("glGetProgramResourceLocation");
	glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)GetProcAddress("glGetProgramResourceLocationIndex");
	glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)GetProcAddress("glShaderStorageBlockBinding");
	glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)GetProcAddress("glTexBufferRange");
	glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)GetProcAddress("glTexStorage2DMultisample");
	glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)GetProcAddress("glTexStorage3DMultisample");
	glTextureView = (PFNGLTEXTUREVIEWPROC)GetProcAddress("glTextureView");
	glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)GetProcAddress("glBindVertexBuffer");
	glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)GetProcAddress("glVertexAttribFormat");
	glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)GetProcAddress("glVertexAttribIFormat");
	glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)GetProcAddress("glVertexAttribLFormat");
	glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)GetProcAddress("glVertexAttribBinding");
	glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)GetProcAddress("glVertexBindingDivisor");
	glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)GetProcAddress("glDebugMessageControl");
	glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)GetProcAddress("glDebugMessageInsert");
	glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)GetProcAddress("glDebugMessageCallback");
	glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)GetProcAddress("glGetDebugMessageLog");
	glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)GetProcAddress("glPushDebugGroup");
	glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)GetProcAddress("glPopDebugGroup");
	glObjectLabel = (PFNGLOBJECTLABELPROC)GetProcAddress("glObjectLabel");
	glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)GetProcAddress("glGetObjectLabel");
	glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)GetProcAddress("glObjectPtrLabel");
	glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)GetProcAddress("glGetObjectPtrLabel");

	// GL_VERSION_4_4
	glBufferStorage = (PFNGLBUFFERSTORAGEPROC)GetProcAddress("glBufferStorage");
	glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)GetProcAddress("glClearTexImage");
	glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)GetProcAddress("glClearTexSubImage");
	glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)GetProcAddress("glBindBuffersBase");
	glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)GetProcAddress("glBindBuffersRange");
	glBindTextures = (PFNGLBINDTEXTURESPROC)GetProcAddress("glBindTextures");
	glBindSamplers = (PFNGLBINDSAMPLERSPROC)GetProcAddress("glBindSamplers");
	glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)GetProcAddress("glBindImageTextures");
	glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)GetProcAddress("glBindVertexBuffers");

	// GL_VERSION_4_5
	glClipControl = (PFNGLCLIPCONTROLPROC)GetProcAddress("glClipControl");
	glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)GetProcAddress("glCreateTransformFeedbacks");
	glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)GetProcAddress("glTransformFeedbackBufferBase");
	glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)GetProcAddress("glTransformFeedbackBufferRange");
	glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)GetProcAddress("glGetTransformFeedbackiv");
	glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)GetProcAddress("glGetTransformFeedbacki_v");
	glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)GetProcAddress("glGetTransformFeedbacki64_v");
	glCreateBuffers = (PFNGLCREATEBUFFERSPROC)GetProcAddress("glCreateBuffers");
	glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)GetProcAddress("glNamedBufferStorage");
	glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)GetProcAddress("glNamedBufferData");
	glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)GetProcAddress("glNamedBufferSubData");
	glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)GetProcAddress("glCopyNamedBufferSubData");
	glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)GetProcAddress("glClearNamedBufferData");
	glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)GetProcAddress("glClearNamedBufferSubData");
	glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)GetProcAddress("glMapNamedBuffer");
	glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)GetProcAddress("glMapNamedBufferRange");
	glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)GetProcAddress("glUnmapNamedBuffer");
	glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)GetProcAddress("glFlushMappedNamedBufferRange");
	glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)GetProcAddress("glGetNamedBufferParameteriv");
	glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)GetProcAddress("glGetNamedBufferParameteri64v");
	glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)GetProcAddress("glGetNamedBufferPointerv");
	glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)GetProcAddress("glGetNamedBufferSubData");
	glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)GetProcAddress("glCreateFramebuffers");
	glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)GetProcAddress("glNamedFramebufferRenderbuffer");
	glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)GetProcAddress("glNamedFramebufferParameteri");
	glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)GetProcAddress("glNamedFramebufferTexture");
	glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)GetProcAddress("glNamedFramebufferTextureLayer");
	glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)GetProcAddress("glNamedFramebufferDrawBuffer");
	glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)GetProcAddress("glNamedFramebufferDrawBuffers");
	glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)GetProcAddress("glNamedFramebufferReadBuffer");
	glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)GetProcAddress("glInvalidateNamedFramebufferData");
	glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)GetProcAddress("glInvalidateNamedFramebufferSubData");
	glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)GetProcAddress("glClearNamedFramebufferiv");
	glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)GetProcAddress("glClearNamedFramebufferuiv");
	glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)GetProcAddress("glClearNamedFramebufferfv");
	glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)GetProcAddress("glClearNamedFramebufferfi");
	glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)GetProcAddress("glBlitNamedFramebuffer");
	glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)GetProcAddress("glCheckNamedFramebufferStatus");
	glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)GetProcAddress("glGetNamedFramebufferParameteriv");
	glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)GetProcAddress("glGetNamedFramebufferAttachmentParameteriv");
	glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)GetProcAddress("glCreateRenderbuffers");
	glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)GetProcAddress("glNamedRenderbufferStorage");
	glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)GetProcAddress("glNamedRenderbufferStorageMultisample");
	glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)GetProcAddress("glGetNamedRenderbufferParameteriv");
	glCreateTextures = (PFNGLCREATETEXTURESPROC)GetProcAddress("glCreateTextures");
	glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)GetProcAddress("glTextureBuffer");
	glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)GetProcAddress("glTextureBufferRange");
	glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)GetProcAddress("glTextureStorage1D");
	glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)GetProcAddress("glTextureStorage2D");
	glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)GetProcAddress("glTextureStorage3D");
	glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)GetProcAddress("glTextureStorage2DMultisample");
	glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)GetProcAddress("glTextureStorage3DMultisample");
	glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)GetProcAddress("glTextureSubImage1D");
	glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)GetProcAddress("glTextureSubImage2D");
	glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)GetProcAddress("glTextureSubImage3D");
	glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)GetProcAddress("glCompressedTextureSubImage1D");
	glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)GetProcAddress("glCompressedTextureSubImage2D");
	glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)GetProcAddress("glCompressedTextureSubImage3D");
	glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)GetProcAddress("glCopyTextureSubImage1D");
	glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)GetProcAddress("glCopyTextureSubImage2D");
	glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)GetProcAddress("glCopyTextureSubImage3D");
	glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)GetProcAddress("glTextureParameterf");
	glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)GetProcAddress("glTextureParameterfv");
	glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)GetProcAddress("glTextureParameteri");
	glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)GetProcAddress("glTextureParameterIiv");
	glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)GetProcAddress("glTextureParameterIuiv");
	glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)GetProcAddress("glTextureParameteriv");
	glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)GetProcAddress("glGenerateTextureMipmap");
	glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)GetProcAddress("glBindTextureUnit");
	glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)GetProcAddress("glGetTextureImage");
	glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)GetProcAddress("glGetCompressedTextureImage");
	glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)GetProcAddress("glGetTextureLevelParameterfv");
	glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)GetProcAddress("glGetTextureLevelParameteriv");
	glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)GetProcAddress("glGetTextureParameterfv");
	glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)GetProcAddress("glGetTextureParameterIiv");
	glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)GetProcAddress("glGetTextureParameterIuiv");
	glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)GetProcAddress("glGetTextureParameteriv");
	glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)GetProcAddress("glCreateVertexArrays");
	glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)GetProcAddress("glDisableVertexArrayAttrib");
	glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)GetProcAddress("glEnableVertexArrayAttrib");
	glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)GetProcAddress("glVertexArrayElementBuffer");
	glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)GetProcAddress("glVertexArrayVertexBuffer");
	glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)GetProcAddress("glVertexArrayVertexBuffers");
	glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)GetProcAddress("glVertexArrayAttribBinding");
	glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)GetProcAddress("glVertexArrayAttribFormat");
	glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)GetProcAddress("glVertexArrayAttribIFormat");
	glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)GetProcAddress("glVertexArrayAttribLFormat");
	glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)GetProcAddress("glVertexArrayBindingDivisor");
	glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)GetProcAddress("glGetVertexArrayiv");
	glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)GetProcAddress("glGetVertexArrayIndexediv");
	glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)GetProcAddress("glGetVertexArrayIndexed64iv");
	glCreateSamplers = (PFNGLCREATESAMPLERSPROC)GetProcAddress("glCreateSamplers");
	glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)GetProcAddress("glCreateProgramPipelines");
	glCreateQueries = (PFNGLCREATEQUERIESPROC)GetProcAddress("glCreateQueries");
	glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)GetProcAddress("glGetQueryBufferObjecti64v");
	glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)GetProcAddress("glGetQueryBufferObjectiv");
	glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)GetProcAddress("glGetQueryBufferObjectui64v");
	glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)GetProcAddress("glGetQueryBufferObjectuiv");
	glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)GetProcAddress("glMemoryBarrierByRegion");
	glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)GetProcAddress("glGetTextureSubImage");
	glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)GetProcAddress("glGetCompressedTextureSubImage");
	glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)GetProcAddress("glGetGraphicsResetStatus");
	glGetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC)GetProcAddress("glGetnCompressedTexImage");
	glGetnTexImage = (PFNGLGETNTEXIMAGEPROC)GetProcAddress("glGetnTexImage");
	glGetnUniformdv = (PFNGLGETNUNIFORMDVPROC)GetProcAddress("glGetnUniformdv");
	glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)GetProcAddress("glGetnUniformfv");
	glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)GetProcAddress("glGetnUniformiv");
	glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)GetProcAddress("glGetnUniformuiv");
	glReadnPixels = (PFNGLREADNPIXELSPROC)GetProcAddress("glReadnPixels");
	glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)GetProcAddress("glTextureBarrier");

	// GL_VERSION_4_6
	glSpecializeShader = (PFNGLSPECIALIZESHADERPROC)GetProcAddress("glSpecializeShader");
	glMultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)GetProcAddress("glMultiDrawArraysIndirectCount");
	glMultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)GetProcAddress("glMultiDrawElementsIndirectCount");
	glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)GetProcAddress("glPolygonOffsetClamp");
}


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Annls Sci. Nat. , Bot. , sér. 4 13: 12 (1860)

#### Original name
Hypomyces aurantius var. aurantius Plowr.

### Remarks
null

redpajama_set_name: RedPajamaGithub