diff options
| author | Dave Parks <davep@lindenlab.com> | 2022-09-02 19:53:56 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2022-09-02 19:53:56 -0500 | 
| commit | 00b1fec9601c3618f12cebce551e4ce2b38d7e00 (patch) | |
| tree | 0e2bdacdab9303c2704f215c44439a7c9313e0fd | |
| parent | 88e1740d205bdfaa57d1d5dec4e6e9e755eae075 (diff) | |
SL-17967 Purge OpenGL extensions (use core API only)
| -rw-r--r-- | indra/llrender/llgl.cpp | 2035 | ||||
| -rw-r--r-- | indra/llrender/llglheaders.h | 1263 | ||||
| -rw-r--r-- | indra/llrender/llglslshader.cpp | 2 | ||||
| -rw-r--r-- | indra/llrender/llrender.cpp | 11 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 26 | 
5 files changed, 2414 insertions, 923 deletions
| diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 6181f7dd7e..3dfedbe2cf 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -160,255 +160,770 @@ std::list<LLGLUpdate*> LLGLUpdate::sGLQ;  #if (LL_WINDOWS || LL_LINUX)  && !LL_MESA_HEADLESS  #if LL_WINDOWS -PFNGLGETSTRINGIPROC glGetStringi = NULL; -#endif - -// vertex blending prototypes -PFNGLWEIGHTPOINTERARBPROC			glWeightPointerARB = NULL; -PFNGLVERTEXBLENDARBPROC				glVertexBlendARB = NULL; -PFNGLWEIGHTFVARBPROC				glWeightfvARB = NULL; - -// Vertex buffer object prototypes -PFNGLBINDBUFFERARBPROC				glBindBufferARB = NULL; -PFNGLDELETEBUFFERSARBPROC			glDeleteBuffersARB = NULL; -PFNGLGENBUFFERSARBPROC				glGenBuffersARB = NULL; -PFNGLISBUFFERARBPROC				glIsBufferARB = NULL; -PFNGLBUFFERDATAARBPROC				glBufferDataARB = NULL; -PFNGLBUFFERSUBDATAARBPROC			glBufferSubDataARB = NULL; -PFNGLGETBUFFERSUBDATAARBPROC		glGetBufferSubDataARB = NULL; -PFNGLMAPBUFFERARBPROC				glMapBufferARB = NULL; -PFNGLUNMAPBUFFERARBPROC				glUnmapBufferARB = NULL; -PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB = NULL; -PFNGLGETBUFFERPOINTERVARBPROC		glGetBufferPointervARB = NULL; - -//GL_ARB_vertex_array_object -PFNGLBINDVERTEXARRAYPROC glBindVertexArray = NULL; -PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays = NULL; -PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = NULL; -PFNGLISVERTEXARRAYPROC glIsVertexArray = NULL; - -// GL_ARB_map_buffer_range -PFNGLMAPBUFFERRANGEPROC			glMapBufferRange = NULL; -PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange = NULL; - -// GL_ARB_sync -PFNGLFENCESYNCPROC				glFenceSync = NULL; -PFNGLISSYNCPROC					glIsSync = NULL; -PFNGLDELETESYNCPROC				glDeleteSync = NULL; -PFNGLCLIENTWAITSYNCPROC			glClientWaitSync = NULL; -PFNGLWAITSYNCPROC				glWaitSync = NULL; -PFNGLGETINTEGER64VPROC			glGetInteger64v = NULL; -PFNGLGETSYNCIVPROC				glGetSynciv = NULL; - -// GL_APPLE_flush_buffer_range -PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE = NULL; -PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE = NULL; - -// GL_ARB_occlusion_query -PFNGLGENQUERIESARBPROC glGenQueriesARB = NULL; -PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB = NULL; -PFNGLISQUERYARBPROC glIsQueryARB = NULL; -PFNGLBEGINQUERYARBPROC glBeginQueryARB = NULL; -PFNGLENDQUERYARBPROC glEndQueryARB = NULL; -PFNGLGETQUERYIVARBPROC glGetQueryivARB = NULL; -PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB = NULL; -PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB = NULL; - -// GL_ARB_timer_query -PFNGLQUERYCOUNTERPROC glQueryCounter = NULL; -PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v = NULL; -PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v = NULL; - -// GL_ARB_point_parameters -PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB = NULL; -PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB = NULL; - -// GL_ARB_framebuffer_object -PFNGLISRENDERBUFFERPROC glIsRenderbuffer = NULL; -PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer = NULL; -PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers = NULL; -PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers = NULL; -PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv = NULL; -PFNGLISFRAMEBUFFERPROC glIsFramebuffer = NULL; -PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer = NULL; -PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = NULL; -PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus = NULL; -PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D = NULL; -PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D = NULL; -PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D = NULL; -PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv = NULL; -PFNGLGENERATEMIPMAPPROC glGenerateMipmap = NULL; -PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample = NULL; -PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer = NULL; - -//GL_ARB_texture_multisample -PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample = NULL; -PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample = NULL; -PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv = NULL; -PFNGLSAMPLEMASKIPROC glSampleMaski = NULL; - -//transform feedback (4.0 core) -PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback = NULL; -PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback = NULL; -PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings = NULL; -PFNGLBINDBUFFERRANGEPROC glBindBufferRange = NULL; -PFNGLBINDBUFFERBASEPROC glBindBufferBase = NULL; - -//GL_ARB_debug_output -PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB = NULL; -PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB = NULL; -PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB = NULL; -PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB = NULL; - -// GL_EXT_blend_func_separate -PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT = NULL; - -// GL_ARB_draw_buffers -PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB = NULL; - -//shader object prototypes -PFNGLDELETEOBJECTARBPROC glDeleteObjectARB = NULL; -PFNGLGETHANDLEARBPROC glGetHandleARB = NULL; -PFNGLDETACHOBJECTARBPROC glDetachObjectARB = NULL; -PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB = NULL; -PFNGLSHADERSOURCEARBPROC glShaderSourceARB = NULL; -PFNGLCOMPILESHADERARBPROC glCompileShaderARB = NULL; -PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB = NULL; -PFNGLATTACHOBJECTARBPROC glAttachObjectARB = NULL; -PFNGLLINKPROGRAMARBPROC glLinkProgramARB = NULL; -PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL; -PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB = NULL; -PFNGLUNIFORM1FARBPROC glUniform1fARB = NULL; -PFNGLUNIFORM2FARBPROC glUniform2fARB = NULL; -PFNGLUNIFORM3FARBPROC glUniform3fARB = NULL; -PFNGLUNIFORM4FARBPROC glUniform4fARB = NULL; -PFNGLUNIFORM1IARBPROC glUniform1iARB = NULL; -PFNGLUNIFORM2IARBPROC glUniform2iARB = NULL; -PFNGLUNIFORM3IARBPROC glUniform3iARB = NULL; -PFNGLUNIFORM4IARBPROC glUniform4iARB = NULL; -PFNGLUNIFORM1FVARBPROC glUniform1fvARB = NULL; -PFNGLUNIFORM2FVARBPROC glUniform2fvARB = NULL; -PFNGLUNIFORM3FVARBPROC glUniform3fvARB = NULL; -PFNGLUNIFORM4FVARBPROC glUniform4fvARB = NULL; -PFNGLUNIFORM1IVARBPROC glUniform1ivARB = NULL; -PFNGLUNIFORM2IVARBPROC glUniform2ivARB = NULL; -PFNGLUNIFORM3IVARBPROC glUniform3ivARB = NULL; -PFNGLUNIFORM4IVARBPROC glUniform4ivARB = NULL; -PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB = NULL; -PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB = NULL; -PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv = NULL; -PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB = NULL; -PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB = NULL; -PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB = NULL; -PFNGLGETINFOLOGARBPROC glGetInfoLogARB = NULL; -PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB = NULL; -PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB = NULL; -PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB = NULL; -PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB = NULL; -PFNGLGETUNIFORMIVARBPROC glGetUniformivARB = NULL; -PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB = NULL; -PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer = NULL; - -// GL_ARB_uniform_buffer_object -PFNGLGETUNIFORMINDICESPROC glGetUniformIndices = NULL; -PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv = NULL; -PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName = NULL; -PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex = NULL; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv = NULL; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName = NULL; -PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding = NULL; +// WGL_ARB_create_context +PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = nullptr; + +// WGL_AMD_gpu_association +PFNWGLGETGPUIDSAMDPROC                          wglGetGPUIDsAMD = nullptr; +PFNWGLGETGPUINFOAMDPROC                         wglGetGPUInfoAMD = nullptr; +PFNWGLGETCONTEXTGPUIDAMDPROC                    wglGetContextGPUIDAMD = nullptr; +PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC            wglCreateAssociatedContextAMD = nullptr; +PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC     wglCreateAssociatedContextAttribsAMD = nullptr; +PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC            wglDeleteAssociatedContextAMD = nullptr; +PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC       wglMakeAssociatedContextCurrentAMD = nullptr; +PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC        wglGetCurrentAssociatedContextAMD = nullptr; +PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC             wglBlitContextFramebufferAMD = nullptr; + +// WGL_EXT_swap_control +PFNWGLSWAPINTERVALEXTPROC    wglSwapIntervalEXT = nullptr; +PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT = nullptr; -#if LL_WINDOWS -PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = NULL;  #endif -// vertex shader prototypes -#if LL_LINUX -PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB = NULL; -PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB = NULL; -PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB = NULL; -PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB = NULL; -PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB = NULL; -PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB = NULL; -PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB = NULL; -PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB = NULL; -PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB = NULL; -PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB = NULL; -PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB = NULL; -PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB = NULL; -PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB = NULL; -PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB = NULL; -PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB = NULL; -PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB = NULL; -PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB = NULL; -PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB = NULL; -#endif // LL_LINUX -PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB = NULL; -PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB = NULL; -PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB = NULL; -PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB = NULL; -PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB = NULL; -PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB = NULL; -PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB = NULL; -#if LL_LINUX -PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB = NULL; -PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB = NULL; -PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB = NULL; -PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB = NULL; -PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB = NULL; -PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB = NULL; -PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB = NULL; -PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB = NULL; -PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB = NULL; -PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB = NULL; -PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB = NULL; -PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB = NULL; -PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB = NULL; -PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB = NULL; -PFNGLPROGRAMSTRINGARBPROC glProgramStringARB = NULL; -PFNGLBINDPROGRAMARBPROC glBindProgramARB = NULL; -PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB = NULL; -PFNGLGENPROGRAMSARBPROC glGenProgramsARB = NULL; -PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB = NULL; -PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB = NULL; -PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB = NULL; -PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB = NULL; -PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB = NULL; -PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB = NULL; -PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB = NULL; -PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB = NULL; -PFNGLGETPROGRAMIVARBPROC glGetProgramivARB = NULL; -PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB = NULL; -PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB = NULL; -PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB = NULL; -PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB = NULL; -PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB = NULL; -PFNGLISPROGRAMARBPROC glIsProgramARB = NULL; -#endif // LL_LINUX -PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB = NULL; -PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB = NULL; -PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB = NULL; - -#if LL_WINDOWS -PFNWGLGETGPUIDSAMDPROC				wglGetGPUIDsAMD = NULL; -PFNWGLGETGPUINFOAMDPROC				wglGetGPUInfoAMD = NULL; -PFNWGLSWAPINTERVALEXTPROC			wglSwapIntervalEXT = NULL; -#endif +// GL_VERSION_1_2 +//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; +PFNGLCLIENTACTIVETEXTUREPROC         glClientActiveTexture = nullptr; +PFNGLMULTITEXCOORD1DPROC             glMultiTexCoord1d = nullptr; +PFNGLMULTITEXCOORD1DVPROC            glMultiTexCoord1dv = nullptr; +PFNGLMULTITEXCOORD1FPROC             glMultiTexCoord1f = nullptr; +PFNGLMULTITEXCOORD1FVPROC            glMultiTexCoord1fv = nullptr; +PFNGLMULTITEXCOORD1IPROC             glMultiTexCoord1i = nullptr; +PFNGLMULTITEXCOORD1IVPROC            glMultiTexCoord1iv = nullptr; +PFNGLMULTITEXCOORD1SPROC             glMultiTexCoord1s = nullptr; +PFNGLMULTITEXCOORD1SVPROC            glMultiTexCoord1sv = nullptr; +PFNGLMULTITEXCOORD2DPROC             glMultiTexCoord2d = nullptr; +PFNGLMULTITEXCOORD2DVPROC            glMultiTexCoord2dv = nullptr; +PFNGLMULTITEXCOORD2FPROC             glMultiTexCoord2f = nullptr; +PFNGLMULTITEXCOORD2FVPROC            glMultiTexCoord2fv = nullptr; +PFNGLMULTITEXCOORD2IPROC             glMultiTexCoord2i = nullptr; +PFNGLMULTITEXCOORD2IVPROC            glMultiTexCoord2iv = nullptr; +PFNGLMULTITEXCOORD2SPROC             glMultiTexCoord2s = nullptr; +PFNGLMULTITEXCOORD2SVPROC            glMultiTexCoord2sv = nullptr; +PFNGLMULTITEXCOORD3DPROC             glMultiTexCoord3d = nullptr; +PFNGLMULTITEXCOORD3DVPROC            glMultiTexCoord3dv = nullptr; +PFNGLMULTITEXCOORD3FPROC             glMultiTexCoord3f = nullptr; +PFNGLMULTITEXCOORD3FVPROC            glMultiTexCoord3fv = nullptr; +PFNGLMULTITEXCOORD3IPROC             glMultiTexCoord3i = nullptr; +PFNGLMULTITEXCOORD3IVPROC            glMultiTexCoord3iv = nullptr; +PFNGLMULTITEXCOORD3SPROC             glMultiTexCoord3s = nullptr; +PFNGLMULTITEXCOORD3SVPROC            glMultiTexCoord3sv = nullptr; +PFNGLMULTITEXCOORD4DPROC             glMultiTexCoord4d = nullptr; +PFNGLMULTITEXCOORD4DVPROC            glMultiTexCoord4dv = nullptr; +PFNGLMULTITEXCOORD4FPROC             glMultiTexCoord4f = nullptr; +PFNGLMULTITEXCOORD4FVPROC            glMultiTexCoord4fv = nullptr; +PFNGLMULTITEXCOORD4IPROC             glMultiTexCoord4i = nullptr; +PFNGLMULTITEXCOORD4IVPROC            glMultiTexCoord4iv = nullptr; +PFNGLMULTITEXCOORD4SPROC             glMultiTexCoord4s = nullptr; +PFNGLMULTITEXCOORD4SVPROC            glMultiTexCoord4sv = nullptr; +PFNGLLOADTRANSPOSEMATRIXFPROC        glLoadTransposeMatrixf = nullptr; +PFNGLLOADTRANSPOSEMATRIXDPROC        glLoadTransposeMatrixd = nullptr; +PFNGLMULTTRANSPOSEMATRIXFPROC        glMultTransposeMatrixf = nullptr; +PFNGLMULTTRANSPOSEMATRIXDPROC        glMultTransposeMatrixd = 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; +PFNGLFOGCOORDFPROC               glFogCoordf = nullptr; +PFNGLFOGCOORDFVPROC              glFogCoordfv = nullptr; +PFNGLFOGCOORDDPROC               glFogCoordd = nullptr; +PFNGLFOGCOORDDVPROC              glFogCoorddv = nullptr; +PFNGLFOGCOORDPOINTERPROC         glFogCoordPointer = nullptr; +PFNGLSECONDARYCOLOR3BPROC        glSecondaryColor3b = nullptr; +PFNGLSECONDARYCOLOR3BVPROC       glSecondaryColor3bv = nullptr; +PFNGLSECONDARYCOLOR3DPROC        glSecondaryColor3d = nullptr; +PFNGLSECONDARYCOLOR3DVPROC       glSecondaryColor3dv = nullptr; +PFNGLSECONDARYCOLOR3FPROC        glSecondaryColor3f = nullptr; +PFNGLSECONDARYCOLOR3FVPROC       glSecondaryColor3fv = nullptr; +PFNGLSECONDARYCOLOR3IPROC        glSecondaryColor3i = nullptr; +PFNGLSECONDARYCOLOR3IVPROC       glSecondaryColor3iv = nullptr; +PFNGLSECONDARYCOLOR3SPROC        glSecondaryColor3s = nullptr; +PFNGLSECONDARYCOLOR3SVPROC       glSecondaryColor3sv = nullptr; +PFNGLSECONDARYCOLOR3UBPROC       glSecondaryColor3ub = nullptr; +PFNGLSECONDARYCOLOR3UBVPROC      glSecondaryColor3ubv = nullptr; +PFNGLSECONDARYCOLOR3UIPROC       glSecondaryColor3ui = nullptr; +PFNGLSECONDARYCOLOR3UIVPROC      glSecondaryColor3uiv = nullptr; +PFNGLSECONDARYCOLOR3USPROC       glSecondaryColor3us = nullptr; +PFNGLSECONDARYCOLOR3USVPROC      glSecondaryColor3usv = nullptr; +PFNGLSECONDARYCOLORPOINTERPROC   glSecondaryColorPointer = nullptr; +PFNGLWINDOWPOS2DPROC             glWindowPos2d = nullptr; +PFNGLWINDOWPOS2DVPROC            glWindowPos2dv = nullptr; +PFNGLWINDOWPOS2FPROC             glWindowPos2f = nullptr; +PFNGLWINDOWPOS2FVPROC            glWindowPos2fv = nullptr; +PFNGLWINDOWPOS2IPROC             glWindowPos2i = nullptr; +PFNGLWINDOWPOS2IVPROC            glWindowPos2iv = nullptr; +PFNGLWINDOWPOS2SPROC             glWindowPos2s = nullptr; +PFNGLWINDOWPOS2SVPROC            glWindowPos2sv = nullptr; +PFNGLWINDOWPOS3DPROC             glWindowPos3d = nullptr; +PFNGLWINDOWPOS3DVPROC            glWindowPos3dv = nullptr; +PFNGLWINDOWPOS3FPROC             glWindowPos3f = nullptr; +PFNGLWINDOWPOS3FVPROC            glWindowPos3fv = nullptr; +PFNGLWINDOWPOS3IPROC             glWindowPos3i = nullptr; +PFNGLWINDOWPOS3IVPROC            glWindowPos3iv = nullptr; +PFNGLWINDOWPOS3SPROC             glWindowPos3s = nullptr; +PFNGLWINDOWPOS3SVPROC            glWindowPos3sv = 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; +PFNGLVERTEXP2UIPROC                   glVertexP2ui = nullptr; +PFNGLVERTEXP2UIVPROC                  glVertexP2uiv = nullptr; +PFNGLVERTEXP3UIPROC                   glVertexP3ui = nullptr; +PFNGLVERTEXP3UIVPROC                  glVertexP3uiv = nullptr; +PFNGLVERTEXP4UIPROC                   glVertexP4ui = nullptr; +PFNGLVERTEXP4UIVPROC                  glVertexP4uiv = nullptr; +PFNGLTEXCOORDP1UIPROC                 glTexCoordP1ui = nullptr; +PFNGLTEXCOORDP1UIVPROC                glTexCoordP1uiv = nullptr; +PFNGLTEXCOORDP2UIPROC                 glTexCoordP2ui = nullptr; +PFNGLTEXCOORDP2UIVPROC                glTexCoordP2uiv = nullptr; +PFNGLTEXCOORDP3UIPROC                 glTexCoordP3ui = nullptr; +PFNGLTEXCOORDP3UIVPROC                glTexCoordP3uiv = nullptr; +PFNGLTEXCOORDP4UIPROC                 glTexCoordP4ui = nullptr; +PFNGLTEXCOORDP4UIVPROC                glTexCoordP4uiv = nullptr; +PFNGLMULTITEXCOORDP1UIPROC            glMultiTexCoordP1ui = nullptr; +PFNGLMULTITEXCOORDP1UIVPROC           glMultiTexCoordP1uiv = nullptr; +PFNGLMULTITEXCOORDP2UIPROC            glMultiTexCoordP2ui = nullptr; +PFNGLMULTITEXCOORDP2UIVPROC           glMultiTexCoordP2uiv = nullptr; +PFNGLMULTITEXCOORDP3UIPROC            glMultiTexCoordP3ui = nullptr; +PFNGLMULTITEXCOORDP3UIVPROC           glMultiTexCoordP3uiv = nullptr; +PFNGLMULTITEXCOORDP4UIPROC            glMultiTexCoordP4ui = nullptr; +PFNGLMULTITEXCOORDP4UIVPROC           glMultiTexCoordP4uiv = nullptr; +PFNGLNORMALP3UIPROC                   glNormalP3ui = nullptr; +PFNGLNORMALP3UIVPROC                  glNormalP3uiv = nullptr; +PFNGLCOLORP3UIPROC                    glColorP3ui = nullptr; +PFNGLCOLORP3UIVPROC                   glColorP3uiv = nullptr; +PFNGLCOLORP4UIPROC                    glColorP4ui = nullptr; +PFNGLCOLORP4UIVPROC                   glColorP4uiv = nullptr; +PFNGLSECONDARYCOLORP3UIPROC           glSecondaryColorP3ui = nullptr; +PFNGLSECONDARYCOLORP3UIVPROC          glSecondaryColorP3uiv = 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; +PFNGLGETNMAPDVPROC                                       glGetnMapdv = nullptr; +PFNGLGETNMAPFVPROC                                       glGetnMapfv = nullptr; +PFNGLGETNMAPIVPROC                                       glGetnMapiv = nullptr; +PFNGLGETNPIXELMAPFVPROC                                  glGetnPixelMapfv = nullptr; +PFNGLGETNPIXELMAPUIVPROC                                 glGetnPixelMapuiv = nullptr; +PFNGLGETNPIXELMAPUSVPROC                                 glGetnPixelMapusv = nullptr; +PFNGLGETNPOLYGONSTIPPLEPROC                              glGetnPolygonStipple = nullptr; +PFNGLGETNCOLORTABLEPROC                                  glGetnColorTable = nullptr; +PFNGLGETNCONVOLUTIONFILTERPROC                           glGetnConvolutionFilter = nullptr; +PFNGLGETNSEPARABLEFILTERPROC                             glGetnSeparableFilter = nullptr; +PFNGLGETNHISTOGRAMPROC                                   glGetnHistogram = nullptr; +PFNGLGETNMINMAXPROC                                      glGetnMinmax = nullptr; +PFNGLTEXTUREBARRIERPROC                                  glTextureBarrier = nullptr; + +// GL_VERSION_4_6 +PFNGLSPECIALIZESHADERPROC                glSpecializeShader = nullptr; +PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC    glMultiDrawArraysIndirectCount = nullptr; +PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC  glMultiDrawElementsIndirectCount = nullptr; +PFNGLPOLYGONOFFSETCLAMPPROC              glPolygonOffsetClamp = nullptr; -#if LL_LINUX_NV_GL_HEADERS -// linux nvidia headers.  these define these differently to mesa's.  ugh. -PFNGLACTIVETEXTUREARBPROC glActiveTextureARB = NULL; -PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB = NULL; -PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements = NULL; -#endif // LL_LINUX_NV_GL_HEADERS  #endif  LLGLManager gGLManager; @@ -1243,280 +1758,772 @@ void LLGLManager::initExtensions()  #if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS  	LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL; -	if (mHasVertexBufferObject) -	{ -		glBindBufferARB = (PFNGLBINDBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBufferARB"); -		if (glBindBufferARB) -		{ -			glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteBuffersARB"); -			glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenBuffersARB"); -			glIsBufferARB = (PFNGLISBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsBufferARB"); -			glBufferDataARB = (PFNGLBUFFERDATAARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferDataARB"); -			glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferSubDataARB"); -			glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferSubDataARB"); -			glMapBufferARB = (PFNGLMAPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMapBufferARB"); -			glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glUnmapBufferARB"); -			glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferParameterivARB"); -			glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferPointervARB"); -		} -		else -		{ -			mHasVertexBufferObject = FALSE; -		} -	} -	if (mHasVertexArrayObject) -	{ -		glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC) GLH_EXT_GET_PROC_ADDRESS("glBindVertexArray"); -		glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteVertexArrays"); -		glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenVertexArrays"); -		glIsVertexArray = (PFNGLISVERTEXARRAYPROC) GLH_EXT_GET_PROC_ADDRESS("glIsVertexArray"); -	} -	if (mHasSync) -	{ -		glFenceSync = (PFNGLFENCESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glFenceSync"); -		glIsSync = (PFNGLISSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glIsSync"); -		glDeleteSync = (PFNGLDELETESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteSync"); -		glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glClientWaitSync"); -		glWaitSync = (PFNGLWAITSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glWaitSync"); -		glGetInteger64v = (PFNGLGETINTEGER64VPROC) GLH_EXT_GET_PROC_ADDRESS("glGetInteger64v"); -		glGetSynciv = (PFNGLGETSYNCIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetSynciv"); -	} -	if (mHasMapBufferRange) -	{ -		glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC) GLH_EXT_GET_PROC_ADDRESS("glMapBufferRange"); -		glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC) GLH_EXT_GET_PROC_ADDRESS("glFlushMappedBufferRange"); -	} -	if (mHasFramebufferObject) -	{ -		LL_INFOS() << "initExtensions() FramebufferObject-related procs..." << LL_ENDL; -		glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glIsRenderbuffer"); -		glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBindRenderbuffer"); -		glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffers"); -		glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenRenderbuffers"); -		glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorage"); -		glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetRenderbufferParameteriv"); -		glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glIsFramebuffer"); -		glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBindFramebuffer"); -		glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteFramebuffers"); -		glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenFramebuffers"); -		glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) GLH_EXT_GET_PROC_ADDRESS("glCheckFramebufferStatus"); -		glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture1D"); -		glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture2D"); -		glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture3D"); -		glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferRenderbuffer"); -		glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameteriv"); -		glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC) GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmap"); -		glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC) GLH_EXT_GET_PROC_ADDRESS("glBlitFramebuffer"); -		glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageMultisample"); -		glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTextureLayer"); -	} -	if (mHasDrawBuffers) -	{ -		glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDrawBuffersARB"); -	} -	if (mHasBlendFuncSeparate) -	{ -		glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBlendFuncSeparateEXT"); -	} -	if (mHasTextureMultisample) -	{ -		glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC) GLH_EXT_GET_PROC_ADDRESS("glTexImage2DMultisample"); -		glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC) GLH_EXT_GET_PROC_ADDRESS("glTexImage3DMultisample"); -		glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetMultisamplefv"); -		glSampleMaski = (PFNGLSAMPLEMASKIPROC) GLH_EXT_GET_PROC_ADDRESS("glSampleMaski"); -	} -	if (mHasTransformFeedback) -	{ -		glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC) GLH_EXT_GET_PROC_ADDRESS("glBeginTransformFeedback"); -		glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC) GLH_EXT_GET_PROC_ADDRESS("glEndTransformFeedback"); -		glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC) GLH_EXT_GET_PROC_ADDRESS("glTransformFeedbackVaryings"); -		glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC) GLH_EXT_GET_PROC_ADDRESS("glBindBufferRange"); -		glBindBufferBase = (PFNGLBINDBUFFERBASEPROC) GLH_EXT_GET_PROC_ADDRESS("glBindBufferBase"); -	} -	if (mHasDebugOutput) -	{ -		glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageControlARB"); -		glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageInsertARB"); -		glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageCallbackARB"); -		glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetDebugMessageLogARB"); -	} -#if (!LL_LINUX) || LL_LINUX_NV_GL_HEADERS -	// This is expected to be a static symbol on Linux GL implementations, except if we use the nvidia headers - bah -	glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements"); -	if (!glDrawRangeElements) -	{ -		mGLMaxVertexRange = 0; -		mGLMaxIndexRange = 0; -	} +	 +#if LL_WINDOWS +    // WGL_AMD_gpu_association +    wglGetGPUIDsAMD = (PFNWGLGETGPUIDSAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetGPUIDsAMD"); +    wglGetGPUInfoAMD = (PFNWGLGETGPUINFOAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetGPUInfoAMD"); +    wglGetContextGPUIDAMD = (PFNWGLGETCONTEXTGPUIDAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetContextGPUIDAMD"); +    wglCreateAssociatedContextAMD = (PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreateAssociatedContextAMD"); +    wglCreateAssociatedContextAttribsAMD = (PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreateAssociatedContextAttribsAMD"); +    wglDeleteAssociatedContextAMD = (PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglDeleteAssociatedContextAMD"); +    wglMakeAssociatedContextCurrentAMD = (PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglMakeAssociatedContextCurrentAMD"); +    wglGetCurrentAssociatedContextAMD = (PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetCurrentAssociatedContextAMD"); +    wglBlitContextFramebufferAMD = (PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)GLH_EXT_GET_PROC_ADDRESS("wglBlitContextFramebufferAMD"); + +    // WGL_EXT_swap_control +    wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)GLH_EXT_GET_PROC_ADDRESS("wglSwapIntervalEXT"); +    wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetSwapIntervalEXT"); + +    // WGL_ARB_create_context +    wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreateContextAttribsARB"); +#endif -    // same with glTexImage3D et al +    // GL_VERSION_1_2 +    glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");      glTexImage3D = (PFNGLTEXIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage3D"); +    glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexSubImage3D");      glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyTexSubImage3D"); -#endif // !LL_LINUX || LL_LINUX_NV_GL_HEADERS -#if LL_LINUX_NV_GL_HEADERS -	// nvidia headers are critically different from mesa-esque - 	glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)GLH_EXT_GET_PROC_ADDRESS("glActiveTextureARB"); - 	glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)GLH_EXT_GET_PROC_ADDRESS("glClientActiveTextureARB"); -#endif // LL_LINUX_NV_GL_HEADERS -	if (mHasOcclusionQuery) -	{ -		LL_INFOS() << "initExtensions() OcclusionQuery-related procs..." << LL_ENDL; -		glGenQueriesARB = (PFNGLGENQUERIESARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenQueriesARB"); -		glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteQueriesARB"); -		glIsQueryARB = (PFNGLISQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsQueryARB"); -		glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBeginQueryARB"); -		glEndQueryARB = (PFNGLENDQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glEndQueryARB"); -		glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryivARB"); -		glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectivARB"); -		glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectuivARB"); -	} -	if (mHasTimerQuery) -	{ -		LL_INFOS() << "initExtensions() TimerQuery-related procs..." << LL_ENDL; -		glQueryCounter = (PFNGLQUERYCOUNTERPROC) GLH_EXT_GET_PROC_ADDRESS("glQueryCounter"); -		glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC) GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjecti64v"); -		glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC) GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectui64v"); -	} -	if (mHasPointParameters) -	{ -		LL_INFOS() << "initExtensions() PointParameters-related procs..." << LL_ENDL; -		glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfARB"); -		glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfvARB"); -	} - -    if (mHasUniformBufferObject) -    { -       glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformIndices"); -       glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformIndices"); -       glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformName"); -       glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformBlockIndex"); -       glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformBlockiv"); -       glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformBlockName"); -       glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformBlockBinding"); -    } - -    // Assume shader capabilities -    glDeleteObjectARB         = (PFNGLDELETEOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteObjectARB"); -    glGetHandleARB            = (PFNGLGETHANDLEARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetHandleARB"); -    glDetachObjectARB         = (PFNGLDETACHOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDetachObjectARB"); -    glCreateShaderObjectARB   = (PFNGLCREATESHADEROBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glCreateShaderObjectARB"); -    glShaderSourceARB         = (PFNGLSHADERSOURCEARBPROC) GLH_EXT_GET_PROC_ADDRESS("glShaderSourceARB"); -    glCompileShaderARB        = (PFNGLCOMPILESHADERARBPROC) GLH_EXT_GET_PROC_ADDRESS("glCompileShaderARB"); -    glCreateProgramObjectARB  = (PFNGLCREATEPROGRAMOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glCreateProgramObjectARB"); -    glAttachObjectARB         = (PFNGLATTACHOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glAttachObjectARB"); -    glLinkProgramARB          = (PFNGLLINKPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glLinkProgramARB"); -    glUseProgramObjectARB     = (PFNGLUSEPROGRAMOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUseProgramObjectARB"); -    glValidateProgramARB      = (PFNGLVALIDATEPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glValidateProgramARB"); -    glUniform1fARB            = (PFNGLUNIFORM1FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1fARB"); -    glUniform2fARB            = (PFNGLUNIFORM2FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2fARB"); -    glUniform3fARB            = (PFNGLUNIFORM3FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3fARB"); -    glUniform4fARB            = (PFNGLUNIFORM4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4fARB"); -    glUniform1iARB            = (PFNGLUNIFORM1IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1iARB"); -    glUniform2iARB            = (PFNGLUNIFORM2IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2iARB"); -    glUniform3iARB            = (PFNGLUNIFORM3IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3iARB"); -    glUniform4iARB            = (PFNGLUNIFORM4IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4iARB"); -    glUniform1fvARB           = (PFNGLUNIFORM1FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1fvARB"); -    glUniform2fvARB           = (PFNGLUNIFORM2FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2fvARB"); -    glUniform3fvARB           = (PFNGLUNIFORM3FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3fvARB"); -    glUniform4fvARB           = (PFNGLUNIFORM4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4fvARB"); -    glUniform1ivARB           = (PFNGLUNIFORM1IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1ivARB"); -    glUniform2ivARB           = (PFNGLUNIFORM2IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2ivARB"); -    glUniform3ivARB           = (PFNGLUNIFORM3IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3ivARB"); -    glUniform4ivARB           = (PFNGLUNIFORM4IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4ivARB"); -    glUniformMatrix2fvARB     = (PFNGLUNIFORMMATRIX2FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2fvARB"); -    glUniformMatrix3fvARB     = (PFNGLUNIFORMMATRIX3FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3fvARB"); -    glUniformMatrix3x4fv      = (PFNGLUNIFORMMATRIX3X4FVPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3x4fv"); -    glUniformMatrix4fvARB     = (PFNGLUNIFORMMATRIX4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4fvARB"); -    glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetObjectParameterfvARB"); -    glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetObjectParameterivARB"); -    glGetInfoLogARB           = (PFNGLGETINFOLOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetInfoLogARB"); -    glGetAttachedObjectsARB   = (PFNGLGETATTACHEDOBJECTSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetAttachedObjectsARB"); -    glGetUniformLocationARB   = (PFNGLGETUNIFORMLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetUniformLocationARB"); -    glGetActiveUniformARB     = (PFNGLGETACTIVEUNIFORMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformARB"); -    glGetUniformfvARB         = (PFNGLGETUNIFORMFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetUniformfvARB"); -    glGetUniformivARB         = (PFNGLGETUNIFORMIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetUniformivARB"); -    glGetShaderSourceARB      = (PFNGLGETSHADERSOURCEARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetShaderSourceARB"); - -    LL_INFOS() << "initExtensions() VertexShader-related procs..." << LL_ENDL; - -    // nSight doesn't support use of ARB funcs that have been normalized in the API -    if (!LLRender::sNsightDebugSupport) -    { -        glGetAttribLocationARB  = (PFNGLGETATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetAttribLocationARB"); -        glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glBindAttribLocationARB"); -    } -    else -    { -        glGetAttribLocationARB  = (PFNGLGETATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetAttribLocation"); -        glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glBindAttribLocation"); -    } - -    glGetActiveAttribARB            = (PFNGLGETACTIVEATTRIBARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetActiveAttribARB"); -    glVertexAttrib1dARB             = (PFNGLVERTEXATTRIB1DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dARB"); -    glVertexAttrib1dvARB            = (PFNGLVERTEXATTRIB1DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dvARB"); -    glVertexAttrib1fARB             = (PFNGLVERTEXATTRIB1FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fARB"); -    glVertexAttrib1fvARB            = (PFNGLVERTEXATTRIB1FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fvARB"); -    glVertexAttrib1sARB             = (PFNGLVERTEXATTRIB1SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sARB"); -    glVertexAttrib1svARB            = (PFNGLVERTEXATTRIB1SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1svARB"); -    glVertexAttrib2dARB             = (PFNGLVERTEXATTRIB2DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dARB"); -    glVertexAttrib2dvARB            = (PFNGLVERTEXATTRIB2DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dvARB"); -    glVertexAttrib2fARB             = (PFNGLVERTEXATTRIB2FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fARB"); -    glVertexAttrib2fvARB            = (PFNGLVERTEXATTRIB2FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fvARB"); -    glVertexAttrib2sARB             = (PFNGLVERTEXATTRIB2SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sARB"); -    glVertexAttrib2svARB            = (PFNGLVERTEXATTRIB2SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2svARB"); -    glVertexAttrib3dARB             = (PFNGLVERTEXATTRIB3DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dARB"); -    glVertexAttrib3dvARB            = (PFNGLVERTEXATTRIB3DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dvARB"); -    glVertexAttrib3fARB             = (PFNGLVERTEXATTRIB3FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fARB"); -    glVertexAttrib3fvARB            = (PFNGLVERTEXATTRIB3FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fvARB"); -    glVertexAttrib3sARB             = (PFNGLVERTEXATTRIB3SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sARB"); -    glVertexAttrib3svARB            = (PFNGLVERTEXATTRIB3SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3svARB"); -    glVertexAttrib4nbvARB           = (PFNGLVERTEXATTRIB4NBVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nbvARB"); -    glVertexAttrib4nivARB           = (PFNGLVERTEXATTRIB4NIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nivARB"); -    glVertexAttrib4nsvARB           = (PFNGLVERTEXATTRIB4NSVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nsvARB"); -    glVertexAttrib4nubARB           = (PFNGLVERTEXATTRIB4NUBARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nubARB"); -    glVertexAttrib4nubvARB          = (PFNGLVERTEXATTRIB4NUBVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nubvARB"); -    glVertexAttrib4nuivARB          = (PFNGLVERTEXATTRIB4NUIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nuivARB"); -    glVertexAttrib4nusvARB          = (PFNGLVERTEXATTRIB4NUSVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nusvARB"); -    glVertexAttrib4bvARB            = (PFNGLVERTEXATTRIB4BVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4bvARB"); -    glVertexAttrib4dARB             = (PFNGLVERTEXATTRIB4DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dARB"); -    glVertexAttrib4dvARB            = (PFNGLVERTEXATTRIB4DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dvARB"); -    glVertexAttrib4fARB             = (PFNGLVERTEXATTRIB4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fARB"); -    glVertexAttrib4fvARB            = (PFNGLVERTEXATTRIB4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fvARB"); -    glVertexAttrib4ivARB            = (PFNGLVERTEXATTRIB4IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ivARB"); -    glVertexAttrib4sARB             = (PFNGLVERTEXATTRIB4SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sARB"); -    glVertexAttrib4svARB            = (PFNGLVERTEXATTRIB4SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4svARB"); -    glVertexAttrib4ubvARB           = (PFNGLVERTEXATTRIB4UBVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubvARB"); -    glVertexAttrib4uivARB           = (PFNGLVERTEXATTRIB4UIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4uivARB"); -    glVertexAttrib4usvARB           = (PFNGLVERTEXATTRIB4USVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4usvARB"); -    glVertexAttribPointerARB        = (PFNGLVERTEXATTRIBPOINTERARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointerARB"); -    glVertexAttribIPointer          = (PFNGLVERTEXATTRIBIPOINTERPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttribIPointer"); -    glEnableVertexAttribArrayARB    = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) GLH_EXT_GET_PROC_ADDRESS("glEnableVertexAttribArrayARB"); -    glDisableVertexAttribArrayARB   = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDisableVertexAttribArrayARB"); -    glProgramStringARB              = (PFNGLPROGRAMSTRINGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramStringARB"); -    glBindProgramARB                = (PFNGLBINDPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glBindProgramARB"); -    glDeleteProgramsARB             = (PFNGLDELETEPROGRAMSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramsARB"); -    glGenProgramsARB                = (PFNGLGENPROGRAMSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGenProgramsARB"); -    glProgramEnvParameter4dARB      = (PFNGLPROGRAMENVPARAMETER4DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dARB"); -    glProgramEnvParameter4dvARB     = (PFNGLPROGRAMENVPARAMETER4DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dvARB"); -    glProgramEnvParameter4fARB      = (PFNGLPROGRAMENVPARAMETER4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fARB"); -    glProgramEnvParameter4fvARB     = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fvARB"); -    glProgramLocalParameter4dARB    = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dARB"); -    glProgramLocalParameter4dvARB   = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dvARB"); -    glProgramLocalParameter4fARB    = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fARB"); -    glProgramLocalParameter4fvARB   = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fvARB"); -    glGetProgramEnvParameterdvARB   = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterdvARB"); -    glGetProgramEnvParameterfvARB   = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterfvARB"); -    glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterdvARB"); -    glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterfvARB"); -    glGetProgramivARB               = (PFNGLGETPROGRAMIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramivARB"); -    glGetProgramStringARB           = (PFNGLGETPROGRAMSTRINGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramStringARB"); -    glGetVertexAttribdvARB          = (PFNGLGETVERTEXATTRIBDVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdvARB"); -    glGetVertexAttribfvARB          = (PFNGLGETVERTEXATTRIBFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfvARB"); -    glGetVertexAttribivARB          = (PFNGLGETVERTEXATTRIBIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribivARB"); -    glGetVertexAttribPointervARB    = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glgetVertexAttribPointervARB"); -    glIsProgramARB                  = (PFNGLISPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glIsProgramARB"); +    // GL_VERSION_1_3 +    glActiveTexture = (PFNGLACTIVETEXTUREPROC)GLH_EXT_GET_PROC_ADDRESS("glActiveTexture"); +    glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glSampleCoverage"); +    glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage3D"); +    glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage2D"); +    glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage1D"); +    glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage3D"); +    glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage2D"); +    glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage1D"); +    glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCompressedTexImage"); +    glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)GLH_EXT_GET_PROC_ADDRESS("glClientActiveTexture"); +    glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1d"); +    glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1dv"); +    glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1f"); +    glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1fv"); +    glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1i"); +    glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1iv"); +    glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1s"); +    glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1sv"); +    glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2d"); +    glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2dv"); +    glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2f"); +    glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2fv"); +    glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2i"); +    glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2iv"); +    glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2s"); +    glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2sv"); +    glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3d"); +    glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3dv"); +    glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3f"); +    glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3fv"); +    glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3i"); +    glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3iv"); +    glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3s"); +    glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3sv"); +    glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4d"); +    glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4dv"); +    glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4f"); +    glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4fv"); +    glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4i"); +    glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4iv"); +    glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4s"); +    glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4sv"); +    glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadTransposeMatrixf"); +    glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadTransposeMatrixd"); +    glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)GLH_EXT_GET_PROC_ADDRESS("glMultTransposeMatrixf"); +    glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)GLH_EXT_GET_PROC_ADDRESS("glMultTransposeMatrixd"); + +    // GL_VERSION_1_4 +    glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendFuncSeparate"); +    glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawArrays"); +    glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawElements"); +    glPointParameterf = (PFNGLPOINTPARAMETERFPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterf"); +    glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfv"); +    glPointParameteri = (PFNGLPOINTPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameteri"); +    glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameteriv"); +    glFogCoordf = (PFNGLFOGCOORDFPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordf"); +    glFogCoordfv = (PFNGLFOGCOORDFVPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordfv"); +    glFogCoordd = (PFNGLFOGCOORDDPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordd"); +    glFogCoorddv = (PFNGLFOGCOORDDVPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoorddv"); +    glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordPointer"); +    glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3b"); +    glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3bv"); +    glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3d"); +    glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3dv"); +    glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3f"); +    glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3fv"); +    glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3i"); +    glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3iv"); +    glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3s"); +    glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3sv"); +    glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ub"); +    glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ubv"); +    glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ui"); +    glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3uiv"); +    glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3us"); +    glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3usv"); +    glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColorPointer"); +    glWindowPos2d = (PFNGLWINDOWPOS2DPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2d"); +    glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2dv"); +    glWindowPos2f = (PFNGLWINDOWPOS2FPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2f"); +    glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2fv"); +    glWindowPos2i = (PFNGLWINDOWPOS2IPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2i"); +    glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2iv"); +    glWindowPos2s = (PFNGLWINDOWPOS2SPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2s"); +    glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos2sv"); +    glWindowPos3d = (PFNGLWINDOWPOS3DPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3d"); +    glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3dv"); +    glWindowPos3f = (PFNGLWINDOWPOS3FPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3f"); +    glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3fv"); +    glWindowPos3i = (PFNGLWINDOWPOS3IPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3i"); +    glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3iv"); +    glWindowPos3s = (PFNGLWINDOWPOS3SPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3s"); +    glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)GLH_EXT_GET_PROC_ADDRESS("glWindowPos3sv"); + +    // GL_VERSION_1_5 +    glGenQueries = (PFNGLGENQUERIESPROC)GLH_EXT_GET_PROC_ADDRESS("glGenQueries"); +    glDeleteQueries = (PFNGLDELETEQUERIESPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteQueries"); +    glIsQuery = (PFNGLISQUERYPROC)GLH_EXT_GET_PROC_ADDRESS("glIsQuery"); +    glBeginQuery = (PFNGLBEGINQUERYPROC)GLH_EXT_GET_PROC_ADDRESS("glBeginQuery"); +    glEndQuery = (PFNGLENDQUERYPROC)GLH_EXT_GET_PROC_ADDRESS("glEndQuery"); +    glGetQueryiv = (PFNGLGETQUERYIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryiv"); +    glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectiv"); +    glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectuiv"); +    glBindBuffer = (PFNGLBINDBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBuffer"); +    glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteBuffers"); +    glGenBuffers = (PFNGLGENBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glGenBuffers"); +    glIsBuffer = (PFNGLISBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glIsBuffer"); +    glBufferData = (PFNGLBUFFERDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferData"); +    glBufferSubData = (PFNGLBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferSubData"); +    glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferSubData"); +    glMapBuffer = (PFNGLMAPBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glMapBuffer"); +    glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glUnmapBuffer"); +    glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferParameteriv"); +    glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferPointerv"); + +    // GL_VERSION_2_0 +    glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquationSeparate"); +    glDrawBuffers = (PFNGLDRAWBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawBuffers"); +    glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)GLH_EXT_GET_PROC_ADDRESS("glStencilOpSeparate"); +    glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)GLH_EXT_GET_PROC_ADDRESS("glStencilFuncSeparate"); +    glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)GLH_EXT_GET_PROC_ADDRESS("glStencilMaskSeparate"); +    glAttachShader = (PFNGLATTACHSHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glAttachShader"); +    glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glBindAttribLocation"); +    glCompileShader = (PFNGLCOMPILESHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glCompileShader"); +    glCreateProgram = (PFNGLCREATEPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateProgram"); +    glCreateShader = (PFNGLCREATESHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateShader"); +    glDeleteProgram = (PFNGLDELETEPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteProgram"); +    glDeleteShader = (PFNGLDELETESHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteShader"); +    glDetachShader = (PFNGLDETACHSHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glDetachShader"); +    glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)GLH_EXT_GET_PROC_ADDRESS("glDisableVertexAttribArray"); +    glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)GLH_EXT_GET_PROC_ADDRESS("glEnableVertexAttribArray"); +    glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveAttrib"); +    glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniform"); +    glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)GLH_EXT_GET_PROC_ADDRESS("glGetAttachedShaders"); +    glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glGetAttribLocation"); +    glGetProgramiv = (PFNGLGETPROGRAMIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramiv"); +    glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramInfoLog"); +    glGetShaderiv = (PFNGLGETSHADERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetShaderiv"); +    glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)GLH_EXT_GET_PROC_ADDRESS("glGetShaderInfoLog"); +    glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetShaderSource"); +    glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformLocation"); +    glGetUniformfv = (PFNGLGETUNIFORMFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformfv"); +    glGetUniformiv = (PFNGLGETUNIFORMIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformiv"); +    glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdv"); +    glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfv"); +    glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribiv"); +    glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribPointerv"); +    glIsProgram = (PFNGLISPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glIsProgram"); +    glIsShader = (PFNGLISSHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glIsShader"); +    glLinkProgram = (PFNGLLINKPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glLinkProgram"); +    glShaderSource = (PFNGLSHADERSOURCEPROC)GLH_EXT_GET_PROC_ADDRESS("glShaderSource"); +    glUseProgram = (PFNGLUSEPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glUseProgram"); +    glUniform1f = (PFNGLUNIFORM1FPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1f"); +    glUniform2f = (PFNGLUNIFORM2FPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2f"); +    glUniform3f = (PFNGLUNIFORM3FPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3f"); +    glUniform4f = (PFNGLUNIFORM4FPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4f"); +    glUniform1i = (PFNGLUNIFORM1IPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1i"); +    glUniform2i = (PFNGLUNIFORM2IPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2i"); +    glUniform3i = (PFNGLUNIFORM3IPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3i"); +    glUniform4i = (PFNGLUNIFORM4IPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4i"); +    glUniform1fv = (PFNGLUNIFORM1FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1fv"); +    glUniform2fv = (PFNGLUNIFORM2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2fv"); +    glUniform3fv = (PFNGLUNIFORM3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3fv"); +    glUniform4fv = (PFNGLUNIFORM4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4fv"); +    glUniform1iv = (PFNGLUNIFORM1IVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1iv"); +    glUniform2iv = (PFNGLUNIFORM2IVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2iv"); +    glUniform3iv = (PFNGLUNIFORM3IVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3iv"); +    glUniform4iv = (PFNGLUNIFORM4IVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4iv"); +    glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2fv"); +    glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3fv"); +    glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4fv"); +    glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glValidateProgram"); +    glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1d"); +    glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dv"); +    glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1f"); +    glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fv"); +    glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1s"); +    glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sv"); +    glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2d"); +    glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dv"); +    glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2f"); +    glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fv"); +    glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2s"); +    glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sv"); +    glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3d"); +    glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dv"); +    glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3f"); +    glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fv"); +    glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3s"); +    glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sv"); +    glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Nbv"); +    glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Niv"); +    glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Nsv"); +    glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Nub"); +    glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Nubv"); +    glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Nuiv"); +    glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4Nusv"); +    glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4bv"); +    glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4d"); +    glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dv"); +    glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4f"); +    glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fv"); +    glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4iv"); +    glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4s"); +    glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sv"); +    glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubv"); +    glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4uiv"); +    glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4usv"); +    glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointer"); + +    // GL_VERSION_2_1 +    glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2x3fv"); +    glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3x2fv"); +    glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2x4fv"); +    glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4x2fv"); +    glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3x4fv"); +    glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4x3fv"); + +    // GL_VERSION_3_0 +    glColorMaski = (PFNGLCOLORMASKIPROC)GLH_EXT_GET_PROC_ADDRESS("glColorMaski"); +    glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBooleani_v"); +    glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetIntegeri_v"); +    glEnablei = (PFNGLENABLEIPROC)GLH_EXT_GET_PROC_ADDRESS("glEnablei"); +    glDisablei = (PFNGLDISABLEIPROC)GLH_EXT_GET_PROC_ADDRESS("glDisablei"); +    glIsEnabledi = (PFNGLISENABLEDIPROC)GLH_EXT_GET_PROC_ADDRESS("glIsEnabledi"); +    glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glBeginTransformFeedback"); +    glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glEndTransformFeedback"); +    glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBufferRange"); +    glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBufferBase"); +    glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)GLH_EXT_GET_PROC_ADDRESS("glTransformFeedbackVaryings"); +    glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTransformFeedbackVarying"); +    glClampColor = (PFNGLCLAMPCOLORPROC)GLH_EXT_GET_PROC_ADDRESS("glClampColor"); +    glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)GLH_EXT_GET_PROC_ADDRESS("glBeginConditionalRender"); +    glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)GLH_EXT_GET_PROC_ADDRESS("glEndConditionalRender"); +    glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribIPointer"); +    glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribIiv"); +    glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribIuiv"); +    glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI1i"); +    glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI2i"); +    glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI3i"); +    glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4i"); +    glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI1ui"); +    glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI2ui"); +    glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI3ui"); +    glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4ui"); +    glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI1iv"); +    glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI2iv"); +    glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI3iv"); +    glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4iv"); +    glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI1uiv"); +    glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI2uiv"); +    glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI3uiv"); +    glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4uiv"); +    glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4bv"); +    glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4sv"); +    glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4ubv"); +    glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribI4usv"); +    glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformuiv"); +    glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glBindFragDataLocation"); +    glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFragDataLocation"); +    glUniform1ui = (PFNGLUNIFORM1UIPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1ui"); +    glUniform2ui = (PFNGLUNIFORM2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2ui"); +    glUniform3ui = (PFNGLUNIFORM3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3ui"); +    glUniform4ui = (PFNGLUNIFORM4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4ui"); +    glUniform1uiv = (PFNGLUNIFORM1UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1uiv"); +    glUniform2uiv = (PFNGLUNIFORM2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2uiv"); +    glUniform3uiv = (PFNGLUNIFORM3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3uiv"); +    glUniform4uiv = (PFNGLUNIFORM4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4uiv"); +    glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTexParameterIiv"); +    glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTexParameterIuiv"); +    glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTexParameterIiv"); +    glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTexParameterIuiv"); +    glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glClearBufferiv"); +    glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glClearBufferuiv"); +    glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glClearBufferfv"); +    glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)GLH_EXT_GET_PROC_ADDRESS("glClearBufferfi"); +    glGetStringi = (PFNGLGETSTRINGIPROC)GLH_EXT_GET_PROC_ADDRESS("glGetStringi"); +    glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glIsRenderbuffer"); +    glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glBindRenderbuffer"); +    glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffers"); +    glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glGenRenderbuffers"); +    glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorage"); +    glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetRenderbufferParameteriv"); +    glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glIsFramebuffer"); +    glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glBindFramebuffer"); +    glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteFramebuffers"); +    glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glGenFramebuffers"); +    glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)GLH_EXT_GET_PROC_ADDRESS("glCheckFramebufferStatus"); +    glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture1D"); +    glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture2D"); +    glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture3D"); +    glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferRenderbuffer"); +    glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameteriv"); +    glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmap"); +    glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glBlitFramebuffer"); +    glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageMultisample"); +    glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferTextureLayer"); +    glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glMapBufferRange"); +    glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glFlushMappedBufferRange"); +    glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)GLH_EXT_GET_PROC_ADDRESS("glBindVertexArray"); +    glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteVertexArrays"); +    glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)GLH_EXT_GET_PROC_ADDRESS("glGenVertexArrays"); +    glIsVertexArray = (PFNGLISVERTEXARRAYPROC)GLH_EXT_GET_PROC_ADDRESS("glIsVertexArray"); + +    // GL_VERSION_3_1 +    glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawArraysInstanced"); +    glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawElementsInstanced"); +    glTexBuffer = (PFNGLTEXBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glTexBuffer"); +    glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glPrimitiveRestartIndex"); +    glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyBufferSubData"); +    glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformIndices"); +    glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformsiv"); +    glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformName"); +    glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformBlockIndex"); +    glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformBlockiv"); +    glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformBlockName"); +    glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformBlockBinding"); + +    // GL_VERSION_3_2 +    glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawElementsBaseVertex"); +    glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElementsBaseVertex"); +    glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawElementsInstancedBaseVertex"); +    glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawElementsBaseVertex"); +    glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)GLH_EXT_GET_PROC_ADDRESS("glProvokingVertex"); +    glFenceSync = (PFNGLFENCESYNCPROC)GLH_EXT_GET_PROC_ADDRESS("glFenceSync"); +    glIsSync = (PFNGLISSYNCPROC)GLH_EXT_GET_PROC_ADDRESS("glIsSync"); +    glDeleteSync = (PFNGLDELETESYNCPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteSync"); +    glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)GLH_EXT_GET_PROC_ADDRESS("glClientWaitSync"); +    glWaitSync = (PFNGLWAITSYNCPROC)GLH_EXT_GET_PROC_ADDRESS("glWaitSync"); +    glGetInteger64v = (PFNGLGETINTEGER64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetInteger64v"); +    glGetSynciv = (PFNGLGETSYNCIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSynciv"); +    glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetInteger64i_v"); +    glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferParameteri64v"); +    glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture"); +    glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage2DMultisample"); +    glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage3DMultisample"); +    glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMultisamplefv"); +    glSampleMaski = (PFNGLSAMPLEMASKIPROC)GLH_EXT_GET_PROC_ADDRESS("glSampleMaski"); + +    // GL_VERSION_3_3 +    glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)GLH_EXT_GET_PROC_ADDRESS("glBindFragDataLocationIndexed"); +    glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFragDataIndex"); +    glGenSamplers = (PFNGLGENSAMPLERSPROC)GLH_EXT_GET_PROC_ADDRESS("glGenSamplers"); +    glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteSamplers"); +    glIsSampler = (PFNGLISSAMPLERPROC)GLH_EXT_GET_PROC_ADDRESS("glIsSampler"); +    glBindSampler = (PFNGLBINDSAMPLERPROC)GLH_EXT_GET_PROC_ADDRESS("glBindSampler"); +    glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glSamplerParameteri"); +    glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glSamplerParameteriv"); +    glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)GLH_EXT_GET_PROC_ADDRESS("glSamplerParameterf"); +    glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glSamplerParameterfv"); +    glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glSamplerParameterIiv"); +    glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glSamplerParameterIuiv"); +    glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSamplerParameteriv"); +    glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSamplerParameterIiv"); +    glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSamplerParameterfv"); +    glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSamplerParameterIuiv"); +    glQueryCounter = (PFNGLQUERYCOUNTERPROC)GLH_EXT_GET_PROC_ADDRESS("glQueryCounter"); +    glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjecti64v"); +    glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectui64v"); +    glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribDivisor"); +    glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP1ui"); +    glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP1uiv"); +    glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP2ui"); +    glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP2uiv"); +    glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP3ui"); +    glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP3uiv"); +    glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP4ui"); +    glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribP4uiv"); +    glVertexP2ui = (PFNGLVERTEXP2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexP2ui"); +    glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexP2uiv"); +    glVertexP3ui = (PFNGLVERTEXP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexP3ui"); +    glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexP3uiv"); +    glVertexP4ui = (PFNGLVERTEXP4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexP4ui"); +    glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexP4uiv"); +    glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP1ui"); +    glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP1uiv"); +    glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP2ui"); +    glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP2uiv"); +    glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP3ui"); +    glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP3uiv"); +    glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP4ui"); +    glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordP4uiv"); +    glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP1ui"); +    glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP1uiv"); +    glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP2ui"); +    glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP2uiv"); +    glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP3ui"); +    glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP3uiv"); +    glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP4ui"); +    glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoordP4uiv"); +    glNormalP3ui = (PFNGLNORMALP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glNormalP3ui"); +    glNormalP3uiv = (PFNGLNORMALP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glNormalP3uiv"); +    glColorP3ui = (PFNGLCOLORP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glColorP3ui"); +    glColorP3uiv = (PFNGLCOLORP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glColorP3uiv"); +    glColorP4ui = (PFNGLCOLORP4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glColorP4ui"); +    glColorP4uiv = (PFNGLCOLORP4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glColorP4uiv"); +    glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColorP3ui"); +    glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColorP3uiv"); + +    // GL_VERSION_4_0 +    glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)GLH_EXT_GET_PROC_ADDRESS("glMinSampleShading"); +    glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquationi"); +    glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquationSeparatei"); +    glBlendFunci = (PFNGLBLENDFUNCIPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendFunci"); +    glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendFuncSeparatei"); +    glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawArraysIndirect"); +    glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawElementsIndirect"); +    glUniform1d = (PFNGLUNIFORM1DPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1d"); +    glUniform2d = (PFNGLUNIFORM2DPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2d"); +    glUniform3d = (PFNGLUNIFORM3DPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3d"); +    glUniform4d = (PFNGLUNIFORM4DPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4d"); +    glUniform1dv = (PFNGLUNIFORM1DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform1dv"); +    glUniform2dv = (PFNGLUNIFORM2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform2dv"); +    glUniform3dv = (PFNGLUNIFORM3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform3dv"); +    glUniform4dv = (PFNGLUNIFORM4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniform4dv"); +    glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2dv"); +    glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3dv"); +    glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4dv"); +    glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2x3dv"); +    glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2x4dv"); +    glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3x2dv"); +    glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3x4dv"); +    glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4x2dv"); +    glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4x3dv"); +    glGetUniformdv = (PFNGLGETUNIFORMDVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformdv"); +    glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSubroutineUniformLocation"); +    glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetSubroutineIndex"); +    glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveSubroutineUniformiv"); +    glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveSubroutineUniformName"); +    glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveSubroutineName"); +    glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glUniformSubroutinesuiv"); +    glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetUniformSubroutineuiv"); +    glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramStageiv"); +    glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glPatchParameteri"); +    glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glPatchParameterfv"); +    glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glBindTransformFeedback"); +    glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteTransformFeedbacks"); +    glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)GLH_EXT_GET_PROC_ADDRESS("glGenTransformFeedbacks"); +    glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glIsTransformFeedback"); +    glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glPauseTransformFeedback"); +    glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glResumeTransformFeedback"); +    glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawTransformFeedback"); +    glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawTransformFeedbackStream"); +    glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)GLH_EXT_GET_PROC_ADDRESS("glBeginQueryIndexed"); +    glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)GLH_EXT_GET_PROC_ADDRESS("glEndQueryIndexed"); +    glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryIndexediv"); + +    // GL_VERSION_4_1 +    glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)GLH_EXT_GET_PROC_ADDRESS("glReleaseShaderCompiler"); +    glShaderBinary = (PFNGLSHADERBINARYPROC)GLH_EXT_GET_PROC_ADDRESS("glShaderBinary"); +    glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glGetShaderPrecisionFormat"); +    glDepthRangef = (PFNGLDEPTHRANGEFPROC)GLH_EXT_GET_PROC_ADDRESS("glDepthRangef"); +    glClearDepthf = (PFNGLCLEARDEPTHFPROC)GLH_EXT_GET_PROC_ADDRESS("glClearDepthf"); +    glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramBinary"); +    glProgramBinary = (PFNGLPROGRAMBINARYPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramBinary"); +    glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameteri"); +    glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)GLH_EXT_GET_PROC_ADDRESS("glUseProgramStages"); +    glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glActiveShaderProgram"); +    glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateShaderProgramv"); +    glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)GLH_EXT_GET_PROC_ADDRESS("glBindProgramPipeline"); +    glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramPipelines"); +    glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)GLH_EXT_GET_PROC_ADDRESS("glGenProgramPipelines"); +    glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)GLH_EXT_GET_PROC_ADDRESS("glIsProgramPipeline"); +    glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramPipelineiv"); +    glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1i"); +    glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1iv"); +    glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1f"); +    glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1fv"); +    glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1d"); +    glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1dv"); +    glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1ui"); +    glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform1uiv"); +    glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2i"); +    glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2iv"); +    glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2f"); +    glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2fv"); +    glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2d"); +    glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2dv"); +    glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2ui"); +    glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform2uiv"); +    glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3i"); +    glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3iv"); +    glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3f"); +    glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3fv"); +    glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3d"); +    glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3dv"); +    glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3ui"); +    glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform3uiv"); +    glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4i"); +    glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4iv"); +    glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4f"); +    glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4fv"); +    glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4d"); +    glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4dv"); +    glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4ui"); +    glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniform4uiv"); +    glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix2fv"); +    glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix3fv"); +    glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix4fv"); +    glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix2dv"); +    glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix3dv"); +    glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix4dv"); +    glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix2x3fv"); +    glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix3x2fv"); +    glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix2x4fv"); +    glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix4x2fv"); +    glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix3x4fv"); +    glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix4x3fv"); +    glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix2x3dv"); +    glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix3x2dv"); +    glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix2x4dv"); +    glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix4x2dv"); +    glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix3x4dv"); +    glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramUniformMatrix4x3dv"); +    glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)GLH_EXT_GET_PROC_ADDRESS("glValidateProgramPipeline"); +    glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramPipelineInfoLog"); +    glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL1d"); +    glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL2d"); +    glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL3d"); +    glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL4d"); +    glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL1dv"); +    glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL2dv"); +    glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL3dv"); +    glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribL4dv"); +    glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribLPointer"); +    glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribLdv"); +    glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)GLH_EXT_GET_PROC_ADDRESS("glViewportArrayv"); +    glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)GLH_EXT_GET_PROC_ADDRESS("glViewportIndexedf"); +    glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)GLH_EXT_GET_PROC_ADDRESS("glViewportIndexedfv"); +    glScissorArrayv = (PFNGLSCISSORARRAYVPROC)GLH_EXT_GET_PROC_ADDRESS("glScissorArrayv"); +    glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)GLH_EXT_GET_PROC_ADDRESS("glScissorIndexed"); +    glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)GLH_EXT_GET_PROC_ADDRESS("glScissorIndexedv"); +    glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)GLH_EXT_GET_PROC_ADDRESS("glDepthRangeArrayv"); +    glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)GLH_EXT_GET_PROC_ADDRESS("glDepthRangeIndexed"); +    glGetFloati_v = (PFNGLGETFLOATI_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFloati_v"); +    glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetDoublei_v"); + +    // GL_VERSION_4_2 +    glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawArraysInstancedBaseInstance"); +    glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawElementsInstancedBaseInstance"); +    glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawElementsInstancedBaseVertexBaseInstance"); +    glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetInternalformativ"); +    glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetActiveAtomicCounterBufferiv"); +    glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)GLH_EXT_GET_PROC_ADDRESS("glBindImageTexture"); +    glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)GLH_EXT_GET_PROC_ADDRESS("glMemoryBarrier"); +    glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexStorage1D"); +    glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexStorage2D"); +    glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexStorage3D"); +    glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawTransformFeedbackInstanced"); +    glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawTransformFeedbackStreamInstanced"); + +    // GL_VERSION_4_3 +    glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glClearBufferData"); +    glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glClearBufferSubData"); +    glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)GLH_EXT_GET_PROC_ADDRESS("glDispatchCompute"); +    glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)GLH_EXT_GET_PROC_ADDRESS("glDispatchComputeIndirect"); +    glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyImageSubData"); +    glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glFramebufferParameteri"); +    glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferParameteriv"); +    glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetInternalformati64v"); +    glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateTexSubImage"); +    glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateTexImage"); +    glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateBufferSubData"); +    glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateBufferData"); +    glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateFramebuffer"); +    glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateSubFramebuffer"); +    glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawArraysIndirect"); +    glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawElementsIndirect"); +    glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramInterfaceiv"); +    glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramResourceIndex"); +    glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramResourceName"); +    glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramResourceiv"); +    glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramResourceLocation"); +    glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramResourceLocationIndex"); +    glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)GLH_EXT_GET_PROC_ADDRESS("glShaderStorageBlockBinding"); +    glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glTexBufferRange"); +    glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glTexStorage2DMultisample"); +    glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glTexStorage3DMultisample"); +    glTextureView = (PFNGLTEXTUREVIEWPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureView"); +    glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glBindVertexBuffer"); +    glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribFormat"); +    glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribIFormat"); +    glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribLFormat"); +    glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribBinding"); +    glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexBindingDivisor"); +    glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)GLH_EXT_GET_PROC_ADDRESS("glDebugMessageControl"); +    glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)GLH_EXT_GET_PROC_ADDRESS("glDebugMessageInsert"); +    glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)GLH_EXT_GET_PROC_ADDRESS("glDebugMessageCallback"); +    glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)GLH_EXT_GET_PROC_ADDRESS("glGetDebugMessageLog"); +    glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)GLH_EXT_GET_PROC_ADDRESS("glPushDebugGroup"); +    glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)GLH_EXT_GET_PROC_ADDRESS("glPopDebugGroup"); +    glObjectLabel = (PFNGLOBJECTLABELPROC)GLH_EXT_GET_PROC_ADDRESS("glObjectLabel"); +    glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)GLH_EXT_GET_PROC_ADDRESS("glGetObjectLabel"); +    glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)GLH_EXT_GET_PROC_ADDRESS("glObjectPtrLabel"); +    glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)GLH_EXT_GET_PROC_ADDRESS("glGetObjectPtrLabel"); + +    // GL_VERSION_4_4 +    glBufferStorage = (PFNGLBUFFERSTORAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferStorage"); +    glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glClearTexImage"); +    glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glClearTexSubImage"); +    glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBuffersBase"); +    glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBuffersRange"); +    glBindTextures = (PFNGLBINDTEXTURESPROC)GLH_EXT_GET_PROC_ADDRESS("glBindTextures"); +    glBindSamplers = (PFNGLBINDSAMPLERSPROC)GLH_EXT_GET_PROC_ADDRESS("glBindSamplers"); +    glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)GLH_EXT_GET_PROC_ADDRESS("glBindImageTextures"); +    glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glBindVertexBuffers"); + +    // GL_VERSION_4_5 +    glClipControl = (PFNGLCLIPCONTROLPROC)GLH_EXT_GET_PROC_ADDRESS("glClipControl"); +    glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateTransformFeedbacks"); +    glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)GLH_EXT_GET_PROC_ADDRESS("glTransformFeedbackBufferBase"); +    glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glTransformFeedbackBufferRange"); +    glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTransformFeedbackiv"); +    glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTransformFeedbacki_v"); +    glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTransformFeedbacki64_v"); +    glCreateBuffers = (PFNGLCREATEBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateBuffers"); +    glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedBufferStorage"); +    glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedBufferData"); +    glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedBufferSubData"); +    glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyNamedBufferSubData"); +    glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glClearNamedBufferData"); +    glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glClearNamedBufferSubData"); +    glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glMapNamedBuffer"); +    glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glMapNamedBufferRange"); +    glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glUnmapNamedBuffer"); +    glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glFlushMappedNamedBufferRange"); +    glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedBufferParameteriv"); +    glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedBufferParameteri64v"); +    glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedBufferPointerv"); +    glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedBufferSubData"); +    glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateFramebuffers"); +    glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferRenderbuffer"); +    glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferParameteri"); +    glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferTexture"); +    glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferTextureLayer"); +    glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferDrawBuffer"); +    glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferDrawBuffers"); +    glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedFramebufferReadBuffer"); +    glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateNamedFramebufferData"); +    glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)GLH_EXT_GET_PROC_ADDRESS("glInvalidateNamedFramebufferSubData"); +    glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glClearNamedFramebufferiv"); +    glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glClearNamedFramebufferuiv"); +    glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glClearNamedFramebufferfv"); +    glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)GLH_EXT_GET_PROC_ADDRESS("glClearNamedFramebufferfi"); +    glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glBlitNamedFramebuffer"); +    glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)GLH_EXT_GET_PROC_ADDRESS("glCheckNamedFramebufferStatus"); +    glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedFramebufferParameteriv"); +    glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedFramebufferAttachmentParameteriv"); +    glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateRenderbuffers"); +    glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedRenderbufferStorage"); +    glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glNamedRenderbufferStorageMultisample"); +    glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetNamedRenderbufferParameteriv"); +    glCreateTextures = (PFNGLCREATETEXTURESPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateTextures"); +    glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureBuffer"); +    glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureBufferRange"); +    glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureStorage1D"); +    glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureStorage2D"); +    glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureStorage3D"); +    glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureStorage2DMultisample"); +    glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureStorage3DMultisample"); +    glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureSubImage1D"); +    glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureSubImage2D"); +    glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureSubImage3D"); +    glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTextureSubImage1D"); +    glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTextureSubImage2D"); +    glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTextureSubImage3D"); +    glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyTextureSubImage1D"); +    glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyTextureSubImage2D"); +    glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyTextureSubImage3D"); +    glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureParameterf"); +    glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureParameterfv"); +    glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureParameteri"); +    glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureParameterIiv"); +    glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureParameterIuiv"); +    glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureParameteriv"); +    glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)GLH_EXT_GET_PROC_ADDRESS("glGenerateTextureMipmap"); +    glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)GLH_EXT_GET_PROC_ADDRESS("glBindTextureUnit"); +    glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureImage"); +    glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCompressedTextureImage"); +    glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureLevelParameterfv"); +    glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureLevelParameteriv"); +    glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureParameterfv"); +    glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureParameterIiv"); +    glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureParameterIuiv"); +    glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureParameteriv"); +    glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateVertexArrays"); +    glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)GLH_EXT_GET_PROC_ADDRESS("glDisableVertexArrayAttrib"); +    glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)GLH_EXT_GET_PROC_ADDRESS("glEnableVertexArrayAttrib"); +    glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayElementBuffer"); +    glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayVertexBuffer"); +    glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayVertexBuffers"); +    glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayAttribBinding"); +    glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayAttribFormat"); +    glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayAttribIFormat"); +    glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayAttribLFormat"); +    glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayBindingDivisor"); +    glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexArrayiv"); +    glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexArrayIndexediv"); +    glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexArrayIndexed64iv"); +    glCreateSamplers = (PFNGLCREATESAMPLERSPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateSamplers"); +    glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateProgramPipelines"); +    glCreateQueries = (PFNGLCREATEQUERIESPROC)GLH_EXT_GET_PROC_ADDRESS("glCreateQueries"); +    glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryBufferObjecti64v"); +    glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryBufferObjectiv"); +    glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryBufferObjectui64v"); +    glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryBufferObjectuiv"); +    glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)GLH_EXT_GET_PROC_ADDRESS("glMemoryBarrierByRegion"); +    glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTextureSubImage"); +    glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCompressedTextureSubImage"); +    glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)GLH_EXT_GET_PROC_ADDRESS("glGetGraphicsResetStatus"); +    glGetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnCompressedTexImage"); +    glGetnTexImage = (PFNGLGETNTEXIMAGEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnTexImage"); +    glGetnUniformdv = (PFNGLGETNUNIFORMDVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnUniformdv"); +    glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnUniformfv"); +    glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnUniformiv"); +    glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnUniformuiv"); +    glReadnPixels = (PFNGLREADNPIXELSPROC)GLH_EXT_GET_PROC_ADDRESS("glReadnPixels"); +    glGetnMapdv = (PFNGLGETNMAPDVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnMapdv"); +    glGetnMapfv = (PFNGLGETNMAPFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnMapfv"); +    glGetnMapiv = (PFNGLGETNMAPIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnMapiv"); +    glGetnPixelMapfv = (PFNGLGETNPIXELMAPFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnPixelMapfv"); +    glGetnPixelMapuiv = (PFNGLGETNPIXELMAPUIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnPixelMapuiv"); +    glGetnPixelMapusv = (PFNGLGETNPIXELMAPUSVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnPixelMapusv"); +    glGetnPolygonStipple = (PFNGLGETNPOLYGONSTIPPLEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnPolygonStipple"); +    glGetnColorTable = (PFNGLGETNCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnColorTable"); +    glGetnConvolutionFilter = (PFNGLGETNCONVOLUTIONFILTERPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnConvolutionFilter"); +    glGetnSeparableFilter = (PFNGLGETNSEPARABLEFILTERPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnSeparableFilter"); +    glGetnHistogram = (PFNGLGETNHISTOGRAMPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnHistogram"); +    glGetnMinmax = (PFNGLGETNMINMAXPROC)GLH_EXT_GET_PROC_ADDRESS("glGetnMinmax"); +    glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)GLH_EXT_GET_PROC_ADDRESS("glTextureBarrier"); + +    // GL_VERSION_4_6 +    glSpecializeShader = (PFNGLSPECIALIZESHADERPROC)GLH_EXT_GET_PROC_ADDRESS("glSpecializeShader"); +    glMultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawArraysIndirectCount"); +    glMultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiDrawElementsIndirectCount"); +    glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)GLH_EXT_GET_PROC_ADDRESS("glPolygonOffsetClamp"); +          LL_DEBUGS("RenderInit") << "GL Probe: Got symbols" << LL_ENDL;  #endif diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index 6e2dbd24f9..f2b51fbafb 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -83,8 +83,8 @@  #if LL_LINUX_NV_GL_HEADERS  // Missing functions when using nvidia headers: -extern PFNGLACTIVETEXTUREARBPROC	glActiveTextureARB; -extern PFNGLCLIENTACTIVETEXTUREARBPROC	glClientActiveTextureARB; +extern PFNGLACTIVETEXTUREPROC	glActiveTexture; +extern PFNGLCLIENTACTIVETEXTUREPROC	glClientActiveTexture;  extern PFNGLDRAWRANGEELEMENTSPROC 	glDrawRangeElements;  #endif // LL_LINUX_NV_GL_HEADERS @@ -95,17 +95,17 @@ extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;  extern PFNGLISVERTEXARRAYPROC glIsVertexArray;  // GL_ARB_vertex_buffer_object -extern PFNGLBINDBUFFERARBPROC		glBindBufferARB; -extern PFNGLDELETEBUFFERSARBPROC	glDeleteBuffersARB; -extern PFNGLGENBUFFERSARBPROC		glGenBuffersARB; -extern PFNGLISBUFFERARBPROC			glIsBufferARB; -extern PFNGLBUFFERDATAARBPROC		glBufferDataARB; -extern PFNGLBUFFERSUBDATAARBPROC	glBufferSubDataARB; -extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB; -extern PFNGLMAPBUFFERARBPROC		glMapBufferARB; -extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB; -extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB; -extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB; +extern PFNGLBINDBUFFERPROC		glBindBuffer; +extern PFNGLDELETEBUFFERSPROC	glDeleteBuffers; +extern PFNGLGENBUFFERSPROC		glGenBuffers; +extern PFNGLISBUFFERPROC			glIsBuffer; +extern PFNGLBUFFERDATAPROC		glBufferData; +extern PFNGLBUFFERSUBDATAPROC	glBufferSubData; +extern PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData; +extern PFNGLMAPBUFFERPROC		glMapBuffer; +extern PFNGLUNMAPBUFFERPROC		glUnmapBuffer; +extern PFNGLGETBUFFERPARAMETERIVPROC	glGetBufferParameteriv; +extern PFNGLGETBUFFERPOINTERVPROC	glGetBufferPointerv;  // GL_ARB_sync  extern PFNGLFENCESYNCPROC				glFenceSync; @@ -140,14 +140,14 @@ extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC	glGetVariantArrayObjectfvATI;  extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC	glGetVariantArrayObjectivATI;  // GL_ARB_occlusion_query -extern PFNGLGENQUERIESARBPROC glGenQueriesARB; -extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB; -extern PFNGLISQUERYARBPROC glIsQueryARB; -extern PFNGLBEGINQUERYARBPROC glBeginQueryARB; -extern PFNGLENDQUERYARBPROC glEndQueryARB; -extern PFNGLGETQUERYIVARBPROC glGetQueryivARB; -extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB; -extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB; +extern PFNGLGENQUERIESPROC glGenQueries; +extern PFNGLDELETEQUERIESPROC glDeleteQueries; +extern PFNGLISQUERYPROC glIsQuery; +extern PFNGLBEGINQUERYPROC glBeginQuery; +extern PFNGLENDQUERYPROC glEndQuery; +extern PFNGLGETQUERYIVPROC glGetQueryiv; +extern PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv; +extern PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;  // GL_ARB_timer_query  extern PFNGLQUERYCOUNTERPROC glQueryCounter; @@ -155,121 +155,121 @@ extern PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;  extern PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;  // GL_ARB_point_parameters -extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB; -extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB; +extern PFNGLPOINTPARAMETERFPROC glPointParameterf; +extern PFNGLPOINTPARAMETERFVPROC glPointParameterfv;  // GL_ARB_shader_objects -extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; -extern PFNGLGETHANDLEARBPROC glGetHandleARB; -extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB; -extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; -extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; -extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; -extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; -extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; -extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; -extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB; -extern PFNGLUNIFORM1FARBPROC glUniform1fARB; -extern PFNGLUNIFORM2FARBPROC glUniform2fARB; -extern PFNGLUNIFORM3FARBPROC glUniform3fARB; -extern PFNGLUNIFORM4FARBPROC glUniform4fARB; -extern PFNGLUNIFORM1IARBPROC glUniform1iARB; -extern PFNGLUNIFORM2IARBPROC glUniform2iARB; -extern PFNGLUNIFORM3IARBPROC glUniform3iARB; -extern PFNGLUNIFORM4IARBPROC glUniform4iARB; -extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB; -extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB; -extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB; -extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB; -extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB; -extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB; -extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB; -extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB; -extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB; -extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB; +extern PFNGLDELETEOBJECTPROC glDeleteObject; +extern PFNGLGETHANDLEPROC glGetHandle; +extern PFNGLDETACHOBJECTPROC glDetachObject; +extern PFNGLCREATESHADEROBJECTPROC glCreateShaderObject; +extern PFNGLSHADERSOURCEPROC glShaderSource; +extern PFNGLCOMPILESHADERPROC glCompileShader; +extern PFNGLCREATEPROGRAMOBJECTPROC glCreateProgramObject; +extern PFNGLATTACHOBJECTPROC glAttachObject; +extern PFNGLLINKPROGRAMPROC glLinkProgram; +extern PFNGLUSEPROGRAMOBJECTPROC glUseProgramObject; +extern PFNGLVALIDATEPROGRAMPROC glValidateProgram; +extern PFNGLUNIFORM1FPROC glUniform1f; +extern PFNGLUNIFORM2FPROC glUniform2f; +extern PFNGLUNIFORM3FPROC glUniform3f; +extern PFNGLUNIFORM4FPROC glUniform4f; +extern PFNGLUNIFORM1IPROC glUniform1i; +extern PFNGLUNIFORM2IPROC glUniform2i; +extern PFNGLUNIFORM3IPROC glUniform3i; +extern PFNGLUNIFORM4IPROC glUniform4i; +extern PFNGLUNIFORM1FVPROC glUniform1fv; +extern PFNGLUNIFORM2FVPROC glUniform2fv; +extern PFNGLUNIFORM3FVPROC glUniform3fv; +extern PFNGLUNIFORM4FVPROC glUniform4fv; +extern PFNGLUNIFORM1IVPROC glUniform1iv; +extern PFNGLUNIFORM2IVPROC glUniform2iv; +extern PFNGLUNIFORM3IVPROC glUniform3iv; +extern PFNGLUNIFORM4IVPROC glUniform4iv; +extern PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv; +extern PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;  extern PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv; -extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB; -extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB; -extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; -extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; -extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB; -extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; -extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB; -extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB; -extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB; -extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB; +extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv; +extern PFNGLGETOBJECTPARAMETERFVPROC glGetObjectParameterfv; +extern PFNGLGETOBJECTPARAMETERIVPROC glGetObjectParameteriv; +extern PFNGLGETINFOLOGPROC glGetInfoLog; +extern PFNGLGETATTACHEDOBJECTSPROC glGetAttachedObjects; +extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; +extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform; +extern PFNGLGETUNIFORMFVPROC glGetUniformfv; +extern PFNGLGETUNIFORMIVPROC glGetUniformiv; +extern PFNGLGETSHADERSOURCEPROC glGetShaderSource;  // GL_ARB_vertex_shader -extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB; -extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB; -extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB; -extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB; -extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB; -extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB; -extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB; -extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB; -extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB; -extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB; -extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB; -extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB; -extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB; -extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB; -extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB; -extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB; -extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB; -extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB; -extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB; -extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB; -extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB; -extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB; -extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB; -extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB; -extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB; -extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB; -extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB; -extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB; -extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB; -extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; -extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB; -extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB; -extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB; -extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB; -extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB; -extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB; -extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; +extern PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d; +extern PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv; +extern PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f; +extern PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv; +extern PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s; +extern PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv; +extern PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d; +extern PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv; +extern PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f; +extern PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv; +extern PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s; +extern PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv; +extern PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d; +extern PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv; +extern PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f; +extern PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv; +extern PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s; +extern PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv; +extern PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4nbv; +extern PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4niv; +extern PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4nsv; +extern PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4nub; +extern PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4nubv; +extern PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4nuiv; +extern PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4nusv; +extern PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv; +extern PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d; +extern PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv; +extern PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f; +extern PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv; +extern PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv; +extern PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s; +extern PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv; +extern PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv; +extern PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv; +extern PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv; +extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;  extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer; -extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; -extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; -extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB; -extern PFNGLBINDPROGRAMARBPROC glBindProgramARB; -extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB; -extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB; -extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB; -extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB; -extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB; -extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB; -extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB; -extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB; -extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB; -extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB; -extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB; -extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB; -extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB; -extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB; -extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB; -extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB; -extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB; -extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB; -extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB; -extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB; -extern PFNGLISPROGRAMARBPROC glIsProgramARB; -extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; -extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB; -extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; - -extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB; -extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB; +extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray; +extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray; +extern PFNGLPROGRAMSTRINGPROC glProgramString; +extern PFNGLBINDPROGRAMPROC glBindProgram; +extern PFNGLDELETEPROGRAMSPROC glDeletePrograms; +extern PFNGLGENPROGRAMSPROC glGenPrograms; +extern PFNGLPROGRAMENVPARAMETER4DPROC glProgramEnvParameter4d; +extern PFNGLPROGRAMENVPARAMETER4DVPROC glProgramEnvParameter4dv; +extern PFNGLPROGRAMENVPARAMETER4FPROC glProgramEnvParameter4f; +extern PFNGLPROGRAMENVPARAMETER4FVPROC glProgramEnvParameter4fv; +extern PFNGLPROGRAMLOCALPARAMETER4DPROC glProgramLocalParameter4d; +extern PFNGLPROGRAMLOCALPARAMETER4DVPROC glProgramLocalParameter4dv; +extern PFNGLPROGRAMLOCALPARAMETER4FPROC glProgramLocalParameter4f; +extern PFNGLPROGRAMLOCALPARAMETER4FVPROC glProgramLocalParameter4fv; +extern PFNGLGETPROGRAMENVPARAMETERDVPROC glGetProgramEnvParameterdv; +extern PFNGLGETPROGRAMENVPARAMETERFVPROC glGetProgramEnvParameterfv; +extern PFNGLGETPROGRAMLOCALPARAMETERDVPROC glGetProgramLocalParameterdv; +extern PFNGLGETPROGRAMLOCALPARAMETERFVPROC glGetProgramLocalParameterfv; +extern PFNGLGETPROGRAMIVPROC glGetProgramiv; +extern PFNGLGETPROGRAMSTRINGPROC glGetProgramString; +extern PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv; +extern PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv; +extern PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv; +extern PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv; +extern PFNGLISPROGRAMPROC glIsProgram; +extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation; +extern PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib; +extern PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation; + +extern PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D; +extern PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;  //GL_EXT_blend_func_separate  extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT; @@ -297,7 +297,7 @@ extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;  extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;  //GL_ARB_draw_buffers -extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB; +extern PFNGLDRAWBUFFERSPROC glDrawBuffers;  //GL_ARB_texture_multisample  extern PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample; @@ -312,7 +312,6 @@ extern PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;  extern PFNGLBINDBUFFERRANGEPROC glBindBufferRange;  extern PFNGLBINDBUFFERBASEPROC glBindBufferBase; -  #elif LL_WINDOWS  //----------------------------------------------------------------------------  // LL_WINDOWS @@ -328,250 +327,768 @@ extern PFNGLBINDBUFFERBASEPROC glBindBufferBase;  #include "GL/glext.h"  #include "GL/glh_extensions.h" +// WGL_AMD_gpu_association +extern PFNWGLGETGPUIDSAMDPROC                          wglGetGPUIDsAMD; +extern PFNWGLGETGPUINFOAMDPROC                         wglGetGPUInfoAMD; +extern PFNWGLGETCONTEXTGPUIDAMDPROC                    wglGetContextGPUIDAMD; +extern PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC            wglCreateAssociatedContextAMD; +extern PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC     wglCreateAssociatedContextAttribsAMD; +extern PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC            wglDeleteAssociatedContextAMD; +extern PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC       wglMakeAssociatedContextCurrentAMD; +extern PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC        wglGetCurrentAssociatedContextAMD; +extern PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC             wglBlitContextFramebufferAMD; + +// WGL_EXT_swap_control +extern PFNWGLSWAPINTERVALEXTPROC    wglSwapIntervalEXT; +extern PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT; +  // WGL_ARB_create_context  extern PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB; -extern PFNGLGETSTRINGIPROC glGetStringi; - -// GL_ARB_vertex_buffer_object -extern PFNGLBINDBUFFERARBPROC		glBindBufferARB; -extern PFNGLDELETEBUFFERSARBPROC	glDeleteBuffersARB; -extern PFNGLGENBUFFERSARBPROC		glGenBuffersARB; -extern PFNGLISBUFFERARBPROC			glIsBufferARB; -extern PFNGLBUFFERDATAARBPROC		glBufferDataARB; -extern PFNGLBUFFERSUBDATAARBPROC	glBufferSubDataARB; -extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB; -extern PFNGLMAPBUFFERARBPROC		glMapBufferARB; -extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB; -extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB; -extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB; -// GL_ARB_vertex_array_object -extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray; -extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays; -extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; -extern PFNGLISVERTEXARRAYPROC glIsVertexArray; - -// GL_ARB_sync -extern PFNGLFENCESYNCPROC				glFenceSync; -extern PFNGLISSYNCPROC					glIsSync; -extern PFNGLDELETESYNCPROC				glDeleteSync; -extern PFNGLCLIENTWAITSYNCPROC			glClientWaitSync; -extern PFNGLWAITSYNCPROC				glWaitSync; -extern PFNGLGETINTEGER64VPROC			glGetInteger64v; -extern PFNGLGETSYNCIVPROC				glGetSynciv; - -// GL_APPLE_flush_buffer_range -extern PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE; -extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE; - -// GL_ARB_map_buffer_range -extern PFNGLMAPBUFFERRANGEPROC			glMapBufferRange; -extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange; - -// GL_ATI_vertex_array_object -extern PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI; -extern PFNGLISOBJECTBUFFERATIPROC			glIsObjectBufferATI; -extern PFNGLUPDATEOBJECTBUFFERATIPROC		glUpdateObjectBufferATI; -extern PFNGLGETOBJECTBUFFERFVATIPROC		glGetObjectBufferfvATI; -extern PFNGLGETOBJECTBUFFERIVATIPROC		glGetObjectBufferivATI; -extern PFNGLFREEOBJECTBUFFERATIPROC		    glFreeObjectBufferATI; -extern PFNGLARRAYOBJECTATIPROC				glArrayObjectATI; -extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC	glVertexAttribArrayObjectATI; -extern PFNGLGETARRAYOBJECTFVATIPROC			glGetArrayObjectfvATI; -extern PFNGLGETARRAYOBJECTIVATIPROC			glGetArrayObjectivATI; -extern PFNGLVARIANTARRAYOBJECTATIPROC		glVariantObjectArrayATI; -extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC	glGetVariantArrayObjectfvATI; -extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC	glGetVariantArrayObjectivATI; - -extern PFNWGLGETGPUIDSAMDPROC				wglGetGPUIDsAMD; -extern PFNWGLGETGPUINFOAMDPROC				wglGetGPUInfoAMD; -extern PFNWGLSWAPINTERVALEXTPROC			wglSwapIntervalEXT; - -// GL_ARB_occlusion_query -extern PFNGLGENQUERIESARBPROC glGenQueriesARB; -extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB; -extern PFNGLISQUERYARBPROC glIsQueryARB; -extern PFNGLBEGINQUERYARBPROC glBeginQueryARB; -extern PFNGLENDQUERYARBPROC glEndQueryARB; -extern PFNGLGETQUERYIVARBPROC glGetQueryivARB; -extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB; -extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB; - -// GL_ARB_timer_query -extern PFNGLQUERYCOUNTERPROC glQueryCounter; -extern PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v; -extern PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v; - - -// GL_ARB_point_parameters -extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB; -extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB; - -// GL_ARB_shader_objects -extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; -extern PFNGLGETHANDLEARBPROC glGetHandleARB; -extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB; -extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; -extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; -extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; -extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; -extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; -extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; -extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB; -extern PFNGLUNIFORM1FARBPROC glUniform1fARB; -extern PFNGLUNIFORM2FARBPROC glUniform2fARB; -extern PFNGLUNIFORM3FARBPROC glUniform3fARB; -extern PFNGLUNIFORM4FARBPROC glUniform4fARB; -extern PFNGLUNIFORM1IARBPROC glUniform1iARB; -extern PFNGLUNIFORM2IARBPROC glUniform2iARB; -extern PFNGLUNIFORM3IARBPROC glUniform3iARB; -extern PFNGLUNIFORM4IARBPROC glUniform4iARB; -extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB; -extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB; -extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB; -extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB; -extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB; -extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB; -extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB; -extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB; -extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB; -extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB; +// GL_VERSION_1_2 +//extern PFNGLDRAWRANGEELEMENTSPROC  glDrawRangeElements; +//extern PFNGLTEXIMAGE3DPROC         glTexImage3D; +//extern PFNGLTEXSUBIMAGE3DPROC      glTexSubImage3D; +//extern PFNGLCOPYTEXSUBIMAGE3DPROC  glCopyTexSubImage3D; + +// GL_VERSION_1_3 +extern PFNGLACTIVETEXTUREPROC               glActiveTexture; +extern PFNGLSAMPLECOVERAGEPROC              glSampleCoverage; +extern PFNGLCOMPRESSEDTEXIMAGE3DPROC        glCompressedTexImage3D; +extern PFNGLCOMPRESSEDTEXIMAGE2DPROC        glCompressedTexImage2D; +extern PFNGLCOMPRESSEDTEXIMAGE1DPROC        glCompressedTexImage1D; +extern PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC     glCompressedTexSubImage3D; +extern PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC     glCompressedTexSubImage2D; +extern PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC     glCompressedTexSubImage1D; +extern PFNGLGETCOMPRESSEDTEXIMAGEPROC       glGetCompressedTexImage; +extern PFNGLCLIENTACTIVETEXTUREPROC         glClientActiveTexture; +extern PFNGLMULTITEXCOORD1DPROC             glMultiTexCoord1d; +extern PFNGLMULTITEXCOORD1DVPROC            glMultiTexCoord1dv; +extern PFNGLMULTITEXCOORD1FPROC             glMultiTexCoord1f; +extern PFNGLMULTITEXCOORD1FVPROC            glMultiTexCoord1fv; +extern PFNGLMULTITEXCOORD1IPROC             glMultiTexCoord1i; +extern PFNGLMULTITEXCOORD1IVPROC            glMultiTexCoord1iv; +extern PFNGLMULTITEXCOORD1SPROC             glMultiTexCoord1s; +extern PFNGLMULTITEXCOORD1SVPROC            glMultiTexCoord1sv; +extern PFNGLMULTITEXCOORD2DPROC             glMultiTexCoord2d; +extern PFNGLMULTITEXCOORD2DVPROC            glMultiTexCoord2dv; +extern PFNGLMULTITEXCOORD2FPROC             glMultiTexCoord2f; +extern PFNGLMULTITEXCOORD2FVPROC            glMultiTexCoord2fv; +extern PFNGLMULTITEXCOORD2IPROC             glMultiTexCoord2i; +extern PFNGLMULTITEXCOORD2IVPROC            glMultiTexCoord2iv; +extern PFNGLMULTITEXCOORD2SPROC             glMultiTexCoord2s; +extern PFNGLMULTITEXCOORD2SVPROC            glMultiTexCoord2sv; +extern PFNGLMULTITEXCOORD3DPROC             glMultiTexCoord3d; +extern PFNGLMULTITEXCOORD3DVPROC            glMultiTexCoord3dv; +extern PFNGLMULTITEXCOORD3FPROC             glMultiTexCoord3f; +extern PFNGLMULTITEXCOORD3FVPROC            glMultiTexCoord3fv; +extern PFNGLMULTITEXCOORD3IPROC             glMultiTexCoord3i; +extern PFNGLMULTITEXCOORD3IVPROC            glMultiTexCoord3iv; +extern PFNGLMULTITEXCOORD3SPROC             glMultiTexCoord3s; +extern PFNGLMULTITEXCOORD3SVPROC            glMultiTexCoord3sv; +extern PFNGLMULTITEXCOORD4DPROC             glMultiTexCoord4d; +extern PFNGLMULTITEXCOORD4DVPROC            glMultiTexCoord4dv; +extern PFNGLMULTITEXCOORD4FPROC             glMultiTexCoord4f; +extern PFNGLMULTITEXCOORD4FVPROC            glMultiTexCoord4fv; +extern PFNGLMULTITEXCOORD4IPROC             glMultiTexCoord4i; +extern PFNGLMULTITEXCOORD4IVPROC            glMultiTexCoord4iv; +extern PFNGLMULTITEXCOORD4SPROC             glMultiTexCoord4s; +extern PFNGLMULTITEXCOORD4SVPROC            glMultiTexCoord4sv; +extern PFNGLLOADTRANSPOSEMATRIXFPROC        glLoadTransposeMatrixf; +extern PFNGLLOADTRANSPOSEMATRIXDPROC        glLoadTransposeMatrixd; +extern PFNGLMULTTRANSPOSEMATRIXFPROC        glMultTransposeMatrixf; +extern PFNGLMULTTRANSPOSEMATRIXDPROC        glMultTransposeMatrixd; + +// GL_VERSION_1_4 +extern PFNGLBLENDFUNCSEPARATEPROC       glBlendFuncSeparate; +extern PFNGLMULTIDRAWARRAYSPROC         glMultiDrawArrays; +extern PFNGLMULTIDRAWELEMENTSPROC       glMultiDrawElements; +extern PFNGLPOINTPARAMETERFPROC         glPointParameterf; +extern PFNGLPOINTPARAMETERFVPROC        glPointParameterfv; +extern PFNGLPOINTPARAMETERIPROC         glPointParameteri; +extern PFNGLPOINTPARAMETERIVPROC        glPointParameteriv; +extern PFNGLFOGCOORDFPROC               glFogCoordf; +extern PFNGLFOGCOORDFVPROC              glFogCoordfv; +extern PFNGLFOGCOORDDPROC               glFogCoordd; +extern PFNGLFOGCOORDDVPROC              glFogCoorddv; +extern PFNGLFOGCOORDPOINTERPROC         glFogCoordPointer; +extern PFNGLSECONDARYCOLOR3BPROC        glSecondaryColor3b; +extern PFNGLSECONDARYCOLOR3BVPROC       glSecondaryColor3bv; +extern PFNGLSECONDARYCOLOR3DPROC        glSecondaryColor3d; +extern PFNGLSECONDARYCOLOR3DVPROC       glSecondaryColor3dv; +extern PFNGLSECONDARYCOLOR3FPROC        glSecondaryColor3f; +extern PFNGLSECONDARYCOLOR3FVPROC       glSecondaryColor3fv; +extern PFNGLSECONDARYCOLOR3IPROC        glSecondaryColor3i; +extern PFNGLSECONDARYCOLOR3IVPROC       glSecondaryColor3iv; +extern PFNGLSECONDARYCOLOR3SPROC        glSecondaryColor3s; +extern PFNGLSECONDARYCOLOR3SVPROC       glSecondaryColor3sv; +extern PFNGLSECONDARYCOLOR3UBPROC       glSecondaryColor3ub; +extern PFNGLSECONDARYCOLOR3UBVPROC      glSecondaryColor3ubv; +extern PFNGLSECONDARYCOLOR3UIPROC       glSecondaryColor3ui; +extern PFNGLSECONDARYCOLOR3UIVPROC      glSecondaryColor3uiv; +extern PFNGLSECONDARYCOLOR3USPROC       glSecondaryColor3us; +extern PFNGLSECONDARYCOLOR3USVPROC      glSecondaryColor3usv; +extern PFNGLSECONDARYCOLORPOINTERPROC   glSecondaryColorPointer; +extern PFNGLWINDOWPOS2DPROC             glWindowPos2d; +extern PFNGLWINDOWPOS2DVPROC            glWindowPos2dv; +extern PFNGLWINDOWPOS2FPROC             glWindowPos2f; +extern PFNGLWINDOWPOS2FVPROC            glWindowPos2fv; +extern PFNGLWINDOWPOS2IPROC             glWindowPos2i; +extern PFNGLWINDOWPOS2IVPROC            glWindowPos2iv; +extern PFNGLWINDOWPOS2SPROC             glWindowPos2s; +extern PFNGLWINDOWPOS2SVPROC            glWindowPos2sv; +extern PFNGLWINDOWPOS3DPROC             glWindowPos3d; +extern PFNGLWINDOWPOS3DVPROC            glWindowPos3dv; +extern PFNGLWINDOWPOS3FPROC             glWindowPos3f; +extern PFNGLWINDOWPOS3FVPROC            glWindowPos3fv; +extern PFNGLWINDOWPOS3IPROC             glWindowPos3i; +extern PFNGLWINDOWPOS3IVPROC            glWindowPos3iv; +extern PFNGLWINDOWPOS3SPROC             glWindowPos3s; +extern PFNGLWINDOWPOS3SVPROC            glWindowPos3sv; + +// GL_VERSION_1_5 +extern PFNGLGENQUERIESPROC              glGenQueries; +extern PFNGLDELETEQUERIESPROC           glDeleteQueries; +extern PFNGLISQUERYPROC                 glIsQuery; +extern PFNGLBEGINQUERYPROC              glBeginQuery; +extern PFNGLENDQUERYPROC                glEndQuery; +extern PFNGLGETQUERYIVPROC              glGetQueryiv; +extern PFNGLGETQUERYOBJECTIVPROC        glGetQueryObjectiv; +extern PFNGLGETQUERYOBJECTUIVPROC       glGetQueryObjectuiv; +extern PFNGLBINDBUFFERPROC              glBindBuffer; +extern PFNGLDELETEBUFFERSPROC           glDeleteBuffers; +extern PFNGLGENBUFFERSPROC              glGenBuffers; +extern PFNGLISBUFFERPROC                glIsBuffer; +extern PFNGLBUFFERDATAPROC              glBufferData; +extern PFNGLBUFFERSUBDATAPROC           glBufferSubData; +extern PFNGLGETBUFFERSUBDATAPROC        glGetBufferSubData; +extern PFNGLMAPBUFFERPROC               glMapBuffer; +extern PFNGLUNMAPBUFFERPROC             glUnmapBuffer; +extern PFNGLGETBUFFERPARAMETERIVPROC    glGetBufferParameteriv; +extern PFNGLGETBUFFERPOINTERVPROC       glGetBufferPointerv; + +// GL_VERSION_2_0 +extern PFNGLBLENDEQUATIONSEPARATEPROC           glBlendEquationSeparate; +extern PFNGLDRAWBUFFERSPROC                     glDrawBuffers; +extern PFNGLSTENCILOPSEPARATEPROC               glStencilOpSeparate; +extern PFNGLSTENCILFUNCSEPARATEPROC             glStencilFuncSeparate; +extern PFNGLSTENCILMASKSEPARATEPROC             glStencilMaskSeparate; +extern PFNGLATTACHSHADERPROC                    glAttachShader; +extern PFNGLBINDATTRIBLOCATIONPROC              glBindAttribLocation; +extern PFNGLCOMPILESHADERPROC                   glCompileShader; +extern PFNGLCREATEPROGRAMPROC                   glCreateProgram; +extern PFNGLCREATESHADERPROC                    glCreateShader; +extern PFNGLDELETEPROGRAMPROC                   glDeleteProgram; +extern PFNGLDELETESHADERPROC                    glDeleteShader; +extern PFNGLDETACHSHADERPROC                    glDetachShader; +extern PFNGLDISABLEVERTEXATTRIBARRAYPROC        glDisableVertexAttribArray; +extern PFNGLENABLEVERTEXATTRIBARRAYPROC         glEnableVertexAttribArray; +extern PFNGLGETACTIVEATTRIBPROC                 glGetActiveAttrib; +extern PFNGLGETACTIVEUNIFORMPROC                glGetActiveUniform; +extern PFNGLGETATTACHEDSHADERSPROC              glGetAttachedShaders; +extern PFNGLGETATTRIBLOCATIONPROC               glGetAttribLocation; +extern PFNGLGETPROGRAMIVPROC                    glGetProgramiv; +extern PFNGLGETPROGRAMINFOLOGPROC               glGetProgramInfoLog; +extern PFNGLGETSHADERIVPROC                     glGetShaderiv; +extern PFNGLGETSHADERINFOLOGPROC                glGetShaderInfoLog; +extern PFNGLGETSHADERSOURCEPROC                 glGetShaderSource; +extern PFNGLGETUNIFORMLOCATIONPROC              glGetUniformLocation; +extern PFNGLGETUNIFORMFVPROC                    glGetUniformfv; +extern PFNGLGETUNIFORMIVPROC                    glGetUniformiv; +extern PFNGLGETVERTEXATTRIBDVPROC               glGetVertexAttribdv; +extern PFNGLGETVERTEXATTRIBFVPROC               glGetVertexAttribfv; +extern PFNGLGETVERTEXATTRIBIVPROC               glGetVertexAttribiv; +extern PFNGLGETVERTEXATTRIBPOINTERVPROC         glGetVertexAttribPointerv; +extern PFNGLISPROGRAMPROC                       glIsProgram; +extern PFNGLISSHADERPROC                        glIsShader; +extern PFNGLLINKPROGRAMPROC                     glLinkProgram; +extern PFNGLSHADERSOURCEPROC                    glShaderSource; +extern PFNGLUSEPROGRAMPROC                      glUseProgram; +extern PFNGLUNIFORM1FPROC                       glUniform1f; +extern PFNGLUNIFORM2FPROC                       glUniform2f; +extern PFNGLUNIFORM3FPROC                       glUniform3f; +extern PFNGLUNIFORM4FPROC                       glUniform4f; +extern PFNGLUNIFORM1IPROC                       glUniform1i; +extern PFNGLUNIFORM2IPROC                       glUniform2i; +extern PFNGLUNIFORM3IPROC                       glUniform3i; +extern PFNGLUNIFORM4IPROC                       glUniform4i; +extern PFNGLUNIFORM1FVPROC                      glUniform1fv; +extern PFNGLUNIFORM2FVPROC                      glUniform2fv; +extern PFNGLUNIFORM3FVPROC                      glUniform3fv; +extern PFNGLUNIFORM4FVPROC                      glUniform4fv; +extern PFNGLUNIFORM1IVPROC                      glUniform1iv; +extern PFNGLUNIFORM2IVPROC                      glUniform2iv; +extern PFNGLUNIFORM3IVPROC                      glUniform3iv; +extern PFNGLUNIFORM4IVPROC                      glUniform4iv; +extern PFNGLUNIFORMMATRIX2FVPROC                glUniformMatrix2fv; +extern PFNGLUNIFORMMATRIX3FVPROC                glUniformMatrix3fv; +extern PFNGLUNIFORMMATRIX4FVPROC                glUniformMatrix4fv; +extern PFNGLVALIDATEPROGRAMPROC                 glValidateProgram; +extern PFNGLVERTEXATTRIB1DPROC                  glVertexAttrib1d; +extern PFNGLVERTEXATTRIB1DVPROC                 glVertexAttrib1dv; +extern PFNGLVERTEXATTRIB1FPROC                  glVertexAttrib1f; +extern PFNGLVERTEXATTRIB1FVPROC                 glVertexAttrib1fv; +extern PFNGLVERTEXATTRIB1SPROC                  glVertexAttrib1s; +extern PFNGLVERTEXATTRIB1SVPROC                 glVertexAttrib1sv; +extern PFNGLVERTEXATTRIB2DPROC                  glVertexAttrib2d; +extern PFNGLVERTEXATTRIB2DVPROC                 glVertexAttrib2dv; +extern PFNGLVERTEXATTRIB2FPROC                  glVertexAttrib2f; +extern PFNGLVERTEXATTRIB2FVPROC                 glVertexAttrib2fv; +extern PFNGLVERTEXATTRIB2SPROC                  glVertexAttrib2s; +extern PFNGLVERTEXATTRIB2SVPROC                 glVertexAttrib2sv; +extern PFNGLVERTEXATTRIB3DPROC                  glVertexAttrib3d; +extern PFNGLVERTEXATTRIB3DVPROC                 glVertexAttrib3dv; +extern PFNGLVERTEXATTRIB3FPROC                  glVertexAttrib3f; +extern PFNGLVERTEXATTRIB3FVPROC                 glVertexAttrib3fv; +extern PFNGLVERTEXATTRIB3SPROC                  glVertexAttrib3s; +extern PFNGLVERTEXATTRIB3SVPROC                 glVertexAttrib3sv; +extern PFNGLVERTEXATTRIB4NBVPROC                glVertexAttrib4Nbv; +extern PFNGLVERTEXATTRIB4NIVPROC                glVertexAttrib4Niv; +extern PFNGLVERTEXATTRIB4NSVPROC                glVertexAttrib4Nsv; +extern PFNGLVERTEXATTRIB4NUBPROC                glVertexAttrib4Nub; +extern PFNGLVERTEXATTRIB4NUBVPROC               glVertexAttrib4Nubv; +extern PFNGLVERTEXATTRIB4NUIVPROC               glVertexAttrib4Nuiv; +extern PFNGLVERTEXATTRIB4NUSVPROC               glVertexAttrib4Nusv; +extern PFNGLVERTEXATTRIB4BVPROC                 glVertexAttrib4bv; +extern PFNGLVERTEXATTRIB4DPROC                  glVertexAttrib4d; +extern PFNGLVERTEXATTRIB4DVPROC                 glVertexAttrib4dv; +extern PFNGLVERTEXATTRIB4FPROC                  glVertexAttrib4f; +extern PFNGLVERTEXATTRIB4FVPROC                 glVertexAttrib4fv; +extern PFNGLVERTEXATTRIB4IVPROC                 glVertexAttrib4iv; +extern PFNGLVERTEXATTRIB4SPROC                  glVertexAttrib4s; +extern PFNGLVERTEXATTRIB4SVPROC                 glVertexAttrib4sv; +extern PFNGLVERTEXATTRIB4UBVPROC                glVertexAttrib4ubv; +extern PFNGLVERTEXATTRIB4UIVPROC                glVertexAttrib4uiv; +extern PFNGLVERTEXATTRIB4USVPROC                glVertexAttrib4usv; +extern PFNGLVERTEXATTRIBPOINTERPROC             glVertexAttribPointer; + +// GL_VERSION_2_1 +extern PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv; +extern PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv; +extern PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv; +extern PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;  extern PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv; -extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB; -extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB; -extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; -extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; -extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB; -extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; -extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB; -extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB; -extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB; -extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB; - -// GL_ARB_vertex_shader -extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB; -extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB; -extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB; -extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB; -extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB; -extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB; -extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB; -extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB; -extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB; -extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB; -extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB; -extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB; -extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB; -extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB; -extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB; -extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB; -extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB; -extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB; -extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB; -extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB; -extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB; -extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB; -extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB; -extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB; -extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB; -extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB; -extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB; -extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB; -extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB; -extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; -extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB; -extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB; -extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB; -extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB; -extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB; -extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB; -extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; -extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer; -extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; -extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; -extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB; -extern PFNGLBINDPROGRAMARBPROC glBindProgramARB; -extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB; -extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB; -extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB; -extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB; -extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB; -extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB; -extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB; -extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB; -extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB; -extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB; -extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB; -extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB; -extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB; -extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB; -extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB; -extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB; -extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB; -extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB; -extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB; -extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB; -extern PFNGLISPROGRAMARBPROC glIsProgramARB; -extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; -extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB; -extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; - -//GL_EXT_blend_func_separate -extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT; - -//GL_ARB_framebuffer_object -extern PFNGLISRENDERBUFFERPROC glIsRenderbuffer; -extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer; -extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers; -extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers; -extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage; -extern PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv; -extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer; -extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer; -extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; -extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers; -extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; -extern PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D; -extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D; -extern PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D; -extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer; -extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv; -extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap; -extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer; -extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample; -extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer; - -//GL_ARB_draw_buffers -extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB; - -//GL_ARB_texture_multisample -extern PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample; -extern PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample; -extern PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv; -extern PFNGLSAMPLEMASKIPROC glSampleMaski; - -//transform feedback (4.0 core) -extern PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback; -extern PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback; -extern PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings; -extern PFNGLBINDBUFFERRANGEPROC glBindBufferRange; -extern PFNGLBINDBUFFERBASEPROC glBindBufferBase; +extern PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv; + +// GL_VERSION_3_0 +extern PFNGLCOLORMASKIPROC                              glColorMaski; +extern PFNGLGETBOOLEANI_VPROC                           glGetBooleani_v; +extern PFNGLGETINTEGERI_VPROC                           glGetIntegeri_v; +extern PFNGLENABLEIPROC                                 glEnablei; +extern PFNGLDISABLEIPROC                                glDisablei; +extern PFNGLISENABLEDIPROC                              glIsEnabledi; +extern PFNGLBEGINTRANSFORMFEEDBACKPROC                  glBeginTransformFeedback; +extern PFNGLENDTRANSFORMFEEDBACKPROC                    glEndTransformFeedback; +extern PFNGLBINDBUFFERRANGEPROC                         glBindBufferRange; +extern PFNGLBINDBUFFERBASEPROC                          glBindBufferBase; +extern PFNGLTRANSFORMFEEDBACKVARYINGSPROC               glTransformFeedbackVaryings; +extern PFNGLGETTRANSFORMFEEDBACKVARYINGPROC             glGetTransformFeedbackVarying; +extern PFNGLCLAMPCOLORPROC                              glClampColor; +extern PFNGLBEGINCONDITIONALRENDERPROC                  glBeginConditionalRender; +extern PFNGLENDCONDITIONALRENDERPROC                    glEndConditionalRender; +extern PFNGLVERTEXATTRIBIPOINTERPROC                    glVertexAttribIPointer; +extern PFNGLGETVERTEXATTRIBIIVPROC                      glGetVertexAttribIiv; +extern PFNGLGETVERTEXATTRIBIUIVPROC                     glGetVertexAttribIuiv; +extern PFNGLVERTEXATTRIBI1IPROC                         glVertexAttribI1i; +extern PFNGLVERTEXATTRIBI2IPROC                         glVertexAttribI2i; +extern PFNGLVERTEXATTRIBI3IPROC                         glVertexAttribI3i; +extern PFNGLVERTEXATTRIBI4IPROC                         glVertexAttribI4i; +extern PFNGLVERTEXATTRIBI1UIPROC                        glVertexAttribI1ui; +extern PFNGLVERTEXATTRIBI2UIPROC                        glVertexAttribI2ui; +extern PFNGLVERTEXATTRIBI3UIPROC                        glVertexAttribI3ui; +extern PFNGLVERTEXATTRIBI4UIPROC                        glVertexAttribI4ui; +extern PFNGLVERTEXATTRIBI1IVPROC                        glVertexAttribI1iv; +extern PFNGLVERTEXATTRIBI2IVPROC                        glVertexAttribI2iv; +extern PFNGLVERTEXATTRIBI3IVPROC                        glVertexAttribI3iv; +extern PFNGLVERTEXATTRIBI4IVPROC                        glVertexAttribI4iv; +extern PFNGLVERTEXATTRIBI1UIVPROC                       glVertexAttribI1uiv; +extern PFNGLVERTEXATTRIBI2UIVPROC                       glVertexAttribI2uiv; +extern PFNGLVERTEXATTRIBI3UIVPROC                       glVertexAttribI3uiv; +extern PFNGLVERTEXATTRIBI4UIVPROC                       glVertexAttribI4uiv; +extern PFNGLVERTEXATTRIBI4BVPROC                        glVertexAttribI4bv; +extern PFNGLVERTEXATTRIBI4SVPROC                        glVertexAttribI4sv; +extern PFNGLVERTEXATTRIBI4UBVPROC                       glVertexAttribI4ubv; +extern PFNGLVERTEXATTRIBI4USVPROC                       glVertexAttribI4usv; +extern PFNGLGETUNIFORMUIVPROC                           glGetUniformuiv; +extern PFNGLBINDFRAGDATALOCATIONPROC                    glBindFragDataLocation; +extern PFNGLGETFRAGDATALOCATIONPROC                     glGetFragDataLocation; +extern PFNGLUNIFORM1UIPROC                              glUniform1ui; +extern PFNGLUNIFORM2UIPROC                              glUniform2ui; +extern PFNGLUNIFORM3UIPROC                              glUniform3ui; +extern PFNGLUNIFORM4UIPROC                              glUniform4ui; +extern PFNGLUNIFORM1UIVPROC                             glUniform1uiv; +extern PFNGLUNIFORM2UIVPROC                             glUniform2uiv; +extern PFNGLUNIFORM3UIVPROC                             glUniform3uiv; +extern PFNGLUNIFORM4UIVPROC                             glUniform4uiv; +extern PFNGLTEXPARAMETERIIVPROC                         glTexParameterIiv; +extern PFNGLTEXPARAMETERIUIVPROC                        glTexParameterIuiv; +extern PFNGLGETTEXPARAMETERIIVPROC                      glGetTexParameterIiv; +extern PFNGLGETTEXPARAMETERIUIVPROC                     glGetTexParameterIuiv; +extern PFNGLCLEARBUFFERIVPROC                           glClearBufferiv; +extern PFNGLCLEARBUFFERUIVPROC                          glClearBufferuiv; +extern PFNGLCLEARBUFFERFVPROC                           glClearBufferfv; +extern PFNGLCLEARBUFFERFIPROC                           glClearBufferfi; +extern PFNGLGETSTRINGIPROC                              glGetStringi; +extern PFNGLISRENDERBUFFERPROC                          glIsRenderbuffer; +extern PFNGLBINDRENDERBUFFERPROC                        glBindRenderbuffer; +extern PFNGLDELETERENDERBUFFERSPROC                     glDeleteRenderbuffers; +extern PFNGLGENRENDERBUFFERSPROC                        glGenRenderbuffers; +extern PFNGLRENDERBUFFERSTORAGEPROC                     glRenderbufferStorage; +extern PFNGLGETRENDERBUFFERPARAMETERIVPROC              glGetRenderbufferParameteriv; +extern PFNGLISFRAMEBUFFERPROC                           glIsFramebuffer; +extern PFNGLBINDFRAMEBUFFERPROC                         glBindFramebuffer; +extern PFNGLDELETEFRAMEBUFFERSPROC                      glDeleteFramebuffers; +extern PFNGLGENFRAMEBUFFERSPROC                         glGenFramebuffers; +extern PFNGLCHECKFRAMEBUFFERSTATUSPROC                  glCheckFramebufferStatus; +extern PFNGLFRAMEBUFFERTEXTURE1DPROC                    glFramebufferTexture1D; +extern PFNGLFRAMEBUFFERTEXTURE2DPROC                    glFramebufferTexture2D; +extern PFNGLFRAMEBUFFERTEXTURE3DPROC                    glFramebufferTexture3D; +extern PFNGLFRAMEBUFFERRENDERBUFFERPROC                 glFramebufferRenderbuffer; +extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC     glGetFramebufferAttachmentParameteriv; +extern PFNGLGENERATEMIPMAPPROC                          glGenerateMipmap; +extern PFNGLBLITFRAMEBUFFERPROC                         glBlitFramebuffer; +extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC          glRenderbufferStorageMultisample; +extern PFNGLFRAMEBUFFERTEXTURELAYERPROC                 glFramebufferTextureLayer; +extern PFNGLMAPBUFFERRANGEPROC                          glMapBufferRange; +extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC                  glFlushMappedBufferRange; +extern PFNGLBINDVERTEXARRAYPROC                         glBindVertexArray; +extern PFNGLDELETEVERTEXARRAYSPROC                      glDeleteVertexArrays; +extern PFNGLGENVERTEXARRAYSPROC                         glGenVertexArrays; +extern PFNGLISVERTEXARRAYPROC                           glIsVertexArray; + +// GL_VERSION_3_1 +extern PFNGLDRAWARRAYSINSTANCEDPROC         glDrawArraysInstanced; +extern PFNGLDRAWELEMENTSINSTANCEDPROC       glDrawElementsInstanced; +extern PFNGLTEXBUFFERPROC                   glTexBuffer; +extern PFNGLPRIMITIVERESTARTINDEXPROC       glPrimitiveRestartIndex; +extern PFNGLCOPYBUFFERSUBDATAPROC           glCopyBufferSubData; +extern PFNGLGETUNIFORMINDICESPROC           glGetUniformIndices; +extern PFNGLGETACTIVEUNIFORMSIVPROC         glGetActiveUniformsiv; +extern PFNGLGETACTIVEUNIFORMNAMEPROC        glGetActiveUniformName; +extern PFNGLGETUNIFORMBLOCKINDEXPROC        glGetUniformBlockIndex; +extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC     glGetActiveUniformBlockiv; +extern PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC   glGetActiveUniformBlockName; +extern PFNGLUNIFORMBLOCKBINDINGPROC         glUniformBlockBinding; + +// GL_VERSION_3_2 +extern PFNGLDRAWELEMENTSBASEVERTEXPROC          glDrawElementsBaseVertex; +extern PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC     glDrawRangeElementsBaseVertex; +extern PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex; +extern PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC     glMultiDrawElementsBaseVertex; +extern PFNGLPROVOKINGVERTEXPROC                 glProvokingVertex; +extern PFNGLFENCESYNCPROC                       glFenceSync; +extern PFNGLISSYNCPROC                          glIsSync; +extern PFNGLDELETESYNCPROC                      glDeleteSync; +extern PFNGLCLIENTWAITSYNCPROC                  glClientWaitSync; +extern PFNGLWAITSYNCPROC                        glWaitSync; +extern PFNGLGETINTEGER64VPROC                   glGetInteger64v; +extern PFNGLGETSYNCIVPROC                       glGetSynciv; +extern PFNGLGETINTEGER64I_VPROC                 glGetInteger64i_v; +extern PFNGLGETBUFFERPARAMETERI64VPROC          glGetBufferParameteri64v; +extern PFNGLFRAMEBUFFERTEXTUREPROC              glFramebufferTexture; +extern PFNGLTEXIMAGE2DMULTISAMPLEPROC           glTexImage2DMultisample; +extern PFNGLTEXIMAGE3DMULTISAMPLEPROC           glTexImage3DMultisample; +extern PFNGLGETMULTISAMPLEFVPROC                glGetMultisamplefv; +extern PFNGLSAMPLEMASKIPROC                     glSampleMaski; + +// GL_VERSION_3_3 +extern PFNGLBINDFRAGDATALOCATIONINDEXEDPROC  glBindFragDataLocationIndexed; +extern PFNGLGETFRAGDATAINDEXPROC             glGetFragDataIndex; +extern PFNGLGENSAMPLERSPROC                  glGenSamplers; +extern PFNGLDELETESAMPLERSPROC               glDeleteSamplers; +extern PFNGLISSAMPLERPROC                    glIsSampler; +extern PFNGLBINDSAMPLERPROC                  glBindSampler; +extern PFNGLSAMPLERPARAMETERIPROC            glSamplerParameteri; +extern PFNGLSAMPLERPARAMETERIVPROC           glSamplerParameteriv; +extern PFNGLSAMPLERPARAMETERFPROC            glSamplerParameterf; +extern PFNGLSAMPLERPARAMETERFVPROC           glSamplerParameterfv; +extern PFNGLSAMPLERPARAMETERIIVPROC          glSamplerParameterIiv; +extern PFNGLSAMPLERPARAMETERIUIVPROC         glSamplerParameterIuiv; +extern PFNGLGETSAMPLERPARAMETERIVPROC        glGetSamplerParameteriv; +extern PFNGLGETSAMPLERPARAMETERIIVPROC       glGetSamplerParameterIiv; +extern PFNGLGETSAMPLERPARAMETERFVPROC        glGetSamplerParameterfv; +extern PFNGLGETSAMPLERPARAMETERIUIVPROC      glGetSamplerParameterIuiv; +extern PFNGLQUERYCOUNTERPROC                 glQueryCounter; +extern PFNGLGETQUERYOBJECTI64VPROC           glGetQueryObjecti64v; +extern PFNGLGETQUERYOBJECTUI64VPROC          glGetQueryObjectui64v; +extern PFNGLVERTEXATTRIBDIVISORPROC          glVertexAttribDivisor; +extern PFNGLVERTEXATTRIBP1UIPROC             glVertexAttribP1ui; +extern PFNGLVERTEXATTRIBP1UIVPROC            glVertexAttribP1uiv; +extern PFNGLVERTEXATTRIBP2UIPROC             glVertexAttribP2ui; +extern PFNGLVERTEXATTRIBP2UIVPROC            glVertexAttribP2uiv; +extern PFNGLVERTEXATTRIBP3UIPROC             glVertexAttribP3ui; +extern PFNGLVERTEXATTRIBP3UIVPROC            glVertexAttribP3uiv; +extern PFNGLVERTEXATTRIBP4UIPROC             glVertexAttribP4ui; +extern PFNGLVERTEXATTRIBP4UIVPROC            glVertexAttribP4uiv; +extern PFNGLVERTEXP2UIPROC                   glVertexP2ui; +extern PFNGLVERTEXP2UIVPROC                  glVertexP2uiv; +extern PFNGLVERTEXP3UIPROC                   glVertexP3ui; +extern PFNGLVERTEXP3UIVPROC                  glVertexP3uiv; +extern PFNGLVERTEXP4UIPROC                   glVertexP4ui; +extern PFNGLVERTEXP4UIVPROC                  glVertexP4uiv; +extern PFNGLTEXCOORDP1UIPROC                 glTexCoordP1ui; +extern PFNGLTEXCOORDP1UIVPROC                glTexCoordP1uiv; +extern PFNGLTEXCOORDP2UIPROC                 glTexCoordP2ui; +extern PFNGLTEXCOORDP2UIVPROC                glTexCoordP2uiv; +extern PFNGLTEXCOORDP3UIPROC                 glTexCoordP3ui; +extern PFNGLTEXCOORDP3UIVPROC                glTexCoordP3uiv; +extern PFNGLTEXCOORDP4UIPROC                 glTexCoordP4ui; +extern PFNGLTEXCOORDP4UIVPROC                glTexCoordP4uiv; +extern PFNGLMULTITEXCOORDP1UIPROC            glMultiTexCoordP1ui; +extern PFNGLMULTITEXCOORDP1UIVPROC           glMultiTexCoordP1uiv; +extern PFNGLMULTITEXCOORDP2UIPROC            glMultiTexCoordP2ui; +extern PFNGLMULTITEXCOORDP2UIVPROC           glMultiTexCoordP2uiv; +extern PFNGLMULTITEXCOORDP3UIPROC            glMultiTexCoordP3ui; +extern PFNGLMULTITEXCOORDP3UIVPROC           glMultiTexCoordP3uiv; +extern PFNGLMULTITEXCOORDP4UIPROC            glMultiTexCoordP4ui; +extern PFNGLMULTITEXCOORDP4UIVPROC           glMultiTexCoordP4uiv; +extern PFNGLNORMALP3UIPROC                   glNormalP3ui; +extern PFNGLNORMALP3UIVPROC                  glNormalP3uiv; +extern PFNGLCOLORP3UIPROC                    glColorP3ui; +extern PFNGLCOLORP3UIVPROC                   glColorP3uiv; +extern PFNGLCOLORP4UIPROC                    glColorP4ui; +extern PFNGLCOLORP4UIVPROC                   glColorP4uiv; +extern PFNGLSECONDARYCOLORP3UIPROC           glSecondaryColorP3ui; +extern PFNGLSECONDARYCOLORP3UIVPROC          glSecondaryColorP3uiv; + +// GL_VERSION_4_0 +extern PFNGLMINSAMPLESHADINGPROC                glMinSampleShading; +extern PFNGLBLENDEQUATIONIPROC                  glBlendEquationi; +extern PFNGLBLENDEQUATIONSEPARATEIPROC          glBlendEquationSeparatei; +extern PFNGLBLENDFUNCIPROC                      glBlendFunci; +extern PFNGLBLENDFUNCSEPARATEIPROC              glBlendFuncSeparatei; +extern PFNGLDRAWARRAYSINDIRECTPROC              glDrawArraysIndirect; +extern PFNGLDRAWELEMENTSINDIRECTPROC            glDrawElementsIndirect; +extern PFNGLUNIFORM1DPROC                       glUniform1d; +extern PFNGLUNIFORM2DPROC                       glUniform2d; +extern PFNGLUNIFORM3DPROC                       glUniform3d; +extern PFNGLUNIFORM4DPROC                       glUniform4d; +extern PFNGLUNIFORM1DVPROC                      glUniform1dv; +extern PFNGLUNIFORM2DVPROC                      glUniform2dv; +extern PFNGLUNIFORM3DVPROC                      glUniform3dv; +extern PFNGLUNIFORM4DVPROC                      glUniform4dv; +extern PFNGLUNIFORMMATRIX2DVPROC                glUniformMatrix2dv; +extern PFNGLUNIFORMMATRIX3DVPROC                glUniformMatrix3dv; +extern PFNGLUNIFORMMATRIX4DVPROC                glUniformMatrix4dv; +extern PFNGLUNIFORMMATRIX2X3DVPROC              glUniformMatrix2x3dv; +extern PFNGLUNIFORMMATRIX2X4DVPROC              glUniformMatrix2x4dv; +extern PFNGLUNIFORMMATRIX3X2DVPROC              glUniformMatrix3x2dv; +extern PFNGLUNIFORMMATRIX3X4DVPROC              glUniformMatrix3x4dv; +extern PFNGLUNIFORMMATRIX4X2DVPROC              glUniformMatrix4x2dv; +extern PFNGLUNIFORMMATRIX4X3DVPROC              glUniformMatrix4x3dv; +extern PFNGLGETUNIFORMDVPROC                    glGetUniformdv; +extern PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC    glGetSubroutineUniformLocation; +extern PFNGLGETSUBROUTINEINDEXPROC              glGetSubroutineIndex; +extern PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC    glGetActiveSubroutineUniformiv; +extern PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC  glGetActiveSubroutineUniformName; +extern PFNGLGETACTIVESUBROUTINENAMEPROC         glGetActiveSubroutineName; +extern PFNGLUNIFORMSUBROUTINESUIVPROC           glUniformSubroutinesuiv; +extern PFNGLGETUNIFORMSUBROUTINEUIVPROC         glGetUniformSubroutineuiv; +extern PFNGLGETPROGRAMSTAGEIVPROC               glGetProgramStageiv; +extern PFNGLPATCHPARAMETERIPROC                 glPatchParameteri; +extern PFNGLPATCHPARAMETERFVPROC                glPatchParameterfv; +extern PFNGLBINDTRANSFORMFEEDBACKPROC           glBindTransformFeedback; +extern PFNGLDELETETRANSFORMFEEDBACKSPROC        glDeleteTransformFeedbacks; +extern PFNGLGENTRANSFORMFEEDBACKSPROC           glGenTransformFeedbacks; +extern PFNGLISTRANSFORMFEEDBACKPROC             glIsTransformFeedback; +extern PFNGLPAUSETRANSFORMFEEDBACKPROC          glPauseTransformFeedback; +extern PFNGLRESUMETRANSFORMFEEDBACKPROC         glResumeTransformFeedback; +extern PFNGLDRAWTRANSFORMFEEDBACKPROC           glDrawTransformFeedback; +extern PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC     glDrawTransformFeedbackStream; +extern PFNGLBEGINQUERYINDEXEDPROC               glBeginQueryIndexed; +extern PFNGLENDQUERYINDEXEDPROC                 glEndQueryIndexed; +extern PFNGLGETQUERYINDEXEDIVPROC               glGetQueryIndexediv; + + // GL_VERSION_4_1 +extern PFNGLRELEASESHADERCOMPILERPROC           glReleaseShaderCompiler; +extern PFNGLSHADERBINARYPROC                    glShaderBinary; +extern PFNGLGETSHADERPRECISIONFORMATPROC        glGetShaderPrecisionFormat; +extern PFNGLDEPTHRANGEFPROC                     glDepthRangef; +extern PFNGLCLEARDEPTHFPROC                     glClearDepthf; +extern PFNGLGETPROGRAMBINARYPROC                glGetProgramBinary; +extern PFNGLPROGRAMBINARYPROC                   glProgramBinary; +extern PFNGLPROGRAMPARAMETERIPROC               glProgramParameteri; +extern PFNGLUSEPROGRAMSTAGESPROC                glUseProgramStages; +extern PFNGLACTIVESHADERPROGRAMPROC             glActiveShaderProgram; +extern PFNGLCREATESHADERPROGRAMVPROC            glCreateShaderProgramv; +extern PFNGLBINDPROGRAMPIPELINEPROC             glBindProgramPipeline; +extern PFNGLDELETEPROGRAMPIPELINESPROC          glDeleteProgramPipelines; +extern PFNGLGENPROGRAMPIPELINESPROC             glGenProgramPipelines; +extern PFNGLISPROGRAMPIPELINEPROC               glIsProgramPipeline; +extern PFNGLGETPROGRAMPIPELINEIVPROC            glGetProgramPipelineiv; +extern PFNGLPROGRAMUNIFORM1IPROC                glProgramUniform1i; +extern PFNGLPROGRAMUNIFORM1IVPROC               glProgramUniform1iv; +extern PFNGLPROGRAMUNIFORM1FPROC                glProgramUniform1f; +extern PFNGLPROGRAMUNIFORM1FVPROC               glProgramUniform1fv; +extern PFNGLPROGRAMUNIFORM1DPROC                glProgramUniform1d; +extern PFNGLPROGRAMUNIFORM1DVPROC               glProgramUniform1dv; +extern PFNGLPROGRAMUNIFORM1UIPROC               glProgramUniform1ui; +extern PFNGLPROGRAMUNIFORM1UIVPROC              glProgramUniform1uiv; +extern PFNGLPROGRAMUNIFORM2IPROC                glProgramUniform2i; +extern PFNGLPROGRAMUNIFORM2IVPROC               glProgramUniform2iv; +extern PFNGLPROGRAMUNIFORM2FPROC                glProgramUniform2f; +extern PFNGLPROGRAMUNIFORM2FVPROC               glProgramUniform2fv; +extern PFNGLPROGRAMUNIFORM2DPROC                glProgramUniform2d; +extern PFNGLPROGRAMUNIFORM2DVPROC               glProgramUniform2dv; +extern PFNGLPROGRAMUNIFORM2UIPROC               glProgramUniform2ui; +extern PFNGLPROGRAMUNIFORM2UIVPROC              glProgramUniform2uiv; +extern PFNGLPROGRAMUNIFORM3IPROC                glProgramUniform3i; +extern PFNGLPROGRAMUNIFORM3IVPROC               glProgramUniform3iv; +extern PFNGLPROGRAMUNIFORM3FPROC                glProgramUniform3f; +extern PFNGLPROGRAMUNIFORM3FVPROC               glProgramUniform3fv; +extern PFNGLPROGRAMUNIFORM3DPROC                glProgramUniform3d; +extern PFNGLPROGRAMUNIFORM3DVPROC               glProgramUniform3dv; +extern PFNGLPROGRAMUNIFORM3UIPROC               glProgramUniform3ui; +extern PFNGLPROGRAMUNIFORM3UIVPROC              glProgramUniform3uiv; +extern PFNGLPROGRAMUNIFORM4IPROC                glProgramUniform4i; +extern PFNGLPROGRAMUNIFORM4IVPROC               glProgramUniform4iv; +extern PFNGLPROGRAMUNIFORM4FPROC                glProgramUniform4f; +extern PFNGLPROGRAMUNIFORM4FVPROC               glProgramUniform4fv; +extern PFNGLPROGRAMUNIFORM4DPROC                glProgramUniform4d; +extern PFNGLPROGRAMUNIFORM4DVPROC               glProgramUniform4dv; +extern PFNGLPROGRAMUNIFORM4UIPROC               glProgramUniform4ui; +extern PFNGLPROGRAMUNIFORM4UIVPROC              glProgramUniform4uiv; +extern PFNGLPROGRAMUNIFORMMATRIX2FVPROC         glProgramUniformMatrix2fv; +extern PFNGLPROGRAMUNIFORMMATRIX3FVPROC         glProgramUniformMatrix3fv; +extern PFNGLPROGRAMUNIFORMMATRIX4FVPROC         glProgramUniformMatrix4fv; +extern PFNGLPROGRAMUNIFORMMATRIX2DVPROC         glProgramUniformMatrix2dv; +extern PFNGLPROGRAMUNIFORMMATRIX3DVPROC         glProgramUniformMatrix3dv; +extern PFNGLPROGRAMUNIFORMMATRIX4DVPROC         glProgramUniformMatrix4dv; +extern PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC       glProgramUniformMatrix2x3fv; +extern PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC       glProgramUniformMatrix3x2fv; +extern PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC       glProgramUniformMatrix2x4fv; +extern PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC       glProgramUniformMatrix4x2fv; +extern PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC       glProgramUniformMatrix3x4fv; +extern PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC       glProgramUniformMatrix4x3fv; +extern PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC       glProgramUniformMatrix2x3dv; +extern PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC       glProgramUniformMatrix3x2dv; +extern PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC       glProgramUniformMatrix2x4dv; +extern PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC       glProgramUniformMatrix4x2dv; +extern PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC       glProgramUniformMatrix3x4dv; +extern PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC       glProgramUniformMatrix4x3dv; +extern PFNGLVALIDATEPROGRAMPIPELINEPROC         glValidateProgramPipeline; +extern PFNGLGETPROGRAMPIPELINEINFOLOGPROC       glGetProgramPipelineInfoLog; +extern PFNGLVERTEXATTRIBL1DPROC                 glVertexAttribL1d; +extern PFNGLVERTEXATTRIBL2DPROC                 glVertexAttribL2d; +extern PFNGLVERTEXATTRIBL3DPROC                 glVertexAttribL3d; +extern PFNGLVERTEXATTRIBL4DPROC                 glVertexAttribL4d; +extern PFNGLVERTEXATTRIBL1DVPROC                glVertexAttribL1dv; +extern PFNGLVERTEXATTRIBL2DVPROC                glVertexAttribL2dv; +extern PFNGLVERTEXATTRIBL3DVPROC                glVertexAttribL3dv; +extern PFNGLVERTEXATTRIBL4DVPROC                glVertexAttribL4dv; +extern PFNGLVERTEXATTRIBLPOINTERPROC            glVertexAttribLPointer; +extern PFNGLGETVERTEXATTRIBLDVPROC              glGetVertexAttribLdv; +extern PFNGLVIEWPORTARRAYVPROC                  glViewportArrayv; +extern PFNGLVIEWPORTINDEXEDFPROC                glViewportIndexedf; +extern PFNGLVIEWPORTINDEXEDFVPROC               glViewportIndexedfv; +extern PFNGLSCISSORARRAYVPROC                   glScissorArrayv; +extern PFNGLSCISSORINDEXEDPROC                  glScissorIndexed; +extern PFNGLSCISSORINDEXEDVPROC                 glScissorIndexedv; +extern PFNGLDEPTHRANGEARRAYVPROC                glDepthRangeArrayv; +extern PFNGLDEPTHRANGEINDEXEDPROC               glDepthRangeIndexed; +extern PFNGLGETFLOATI_VPROC                     glGetFloati_v; +extern PFNGLGETDOUBLEI_VPROC                    glGetDoublei_v; + +// GL_VERSION_4_2 +extern PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC             glDrawArraysInstancedBaseInstance; +extern PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC           glDrawElementsInstancedBaseInstance; +extern PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance; +extern PFNGLGETINTERNALFORMATIVPROC                         glGetInternalformativ; +extern PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC              glGetActiveAtomicCounterBufferiv; +extern PFNGLBINDIMAGETEXTUREPROC                            glBindImageTexture; +extern PFNGLMEMORYBARRIERPROC                               glMemoryBarrier; +extern PFNGLTEXSTORAGE1DPROC                                glTexStorage1D; +extern PFNGLTEXSTORAGE2DPROC                                glTexStorage2D; +extern PFNGLTEXSTORAGE3DPROC                                glTexStorage3D; +extern PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC              glDrawTransformFeedbackInstanced; +extern PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC        glDrawTransformFeedbackStreamInstanced; + +// GL_VERSION_4_3 +extern PFNGLCLEARBUFFERDATAPROC                             glClearBufferData; +extern PFNGLCLEARBUFFERSUBDATAPROC                          glClearBufferSubData; +extern PFNGLDISPATCHCOMPUTEPROC                             glDispatchCompute; +extern PFNGLDISPATCHCOMPUTEINDIRECTPROC                     glDispatchComputeIndirect; +extern PFNGLCOPYIMAGESUBDATAPROC                            glCopyImageSubData; +extern PFNGLFRAMEBUFFERPARAMETERIPROC                       glFramebufferParameteri; +extern PFNGLGETFRAMEBUFFERPARAMETERIVPROC                   glGetFramebufferParameteriv; +extern PFNGLGETINTERNALFORMATI64VPROC                       glGetInternalformati64v; +extern PFNGLINVALIDATETEXSUBIMAGEPROC                       glInvalidateTexSubImage; +extern PFNGLINVALIDATETEXIMAGEPROC                          glInvalidateTexImage; +extern PFNGLINVALIDATEBUFFERSUBDATAPROC                     glInvalidateBufferSubData; +extern PFNGLINVALIDATEBUFFERDATAPROC                        glInvalidateBufferData; +extern PFNGLINVALIDATEFRAMEBUFFERPROC                       glInvalidateFramebuffer; +extern PFNGLINVALIDATESUBFRAMEBUFFERPROC                    glInvalidateSubFramebuffer; +extern PFNGLMULTIDRAWARRAYSINDIRECTPROC                     glMultiDrawArraysIndirect; +extern PFNGLMULTIDRAWELEMENTSINDIRECTPROC                   glMultiDrawElementsIndirect; +extern PFNGLGETPROGRAMINTERFACEIVPROC                       glGetProgramInterfaceiv; +extern PFNGLGETPROGRAMRESOURCEINDEXPROC                     glGetProgramResourceIndex; +extern PFNGLGETPROGRAMRESOURCENAMEPROC                      glGetProgramResourceName; +extern PFNGLGETPROGRAMRESOURCEIVPROC                        glGetProgramResourceiv; +extern PFNGLGETPROGRAMRESOURCELOCATIONPROC                  glGetProgramResourceLocation; +extern PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC             glGetProgramResourceLocationIndex; +extern PFNGLSHADERSTORAGEBLOCKBINDINGPROC                   glShaderStorageBlockBinding; +extern PFNGLTEXBUFFERRANGEPROC                              glTexBufferRange; +extern PFNGLTEXSTORAGE2DMULTISAMPLEPROC                     glTexStorage2DMultisample; +extern PFNGLTEXSTORAGE3DMULTISAMPLEPROC                     glTexStorage3DMultisample; +extern PFNGLTEXTUREVIEWPROC                                 glTextureView; +extern PFNGLBINDVERTEXBUFFERPROC                            glBindVertexBuffer; +extern PFNGLVERTEXATTRIBFORMATPROC                          glVertexAttribFormat; +extern PFNGLVERTEXATTRIBIFORMATPROC                         glVertexAttribIFormat; +extern PFNGLVERTEXATTRIBLFORMATPROC                         glVertexAttribLFormat; +extern PFNGLVERTEXATTRIBBINDINGPROC                         glVertexAttribBinding; +extern PFNGLVERTEXBINDINGDIVISORPROC                        glVertexBindingDivisor; +extern PFNGLDEBUGMESSAGECONTROLPROC                         glDebugMessageControl; +extern PFNGLDEBUGMESSAGEINSERTPROC                          glDebugMessageInsert; +extern PFNGLDEBUGMESSAGECALLBACKPROC                        glDebugMessageCallback; +extern PFNGLGETDEBUGMESSAGELOGPROC                          glGetDebugMessageLog; +extern PFNGLPUSHDEBUGGROUPPROC                              glPushDebugGroup; +extern PFNGLPOPDEBUGGROUPPROC                               glPopDebugGroup; +extern PFNGLOBJECTLABELPROC                                 glObjectLabel; +extern PFNGLGETOBJECTLABELPROC                              glGetObjectLabel; +extern PFNGLOBJECTPTRLABELPROC                              glObjectPtrLabel; +extern PFNGLGETOBJECTPTRLABELPROC                           glGetObjectPtrLabel; + +// GL_VERSION_4_4 +extern PFNGLBUFFERSTORAGEPROC       glBufferStorage; +extern PFNGLCLEARTEXIMAGEPROC       glClearTexImage; +extern PFNGLCLEARTEXSUBIMAGEPROC    glClearTexSubImage; +extern PFNGLBINDBUFFERSBASEPROC     glBindBuffersBase; +extern PFNGLBINDBUFFERSRANGEPROC    glBindBuffersRange; +extern PFNGLBINDTEXTURESPROC        glBindTextures; +extern PFNGLBINDSAMPLERSPROC        glBindSamplers; +extern PFNGLBINDIMAGETEXTURESPROC   glBindImageTextures; +extern PFNGLBINDVERTEXBUFFERSPROC   glBindVertexBuffers; + +// GL_VERSION_4_5 +extern PFNGLCLIPCONTROLPROC                                     glClipControl; +extern PFNGLCREATETRANSFORMFEEDBACKSPROC                        glCreateTransformFeedbacks; +extern PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC                     glTransformFeedbackBufferBase; +extern PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC                    glTransformFeedbackBufferRange; +extern PFNGLGETTRANSFORMFEEDBACKIVPROC                          glGetTransformFeedbackiv; +extern PFNGLGETTRANSFORMFEEDBACKI_VPROC                         glGetTransformFeedbacki_v; +extern PFNGLGETTRANSFORMFEEDBACKI64_VPROC                       glGetTransformFeedbacki64_v; +extern PFNGLCREATEBUFFERSPROC                                   glCreateBuffers; +extern PFNGLNAMEDBUFFERSTORAGEPROC                              glNamedBufferStorage; +extern PFNGLNAMEDBUFFERDATAPROC                                 glNamedBufferData; +extern PFNGLNAMEDBUFFERSUBDATAPROC                              glNamedBufferSubData; +extern PFNGLCOPYNAMEDBUFFERSUBDATAPROC                          glCopyNamedBufferSubData; +extern PFNGLCLEARNAMEDBUFFERDATAPROC                            glClearNamedBufferData; +extern PFNGLCLEARNAMEDBUFFERSUBDATAPROC                         glClearNamedBufferSubData; +extern PFNGLMAPNAMEDBUFFERPROC                                  glMapNamedBuffer; +extern PFNGLMAPNAMEDBUFFERRANGEPROC                             glMapNamedBufferRange; +extern PFNGLUNMAPNAMEDBUFFERPROC                                glUnmapNamedBuffer; +extern PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC                     glFlushMappedNamedBufferRange; +extern PFNGLGETNAMEDBUFFERPARAMETERIVPROC                       glGetNamedBufferParameteriv; +extern PFNGLGETNAMEDBUFFERPARAMETERI64VPROC                     glGetNamedBufferParameteri64v; +extern PFNGLGETNAMEDBUFFERPOINTERVPROC                          glGetNamedBufferPointerv; +extern PFNGLGETNAMEDBUFFERSUBDATAPROC                           glGetNamedBufferSubData; +extern PFNGLCREATEFRAMEBUFFERSPROC                              glCreateFramebuffers; +extern PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC                    glNamedFramebufferRenderbuffer; +extern PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC                      glNamedFramebufferParameteri; +extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC                         glNamedFramebufferTexture; +extern PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC                    glNamedFramebufferTextureLayer; +extern PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC                      glNamedFramebufferDrawBuffer; +extern PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC                     glNamedFramebufferDrawBuffers; +extern PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC                      glNamedFramebufferReadBuffer; +extern PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC                  glInvalidateNamedFramebufferData; +extern PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC               glInvalidateNamedFramebufferSubData; +extern PFNGLCLEARNAMEDFRAMEBUFFERIVPROC                         glClearNamedFramebufferiv; +extern PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC                        glClearNamedFramebufferuiv; +extern PFNGLCLEARNAMEDFRAMEBUFFERFVPROC                         glClearNamedFramebufferfv; +extern PFNGLCLEARNAMEDFRAMEBUFFERFIPROC                         glClearNamedFramebufferfi; +extern PFNGLBLITNAMEDFRAMEBUFFERPROC                            glBlitNamedFramebuffer; +extern PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC                     glCheckNamedFramebufferStatus; +extern PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC                  glGetNamedFramebufferParameteriv; +extern PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC        glGetNamedFramebufferAttachmentParameteriv; +extern PFNGLCREATERENDERBUFFERSPROC                             glCreateRenderbuffers; +extern PFNGLNAMEDRENDERBUFFERSTORAGEPROC                        glNamedRenderbufferStorage; +extern PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC             glNamedRenderbufferStorageMultisample; +extern PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC                 glGetNamedRenderbufferParameteriv; +extern PFNGLCREATETEXTURESPROC                                  glCreateTextures; +extern PFNGLTEXTUREBUFFERPROC                                   glTextureBuffer; +extern PFNGLTEXTUREBUFFERRANGEPROC                              glTextureBufferRange; +extern PFNGLTEXTURESTORAGE1DPROC                                glTextureStorage1D; +extern PFNGLTEXTURESTORAGE2DPROC                                glTextureStorage2D; +extern PFNGLTEXTURESTORAGE3DPROC                                glTextureStorage3D; +extern PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC                     glTextureStorage2DMultisample; +extern PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC                     glTextureStorage3DMultisample; +extern PFNGLTEXTURESUBIMAGE1DPROC                               glTextureSubImage1D; +extern PFNGLTEXTURESUBIMAGE2DPROC                               glTextureSubImage2D; +extern PFNGLTEXTURESUBIMAGE3DPROC                               glTextureSubImage3D; +extern PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC                     glCompressedTextureSubImage1D; +extern PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC                     glCompressedTextureSubImage2D; +extern PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC                     glCompressedTextureSubImage3D; +extern PFNGLCOPYTEXTURESUBIMAGE1DPROC                           glCopyTextureSubImage1D; +extern PFNGLCOPYTEXTURESUBIMAGE2DPROC                           glCopyTextureSubImage2D; +extern PFNGLCOPYTEXTURESUBIMAGE3DPROC                           glCopyTextureSubImage3D; +extern PFNGLTEXTUREPARAMETERFPROC                               glTextureParameterf; +extern PFNGLTEXTUREPARAMETERFVPROC                              glTextureParameterfv; +extern PFNGLTEXTUREPARAMETERIPROC                               glTextureParameteri; +extern PFNGLTEXTUREPARAMETERIIVPROC                             glTextureParameterIiv; +extern PFNGLTEXTUREPARAMETERIUIVPROC                            glTextureParameterIuiv; +extern PFNGLTEXTUREPARAMETERIVPROC                              glTextureParameteriv; +extern PFNGLGENERATETEXTUREMIPMAPPROC                           glGenerateTextureMipmap; +extern PFNGLBINDTEXTUREUNITPROC                                 glBindTextureUnit; +extern PFNGLGETTEXTUREIMAGEPROC                                 glGetTextureImage; +extern PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC                       glGetCompressedTextureImage; +extern PFNGLGETTEXTURELEVELPARAMETERFVPROC                      glGetTextureLevelParameterfv; +extern PFNGLGETTEXTURELEVELPARAMETERIVPROC                      glGetTextureLevelParameteriv; +extern PFNGLGETTEXTUREPARAMETERFVPROC                           glGetTextureParameterfv; +extern PFNGLGETTEXTUREPARAMETERIIVPROC                          glGetTextureParameterIiv; +extern PFNGLGETTEXTUREPARAMETERIUIVPROC                         glGetTextureParameterIuiv; +extern PFNGLGETTEXTUREPARAMETERIVPROC                           glGetTextureParameteriv; +extern PFNGLCREATEVERTEXARRAYSPROC                              glCreateVertexArrays; +extern PFNGLDISABLEVERTEXARRAYATTRIBPROC                        glDisableVertexArrayAttrib; +extern PFNGLENABLEVERTEXARRAYATTRIBPROC                         glEnableVertexArrayAttrib; +extern PFNGLVERTEXARRAYELEMENTBUFFERPROC                        glVertexArrayElementBuffer; +extern PFNGLVERTEXARRAYVERTEXBUFFERPROC                         glVertexArrayVertexBuffer; +extern PFNGLVERTEXARRAYVERTEXBUFFERSPROC                        glVertexArrayVertexBuffers; +extern PFNGLVERTEXARRAYATTRIBBINDINGPROC                        glVertexArrayAttribBinding; +extern PFNGLVERTEXARRAYATTRIBFORMATPROC                         glVertexArrayAttribFormat; +extern PFNGLVERTEXARRAYATTRIBIFORMATPROC                        glVertexArrayAttribIFormat; +extern PFNGLVERTEXARRAYATTRIBLFORMATPROC                        glVertexArrayAttribLFormat; +extern PFNGLVERTEXARRAYBINDINGDIVISORPROC                       glVertexArrayBindingDivisor; +extern PFNGLGETVERTEXARRAYIVPROC                                glGetVertexArrayiv; +extern PFNGLGETVERTEXARRAYINDEXEDIVPROC                         glGetVertexArrayIndexediv; +extern PFNGLGETVERTEXARRAYINDEXED64IVPROC                       glGetVertexArrayIndexed64iv; +extern PFNGLCREATESAMPLERSPROC                                  glCreateSamplers; +extern PFNGLCREATEPROGRAMPIPELINESPROC                          glCreateProgramPipelines; +extern PFNGLCREATEQUERIESPROC                                   glCreateQueries; +extern PFNGLGETQUERYBUFFEROBJECTI64VPROC                        glGetQueryBufferObjecti64v; +extern PFNGLGETQUERYBUFFEROBJECTIVPROC                          glGetQueryBufferObjectiv; +extern PFNGLGETQUERYBUFFEROBJECTUI64VPROC                       glGetQueryBufferObjectui64v; +extern PFNGLGETQUERYBUFFEROBJECTUIVPROC                         glGetQueryBufferObjectuiv; +extern PFNGLMEMORYBARRIERBYREGIONPROC                           glMemoryBarrierByRegion; +extern PFNGLGETTEXTURESUBIMAGEPROC                              glGetTextureSubImage; +extern PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC                    glGetCompressedTextureSubImage; +extern PFNGLGETGRAPHICSRESETSTATUSPROC                          glGetGraphicsResetStatus; +extern PFNGLGETNCOMPRESSEDTEXIMAGEPROC                          glGetnCompressedTexImage; +extern PFNGLGETNTEXIMAGEPROC                                    glGetnTexImage; +extern PFNGLGETNUNIFORMDVPROC                                   glGetnUniformdv; +extern PFNGLGETNUNIFORMFVPROC                                   glGetnUniformfv; +extern PFNGLGETNUNIFORMIVPROC                                   glGetnUniformiv; +extern PFNGLGETNUNIFORMUIVPROC                                  glGetnUniformuiv; +extern PFNGLREADNPIXELSPROC                                     glReadnPixels; +extern PFNGLGETNMAPDVPROC                                       glGetnMapdv; +extern PFNGLGETNMAPFVPROC                                       glGetnMapfv; +extern PFNGLGETNMAPIVPROC                                       glGetnMapiv; +extern PFNGLGETNPIXELMAPFVPROC                                  glGetnPixelMapfv; +extern PFNGLGETNPIXELMAPUIVPROC                                 glGetnPixelMapuiv; +extern PFNGLGETNPIXELMAPUSVPROC                                 glGetnPixelMapusv; +extern PFNGLGETNPOLYGONSTIPPLEPROC                              glGetnPolygonStipple; +extern PFNGLGETNCOLORTABLEPROC                                  glGetnColorTable; +extern PFNGLGETNCONVOLUTIONFILTERPROC                           glGetnConvolutionFilter; +extern PFNGLGETNSEPARABLEFILTERPROC                             glGetnSeparableFilter; +extern PFNGLGETNHISTOGRAMPROC                                   glGetnHistogram; +extern PFNGLGETNMINMAXPROC                                      glGetnMinmax; +extern PFNGLTEXTUREBARRIERPROC                                  glTextureBarrier; + +// GL_VERSION_4_6 +extern PFNGLSPECIALIZESHADERPROC                glSpecializeShader; +extern PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC    glMultiDrawArraysIndirectCount; +extern PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC  glMultiDrawElementsIndirectCount; +extern PFNGLPOLYGONOFFSETCLAMPPROC              glPolygonOffsetClamp; -//GL_ARB_debug_output -extern PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB; -extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB; -extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB; -extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB; - -// GL_ARB_uniform_buffer_object -extern PFNGLGETUNIFORMINDICESPROC glGetUniformIndices; -extern PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv; -extern PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName; -extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex; -extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv; -extern PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName; -extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;  #elif LL_DARWIN  //---------------------------------------------------------------------------- @@ -702,8 +1219,8 @@ extern "C" {  #ifndef GL_ARB_vertex_buffer_object  /* GL types for handling large vertex buffer objects */ -typedef intptr_t GLintptrARB; -typedef intptr_t GLsizeiptrARB; +typedef intptr_t GLintptr; +typedef intptr_t GLsizeiptr;  #endif diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 7be1fd0702..91d756c0d1 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -969,7 +969,7 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms)      {   // See slide 35 and more of https://docs.huihoo.com/apple/wwdc/2011/session_420__advances_in_opengl_for_mac_os_x_lion.pdf          static const GLuint BLOCKBINDING = 1; //picked by us          //Get the index, similar to a uniform location -        GLuint UBOBlockIndex = glGetUniformBlockIndex(mProgramObject, "UBO"); +        GLuint UBOBlockIndex = glGetUniformBlockIndex(mProgramObject, "ReflectionProbes");          //Set this index to a binding index          glUniformBlockBinding(mProgramObject, UBOBlockIndex, BLOCKBINDING);      } diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 056714b039..1f060b674f 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -1485,16 +1485,9 @@ void LLRender::blendFunc(eBlendFactor color_sfactor, eBlendFactor color_dfactor,  		mCurrBlendColorDFactor = color_dfactor;  		mCurrBlendAlphaDFactor = alpha_dfactor;  		flush(); -        if (LLRender::sGLCoreProfile) -        { -            glBlendFuncSeparate(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor], +         +        glBlendFuncSeparate(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor],                             sGLBlendFactor[alpha_sfactor], sGLBlendFactor[alpha_dfactor]); -        } -        else -        { -            glBlendFuncSeparateEXT(sGLBlendFactor[color_sfactor], sGLBlendFactor[color_dfactor], -				       sGLBlendFactor[alpha_sfactor], sGLBlendFactor[alpha_dfactor]); -        }  	}  } diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 4b639e9e84..a40ea2eb1e 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -1530,10 +1530,6 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran  				{  					if (map_range)  					{ -#ifndef LL_MESA_HEADLESS -						glBufferParameteriAPPLE(GL_ARRAY_BUFFER, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE); -						glBufferParameteriAPPLE(GL_ARRAY_BUFFER, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE); -#endif  						src = (U8*) glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);  					}  					else @@ -1703,10 +1699,6 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)  				{  					if (map_range)  					{ -#ifndef LL_MESA_HEADLESS -						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE); -						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE); -#endif  						src = (U8*) glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY);  					}  					else @@ -1832,15 +1824,7 @@ void LLVertexBuffer::unmapBuffer()  						S32 length = sTypeSize[region.mType]*region.mCount;  						if (gGLManager.mHasMapBufferRange)  						{ -#ifdef GL_ARB_map_buffer_range  							glFlushMappedBufferRange(GL_ARRAY_BUFFER, offset, length); -#endif -						} -						else if (gGLManager.mHasFlushBufferRange) -                        { -#ifndef LL_MESA_HEADLESS -							glFlushMappedBufferRangeAPPLE(GL_ARRAY_BUFFER, offset, length); -#endif  						}  					} @@ -1912,17 +1896,7 @@ void LLVertexBuffer::unmapBuffer()  						S32 length = sizeof(U16)*region.mCount;  						if (gGLManager.mHasMapBufferRange)  						{ -#ifdef GL_ARB_map_buffer_range  							glFlushMappedBufferRange(GL_ELEMENT_ARRAY_BUFFER, offset, length); -#endif -						} -						else if (gGLManager.mHasFlushBufferRange) -						{ -#ifdef GL_APPLE_flush_buffer_range -#ifndef LL_MESA_HEADLESS -							glFlushMappedBufferRangeAPPLE(GL_ELEMENT_ARRAY_BUFFER, offset, length); -#endif -#endif  						}  						stop_glerror();  					} | 
