/* This file is part of Magnum. Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Vladimír Vondruš Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "flextGL.h" #include #include #include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" #ifdef MAGNUM_PLATFORM_USE_EGL #include #include #include "Magnum/GL/Context.h" #endif void flextGLInit(Magnum::GL::Context& context) { Magnum::Platform::Implementation::OpenGLFunctionLoader loader; #ifdef MAGNUM_PLATFORM_USE_EGL { /* EGL contexts on NVidia 390 drivers don't have correct statically linked GL 1.0 and 1.1 functions (such as glGetString()) and one has to retrieve them explicitly using eglGetProcAddress(). */ EGLDisplay display = eglGetCurrentDisplay(); const char* vendor = eglQueryString(display, EGL_VENDOR); if(std::strcmp(vendor, "NVIDIA") == 0 && !context.isDriverWorkaroundDisabled("nv-egl-incorrect-gl11-function-pointers")) { /* GL_VERSION_1_0 */ flextglBlendFunc = reinterpret_cast(loader.load("glBlendFunc")); flextglClear = reinterpret_cast(loader.load("glClear")); flextglClearColor = reinterpret_cast(loader.load("glClearColor")); flextglClearDepth = reinterpret_cast(loader.load("glClearDepth")); flextglClearStencil = reinterpret_cast(loader.load("glClearStencil")); flextglColorMask = reinterpret_cast(loader.load("glColorMask")); flextglCullFace = reinterpret_cast(loader.load("glCullFace")); flextglDepthFunc = reinterpret_cast(loader.load("glDepthFunc")); flextglDepthMask = reinterpret_cast(loader.load("glDepthMask")); flextglDepthRange = reinterpret_cast(loader.load("glDepthRange")); flextglDisable = reinterpret_cast(loader.load("glDisable")); flextglDrawBuffer = reinterpret_cast(loader.load("glDrawBuffer")); flextglEnable = reinterpret_cast(loader.load("glEnable")); flextglFinish = reinterpret_cast(loader.load("glFinish")); flextglFlush = reinterpret_cast(loader.load("glFlush")); flextglFrontFace = reinterpret_cast(loader.load("glFrontFace")); flextglGetBooleanv = reinterpret_cast(loader.load("glGetBooleanv")); flextglGetDoublev = reinterpret_cast(loader.load("glGetDoublev")); flextglGetError = reinterpret_cast(loader.load("glGetError")); flextglGetFloatv = reinterpret_cast(loader.load("glGetFloatv")); flextglGetIntegerv = reinterpret_cast(loader.load("glGetIntegerv")); flextglGetString = reinterpret_cast(loader.load("glGetString")); flextglGetTexImage = reinterpret_cast(loader.load("glGetTexImage")); flextglGetTexLevelParameterfv = reinterpret_cast(loader.load("glGetTexLevelParameterfv")); flextglGetTexLevelParameteriv = reinterpret_cast(loader.load("glGetTexLevelParameteriv")); flextglGetTexParameterfv = reinterpret_cast(loader.load("glGetTexParameterfv")); flextglGetTexParameteriv = reinterpret_cast(loader.load("glGetTexParameteriv")); flextglHint = reinterpret_cast(loader.load("glHint")); flextglIsEnabled = reinterpret_cast(loader.load("glIsEnabled")); flextglLineWidth = reinterpret_cast(loader.load("glLineWidth")); flextglLogicOp = reinterpret_cast(loader.load("glLogicOp")); flextglPixelStoref = reinterpret_cast(loader.load("glPixelStoref")); flextglPixelStorei = reinterpret_cast(loader.load("glPixelStorei")); flextglPointSize = reinterpret_cast(loader.load("glPointSize")); flextglPolygonMode = reinterpret_cast(loader.load("glPolygonMode")); flextglReadBuffer = reinterpret_cast(loader.load("glReadBuffer")); flextglReadPixels = reinterpret_cast(loader.load("glReadPixels")); flextglScissor = reinterpret_cast(loader.load("glScissor")); flextglStencilFunc = reinterpret_cast(loader.load("glStencilFunc")); flextglStencilMask = reinterpret_cast(loader.load("glStencilMask")); flextglStencilOp = reinterpret_cast(loader.load("glStencilOp")); flextglTexImage1D = reinterpret_cast(loader.load("glTexImage1D")); flextglTexImage2D = reinterpret_cast(loader.load("glTexImage2D")); flextglTexParameterf = reinterpret_cast(loader.load("glTexParameterf")); flextglTexParameterfv = reinterpret_cast(loader.load("glTexParameterfv")); flextglTexParameteri = reinterpret_cast(loader.load("glTexParameteri")); flextglTexParameteriv = reinterpret_cast(loader.load("glTexParameteriv")); flextglViewport = reinterpret_cast(loader.load("glViewport")); /* GL_VERSION_1_1 */ flextglBindTexture = reinterpret_cast(loader.load("glBindTexture")); flextglCopyTexImage1D = reinterpret_cast(loader.load("glCopyTexImage1D")); flextglCopyTexImage2D = reinterpret_cast(loader.load("glCopyTexImage2D")); flextglCopyTexSubImage1D = reinterpret_cast(loader.load("glCopyTexSubImage1D")); flextglCopyTexSubImage2D = reinterpret_cast(loader.load("glCopyTexSubImage2D")); flextglDeleteTextures = reinterpret_cast(loader.load("glDeleteTextures")); flextglDrawArrays = reinterpret_cast(loader.load("glDrawArrays")); flextglDrawElements = reinterpret_cast(loader.load("glDrawElements")); flextglGenTextures = reinterpret_cast(loader.load("glGenTextures")); flextglIsTexture = reinterpret_cast(loader.load("glIsTexture")); flextglPolygonOffset = reinterpret_cast(loader.load("glPolygonOffset")); flextglTexSubImage1D = reinterpret_cast(loader.load("glTexSubImage1D")); flextglTexSubImage2D = reinterpret_cast(loader.load("glTexSubImage2D")); } } #else static_cast(context); #endif /* GL_ARB_ES3_2_compatibility */ flextglPrimitiveBoundingBoxARB = reinterpret_cast(loader.load("glPrimitiveBoundingBoxARB")); /* GL_ARB_bindless_texture */ flextglGetImageHandleARB = reinterpret_cast(loader.load("glGetImageHandleARB")); flextglGetTextureHandleARB = reinterpret_cast(loader.load("glGetTextureHandleARB")); flextglGetTextureSamplerHandleARB = reinterpret_cast(loader.load("glGetTextureSamplerHandleARB")); flextglGetVertexAttribLui64vARB = reinterpret_cast(loader.load("glGetVertexAttribLui64vARB")); flextglIsImageHandleResidentARB = reinterpret_cast(loader.load("glIsImageHandleResidentARB")); flextglIsTextureHandleResidentARB = reinterpret_cast(loader.load("glIsTextureHandleResidentARB")); flextglMakeImageHandleNonResidentARB = reinterpret_cast(loader.load("glMakeImageHandleNonResidentARB")); flextglMakeImageHandleResidentARB = reinterpret_cast(loader.load("glMakeImageHandleResidentARB")); flextglMakeTextureHandleNonResidentARB = reinterpret_cast(loader.load("glMakeTextureHandleNonResidentARB")); flextglMakeTextureHandleResidentARB = reinterpret_cast(loader.load("glMakeTextureHandleResidentARB")); flextglProgramUniformHandleui64ARB = reinterpret_cast(loader.load("glProgramUniformHandleui64ARB")); flextglProgramUniformHandleui64vARB = reinterpret_cast(loader.load("glProgramUniformHandleui64vARB")); flextglUniformHandleui64ARB = reinterpret_cast(loader.load("glUniformHandleui64ARB")); flextglUniformHandleui64vARB = reinterpret_cast(loader.load("glUniformHandleui64vARB")); flextglVertexAttribL1ui64ARB = reinterpret_cast(loader.load("glVertexAttribL1ui64ARB")); flextglVertexAttribL1ui64vARB = reinterpret_cast(loader.load("glVertexAttribL1ui64vARB")); /* GL_ARB_compute_variable_group_size */ flextglDispatchComputeGroupSizeARB = reinterpret_cast(loader.load("glDispatchComputeGroupSizeARB")); /* GL_ARB_robustness */ flextglGetGraphicsResetStatusARB = reinterpret_cast(loader.load("glGetGraphicsResetStatusARB")); flextglGetnCompressedTexImageARB = reinterpret_cast(loader.load("glGetnCompressedTexImageARB")); flextglGetnTexImageARB = reinterpret_cast(loader.load("glGetnTexImageARB")); flextglGetnUniformdvARB = reinterpret_cast(loader.load("glGetnUniformdvARB")); flextglGetnUniformfvARB = reinterpret_cast(loader.load("glGetnUniformfvARB")); flextglGetnUniformivARB = reinterpret_cast(loader.load("glGetnUniformivARB")); flextglGetnUniformuivARB = reinterpret_cast(loader.load("glGetnUniformuivARB")); flextglReadnPixelsARB = reinterpret_cast(loader.load("glReadnPixelsARB")); /* GL_ARB_sparse_buffer */ flextglBufferPageCommitmentARB = reinterpret_cast(loader.load("glBufferPageCommitmentARB")); flextglNamedBufferPageCommitmentARB = reinterpret_cast(loader.load("glNamedBufferPageCommitmentARB")); flextglNamedBufferPageCommitmentEXT = reinterpret_cast(loader.load("glNamedBufferPageCommitmentEXT")); /* GL_ARB_sparse_texture */ flextglTexPageCommitmentARB = reinterpret_cast(loader.load("glTexPageCommitmentARB")); /* GL_EXT_debug_label */ flextglGetObjectLabelEXT = reinterpret_cast(loader.load("glGetObjectLabelEXT")); flextglLabelObjectEXT = reinterpret_cast(loader.load("glLabelObjectEXT")); /* GL_EXT_debug_marker */ flextglInsertEventMarkerEXT = reinterpret_cast(loader.load("glInsertEventMarkerEXT")); flextglPopGroupMarkerEXT = reinterpret_cast(loader.load("glPopGroupMarkerEXT")); flextglPushGroupMarkerEXT = reinterpret_cast(loader.load("glPushGroupMarkerEXT")); /* GL_GREMEDY_string_marker */ flextglStringMarkerGREMEDY = reinterpret_cast(loader.load("glStringMarkerGREMEDY")); /* GL_KHR_blend_equation_advanced */ flextglBlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); /* GL_OVR_multiview */ flextglFramebufferTextureMultiviewOVR = reinterpret_cast(loader.load("glFramebufferTextureMultiviewOVR")); /* GL_VERSION_1_2 */ flextglCopyTexSubImage3D = reinterpret_cast(loader.load("glCopyTexSubImage3D")); flextglDrawRangeElements = reinterpret_cast(loader.load("glDrawRangeElements")); flextglTexImage3D = reinterpret_cast(loader.load("glTexImage3D")); flextglTexSubImage3D = reinterpret_cast(loader.load("glTexSubImage3D")); /* GL_VERSION_1_3 */ flextglActiveTexture = reinterpret_cast(loader.load("glActiveTexture")); flextglCompressedTexImage1D = reinterpret_cast(loader.load("glCompressedTexImage1D")); flextglCompressedTexImage2D = reinterpret_cast(loader.load("glCompressedTexImage2D")); flextglCompressedTexImage3D = reinterpret_cast(loader.load("glCompressedTexImage3D")); flextglCompressedTexSubImage1D = reinterpret_cast(loader.load("glCompressedTexSubImage1D")); flextglCompressedTexSubImage2D = reinterpret_cast(loader.load("glCompressedTexSubImage2D")); flextglCompressedTexSubImage3D = reinterpret_cast(loader.load("glCompressedTexSubImage3D")); flextglGetCompressedTexImage = reinterpret_cast(loader.load("glGetCompressedTexImage")); flextglSampleCoverage = reinterpret_cast(loader.load("glSampleCoverage")); /* GL_VERSION_1_4 */ flextglBlendColor = reinterpret_cast(loader.load("glBlendColor")); flextglBlendEquation = reinterpret_cast(loader.load("glBlendEquation")); flextglBlendFuncSeparate = reinterpret_cast(loader.load("glBlendFuncSeparate")); flextglMultiDrawArrays = reinterpret_cast(loader.load("glMultiDrawArrays")); flextglMultiDrawElements = reinterpret_cast(loader.load("glMultiDrawElements")); flextglPointParameterf = reinterpret_cast(loader.load("glPointParameterf")); flextglPointParameterfv = reinterpret_cast(loader.load("glPointParameterfv")); flextglPointParameteri = reinterpret_cast(loader.load("glPointParameteri")); flextglPointParameteriv = reinterpret_cast(loader.load("glPointParameteriv")); /* GL_VERSION_1_5 */ flextglBeginQuery = reinterpret_cast(loader.load("glBeginQuery")); flextglBindBuffer = reinterpret_cast(loader.load("glBindBuffer")); flextglBufferData = reinterpret_cast(loader.load("glBufferData")); flextglBufferSubData = reinterpret_cast(loader.load("glBufferSubData")); flextglDeleteBuffers = reinterpret_cast(loader.load("glDeleteBuffers")); flextglDeleteQueries = reinterpret_cast(loader.load("glDeleteQueries")); flextglEndQuery = reinterpret_cast(loader.load("glEndQuery")); flextglGenBuffers = reinterpret_cast(loader.load("glGenBuffers")); flextglGenQueries = reinterpret_cast(loader.load("glGenQueries")); flextglGetBufferParameteriv = reinterpret_cast(loader.load("glGetBufferParameteriv")); flextglGetBufferPointerv = reinterpret_cast(loader.load("glGetBufferPointerv")); flextglGetBufferSubData = reinterpret_cast(loader.load("glGetBufferSubData")); flextglGetQueryObjectiv = reinterpret_cast(loader.load("glGetQueryObjectiv")); flextglGetQueryObjectuiv = reinterpret_cast(loader.load("glGetQueryObjectuiv")); flextglGetQueryiv = reinterpret_cast(loader.load("glGetQueryiv")); flextglIsBuffer = reinterpret_cast(loader.load("glIsBuffer")); flextglIsQuery = reinterpret_cast(loader.load("glIsQuery")); flextglMapBuffer = reinterpret_cast(loader.load("glMapBuffer")); flextglUnmapBuffer = reinterpret_cast(loader.load("glUnmapBuffer")); /* GL_VERSION_2_0 */ flextglAttachShader = reinterpret_cast(loader.load("glAttachShader")); flextglBindAttribLocation = reinterpret_cast(loader.load("glBindAttribLocation")); flextglBlendEquationSeparate = reinterpret_cast(loader.load("glBlendEquationSeparate")); flextglCompileShader = reinterpret_cast(loader.load("glCompileShader")); flextglCreateProgram = reinterpret_cast(loader.load("glCreateProgram")); flextglCreateShader = reinterpret_cast(loader.load("glCreateShader")); flextglDeleteProgram = reinterpret_cast(loader.load("glDeleteProgram")); flextglDeleteShader = reinterpret_cast(loader.load("glDeleteShader")); flextglDetachShader = reinterpret_cast(loader.load("glDetachShader")); flextglDisableVertexAttribArray = reinterpret_cast(loader.load("glDisableVertexAttribArray")); flextglDrawBuffers = reinterpret_cast(loader.load("glDrawBuffers")); flextglEnableVertexAttribArray = reinterpret_cast(loader.load("glEnableVertexAttribArray")); flextglGetActiveAttrib = reinterpret_cast(loader.load("glGetActiveAttrib")); flextglGetActiveUniform = reinterpret_cast(loader.load("glGetActiveUniform")); flextglGetAttachedShaders = reinterpret_cast(loader.load("glGetAttachedShaders")); flextglGetAttribLocation = reinterpret_cast(loader.load("glGetAttribLocation")); flextglGetProgramInfoLog = reinterpret_cast(loader.load("glGetProgramInfoLog")); flextglGetProgramiv = reinterpret_cast(loader.load("glGetProgramiv")); flextglGetShaderInfoLog = reinterpret_cast(loader.load("glGetShaderInfoLog")); flextglGetShaderSource = reinterpret_cast(loader.load("glGetShaderSource")); flextglGetShaderiv = reinterpret_cast(loader.load("glGetShaderiv")); flextglGetUniformLocation = reinterpret_cast(loader.load("glGetUniformLocation")); flextglGetUniformfv = reinterpret_cast(loader.load("glGetUniformfv")); flextglGetUniformiv = reinterpret_cast(loader.load("glGetUniformiv")); flextglGetVertexAttribPointerv = reinterpret_cast(loader.load("glGetVertexAttribPointerv")); flextglGetVertexAttribdv = reinterpret_cast(loader.load("glGetVertexAttribdv")); flextglGetVertexAttribfv = reinterpret_cast(loader.load("glGetVertexAttribfv")); flextglGetVertexAttribiv = reinterpret_cast(loader.load("glGetVertexAttribiv")); flextglIsProgram = reinterpret_cast(loader.load("glIsProgram")); flextglIsShader = reinterpret_cast(loader.load("glIsShader")); flextglLinkProgram = reinterpret_cast(loader.load("glLinkProgram")); flextglShaderSource = reinterpret_cast(loader.load("glShaderSource")); flextglStencilFuncSeparate = reinterpret_cast(loader.load("glStencilFuncSeparate")); flextglStencilMaskSeparate = reinterpret_cast(loader.load("glStencilMaskSeparate")); flextglStencilOpSeparate = reinterpret_cast(loader.load("glStencilOpSeparate")); flextglUniform1f = reinterpret_cast(loader.load("glUniform1f")); flextglUniform1fv = reinterpret_cast(loader.load("glUniform1fv")); flextglUniform1i = reinterpret_cast(loader.load("glUniform1i")); flextglUniform1iv = reinterpret_cast(loader.load("glUniform1iv")); flextglUniform2f = reinterpret_cast(loader.load("glUniform2f")); flextglUniform2fv = reinterpret_cast(loader.load("glUniform2fv")); flextglUniform2i = reinterpret_cast(loader.load("glUniform2i")); flextglUniform2iv = reinterpret_cast(loader.load("glUniform2iv")); flextglUniform3f = reinterpret_cast(loader.load("glUniform3f")); flextglUniform3fv = reinterpret_cast(loader.load("glUniform3fv")); flextglUniform3i = reinterpret_cast(loader.load("glUniform3i")); flextglUniform3iv = reinterpret_cast(loader.load("glUniform3iv")); flextglUniform4f = reinterpret_cast(loader.load("glUniform4f")); flextglUniform4fv = reinterpret_cast(loader.load("glUniform4fv")); flextglUniform4i = reinterpret_cast(loader.load("glUniform4i")); flextglUniform4iv = reinterpret_cast(loader.load("glUniform4iv")); flextglUniformMatrix2fv = reinterpret_cast(loader.load("glUniformMatrix2fv")); flextglUniformMatrix3fv = reinterpret_cast(loader.load("glUniformMatrix3fv")); flextglUniformMatrix4fv = reinterpret_cast(loader.load("glUniformMatrix4fv")); flextglUseProgram = reinterpret_cast(loader.load("glUseProgram")); flextglValidateProgram = reinterpret_cast(loader.load("glValidateProgram")); flextglVertexAttrib1d = reinterpret_cast(loader.load("glVertexAttrib1d")); flextglVertexAttrib1dv = reinterpret_cast(loader.load("glVertexAttrib1dv")); flextglVertexAttrib1f = reinterpret_cast(loader.load("glVertexAttrib1f")); flextglVertexAttrib1fv = reinterpret_cast(loader.load("glVertexAttrib1fv")); flextglVertexAttrib1s = reinterpret_cast(loader.load("glVertexAttrib1s")); flextglVertexAttrib1sv = reinterpret_cast(loader.load("glVertexAttrib1sv")); flextglVertexAttrib2d = reinterpret_cast(loader.load("glVertexAttrib2d")); flextglVertexAttrib2dv = reinterpret_cast(loader.load("glVertexAttrib2dv")); flextglVertexAttrib2f = reinterpret_cast(loader.load("glVertexAttrib2f")); flextglVertexAttrib2fv = reinterpret_cast(loader.load("glVertexAttrib2fv")); flextglVertexAttrib2s = reinterpret_cast(loader.load("glVertexAttrib2s")); flextglVertexAttrib2sv = reinterpret_cast(loader.load("glVertexAttrib2sv")); flextglVertexAttrib3d = reinterpret_cast(loader.load("glVertexAttrib3d")); flextglVertexAttrib3dv = reinterpret_cast(loader.load("glVertexAttrib3dv")); flextglVertexAttrib3f = reinterpret_cast(loader.load("glVertexAttrib3f")); flextglVertexAttrib3fv = reinterpret_cast(loader.load("glVertexAttrib3fv")); flextglVertexAttrib3s = reinterpret_cast(loader.load("glVertexAttrib3s")); flextglVertexAttrib3sv = reinterpret_cast(loader.load("glVertexAttrib3sv")); flextglVertexAttrib4Nbv = reinterpret_cast(loader.load("glVertexAttrib4Nbv")); flextglVertexAttrib4Niv = reinterpret_cast(loader.load("glVertexAttrib4Niv")); flextglVertexAttrib4Nsv = reinterpret_cast(loader.load("glVertexAttrib4Nsv")); flextglVertexAttrib4Nub = reinterpret_cast(loader.load("glVertexAttrib4Nub")); flextglVertexAttrib4Nubv = reinterpret_cast(loader.load("glVertexAttrib4Nubv")); flextglVertexAttrib4Nuiv = reinterpret_cast(loader.load("glVertexAttrib4Nuiv")); flextglVertexAttrib4Nusv = reinterpret_cast(loader.load("glVertexAttrib4Nusv")); flextglVertexAttrib4bv = reinterpret_cast(loader.load("glVertexAttrib4bv")); flextglVertexAttrib4d = reinterpret_cast(loader.load("glVertexAttrib4d")); flextglVertexAttrib4dv = reinterpret_cast(loader.load("glVertexAttrib4dv")); flextglVertexAttrib4f = reinterpret_cast(loader.load("glVertexAttrib4f")); flextglVertexAttrib4fv = reinterpret_cast(loader.load("glVertexAttrib4fv")); flextglVertexAttrib4iv = reinterpret_cast(loader.load("glVertexAttrib4iv")); flextglVertexAttrib4s = reinterpret_cast(loader.load("glVertexAttrib4s")); flextglVertexAttrib4sv = reinterpret_cast(loader.load("glVertexAttrib4sv")); flextglVertexAttrib4ubv = reinterpret_cast(loader.load("glVertexAttrib4ubv")); flextglVertexAttrib4uiv = reinterpret_cast(loader.load("glVertexAttrib4uiv")); flextglVertexAttrib4usv = reinterpret_cast(loader.load("glVertexAttrib4usv")); flextglVertexAttribPointer = reinterpret_cast(loader.load("glVertexAttribPointer")); /* GL_VERSION_2_1 */ flextglUniformMatrix2x3fv = reinterpret_cast(loader.load("glUniformMatrix2x3fv")); flextglUniformMatrix2x4fv = reinterpret_cast(loader.load("glUniformMatrix2x4fv")); flextglUniformMatrix3x2fv = reinterpret_cast(loader.load("glUniformMatrix3x2fv")); flextglUniformMatrix3x4fv = reinterpret_cast(loader.load("glUniformMatrix3x4fv")); flextglUniformMatrix4x2fv = reinterpret_cast(loader.load("glUniformMatrix4x2fv")); flextglUniformMatrix4x3fv = reinterpret_cast(loader.load("glUniformMatrix4x3fv")); /* GL_VERSION_3_0 */ flextglBeginConditionalRender = reinterpret_cast(loader.load("glBeginConditionalRender")); flextglBeginTransformFeedback = reinterpret_cast(loader.load("glBeginTransformFeedback")); flextglBindBufferBase = reinterpret_cast(loader.load("glBindBufferBase")); flextglBindBufferRange = reinterpret_cast(loader.load("glBindBufferRange")); flextglBindFragDataLocation = reinterpret_cast(loader.load("glBindFragDataLocation")); flextglBindFramebuffer = reinterpret_cast(loader.load("glBindFramebuffer")); flextglBindRenderbuffer = reinterpret_cast(loader.load("glBindRenderbuffer")); flextglBindVertexArray = reinterpret_cast(loader.load("glBindVertexArray")); flextglBlitFramebuffer = reinterpret_cast(loader.load("glBlitFramebuffer")); flextglCheckFramebufferStatus = reinterpret_cast(loader.load("glCheckFramebufferStatus")); flextglClampColor = reinterpret_cast(loader.load("glClampColor")); flextglClearBufferfi = reinterpret_cast(loader.load("glClearBufferfi")); flextglClearBufferfv = reinterpret_cast(loader.load("glClearBufferfv")); flextglClearBufferiv = reinterpret_cast(loader.load("glClearBufferiv")); flextglClearBufferuiv = reinterpret_cast(loader.load("glClearBufferuiv")); flextglColorMaski = reinterpret_cast(loader.load("glColorMaski")); flextglDeleteFramebuffers = reinterpret_cast(loader.load("glDeleteFramebuffers")); flextglDeleteRenderbuffers = reinterpret_cast(loader.load("glDeleteRenderbuffers")); flextglDeleteVertexArrays = reinterpret_cast(loader.load("glDeleteVertexArrays")); flextglDisablei = reinterpret_cast(loader.load("glDisablei")); flextglEnablei = reinterpret_cast(loader.load("glEnablei")); flextglEndConditionalRender = reinterpret_cast(loader.load("glEndConditionalRender")); flextglEndTransformFeedback = reinterpret_cast(loader.load("glEndTransformFeedback")); flextglFlushMappedBufferRange = reinterpret_cast(loader.load("glFlushMappedBufferRange")); flextglFramebufferRenderbuffer = reinterpret_cast(loader.load("glFramebufferRenderbuffer")); flextglFramebufferTexture1D = reinterpret_cast(loader.load("glFramebufferTexture1D")); flextglFramebufferTexture2D = reinterpret_cast(loader.load("glFramebufferTexture2D")); flextglFramebufferTexture3D = reinterpret_cast(loader.load("glFramebufferTexture3D")); flextglFramebufferTextureLayer = reinterpret_cast(loader.load("glFramebufferTextureLayer")); flextglGenFramebuffers = reinterpret_cast(loader.load("glGenFramebuffers")); flextglGenRenderbuffers = reinterpret_cast(loader.load("glGenRenderbuffers")); flextglGenVertexArrays = reinterpret_cast(loader.load("glGenVertexArrays")); flextglGenerateMipmap = reinterpret_cast(loader.load("glGenerateMipmap")); flextglGetBooleani_v = reinterpret_cast(loader.load("glGetBooleani_v")); flextglGetFragDataLocation = reinterpret_cast(loader.load("glGetFragDataLocation")); flextglGetFramebufferAttachmentParameteriv = reinterpret_cast(loader.load("glGetFramebufferAttachmentParameteriv")); flextglGetIntegeri_v = reinterpret_cast(loader.load("glGetIntegeri_v")); flextglGetRenderbufferParameteriv = reinterpret_cast(loader.load("glGetRenderbufferParameteriv")); flextglGetStringi = reinterpret_cast(loader.load("glGetStringi")); flextglGetTexParameterIiv = reinterpret_cast(loader.load("glGetTexParameterIiv")); flextglGetTexParameterIuiv = reinterpret_cast(loader.load("glGetTexParameterIuiv")); flextglGetTransformFeedbackVarying = reinterpret_cast(loader.load("glGetTransformFeedbackVarying")); flextglGetUniformuiv = reinterpret_cast(loader.load("glGetUniformuiv")); flextglGetVertexAttribIiv = reinterpret_cast(loader.load("glGetVertexAttribIiv")); flextglGetVertexAttribIuiv = reinterpret_cast(loader.load("glGetVertexAttribIuiv")); flextglIsEnabledi = reinterpret_cast(loader.load("glIsEnabledi")); flextglIsFramebuffer = reinterpret_cast(loader.load("glIsFramebuffer")); flextglIsRenderbuffer = reinterpret_cast(loader.load("glIsRenderbuffer")); flextglIsVertexArray = reinterpret_cast(loader.load("glIsVertexArray")); flextglMapBufferRange = reinterpret_cast(loader.load("glMapBufferRange")); flextglRenderbufferStorage = reinterpret_cast(loader.load("glRenderbufferStorage")); flextglRenderbufferStorageMultisample = reinterpret_cast(loader.load("glRenderbufferStorageMultisample")); flextglTexParameterIiv = reinterpret_cast(loader.load("glTexParameterIiv")); flextglTexParameterIuiv = reinterpret_cast(loader.load("glTexParameterIuiv")); flextglTransformFeedbackVaryings = reinterpret_cast(loader.load("glTransformFeedbackVaryings")); flextglUniform1ui = reinterpret_cast(loader.load("glUniform1ui")); flextglUniform1uiv = reinterpret_cast(loader.load("glUniform1uiv")); flextglUniform2ui = reinterpret_cast(loader.load("glUniform2ui")); flextglUniform2uiv = reinterpret_cast(loader.load("glUniform2uiv")); flextglUniform3ui = reinterpret_cast(loader.load("glUniform3ui")); flextglUniform3uiv = reinterpret_cast(loader.load("glUniform3uiv")); flextglUniform4ui = reinterpret_cast(loader.load("glUniform4ui")); flextglUniform4uiv = reinterpret_cast(loader.load("glUniform4uiv")); flextglVertexAttribI1i = reinterpret_cast(loader.load("glVertexAttribI1i")); flextglVertexAttribI1iv = reinterpret_cast(loader.load("glVertexAttribI1iv")); flextglVertexAttribI1ui = reinterpret_cast(loader.load("glVertexAttribI1ui")); flextglVertexAttribI1uiv = reinterpret_cast(loader.load("glVertexAttribI1uiv")); flextglVertexAttribI2i = reinterpret_cast(loader.load("glVertexAttribI2i")); flextglVertexAttribI2iv = reinterpret_cast(loader.load("glVertexAttribI2iv")); flextglVertexAttribI2ui = reinterpret_cast(loader.load("glVertexAttribI2ui")); flextglVertexAttribI2uiv = reinterpret_cast(loader.load("glVertexAttribI2uiv")); flextglVertexAttribI3i = reinterpret_cast(loader.load("glVertexAttribI3i")); flextglVertexAttribI3iv = reinterpret_cast(loader.load("glVertexAttribI3iv")); flextglVertexAttribI3ui = reinterpret_cast(loader.load("glVertexAttribI3ui")); flextglVertexAttribI3uiv = reinterpret_cast(loader.load("glVertexAttribI3uiv")); flextglVertexAttribI4bv = reinterpret_cast(loader.load("glVertexAttribI4bv")); flextglVertexAttribI4i = reinterpret_cast(loader.load("glVertexAttribI4i")); flextglVertexAttribI4iv = reinterpret_cast(loader.load("glVertexAttribI4iv")); flextglVertexAttribI4sv = reinterpret_cast(loader.load("glVertexAttribI4sv")); flextglVertexAttribI4ubv = reinterpret_cast(loader.load("glVertexAttribI4ubv")); flextglVertexAttribI4ui = reinterpret_cast(loader.load("glVertexAttribI4ui")); flextglVertexAttribI4uiv = reinterpret_cast(loader.load("glVertexAttribI4uiv")); flextglVertexAttribI4usv = reinterpret_cast(loader.load("glVertexAttribI4usv")); flextglVertexAttribIPointer = reinterpret_cast(loader.load("glVertexAttribIPointer")); /* GL_VERSION_3_1 */ flextglCopyBufferSubData = reinterpret_cast(loader.load("glCopyBufferSubData")); flextglDrawArraysInstanced = reinterpret_cast(loader.load("glDrawArraysInstanced")); flextglDrawElementsInstanced = reinterpret_cast(loader.load("glDrawElementsInstanced")); flextglGetActiveUniformBlockName = reinterpret_cast(loader.load("glGetActiveUniformBlockName")); flextglGetActiveUniformBlockiv = reinterpret_cast(loader.load("glGetActiveUniformBlockiv")); flextglGetActiveUniformName = reinterpret_cast(loader.load("glGetActiveUniformName")); flextglGetActiveUniformsiv = reinterpret_cast(loader.load("glGetActiveUniformsiv")); flextglGetUniformBlockIndex = reinterpret_cast(loader.load("glGetUniformBlockIndex")); flextglGetUniformIndices = reinterpret_cast(loader.load("glGetUniformIndices")); flextglPrimitiveRestartIndex = reinterpret_cast(loader.load("glPrimitiveRestartIndex")); flextglTexBuffer = reinterpret_cast(loader.load("glTexBuffer")); flextglUniformBlockBinding = reinterpret_cast(loader.load("glUniformBlockBinding")); /* GL_VERSION_3_2 */ flextglClientWaitSync = reinterpret_cast(loader.load("glClientWaitSync")); flextglDeleteSync = reinterpret_cast(loader.load("glDeleteSync")); flextglDrawElementsBaseVertex = reinterpret_cast(loader.load("glDrawElementsBaseVertex")); flextglDrawElementsInstancedBaseVertex = reinterpret_cast(loader.load("glDrawElementsInstancedBaseVertex")); flextglDrawRangeElementsBaseVertex = reinterpret_cast(loader.load("glDrawRangeElementsBaseVertex")); flextglFenceSync = reinterpret_cast(loader.load("glFenceSync")); flextglFramebufferTexture = reinterpret_cast(loader.load("glFramebufferTexture")); flextglGetBufferParameteri64v = reinterpret_cast(loader.load("glGetBufferParameteri64v")); flextglGetInteger64i_v = reinterpret_cast(loader.load("glGetInteger64i_v")); flextglGetInteger64v = reinterpret_cast(loader.load("glGetInteger64v")); flextglGetMultisamplefv = reinterpret_cast(loader.load("glGetMultisamplefv")); flextglGetSynciv = reinterpret_cast(loader.load("glGetSynciv")); flextglIsSync = reinterpret_cast(loader.load("glIsSync")); flextglMultiDrawElementsBaseVertex = reinterpret_cast(loader.load("glMultiDrawElementsBaseVertex")); flextglProvokingVertex = reinterpret_cast(loader.load("glProvokingVertex")); flextglSampleMaski = reinterpret_cast(loader.load("glSampleMaski")); flextglTexImage2DMultisample = reinterpret_cast(loader.load("glTexImage2DMultisample")); flextglTexImage3DMultisample = reinterpret_cast(loader.load("glTexImage3DMultisample")); flextglWaitSync = reinterpret_cast(loader.load("glWaitSync")); /* GL_VERSION_3_3 */ flextglBindFragDataLocationIndexed = reinterpret_cast(loader.load("glBindFragDataLocationIndexed")); flextglBindSampler = reinterpret_cast(loader.load("glBindSampler")); flextglDeleteSamplers = reinterpret_cast(loader.load("glDeleteSamplers")); flextglGenSamplers = reinterpret_cast(loader.load("glGenSamplers")); flextglGetFragDataIndex = reinterpret_cast(loader.load("glGetFragDataIndex")); flextglGetQueryObjecti64v = reinterpret_cast(loader.load("glGetQueryObjecti64v")); flextglGetQueryObjectui64v = reinterpret_cast(loader.load("glGetQueryObjectui64v")); flextglGetSamplerParameterIiv = reinterpret_cast(loader.load("glGetSamplerParameterIiv")); flextglGetSamplerParameterIuiv = reinterpret_cast(loader.load("glGetSamplerParameterIuiv")); flextglGetSamplerParameterfv = reinterpret_cast(loader.load("glGetSamplerParameterfv")); flextglGetSamplerParameteriv = reinterpret_cast(loader.load("glGetSamplerParameteriv")); flextglIsSampler = reinterpret_cast(loader.load("glIsSampler")); flextglQueryCounter = reinterpret_cast(loader.load("glQueryCounter")); flextglSamplerParameterIiv = reinterpret_cast(loader.load("glSamplerParameterIiv")); flextglSamplerParameterIuiv = reinterpret_cast(loader.load("glSamplerParameterIuiv")); flextglSamplerParameterf = reinterpret_cast(loader.load("glSamplerParameterf")); flextglSamplerParameterfv = reinterpret_cast(loader.load("glSamplerParameterfv")); flextglSamplerParameteri = reinterpret_cast(loader.load("glSamplerParameteri")); flextglSamplerParameteriv = reinterpret_cast(loader.load("glSamplerParameteriv")); flextglVertexAttribDivisor = reinterpret_cast(loader.load("glVertexAttribDivisor")); flextglVertexAttribP1ui = reinterpret_cast(loader.load("glVertexAttribP1ui")); flextglVertexAttribP1uiv = reinterpret_cast(loader.load("glVertexAttribP1uiv")); flextglVertexAttribP2ui = reinterpret_cast(loader.load("glVertexAttribP2ui")); flextglVertexAttribP2uiv = reinterpret_cast(loader.load("glVertexAttribP2uiv")); flextglVertexAttribP3ui = reinterpret_cast(loader.load("glVertexAttribP3ui")); flextglVertexAttribP3uiv = reinterpret_cast(loader.load("glVertexAttribP3uiv")); flextglVertexAttribP4ui = reinterpret_cast(loader.load("glVertexAttribP4ui")); flextglVertexAttribP4uiv = reinterpret_cast(loader.load("glVertexAttribP4uiv")); /* GL_VERSION_4_0 */ flextglBeginQueryIndexed = reinterpret_cast(loader.load("glBeginQueryIndexed")); flextglBindTransformFeedback = reinterpret_cast(loader.load("glBindTransformFeedback")); flextglBlendEquationSeparatei = reinterpret_cast(loader.load("glBlendEquationSeparatei")); flextglBlendEquationi = reinterpret_cast(loader.load("glBlendEquationi")); flextglBlendFuncSeparatei = reinterpret_cast(loader.load("glBlendFuncSeparatei")); flextglBlendFunci = reinterpret_cast(loader.load("glBlendFunci")); flextglDeleteTransformFeedbacks = reinterpret_cast(loader.load("glDeleteTransformFeedbacks")); flextglDrawArraysIndirect = reinterpret_cast(loader.load("glDrawArraysIndirect")); flextglDrawElementsIndirect = reinterpret_cast(loader.load("glDrawElementsIndirect")); flextglDrawTransformFeedback = reinterpret_cast(loader.load("glDrawTransformFeedback")); flextglDrawTransformFeedbackStream = reinterpret_cast(loader.load("glDrawTransformFeedbackStream")); flextglEndQueryIndexed = reinterpret_cast(loader.load("glEndQueryIndexed")); flextglGenTransformFeedbacks = reinterpret_cast(loader.load("glGenTransformFeedbacks")); flextglGetActiveSubroutineName = reinterpret_cast(loader.load("glGetActiveSubroutineName")); flextglGetActiveSubroutineUniformName = reinterpret_cast(loader.load("glGetActiveSubroutineUniformName")); flextglGetActiveSubroutineUniformiv = reinterpret_cast(loader.load("glGetActiveSubroutineUniformiv")); flextglGetProgramStageiv = reinterpret_cast(loader.load("glGetProgramStageiv")); flextglGetQueryIndexediv = reinterpret_cast(loader.load("glGetQueryIndexediv")); flextglGetSubroutineIndex = reinterpret_cast(loader.load("glGetSubroutineIndex")); flextglGetSubroutineUniformLocation = reinterpret_cast(loader.load("glGetSubroutineUniformLocation")); flextglGetUniformSubroutineuiv = reinterpret_cast(loader.load("glGetUniformSubroutineuiv")); flextglGetUniformdv = reinterpret_cast(loader.load("glGetUniformdv")); flextglIsTransformFeedback = reinterpret_cast(loader.load("glIsTransformFeedback")); flextglMinSampleShading = reinterpret_cast(loader.load("glMinSampleShading")); flextglPatchParameterfv = reinterpret_cast(loader.load("glPatchParameterfv")); flextglPatchParameteri = reinterpret_cast(loader.load("glPatchParameteri")); flextglPauseTransformFeedback = reinterpret_cast(loader.load("glPauseTransformFeedback")); flextglResumeTransformFeedback = reinterpret_cast(loader.load("glResumeTransformFeedback")); flextglUniform1d = reinterpret_cast(loader.load("glUniform1d")); flextglUniform1dv = reinterpret_cast(loader.load("glUniform1dv")); flextglUniform2d = reinterpret_cast(loader.load("glUniform2d")); flextglUniform2dv = reinterpret_cast(loader.load("glUniform2dv")); flextglUniform3d = reinterpret_cast(loader.load("glUniform3d")); flextglUniform3dv = reinterpret_cast(loader.load("glUniform3dv")); flextglUniform4d = reinterpret_cast(loader.load("glUniform4d")); flextglUniform4dv = reinterpret_cast(loader.load("glUniform4dv")); flextglUniformMatrix2dv = reinterpret_cast(loader.load("glUniformMatrix2dv")); flextglUniformMatrix2x3dv = reinterpret_cast(loader.load("glUniformMatrix2x3dv")); flextglUniformMatrix2x4dv = reinterpret_cast(loader.load("glUniformMatrix2x4dv")); flextglUniformMatrix3dv = reinterpret_cast(loader.load("glUniformMatrix3dv")); flextglUniformMatrix3x2dv = reinterpret_cast(loader.load("glUniformMatrix3x2dv")); flextglUniformMatrix3x4dv = reinterpret_cast(loader.load("glUniformMatrix3x4dv")); flextglUniformMatrix4dv = reinterpret_cast(loader.load("glUniformMatrix4dv")); flextglUniformMatrix4x2dv = reinterpret_cast(loader.load("glUniformMatrix4x2dv")); flextglUniformMatrix4x3dv = reinterpret_cast(loader.load("glUniformMatrix4x3dv")); flextglUniformSubroutinesuiv = reinterpret_cast(loader.load("glUniformSubroutinesuiv")); /* GL_VERSION_4_1 */ flextglActiveShaderProgram = reinterpret_cast(loader.load("glActiveShaderProgram")); flextglBindProgramPipeline = reinterpret_cast(loader.load("glBindProgramPipeline")); flextglClearDepthf = reinterpret_cast(loader.load("glClearDepthf")); flextglCreateShaderProgramv = reinterpret_cast(loader.load("glCreateShaderProgramv")); flextglDeleteProgramPipelines = reinterpret_cast(loader.load("glDeleteProgramPipelines")); flextglDepthRangeArrayv = reinterpret_cast(loader.load("glDepthRangeArrayv")); flextglDepthRangeIndexed = reinterpret_cast(loader.load("glDepthRangeIndexed")); flextglDepthRangef = reinterpret_cast(loader.load("glDepthRangef")); flextglGenProgramPipelines = reinterpret_cast(loader.load("glGenProgramPipelines")); flextglGetDoublei_v = reinterpret_cast(loader.load("glGetDoublei_v")); flextglGetFloati_v = reinterpret_cast(loader.load("glGetFloati_v")); flextglGetProgramBinary = reinterpret_cast(loader.load("glGetProgramBinary")); flextglGetProgramPipelineInfoLog = reinterpret_cast(loader.load("glGetProgramPipelineInfoLog")); flextglGetProgramPipelineiv = reinterpret_cast(loader.load("glGetProgramPipelineiv")); flextglGetShaderPrecisionFormat = reinterpret_cast(loader.load("glGetShaderPrecisionFormat")); flextglGetVertexAttribLdv = reinterpret_cast(loader.load("glGetVertexAttribLdv")); flextglIsProgramPipeline = reinterpret_cast(loader.load("glIsProgramPipeline")); flextglProgramBinary = reinterpret_cast(loader.load("glProgramBinary")); flextglProgramParameteri = reinterpret_cast(loader.load("glProgramParameteri")); flextglProgramUniform1d = reinterpret_cast(loader.load("glProgramUniform1d")); flextglProgramUniform1dv = reinterpret_cast(loader.load("glProgramUniform1dv")); flextglProgramUniform1f = reinterpret_cast(loader.load("glProgramUniform1f")); flextglProgramUniform1fv = reinterpret_cast(loader.load("glProgramUniform1fv")); flextglProgramUniform1i = reinterpret_cast(loader.load("glProgramUniform1i")); flextglProgramUniform1iv = reinterpret_cast(loader.load("glProgramUniform1iv")); flextglProgramUniform1ui = reinterpret_cast(loader.load("glProgramUniform1ui")); flextglProgramUniform1uiv = reinterpret_cast(loader.load("glProgramUniform1uiv")); flextglProgramUniform2d = reinterpret_cast(loader.load("glProgramUniform2d")); flextglProgramUniform2dv = reinterpret_cast(loader.load("glProgramUniform2dv")); flextglProgramUniform2f = reinterpret_cast(loader.load("glProgramUniform2f")); flextglProgramUniform2fv = reinterpret_cast(loader.load("glProgramUniform2fv")); flextglProgramUniform2i = reinterpret_cast(loader.load("glProgramUniform2i")); flextglProgramUniform2iv = reinterpret_cast(loader.load("glProgramUniform2iv")); flextglProgramUniform2ui = reinterpret_cast(loader.load("glProgramUniform2ui")); flextglProgramUniform2uiv = reinterpret_cast(loader.load("glProgramUniform2uiv")); flextglProgramUniform3d = reinterpret_cast(loader.load("glProgramUniform3d")); flextglProgramUniform3dv = reinterpret_cast(loader.load("glProgramUniform3dv")); flextglProgramUniform3f = reinterpret_cast(loader.load("glProgramUniform3f")); flextglProgramUniform3fv = reinterpret_cast(loader.load("glProgramUniform3fv")); flextglProgramUniform3i = reinterpret_cast(loader.load("glProgramUniform3i")); flextglProgramUniform3iv = reinterpret_cast(loader.load("glProgramUniform3iv")); flextglProgramUniform3ui = reinterpret_cast(loader.load("glProgramUniform3ui")); flextglProgramUniform3uiv = reinterpret_cast(loader.load("glProgramUniform3uiv")); flextglProgramUniform4d = reinterpret_cast(loader.load("glProgramUniform4d")); flextglProgramUniform4dv = reinterpret_cast(loader.load("glProgramUniform4dv")); flextglProgramUniform4f = reinterpret_cast(loader.load("glProgramUniform4f")); flextglProgramUniform4fv = reinterpret_cast(loader.load("glProgramUniform4fv")); flextglProgramUniform4i = reinterpret_cast(loader.load("glProgramUniform4i")); flextglProgramUniform4iv = reinterpret_cast(loader.load("glProgramUniform4iv")); flextglProgramUniform4ui = reinterpret_cast(loader.load("glProgramUniform4ui")); flextglProgramUniform4uiv = reinterpret_cast(loader.load("glProgramUniform4uiv")); flextglProgramUniformMatrix2dv = reinterpret_cast(loader.load("glProgramUniformMatrix2dv")); flextglProgramUniformMatrix2fv = reinterpret_cast(loader.load("glProgramUniformMatrix2fv")); flextglProgramUniformMatrix2x3dv = reinterpret_cast(loader.load("glProgramUniformMatrix2x3dv")); flextglProgramUniformMatrix2x3fv = reinterpret_cast(loader.load("glProgramUniformMatrix2x3fv")); flextglProgramUniformMatrix2x4dv = reinterpret_cast(loader.load("glProgramUniformMatrix2x4dv")); flextglProgramUniformMatrix2x4fv = reinterpret_cast(loader.load("glProgramUniformMatrix2x4fv")); flextglProgramUniformMatrix3dv = reinterpret_cast(loader.load("glProgramUniformMatrix3dv")); flextglProgramUniformMatrix3fv = reinterpret_cast(loader.load("glProgramUniformMatrix3fv")); flextglProgramUniformMatrix3x2dv = reinterpret_cast(loader.load("glProgramUniformMatrix3x2dv")); flextglProgramUniformMatrix3x2fv = reinterpret_cast(loader.load("glProgramUniformMatrix3x2fv")); flextglProgramUniformMatrix3x4dv = reinterpret_cast(loader.load("glProgramUniformMatrix3x4dv")); flextglProgramUniformMatrix3x4fv = reinterpret_cast(loader.load("glProgramUniformMatrix3x4fv")); flextglProgramUniformMatrix4dv = reinterpret_cast(loader.load("glProgramUniformMatrix4dv")); flextglProgramUniformMatrix4fv = reinterpret_cast(loader.load("glProgramUniformMatrix4fv")); flextglProgramUniformMatrix4x2dv = reinterpret_cast(loader.load("glProgramUniformMatrix4x2dv")); flextglProgramUniformMatrix4x2fv = reinterpret_cast(loader.load("glProgramUniformMatrix4x2fv")); flextglProgramUniformMatrix4x3dv = reinterpret_cast(loader.load("glProgramUniformMatrix4x3dv")); flextglProgramUniformMatrix4x3fv = reinterpret_cast(loader.load("glProgramUniformMatrix4x3fv")); flextglReleaseShaderCompiler = reinterpret_cast(loader.load("glReleaseShaderCompiler")); flextglScissorArrayv = reinterpret_cast(loader.load("glScissorArrayv")); flextglScissorIndexed = reinterpret_cast(loader.load("glScissorIndexed")); flextglScissorIndexedv = reinterpret_cast(loader.load("glScissorIndexedv")); flextglShaderBinary = reinterpret_cast(loader.load("glShaderBinary")); flextglUseProgramStages = reinterpret_cast(loader.load("glUseProgramStages")); flextglValidateProgramPipeline = reinterpret_cast(loader.load("glValidateProgramPipeline")); flextglVertexAttribL1d = reinterpret_cast(loader.load("glVertexAttribL1d")); flextglVertexAttribL1dv = reinterpret_cast(loader.load("glVertexAttribL1dv")); flextglVertexAttribL2d = reinterpret_cast(loader.load("glVertexAttribL2d")); flextglVertexAttribL2dv = reinterpret_cast(loader.load("glVertexAttribL2dv")); flextglVertexAttribL3d = reinterpret_cast(loader.load("glVertexAttribL3d")); flextglVertexAttribL3dv = reinterpret_cast(loader.load("glVertexAttribL3dv")); flextglVertexAttribL4d = reinterpret_cast(loader.load("glVertexAttribL4d")); flextglVertexAttribL4dv = reinterpret_cast(loader.load("glVertexAttribL4dv")); flextglVertexAttribLPointer = reinterpret_cast(loader.load("glVertexAttribLPointer")); flextglViewportArrayv = reinterpret_cast(loader.load("glViewportArrayv")); flextglViewportIndexedf = reinterpret_cast(loader.load("glViewportIndexedf")); flextglViewportIndexedfv = reinterpret_cast(loader.load("glViewportIndexedfv")); /* GL_VERSION_4_2 */ flextglBindImageTexture = reinterpret_cast(loader.load("glBindImageTexture")); flextglDrawArraysInstancedBaseInstance = reinterpret_cast(loader.load("glDrawArraysInstancedBaseInstance")); flextglDrawElementsInstancedBaseInstance = reinterpret_cast(loader.load("glDrawElementsInstancedBaseInstance")); flextglDrawElementsInstancedBaseVertexBaseInstance = reinterpret_cast(loader.load("glDrawElementsInstancedBaseVertexBaseInstance")); flextglDrawTransformFeedbackInstanced = reinterpret_cast(loader.load("glDrawTransformFeedbackInstanced")); flextglDrawTransformFeedbackStreamInstanced = reinterpret_cast(loader.load("glDrawTransformFeedbackStreamInstanced")); flextglGetActiveAtomicCounterBufferiv = reinterpret_cast(loader.load("glGetActiveAtomicCounterBufferiv")); flextglGetInternalformativ = reinterpret_cast(loader.load("glGetInternalformativ")); flextglMemoryBarrier = reinterpret_cast(loader.load("glMemoryBarrier")); flextglTexStorage1D = reinterpret_cast(loader.load("glTexStorage1D")); flextglTexStorage2D = reinterpret_cast(loader.load("glTexStorage2D")); flextglTexStorage3D = reinterpret_cast(loader.load("glTexStorage3D")); /* GL_VERSION_4_3 */ flextglBindVertexBuffer = reinterpret_cast(loader.load("glBindVertexBuffer")); flextglClearBufferData = reinterpret_cast(loader.load("glClearBufferData")); flextglClearBufferSubData = reinterpret_cast(loader.load("glClearBufferSubData")); flextglCopyImageSubData = reinterpret_cast(loader.load("glCopyImageSubData")); flextglDebugMessageCallback = reinterpret_cast(loader.load("glDebugMessageCallback")); flextglDebugMessageControl = reinterpret_cast(loader.load("glDebugMessageControl")); flextglDebugMessageInsert = reinterpret_cast(loader.load("glDebugMessageInsert")); flextglDispatchCompute = reinterpret_cast(loader.load("glDispatchCompute")); flextglDispatchComputeIndirect = reinterpret_cast(loader.load("glDispatchComputeIndirect")); flextglFramebufferParameteri = reinterpret_cast(loader.load("glFramebufferParameteri")); flextglGetDebugMessageLog = reinterpret_cast(loader.load("glGetDebugMessageLog")); flextglGetFramebufferParameteriv = reinterpret_cast(loader.load("glGetFramebufferParameteriv")); flextglGetInternalformati64v = reinterpret_cast(loader.load("glGetInternalformati64v")); flextglGetObjectLabel = reinterpret_cast(loader.load("glGetObjectLabel")); flextglGetObjectPtrLabel = reinterpret_cast(loader.load("glGetObjectPtrLabel")); flextglGetPointerv = reinterpret_cast(loader.load("glGetPointerv")); flextglGetProgramInterfaceiv = reinterpret_cast(loader.load("glGetProgramInterfaceiv")); flextglGetProgramResourceIndex = reinterpret_cast(loader.load("glGetProgramResourceIndex")); flextglGetProgramResourceLocation = reinterpret_cast(loader.load("glGetProgramResourceLocation")); flextglGetProgramResourceLocationIndex = reinterpret_cast(loader.load("glGetProgramResourceLocationIndex")); flextglGetProgramResourceName = reinterpret_cast(loader.load("glGetProgramResourceName")); flextglGetProgramResourceiv = reinterpret_cast(loader.load("glGetProgramResourceiv")); flextglInvalidateBufferData = reinterpret_cast(loader.load("glInvalidateBufferData")); flextglInvalidateBufferSubData = reinterpret_cast(loader.load("glInvalidateBufferSubData")); flextglInvalidateFramebuffer = reinterpret_cast(loader.load("glInvalidateFramebuffer")); flextglInvalidateSubFramebuffer = reinterpret_cast(loader.load("glInvalidateSubFramebuffer")); flextglInvalidateTexImage = reinterpret_cast(loader.load("glInvalidateTexImage")); flextglInvalidateTexSubImage = reinterpret_cast(loader.load("glInvalidateTexSubImage")); flextglMultiDrawArraysIndirect = reinterpret_cast(loader.load("glMultiDrawArraysIndirect")); flextglMultiDrawElementsIndirect = reinterpret_cast(loader.load("glMultiDrawElementsIndirect")); flextglObjectLabel = reinterpret_cast(loader.load("glObjectLabel")); flextglObjectPtrLabel = reinterpret_cast(loader.load("glObjectPtrLabel")); flextglPopDebugGroup = reinterpret_cast(loader.load("glPopDebugGroup")); flextglPushDebugGroup = reinterpret_cast(loader.load("glPushDebugGroup")); flextglShaderStorageBlockBinding = reinterpret_cast(loader.load("glShaderStorageBlockBinding")); flextglTexBufferRange = reinterpret_cast(loader.load("glTexBufferRange")); flextglTexStorage2DMultisample = reinterpret_cast(loader.load("glTexStorage2DMultisample")); flextglTexStorage3DMultisample = reinterpret_cast(loader.load("glTexStorage3DMultisample")); flextglTextureView = reinterpret_cast(loader.load("glTextureView")); flextglVertexAttribBinding = reinterpret_cast(loader.load("glVertexAttribBinding")); flextglVertexAttribFormat = reinterpret_cast(loader.load("glVertexAttribFormat")); flextglVertexAttribIFormat = reinterpret_cast(loader.load("glVertexAttribIFormat")); flextglVertexAttribLFormat = reinterpret_cast(loader.load("glVertexAttribLFormat")); flextglVertexBindingDivisor = reinterpret_cast(loader.load("glVertexBindingDivisor")); /* GL_VERSION_4_4 */ flextglBindBuffersBase = reinterpret_cast(loader.load("glBindBuffersBase")); flextglBindBuffersRange = reinterpret_cast(loader.load("glBindBuffersRange")); flextglBindImageTextures = reinterpret_cast(loader.load("glBindImageTextures")); flextglBindSamplers = reinterpret_cast(loader.load("glBindSamplers")); flextglBindTextures = reinterpret_cast(loader.load("glBindTextures")); flextglBindVertexBuffers = reinterpret_cast(loader.load("glBindVertexBuffers")); flextglBufferStorage = reinterpret_cast(loader.load("glBufferStorage")); flextglClearTexImage = reinterpret_cast(loader.load("glClearTexImage")); flextglClearTexSubImage = reinterpret_cast(loader.load("glClearTexSubImage")); /* GL_VERSION_4_5 */ flextglBindTextureUnit = reinterpret_cast(loader.load("glBindTextureUnit")); flextglBlitNamedFramebuffer = reinterpret_cast(loader.load("glBlitNamedFramebuffer")); flextglCheckNamedFramebufferStatus = reinterpret_cast(loader.load("glCheckNamedFramebufferStatus")); flextglClearNamedBufferData = reinterpret_cast(loader.load("glClearNamedBufferData")); flextglClearNamedBufferSubData = reinterpret_cast(loader.load("glClearNamedBufferSubData")); flextglClearNamedFramebufferfi = reinterpret_cast(loader.load("glClearNamedFramebufferfi")); flextglClearNamedFramebufferfv = reinterpret_cast(loader.load("glClearNamedFramebufferfv")); flextglClearNamedFramebufferiv = reinterpret_cast(loader.load("glClearNamedFramebufferiv")); flextglClearNamedFramebufferuiv = reinterpret_cast(loader.load("glClearNamedFramebufferuiv")); flextglClipControl = reinterpret_cast(loader.load("glClipControl")); flextglCompressedTextureSubImage1D = reinterpret_cast(loader.load("glCompressedTextureSubImage1D")); flextglCompressedTextureSubImage2D = reinterpret_cast(loader.load("glCompressedTextureSubImage2D")); flextglCompressedTextureSubImage3D = reinterpret_cast(loader.load("glCompressedTextureSubImage3D")); flextglCopyNamedBufferSubData = reinterpret_cast(loader.load("glCopyNamedBufferSubData")); flextglCopyTextureSubImage1D = reinterpret_cast(loader.load("glCopyTextureSubImage1D")); flextglCopyTextureSubImage2D = reinterpret_cast(loader.load("glCopyTextureSubImage2D")); flextglCopyTextureSubImage3D = reinterpret_cast(loader.load("glCopyTextureSubImage3D")); flextglCreateBuffers = reinterpret_cast(loader.load("glCreateBuffers")); flextglCreateFramebuffers = reinterpret_cast(loader.load("glCreateFramebuffers")); flextglCreateProgramPipelines = reinterpret_cast(loader.load("glCreateProgramPipelines")); flextglCreateQueries = reinterpret_cast(loader.load("glCreateQueries")); flextglCreateRenderbuffers = reinterpret_cast(loader.load("glCreateRenderbuffers")); flextglCreateSamplers = reinterpret_cast(loader.load("glCreateSamplers")); flextglCreateTextures = reinterpret_cast(loader.load("glCreateTextures")); flextglCreateTransformFeedbacks = reinterpret_cast(loader.load("glCreateTransformFeedbacks")); flextglCreateVertexArrays = reinterpret_cast(loader.load("glCreateVertexArrays")); flextglDisableVertexArrayAttrib = reinterpret_cast(loader.load("glDisableVertexArrayAttrib")); flextglEnableVertexArrayAttrib = reinterpret_cast(loader.load("glEnableVertexArrayAttrib")); flextglFlushMappedNamedBufferRange = reinterpret_cast(loader.load("glFlushMappedNamedBufferRange")); flextglGenerateTextureMipmap = reinterpret_cast(loader.load("glGenerateTextureMipmap")); flextglGetCompressedTextureImage = reinterpret_cast(loader.load("glGetCompressedTextureImage")); flextglGetCompressedTextureSubImage = reinterpret_cast(loader.load("glGetCompressedTextureSubImage")); flextglGetGraphicsResetStatus = reinterpret_cast(loader.load("glGetGraphicsResetStatus")); flextglGetNamedBufferParameteri64v = reinterpret_cast(loader.load("glGetNamedBufferParameteri64v")); flextglGetNamedBufferParameteriv = reinterpret_cast(loader.load("glGetNamedBufferParameteriv")); flextglGetNamedBufferPointerv = reinterpret_cast(loader.load("glGetNamedBufferPointerv")); flextglGetNamedBufferSubData = reinterpret_cast(loader.load("glGetNamedBufferSubData")); flextglGetNamedFramebufferAttachmentParameteriv = reinterpret_cast(loader.load("glGetNamedFramebufferAttachmentParameteriv")); flextglGetNamedFramebufferParameteriv = reinterpret_cast(loader.load("glGetNamedFramebufferParameteriv")); flextglGetNamedRenderbufferParameteriv = reinterpret_cast(loader.load("glGetNamedRenderbufferParameteriv")); flextglGetQueryBufferObjecti64v = reinterpret_cast(loader.load("glGetQueryBufferObjecti64v")); flextglGetQueryBufferObjectiv = reinterpret_cast(loader.load("glGetQueryBufferObjectiv")); flextglGetQueryBufferObjectui64v = reinterpret_cast(loader.load("glGetQueryBufferObjectui64v")); flextglGetQueryBufferObjectuiv = reinterpret_cast(loader.load("glGetQueryBufferObjectuiv")); flextglGetTextureImage = reinterpret_cast(loader.load("glGetTextureImage")); flextglGetTextureLevelParameterfv = reinterpret_cast(loader.load("glGetTextureLevelParameterfv")); flextglGetTextureLevelParameteriv = reinterpret_cast(loader.load("glGetTextureLevelParameteriv")); flextglGetTextureParameterIiv = reinterpret_cast(loader.load("glGetTextureParameterIiv")); flextglGetTextureParameterIuiv = reinterpret_cast(loader.load("glGetTextureParameterIuiv")); flextglGetTextureParameterfv = reinterpret_cast(loader.load("glGetTextureParameterfv")); flextglGetTextureParameteriv = reinterpret_cast(loader.load("glGetTextureParameteriv")); flextglGetTextureSubImage = reinterpret_cast(loader.load("glGetTextureSubImage")); flextglGetTransformFeedbacki64_v = reinterpret_cast(loader.load("glGetTransformFeedbacki64_v")); flextglGetTransformFeedbacki_v = reinterpret_cast(loader.load("glGetTransformFeedbacki_v")); flextglGetTransformFeedbackiv = reinterpret_cast(loader.load("glGetTransformFeedbackiv")); flextglGetVertexArrayIndexed64iv = reinterpret_cast(loader.load("glGetVertexArrayIndexed64iv")); flextglGetVertexArrayIndexediv = reinterpret_cast(loader.load("glGetVertexArrayIndexediv")); flextglGetVertexArrayiv = reinterpret_cast(loader.load("glGetVertexArrayiv")); flextglGetnCompressedTexImage = reinterpret_cast(loader.load("glGetnCompressedTexImage")); flextglGetnTexImage = reinterpret_cast(loader.load("glGetnTexImage")); flextglGetnUniformdv = reinterpret_cast(loader.load("glGetnUniformdv")); flextglGetnUniformfv = reinterpret_cast(loader.load("glGetnUniformfv")); flextglGetnUniformiv = reinterpret_cast(loader.load("glGetnUniformiv")); flextglGetnUniformuiv = reinterpret_cast(loader.load("glGetnUniformuiv")); flextglInvalidateNamedFramebufferData = reinterpret_cast(loader.load("glInvalidateNamedFramebufferData")); flextglInvalidateNamedFramebufferSubData = reinterpret_cast(loader.load("glInvalidateNamedFramebufferSubData")); flextglMapNamedBuffer = reinterpret_cast(loader.load("glMapNamedBuffer")); flextglMapNamedBufferRange = reinterpret_cast(loader.load("glMapNamedBufferRange")); flextglMemoryBarrierByRegion = reinterpret_cast(loader.load("glMemoryBarrierByRegion")); flextglNamedBufferData = reinterpret_cast(loader.load("glNamedBufferData")); flextglNamedBufferStorage = reinterpret_cast(loader.load("glNamedBufferStorage")); flextglNamedBufferSubData = reinterpret_cast(loader.load("glNamedBufferSubData")); flextglNamedFramebufferDrawBuffer = reinterpret_cast(loader.load("glNamedFramebufferDrawBuffer")); flextglNamedFramebufferDrawBuffers = reinterpret_cast(loader.load("glNamedFramebufferDrawBuffers")); flextglNamedFramebufferParameteri = reinterpret_cast(loader.load("glNamedFramebufferParameteri")); flextglNamedFramebufferReadBuffer = reinterpret_cast(loader.load("glNamedFramebufferReadBuffer")); flextglNamedFramebufferRenderbuffer = reinterpret_cast(loader.load("glNamedFramebufferRenderbuffer")); flextglNamedFramebufferTexture = reinterpret_cast(loader.load("glNamedFramebufferTexture")); flextglNamedFramebufferTextureLayer = reinterpret_cast(loader.load("glNamedFramebufferTextureLayer")); flextglNamedRenderbufferStorage = reinterpret_cast(loader.load("glNamedRenderbufferStorage")); flextglNamedRenderbufferStorageMultisample = reinterpret_cast(loader.load("glNamedRenderbufferStorageMultisample")); flextglReadnPixels = reinterpret_cast(loader.load("glReadnPixels")); flextglTextureBarrier = reinterpret_cast(loader.load("glTextureBarrier")); flextglTextureBuffer = reinterpret_cast(loader.load("glTextureBuffer")); flextglTextureBufferRange = reinterpret_cast(loader.load("glTextureBufferRange")); flextglTextureParameterIiv = reinterpret_cast(loader.load("glTextureParameterIiv")); flextglTextureParameterIuiv = reinterpret_cast(loader.load("glTextureParameterIuiv")); flextglTextureParameterf = reinterpret_cast(loader.load("glTextureParameterf")); flextglTextureParameterfv = reinterpret_cast(loader.load("glTextureParameterfv")); flextglTextureParameteri = reinterpret_cast(loader.load("glTextureParameteri")); flextglTextureParameteriv = reinterpret_cast(loader.load("glTextureParameteriv")); flextglTextureStorage1D = reinterpret_cast(loader.load("glTextureStorage1D")); flextglTextureStorage2D = reinterpret_cast(loader.load("glTextureStorage2D")); flextglTextureStorage2DMultisample = reinterpret_cast(loader.load("glTextureStorage2DMultisample")); flextglTextureStorage3D = reinterpret_cast(loader.load("glTextureStorage3D")); flextglTextureStorage3DMultisample = reinterpret_cast(loader.load("glTextureStorage3DMultisample")); flextglTextureSubImage1D = reinterpret_cast(loader.load("glTextureSubImage1D")); flextglTextureSubImage2D = reinterpret_cast(loader.load("glTextureSubImage2D")); flextglTextureSubImage3D = reinterpret_cast(loader.load("glTextureSubImage3D")); flextglTransformFeedbackBufferBase = reinterpret_cast(loader.load("glTransformFeedbackBufferBase")); flextglTransformFeedbackBufferRange = reinterpret_cast(loader.load("glTransformFeedbackBufferRange")); flextglUnmapNamedBuffer = reinterpret_cast(loader.load("glUnmapNamedBuffer")); flextglVertexArrayAttribBinding = reinterpret_cast(loader.load("glVertexArrayAttribBinding")); flextglVertexArrayAttribFormat = reinterpret_cast(loader.load("glVertexArrayAttribFormat")); flextglVertexArrayAttribIFormat = reinterpret_cast(loader.load("glVertexArrayAttribIFormat")); flextglVertexArrayAttribLFormat = reinterpret_cast(loader.load("glVertexArrayAttribLFormat")); flextglVertexArrayBindingDivisor = reinterpret_cast(loader.load("glVertexArrayBindingDivisor")); flextglVertexArrayElementBuffer = reinterpret_cast(loader.load("glVertexArrayElementBuffer")); flextglVertexArrayVertexBuffer = reinterpret_cast(loader.load("glVertexArrayVertexBuffer")); flextglVertexArrayVertexBuffers = reinterpret_cast(loader.load("glVertexArrayVertexBuffers")); /* GL_VERSION_4_6 */ flextglMultiDrawArraysIndirectCount = reinterpret_cast(loader.load("glMultiDrawArraysIndirectCount")); flextglMultiDrawElementsIndirectCount = reinterpret_cast(loader.load("glMultiDrawElementsIndirectCount")); flextglPolygonOffsetClamp = reinterpret_cast(loader.load("glPolygonOffsetClamp")); flextglSpecializeShader = reinterpret_cast(loader.load("glSpecializeShader")); }