#include "gl_methods.hpp"

#if defined(_WIN32) || defined(_WIN64)

#define PREFIX ""

#include <Windows.h>

#ifdef MemoryBarrier
#undef MemoryBarrier
#endif

void * LoadMethod(const char * method) {
    static HMODULE opengl32 = LoadLibrary("opengl32.dll");

    void * proc = (void *)GetProcAddress(opengl32, method);

    if (proc) {
        return proc;
    }

    proc = (void *)wglGetProcAddress(method);

    if (proc) {
        return proc;
    }

    return 0;
}

#elif defined(__APPLE__)

#define PREFIX "_"

#import <mach-o/dyld.h>
#import <stdlib.h>
#import <string.h>

void * LoadMethod(const char * method) {
    NSSymbol symbol = 0;

    if (NSIsSymbolNameDefined(method)) {
        symbol = NSLookupAndBindSymbol(method);
    }

    return symbol ? NSAddressOfSymbol(symbol) : 0;
}

#else

#define PREFIX ""

#include <dlfcn.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>

typedef const void * (* PROC_glXGetProcAddress)(const char *);

void * LoadMethod(const char * method) {
    static void * libgl = dlopen("libGL.so.1", RTLD_LAZY);
    static PROC_glXGetProcAddress glXGetProcAddress = (PROC_glXGetProcAddress)dlsym(libgl, "glXGetProcAddress");

    void * proc = (void *)dlsym(libgl, method);

    if (proc) {
        return proc;
    }

    proc = (void *)glXGetProcAddress(method);

    if (proc) {
        return proc;
    }

    return 0;
}

#endif

bool GLMethods::load() {
    this->CullFace = (PFNGLCULLFACEPROC)LoadMethod(PREFIX "glCullFace");
    this->FrontFace = (PFNGLFRONTFACEPROC)LoadMethod(PREFIX "glFrontFace");
    this->Hint = (PFNGLHINTPROC)LoadMethod(PREFIX "glHint");
    this->LineWidth = (PFNGLLINEWIDTHPROC)LoadMethod(PREFIX "glLineWidth");
    this->PointSize = (PFNGLPOINTSIZEPROC)LoadMethod(PREFIX "glPointSize");
    this->PolygonMode = (PFNGLPOLYGONMODEPROC)LoadMethod(PREFIX "glPolygonMode");
    this->Scissor = (PFNGLSCISSORPROC)LoadMethod(PREFIX "glScissor");
    this->TexParameterf = (PFNGLTEXPARAMETERFPROC)LoadMethod(PREFIX "glTexParameterf");
    this->TexParameterfv = (PFNGLTEXPARAMETERFVPROC)LoadMethod(PREFIX "glTexParameterfv");
    this->TexParameteri = (PFNGLTEXPARAMETERIPROC)LoadMethod(PREFIX "glTexParameteri");
    this->TexParameteriv = (PFNGLTEXPARAMETERIVPROC)LoadMethod(PREFIX "glTexParameteriv");
    this->TexImage1D = (PFNGLTEXIMAGE1DPROC)LoadMethod(PREFIX "glTexImage1D");
    this->TexImage2D = (PFNGLTEXIMAGE2DPROC)LoadMethod(PREFIX "glTexImage2D");
    this->DrawBuffer = (PFNGLDRAWBUFFERPROC)LoadMethod(PREFIX "glDrawBuffer");
    this->Clear = (PFNGLCLEARPROC)LoadMethod(PREFIX "glClear");
    this->ClearColor = (PFNGLCLEARCOLORPROC)LoadMethod(PREFIX "glClearColor");
    this->ClearStencil = (PFNGLCLEARSTENCILPROC)LoadMethod(PREFIX "glClearStencil");
    this->ClearDepth = (PFNGLCLEARDEPTHPROC)LoadMethod(PREFIX "glClearDepth");
    this->StencilMask = (PFNGLSTENCILMASKPROC)LoadMethod(PREFIX "glStencilMask");
    this->ColorMask = (PFNGLCOLORMASKPROC)LoadMethod(PREFIX "glColorMask");
    this->DepthMask = (PFNGLDEPTHMASKPROC)LoadMethod(PREFIX "glDepthMask");
    this->Disable = (PFNGLDISABLEPROC)LoadMethod(PREFIX "glDisable");
    this->Enable = (PFNGLENABLEPROC)LoadMethod(PREFIX "glEnable");
    this->Finish = (PFNGLFINISHPROC)LoadMethod(PREFIX "glFinish");
    this->Flush = (PFNGLFLUSHPROC)LoadMethod(PREFIX "glFlush");
    this->BlendFunc = (PFNGLBLENDFUNCPROC)LoadMethod(PREFIX "glBlendFunc");
    this->LogicOp = (PFNGLLOGICOPPROC)LoadMethod(PREFIX "glLogicOp");
    this->StencilFunc = (PFNGLSTENCILFUNCPROC)LoadMethod(PREFIX "glStencilFunc");
    this->StencilOp = (PFNGLSTENCILOPPROC)LoadMethod(PREFIX "glStencilOp");
    this->DepthFunc = (PFNGLDEPTHFUNCPROC)LoadMethod(PREFIX "glDepthFunc");
    this->PixelStoref = (PFNGLPIXELSTOREFPROC)LoadMethod(PREFIX "glPixelStoref");
    this->PixelStorei = (PFNGLPIXELSTOREIPROC)LoadMethod(PREFIX "glPixelStorei");
    this->ReadBuffer = (PFNGLREADBUFFERPROC)LoadMethod(PREFIX "glReadBuffer");
    this->ReadPixels = (PFNGLREADPIXELSPROC)LoadMethod(PREFIX "glReadPixels");
    this->GetBooleanv = (PFNGLGETBOOLEANVPROC)LoadMethod(PREFIX "glGetBooleanv");
    this->GetDoublev = (PFNGLGETDOUBLEVPROC)LoadMethod(PREFIX "glGetDoublev");
    this->GetError = (PFNGLGETERRORPROC)LoadMethod(PREFIX "glGetError");
    this->GetFloatv = (PFNGLGETFLOATVPROC)LoadMethod(PREFIX "glGetFloatv");
    this->GetIntegerv = (PFNGLGETINTEGERVPROC)LoadMethod(PREFIX "glGetIntegerv");
    this->GetString = (PFNGLGETSTRINGPROC)LoadMethod(PREFIX "glGetString");
    this->GetTexImage = (PFNGLGETTEXIMAGEPROC)LoadMethod(PREFIX "glGetTexImage");
    this->GetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)LoadMethod(PREFIX "glGetTexParameterfv");
    this->GetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)LoadMethod(PREFIX "glGetTexParameteriv");
    this->GetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)LoadMethod(PREFIX "glGetTexLevelParameterfv");
    this->GetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)LoadMethod(PREFIX "glGetTexLevelParameteriv");
    this->IsEnabled = (PFNGLISENABLEDPROC)LoadMethod(PREFIX "glIsEnabled");
    this->DepthRange = (PFNGLDEPTHRANGEPROC)LoadMethod(PREFIX "glDepthRange");
    this->Viewport = (PFNGLVIEWPORTPROC)LoadMethod(PREFIX "glViewport");
    this->DrawArrays = (PFNGLDRAWARRAYSPROC)LoadMethod(PREFIX "glDrawArrays");
    this->DrawElements = (PFNGLDRAWELEMENTSPROC)LoadMethod(PREFIX "glDrawElements");
    this->GetPointerv = (PFNGLGETPOINTERVPROC)LoadMethod(PREFIX "glGetPointerv");
    this->PolygonOffset = (PFNGLPOLYGONOFFSETPROC)LoadMethod(PREFIX "glPolygonOffset");
    this->CopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)LoadMethod(PREFIX "glCopyTexImage1D");
    this->CopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)LoadMethod(PREFIX "glCopyTexImage2D");
    this->CopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)LoadMethod(PREFIX "glCopyTexSubImage1D");
    this->CopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)LoadMethod(PREFIX "glCopyTexSubImage2D");
    this->TexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)LoadMethod(PREFIX "glTexSubImage1D");
    this->TexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)LoadMethod(PREFIX "glTexSubImage2D");
    this->BindTexture = (PFNGLBINDTEXTUREPROC)LoadMethod(PREFIX "glBindTexture");
    this->DeleteTextures = (PFNGLDELETETEXTURESPROC)LoadMethod(PREFIX "glDeleteTextures");
    this->GenTextures = (PFNGLGENTEXTURESPROC)LoadMethod(PREFIX "glGenTextures");
    this->IsTexture = (PFNGLISTEXTUREPROC)LoadMethod(PREFIX "glIsTexture");
    this->DrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)LoadMethod(PREFIX "glDrawRangeElements");
    this->TexImage3D = (PFNGLTEXIMAGE3DPROC)LoadMethod(PREFIX "glTexImage3D");
    this->TexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)LoadMethod(PREFIX "glTexSubImage3D");
    this->CopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)LoadMethod(PREFIX "glCopyTexSubImage3D");
    this->ActiveTexture = (PFNGLACTIVETEXTUREPROC)LoadMethod(PREFIX "glActiveTexture");
    this->SampleCoverage = (PFNGLSAMPLECOVERAGEPROC)LoadMethod(PREFIX "glSampleCoverage");
    this->CompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)LoadMethod(PREFIX "glCompressedTexImage3D");
    this->CompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)LoadMethod(PREFIX "glCompressedTexImage2D");
    this->CompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)LoadMethod(PREFIX "glCompressedTexImage1D");
    this->CompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)LoadMethod(PREFIX "glCompressedTexSubImage3D");
    this->CompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)LoadMethod(PREFIX "glCompressedTexSubImage2D");
    this->CompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)LoadMethod(PREFIX "glCompressedTexSubImage1D");
    this->GetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)LoadMethod(PREFIX "glGetCompressedTexImage");
    this->BlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)LoadMethod(PREFIX "glBlendFuncSeparate");
    this->MultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)LoadMethod(PREFIX "glMultiDrawArrays");
    this->MultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)LoadMethod(PREFIX "glMultiDrawElements");
    this->PointParameterf = (PFNGLPOINTPARAMETERFPROC)LoadMethod(PREFIX "glPointParameterf");
    this->PointParameterfv = (PFNGLPOINTPARAMETERFVPROC)LoadMethod(PREFIX "glPointParameterfv");
    this->PointParameteri = (PFNGLPOINTPARAMETERIPROC)LoadMethod(PREFIX "glPointParameteri");
    this->PointParameteriv = (PFNGLPOINTPARAMETERIVPROC)LoadMethod(PREFIX "glPointParameteriv");
    this->BlendColor = (PFNGLBLENDCOLORPROC)LoadMethod(PREFIX "glBlendColor");
    this->BlendEquation = (PFNGLBLENDEQUATIONPROC)LoadMethod(PREFIX "glBlendEquation");
    this->GenQueries = (PFNGLGENQUERIESPROC)LoadMethod(PREFIX "glGenQueries");
    this->DeleteQueries = (PFNGLDELETEQUERIESPROC)LoadMethod(PREFIX "glDeleteQueries");
    this->IsQuery = (PFNGLISQUERYPROC)LoadMethod(PREFIX "glIsQuery");
    this->BeginQuery = (PFNGLBEGINQUERYPROC)LoadMethod(PREFIX "glBeginQuery");
    this->EndQuery = (PFNGLENDQUERYPROC)LoadMethod(PREFIX "glEndQuery");
    this->GetQueryiv = (PFNGLGETQUERYIVPROC)LoadMethod(PREFIX "glGetQueryiv");
    this->GetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)LoadMethod(PREFIX "glGetQueryObjectiv");
    this->GetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)LoadMethod(PREFIX "glGetQueryObjectuiv");
    this->BindBuffer = (PFNGLBINDBUFFERPROC)LoadMethod(PREFIX "glBindBuffer");
    this->DeleteBuffers = (PFNGLDELETEBUFFERSPROC)LoadMethod(PREFIX "glDeleteBuffers");
    this->GenBuffers = (PFNGLGENBUFFERSPROC)LoadMethod(PREFIX "glGenBuffers");
    this->IsBuffer = (PFNGLISBUFFERPROC)LoadMethod(PREFIX "glIsBuffer");
    this->BufferData = (PFNGLBUFFERDATAPROC)LoadMethod(PREFIX "glBufferData");
    this->BufferSubData = (PFNGLBUFFERSUBDATAPROC)LoadMethod(PREFIX "glBufferSubData");
    this->GetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)LoadMethod(PREFIX "glGetBufferSubData");
    this->MapBuffer = (PFNGLMAPBUFFERPROC)LoadMethod(PREFIX "glMapBuffer");
    this->UnmapBuffer = (PFNGLUNMAPBUFFERPROC)LoadMethod(PREFIX "glUnmapBuffer");
    this->GetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)LoadMethod(PREFIX "glGetBufferParameteriv");
    this->GetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)LoadMethod(PREFIX "glGetBufferPointerv");
    this->BlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)LoadMethod(PREFIX "glBlendEquationSeparate");
    this->DrawBuffers = (PFNGLDRAWBUFFERSPROC)LoadMethod(PREFIX "glDrawBuffers");
    this->StencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)LoadMethod(PREFIX "glStencilOpSeparate");
    this->StencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)LoadMethod(PREFIX "glStencilFuncSeparate");
    this->StencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)LoadMethod(PREFIX "glStencilMaskSeparate");
    this->AttachShader = (PFNGLATTACHSHADERPROC)LoadMethod(PREFIX "glAttachShader");
    this->BindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)LoadMethod(PREFIX "glBindAttribLocation");
    this->CompileShader = (PFNGLCOMPILESHADERPROC)LoadMethod(PREFIX "glCompileShader");
    this->CreateProgram = (PFNGLCREATEPROGRAMPROC)LoadMethod(PREFIX "glCreateProgram");
    this->CreateShader = (PFNGLCREATESHADERPROC)LoadMethod(PREFIX "glCreateShader");
    this->DeleteProgram = (PFNGLDELETEPROGRAMPROC)LoadMethod(PREFIX "glDeleteProgram");
    this->DeleteShader = (PFNGLDELETESHADERPROC)LoadMethod(PREFIX "glDeleteShader");
    this->DetachShader = (PFNGLDETACHSHADERPROC)LoadMethod(PREFIX "glDetachShader");
    this->DisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)LoadMethod(PREFIX "glDisableVertexAttribArray");
    this->EnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)LoadMethod(PREFIX "glEnableVertexAttribArray");
    this->GetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)LoadMethod(PREFIX "glGetActiveAttrib");
    this->GetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)LoadMethod(PREFIX "glGetActiveUniform");
    this->GetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)LoadMethod(PREFIX "glGetAttachedShaders");
    this->GetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)LoadMethod(PREFIX "glGetAttribLocation");
    this->GetProgramiv = (PFNGLGETPROGRAMIVPROC)LoadMethod(PREFIX "glGetProgramiv");
    this->GetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)LoadMethod(PREFIX "glGetProgramInfoLog");
    this->GetShaderiv = (PFNGLGETSHADERIVPROC)LoadMethod(PREFIX "glGetShaderiv");
    this->GetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)LoadMethod(PREFIX "glGetShaderInfoLog");
    this->GetShaderSource = (PFNGLGETSHADERSOURCEPROC)LoadMethod(PREFIX "glGetShaderSource");
    this->GetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)LoadMethod(PREFIX "glGetUniformLocation");
    this->GetUniformfv = (PFNGLGETUNIFORMFVPROC)LoadMethod(PREFIX "glGetUniformfv");
    this->GetUniformiv = (PFNGLGETUNIFORMIVPROC)LoadMethod(PREFIX "glGetUniformiv");
    this->GetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)LoadMethod(PREFIX "glGetVertexAttribdv");
    this->GetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)LoadMethod(PREFIX "glGetVertexAttribfv");
    this->GetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)LoadMethod(PREFIX "glGetVertexAttribiv");
    this->GetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)LoadMethod(PREFIX "glGetVertexAttribPointerv");
    this->IsProgram = (PFNGLISPROGRAMPROC)LoadMethod(PREFIX "glIsProgram");
    this->IsShader = (PFNGLISSHADERPROC)LoadMethod(PREFIX "glIsShader");
    this->LinkProgram = (PFNGLLINKPROGRAMPROC)LoadMethod(PREFIX "glLinkProgram");
    this->ShaderSource = (PFNGLSHADERSOURCEPROC)LoadMethod(PREFIX "glShaderSource");
    this->UseProgram = (PFNGLUSEPROGRAMPROC)LoadMethod(PREFIX "glUseProgram");
    this->Uniform1f = (PFNGLUNIFORM1FPROC)LoadMethod(PREFIX "glUniform1f");
    this->Uniform2f = (PFNGLUNIFORM2FPROC)LoadMethod(PREFIX "glUniform2f");
    this->Uniform3f = (PFNGLUNIFORM3FPROC)LoadMethod(PREFIX "glUniform3f");
    this->Uniform4f = (PFNGLUNIFORM4FPROC)LoadMethod(PREFIX "glUniform4f");
    this->Uniform1i = (PFNGLUNIFORM1IPROC)LoadMethod(PREFIX "glUniform1i");
    this->Uniform2i = (PFNGLUNIFORM2IPROC)LoadMethod(PREFIX "glUniform2i");
    this->Uniform3i = (PFNGLUNIFORM3IPROC)LoadMethod(PREFIX "glUniform3i");
    this->Uniform4i = (PFNGLUNIFORM4IPROC)LoadMethod(PREFIX "glUniform4i");
    this->Uniform1fv = (PFNGLUNIFORM1FVPROC)LoadMethod(PREFIX "glUniform1fv");
    this->Uniform2fv = (PFNGLUNIFORM2FVPROC)LoadMethod(PREFIX "glUniform2fv");
    this->Uniform3fv = (PFNGLUNIFORM3FVPROC)LoadMethod(PREFIX "glUniform3fv");
    this->Uniform4fv = (PFNGLUNIFORM4FVPROC)LoadMethod(PREFIX "glUniform4fv");
    this->Uniform1iv = (PFNGLUNIFORM1IVPROC)LoadMethod(PREFIX "glUniform1iv");
    this->Uniform2iv = (PFNGLUNIFORM2IVPROC)LoadMethod(PREFIX "glUniform2iv");
    this->Uniform3iv = (PFNGLUNIFORM3IVPROC)LoadMethod(PREFIX "glUniform3iv");
    this->Uniform4iv = (PFNGLUNIFORM4IVPROC)LoadMethod(PREFIX "glUniform4iv");
    this->UniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)LoadMethod(PREFIX "glUniformMatrix2fv");
    this->UniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)LoadMethod(PREFIX "glUniformMatrix3fv");
    this->UniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)LoadMethod(PREFIX "glUniformMatrix4fv");
    this->ValidateProgram = (PFNGLVALIDATEPROGRAMPROC)LoadMethod(PREFIX "glValidateProgram");
    this->VertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)LoadMethod(PREFIX "glVertexAttrib1d");
    this->VertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)LoadMethod(PREFIX "glVertexAttrib1dv");
    this->VertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)LoadMethod(PREFIX "glVertexAttrib1f");
    this->VertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)LoadMethod(PREFIX "glVertexAttrib1fv");
    this->VertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)LoadMethod(PREFIX "glVertexAttrib1s");
    this->VertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)LoadMethod(PREFIX "glVertexAttrib1sv");
    this->VertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)LoadMethod(PREFIX "glVertexAttrib2d");
    this->VertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)LoadMethod(PREFIX "glVertexAttrib2dv");
    this->VertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)LoadMethod(PREFIX "glVertexAttrib2f");
    this->VertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)LoadMethod(PREFIX "glVertexAttrib2fv");
    this->VertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)LoadMethod(PREFIX "glVertexAttrib2s");
    this->VertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)LoadMethod(PREFIX "glVertexAttrib2sv");
    this->VertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)LoadMethod(PREFIX "glVertexAttrib3d");
    this->VertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)LoadMethod(PREFIX "glVertexAttrib3dv");
    this->VertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)LoadMethod(PREFIX "glVertexAttrib3f");
    this->VertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)LoadMethod(PREFIX "glVertexAttrib3fv");
    this->VertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)LoadMethod(PREFIX "glVertexAttrib3s");
    this->VertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)LoadMethod(PREFIX "glVertexAttrib3sv");
    this->VertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)LoadMethod(PREFIX "glVertexAttrib4Nbv");
    this->VertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)LoadMethod(PREFIX "glVertexAttrib4Niv");
    this->VertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)LoadMethod(PREFIX "glVertexAttrib4Nsv");
    this->VertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)LoadMethod(PREFIX "glVertexAttrib4Nub");
    this->VertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)LoadMethod(PREFIX "glVertexAttrib4Nubv");
    this->VertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)LoadMethod(PREFIX "glVertexAttrib4Nuiv");
    this->VertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)LoadMethod(PREFIX "glVertexAttrib4Nusv");
    this->VertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)LoadMethod(PREFIX "glVertexAttrib4bv");
    this->VertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)LoadMethod(PREFIX "glVertexAttrib4d");
    this->VertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)LoadMethod(PREFIX "glVertexAttrib4dv");
    this->VertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)LoadMethod(PREFIX "glVertexAttrib4f");
    this->VertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)LoadMethod(PREFIX "glVertexAttrib4fv");
    this->VertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)LoadMethod(PREFIX "glVertexAttrib4iv");
    this->VertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)LoadMethod(PREFIX "glVertexAttrib4s");
    this->VertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)LoadMethod(PREFIX "glVertexAttrib4sv");
    this->VertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)LoadMethod(PREFIX "glVertexAttrib4ubv");
    this->VertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)LoadMethod(PREFIX "glVertexAttrib4uiv");
    this->VertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)LoadMethod(PREFIX "glVertexAttrib4usv");
    this->VertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)LoadMethod(PREFIX "glVertexAttribPointer");
    this->UniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)LoadMethod(PREFIX "glUniformMatrix2x3fv");
    this->UniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)LoadMethod(PREFIX "glUniformMatrix3x2fv");
    this->UniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)LoadMethod(PREFIX "glUniformMatrix2x4fv");
    this->UniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)LoadMethod(PREFIX "glUniformMatrix4x2fv");
    this->UniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)LoadMethod(PREFIX "glUniformMatrix3x4fv");
    this->UniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)LoadMethod(PREFIX "glUniformMatrix4x3fv");
    this->ColorMaski = (PFNGLCOLORMASKIPROC)LoadMethod(PREFIX "glColorMaski");
    this->GetBooleani_v = (PFNGLGETBOOLEANI_VPROC)LoadMethod(PREFIX "glGetBooleani_v");
    this->GetIntegeri_v = (PFNGLGETINTEGERI_VPROC)LoadMethod(PREFIX "glGetIntegeri_v");
    this->Enablei = (PFNGLENABLEIPROC)LoadMethod(PREFIX "glEnablei");
    this->Disablei = (PFNGLDISABLEIPROC)LoadMethod(PREFIX "glDisablei");
    this->IsEnabledi = (PFNGLISENABLEDIPROC)LoadMethod(PREFIX "glIsEnabledi");
    this->BeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glBeginTransformFeedback");
    this->EndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glEndTransformFeedback");
    this->BindBufferRange = (PFNGLBINDBUFFERRANGEPROC)LoadMethod(PREFIX "glBindBufferRange");
    this->BindBufferBase = (PFNGLBINDBUFFERBASEPROC)LoadMethod(PREFIX "glBindBufferBase");
    this->TransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)LoadMethod(PREFIX "glTransformFeedbackVaryings");
    this->GetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)LoadMethod(PREFIX "glGetTransformFeedbackVarying");
    this->ClampColor = (PFNGLCLAMPCOLORPROC)LoadMethod(PREFIX "glClampColor");
    this->BeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)LoadMethod(PREFIX "glBeginConditionalRender");
    this->EndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)LoadMethod(PREFIX "glEndConditionalRender");
    this->VertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)LoadMethod(PREFIX "glVertexAttribIPointer");
    this->GetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)LoadMethod(PREFIX "glGetVertexAttribIiv");
    this->GetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)LoadMethod(PREFIX "glGetVertexAttribIuiv");
    this->VertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)LoadMethod(PREFIX "glVertexAttribI1i");
    this->VertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)LoadMethod(PREFIX "glVertexAttribI2i");
    this->VertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)LoadMethod(PREFIX "glVertexAttribI3i");
    this->VertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)LoadMethod(PREFIX "glVertexAttribI4i");
    this->VertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)LoadMethod(PREFIX "glVertexAttribI1ui");
    this->VertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)LoadMethod(PREFIX "glVertexAttribI2ui");
    this->VertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)LoadMethod(PREFIX "glVertexAttribI3ui");
    this->VertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)LoadMethod(PREFIX "glVertexAttribI4ui");
    this->VertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)LoadMethod(PREFIX "glVertexAttribI1iv");
    this->VertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)LoadMethod(PREFIX "glVertexAttribI2iv");
    this->VertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)LoadMethod(PREFIX "glVertexAttribI3iv");
    this->VertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)LoadMethod(PREFIX "glVertexAttribI4iv");
    this->VertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)LoadMethod(PREFIX "glVertexAttribI1uiv");
    this->VertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)LoadMethod(PREFIX "glVertexAttribI2uiv");
    this->VertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)LoadMethod(PREFIX "glVertexAttribI3uiv");
    this->VertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)LoadMethod(PREFIX "glVertexAttribI4uiv");
    this->VertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)LoadMethod(PREFIX "glVertexAttribI4bv");
    this->VertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)LoadMethod(PREFIX "glVertexAttribI4sv");
    this->VertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)LoadMethod(PREFIX "glVertexAttribI4ubv");
    this->VertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)LoadMethod(PREFIX "glVertexAttribI4usv");
    this->GetUniformuiv = (PFNGLGETUNIFORMUIVPROC)LoadMethod(PREFIX "glGetUniformuiv");
    this->BindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)LoadMethod(PREFIX "glBindFragDataLocation");
    this->GetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)LoadMethod(PREFIX "glGetFragDataLocation");
    this->Uniform1ui = (PFNGLUNIFORM1UIPROC)LoadMethod(PREFIX "glUniform1ui");
    this->Uniform2ui = (PFNGLUNIFORM2UIPROC)LoadMethod(PREFIX "glUniform2ui");
    this->Uniform3ui = (PFNGLUNIFORM3UIPROC)LoadMethod(PREFIX "glUniform3ui");
    this->Uniform4ui = (PFNGLUNIFORM4UIPROC)LoadMethod(PREFIX "glUniform4ui");
    this->Uniform1uiv = (PFNGLUNIFORM1UIVPROC)LoadMethod(PREFIX "glUniform1uiv");
    this->Uniform2uiv = (PFNGLUNIFORM2UIVPROC)LoadMethod(PREFIX "glUniform2uiv");
    this->Uniform3uiv = (PFNGLUNIFORM3UIVPROC)LoadMethod(PREFIX "glUniform3uiv");
    this->Uniform4uiv = (PFNGLUNIFORM4UIVPROC)LoadMethod(PREFIX "glUniform4uiv");
    this->TexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)LoadMethod(PREFIX "glTexParameterIiv");
    this->TexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)LoadMethod(PREFIX "glTexParameterIuiv");
    this->GetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)LoadMethod(PREFIX "glGetTexParameterIiv");
    this->GetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)LoadMethod(PREFIX "glGetTexParameterIuiv");
    this->ClearBufferiv = (PFNGLCLEARBUFFERIVPROC)LoadMethod(PREFIX "glClearBufferiv");
    this->ClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)LoadMethod(PREFIX "glClearBufferuiv");
    this->ClearBufferfv = (PFNGLCLEARBUFFERFVPROC)LoadMethod(PREFIX "glClearBufferfv");
    this->ClearBufferfi = (PFNGLCLEARBUFFERFIPROC)LoadMethod(PREFIX "glClearBufferfi");
    this->GetStringi = (PFNGLGETSTRINGIPROC)LoadMethod(PREFIX "glGetStringi");
    this->IsRenderbuffer = (PFNGLISRENDERBUFFERPROC)LoadMethod(PREFIX "glIsRenderbuffer");
    this->BindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)LoadMethod(PREFIX "glBindRenderbuffer");
    this->DeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)LoadMethod(PREFIX "glDeleteRenderbuffers");
    this->GenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)LoadMethod(PREFIX "glGenRenderbuffers");
    this->RenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)LoadMethod(PREFIX "glRenderbufferStorage");
    this->GetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)LoadMethod(PREFIX "glGetRenderbufferParameteriv");
    this->IsFramebuffer = (PFNGLISFRAMEBUFFERPROC)LoadMethod(PREFIX "glIsFramebuffer");
    this->BindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)LoadMethod(PREFIX "glBindFramebuffer");
    this->DeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)LoadMethod(PREFIX "glDeleteFramebuffers");
    this->GenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)LoadMethod(PREFIX "glGenFramebuffers");
    this->CheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)LoadMethod(PREFIX "glCheckFramebufferStatus");
    this->FramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)LoadMethod(PREFIX "glFramebufferTexture1D");
    this->FramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)LoadMethod(PREFIX "glFramebufferTexture2D");
    this->FramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)LoadMethod(PREFIX "glFramebufferTexture3D");
    this->FramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)LoadMethod(PREFIX "glFramebufferRenderbuffer");
    this->GetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)LoadMethod(PREFIX "glGetFramebufferAttachmentParameteriv");
    this->GenerateMipmap = (PFNGLGENERATEMIPMAPPROC)LoadMethod(PREFIX "glGenerateMipmap");
    this->BlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)LoadMethod(PREFIX "glBlitFramebuffer");
    this->RenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)LoadMethod(PREFIX "glRenderbufferStorageMultisample");
    this->FramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)LoadMethod(PREFIX "glFramebufferTextureLayer");
    this->MapBufferRange = (PFNGLMAPBUFFERRANGEPROC)LoadMethod(PREFIX "glMapBufferRange");
    this->FlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)LoadMethod(PREFIX "glFlushMappedBufferRange");
    this->BindVertexArray = (PFNGLBINDVERTEXARRAYPROC)LoadMethod(PREFIX "glBindVertexArray");
    this->DeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)LoadMethod(PREFIX "glDeleteVertexArrays");
    this->GenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)LoadMethod(PREFIX "glGenVertexArrays");
    this->IsVertexArray = (PFNGLISVERTEXARRAYPROC)LoadMethod(PREFIX "glIsVertexArray");
    this->DrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)LoadMethod(PREFIX "glDrawArraysInstanced");
    this->DrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)LoadMethod(PREFIX "glDrawElementsInstanced");
    this->TexBuffer = (PFNGLTEXBUFFERPROC)LoadMethod(PREFIX "glTexBuffer");
    this->PrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)LoadMethod(PREFIX "glPrimitiveRestartIndex");
    this->CopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)LoadMethod(PREFIX "glCopyBufferSubData");
    this->GetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)LoadMethod(PREFIX "glGetUniformIndices");
    this->GetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)LoadMethod(PREFIX "glGetActiveUniformsiv");
    this->GetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)LoadMethod(PREFIX "glGetActiveUniformName");
    this->GetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)LoadMethod(PREFIX "glGetUniformBlockIndex");
    this->GetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)LoadMethod(PREFIX "glGetActiveUniformBlockiv");
    this->GetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)LoadMethod(PREFIX "glGetActiveUniformBlockName");
    this->UniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)LoadMethod(PREFIX "glUniformBlockBinding");
    this->DrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)LoadMethod(PREFIX "glDrawElementsBaseVertex");
    this->DrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)LoadMethod(PREFIX "glDrawRangeElementsBaseVertex");
    this->DrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)LoadMethod(PREFIX "glDrawElementsInstancedBaseVertex");
    this->MultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)LoadMethod(PREFIX "glMultiDrawElementsBaseVertex");
    this->ProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)LoadMethod(PREFIX "glProvokingVertex");
    this->FenceSync = (PFNGLFENCESYNCPROC)LoadMethod(PREFIX "glFenceSync");
    this->IsSync = (PFNGLISSYNCPROC)LoadMethod(PREFIX "glIsSync");
    this->DeleteSync = (PFNGLDELETESYNCPROC)LoadMethod(PREFIX "glDeleteSync");
    this->ClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)LoadMethod(PREFIX "glClientWaitSync");
    this->WaitSync = (PFNGLWAITSYNCPROC)LoadMethod(PREFIX "glWaitSync");
    this->GetInteger64v = (PFNGLGETINTEGER64VPROC)LoadMethod(PREFIX "glGetInteger64v");
    this->GetSynciv = (PFNGLGETSYNCIVPROC)LoadMethod(PREFIX "glGetSynciv");
    this->GetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)LoadMethod(PREFIX "glGetInteger64i_v");
    this->GetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)LoadMethod(PREFIX "glGetBufferParameteri64v");
    this->FramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)LoadMethod(PREFIX "glFramebufferTexture");
    this->TexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)LoadMethod(PREFIX "glTexImage2DMultisample");
    this->TexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)LoadMethod(PREFIX "glTexImage3DMultisample");
    this->GetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)LoadMethod(PREFIX "glGetMultisamplefv");
    this->SampleMaski = (PFNGLSAMPLEMASKIPROC)LoadMethod(PREFIX "glSampleMaski");
    this->BindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)LoadMethod(PREFIX "glBindFragDataLocationIndexed");
    this->GetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)LoadMethod(PREFIX "glGetFragDataIndex");
    this->GenSamplers = (PFNGLGENSAMPLERSPROC)LoadMethod(PREFIX "glGenSamplers");
    this->DeleteSamplers = (PFNGLDELETESAMPLERSPROC)LoadMethod(PREFIX "glDeleteSamplers");
    this->IsSampler = (PFNGLISSAMPLERPROC)LoadMethod(PREFIX "glIsSampler");
    this->BindSampler = (PFNGLBINDSAMPLERPROC)LoadMethod(PREFIX "glBindSampler");
    this->SamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)LoadMethod(PREFIX "glSamplerParameteri");
    this->SamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)LoadMethod(PREFIX "glSamplerParameteriv");
    this->SamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)LoadMethod(PREFIX "glSamplerParameterf");
    this->SamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)LoadMethod(PREFIX "glSamplerParameterfv");
    this->SamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)LoadMethod(PREFIX "glSamplerParameterIiv");
    this->SamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)LoadMethod(PREFIX "glSamplerParameterIuiv");
    this->GetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)LoadMethod(PREFIX "glGetSamplerParameteriv");
    this->GetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)LoadMethod(PREFIX "glGetSamplerParameterIiv");
    this->GetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)LoadMethod(PREFIX "glGetSamplerParameterfv");
    this->GetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)LoadMethod(PREFIX "glGetSamplerParameterIuiv");
    this->QueryCounter = (PFNGLQUERYCOUNTERPROC)LoadMethod(PREFIX "glQueryCounter");
    this->GetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)LoadMethod(PREFIX "glGetQueryObjecti64v");
    this->GetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)LoadMethod(PREFIX "glGetQueryObjectui64v");
    this->VertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)LoadMethod(PREFIX "glVertexAttribDivisor");
    this->VertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)LoadMethod(PREFIX "glVertexAttribP1ui");
    this->VertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)LoadMethod(PREFIX "glVertexAttribP1uiv");
    this->VertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)LoadMethod(PREFIX "glVertexAttribP2ui");
    this->VertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)LoadMethod(PREFIX "glVertexAttribP2uiv");
    this->VertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)LoadMethod(PREFIX "glVertexAttribP3ui");
    this->VertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)LoadMethod(PREFIX "glVertexAttribP3uiv");
    this->VertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)LoadMethod(PREFIX "glVertexAttribP4ui");
    this->VertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)LoadMethod(PREFIX "glVertexAttribP4uiv");
    this->MinSampleShading = (PFNGLMINSAMPLESHADINGPROC)LoadMethod(PREFIX "glMinSampleShading");
    this->BlendEquationi = (PFNGLBLENDEQUATIONIPROC)LoadMethod(PREFIX "glBlendEquationi");
    this->BlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)LoadMethod(PREFIX "glBlendEquationSeparatei");
    this->BlendFunci = (PFNGLBLENDFUNCIPROC)LoadMethod(PREFIX "glBlendFunci");
    this->BlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)LoadMethod(PREFIX "glBlendFuncSeparatei");
    this->DrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)LoadMethod(PREFIX "glDrawArraysIndirect");
    this->DrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)LoadMethod(PREFIX "glDrawElementsIndirect");
    this->Uniform1d = (PFNGLUNIFORM1DPROC)LoadMethod(PREFIX "glUniform1d");
    this->Uniform2d = (PFNGLUNIFORM2DPROC)LoadMethod(PREFIX "glUniform2d");
    this->Uniform3d = (PFNGLUNIFORM3DPROC)LoadMethod(PREFIX "glUniform3d");
    this->Uniform4d = (PFNGLUNIFORM4DPROC)LoadMethod(PREFIX "glUniform4d");
    this->Uniform1dv = (PFNGLUNIFORM1DVPROC)LoadMethod(PREFIX "glUniform1dv");
    this->Uniform2dv = (PFNGLUNIFORM2DVPROC)LoadMethod(PREFIX "glUniform2dv");
    this->Uniform3dv = (PFNGLUNIFORM3DVPROC)LoadMethod(PREFIX "glUniform3dv");
    this->Uniform4dv = (PFNGLUNIFORM4DVPROC)LoadMethod(PREFIX "glUniform4dv");
    this->UniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)LoadMethod(PREFIX "glUniformMatrix2dv");
    this->UniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)LoadMethod(PREFIX "glUniformMatrix3dv");
    this->UniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)LoadMethod(PREFIX "glUniformMatrix4dv");
    this->UniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)LoadMethod(PREFIX "glUniformMatrix2x3dv");
    this->UniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)LoadMethod(PREFIX "glUniformMatrix2x4dv");
    this->UniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)LoadMethod(PREFIX "glUniformMatrix3x2dv");
    this->UniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)LoadMethod(PREFIX "glUniformMatrix3x4dv");
    this->UniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)LoadMethod(PREFIX "glUniformMatrix4x2dv");
    this->UniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)LoadMethod(PREFIX "glUniformMatrix4x3dv");
    this->GetUniformdv = (PFNGLGETUNIFORMDVPROC)LoadMethod(PREFIX "glGetUniformdv");
    this->GetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)LoadMethod(PREFIX "glGetSubroutineUniformLocation");
    this->GetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)LoadMethod(PREFIX "glGetSubroutineIndex");
    this->GetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)LoadMethod(PREFIX "glGetActiveSubroutineUniformiv");
    this->GetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)LoadMethod(PREFIX "glGetActiveSubroutineUniformName");
    this->GetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)LoadMethod(PREFIX "glGetActiveSubroutineName");
    this->UniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)LoadMethod(PREFIX "glUniformSubroutinesuiv");
    this->GetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)LoadMethod(PREFIX "glGetUniformSubroutineuiv");
    this->GetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)LoadMethod(PREFIX "glGetProgramStageiv");
    this->PatchParameteri = (PFNGLPATCHPARAMETERIPROC)LoadMethod(PREFIX "glPatchParameteri");
    this->PatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)LoadMethod(PREFIX "glPatchParameterfv");
    this->BindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glBindTransformFeedback");
    this->DeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)LoadMethod(PREFIX "glDeleteTransformFeedbacks");
    this->GenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)LoadMethod(PREFIX "glGenTransformFeedbacks");
    this->IsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glIsTransformFeedback");
    this->PauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glPauseTransformFeedback");
    this->ResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glResumeTransformFeedback");
    this->DrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)LoadMethod(PREFIX "glDrawTransformFeedback");
    this->DrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)LoadMethod(PREFIX "glDrawTransformFeedbackStream");
    this->BeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)LoadMethod(PREFIX "glBeginQueryIndexed");
    this->EndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)LoadMethod(PREFIX "glEndQueryIndexed");
    this->GetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)LoadMethod(PREFIX "glGetQueryIndexediv");
    this->ReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)LoadMethod(PREFIX "glReleaseShaderCompiler");
    this->ShaderBinary = (PFNGLSHADERBINARYPROC)LoadMethod(PREFIX "glShaderBinary");
    this->GetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)LoadMethod(PREFIX "glGetShaderPrecisionFormat");
    this->DepthRangef = (PFNGLDEPTHRANGEFPROC)LoadMethod(PREFIX "glDepthRangef");
    this->ClearDepthf = (PFNGLCLEARDEPTHFPROC)LoadMethod(PREFIX "glClearDepthf");
    this->GetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)LoadMethod(PREFIX "glGetProgramBinary");
    this->ProgramBinary = (PFNGLPROGRAMBINARYPROC)LoadMethod(PREFIX "glProgramBinary");
    this->ProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)LoadMethod(PREFIX "glProgramParameteri");
    this->UseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)LoadMethod(PREFIX "glUseProgramStages");
    this->ActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)LoadMethod(PREFIX "glActiveShaderProgram");
    this->CreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)LoadMethod(PREFIX "glCreateShaderProgramv");
    this->BindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)LoadMethod(PREFIX "glBindProgramPipeline");
    this->DeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)LoadMethod(PREFIX "glDeleteProgramPipelines");
    this->GenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)LoadMethod(PREFIX "glGenProgramPipelines");
    this->IsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)LoadMethod(PREFIX "glIsProgramPipeline");
    this->GetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)LoadMethod(PREFIX "glGetProgramPipelineiv");
    this->ProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)LoadMethod(PREFIX "glProgramUniform1i");
    this->ProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)LoadMethod(PREFIX "glProgramUniform1iv");
    this->ProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)LoadMethod(PREFIX "glProgramUniform1f");
    this->ProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)LoadMethod(PREFIX "glProgramUniform1fv");
    this->ProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)LoadMethod(PREFIX "glProgramUniform1d");
    this->ProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)LoadMethod(PREFIX "glProgramUniform1dv");
    this->ProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)LoadMethod(PREFIX "glProgramUniform1ui");
    this->ProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)LoadMethod(PREFIX "glProgramUniform1uiv");
    this->ProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)LoadMethod(PREFIX "glProgramUniform2i");
    this->ProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)LoadMethod(PREFIX "glProgramUniform2iv");
    this->ProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)LoadMethod(PREFIX "glProgramUniform2f");
    this->ProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)LoadMethod(PREFIX "glProgramUniform2fv");
    this->ProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)LoadMethod(PREFIX "glProgramUniform2d");
    this->ProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)LoadMethod(PREFIX "glProgramUniform2dv");
    this->ProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)LoadMethod(PREFIX "glProgramUniform2ui");
    this->ProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)LoadMethod(PREFIX "glProgramUniform2uiv");
    this->ProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)LoadMethod(PREFIX "glProgramUniform3i");
    this->ProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)LoadMethod(PREFIX "glProgramUniform3iv");
    this->ProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)LoadMethod(PREFIX "glProgramUniform3f");
    this->ProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)LoadMethod(PREFIX "glProgramUniform3fv");
    this->ProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)LoadMethod(PREFIX "glProgramUniform3d");
    this->ProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)LoadMethod(PREFIX "glProgramUniform3dv");
    this->ProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)LoadMethod(PREFIX "glProgramUniform3ui");
    this->ProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)LoadMethod(PREFIX "glProgramUniform3uiv");
    this->ProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)LoadMethod(PREFIX "glProgramUniform4i");
    this->ProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)LoadMethod(PREFIX "glProgramUniform4iv");
    this->ProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)LoadMethod(PREFIX "glProgramUniform4f");
    this->ProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)LoadMethod(PREFIX "glProgramUniform4fv");
    this->ProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)LoadMethod(PREFIX "glProgramUniform4d");
    this->ProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)LoadMethod(PREFIX "glProgramUniform4dv");
    this->ProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)LoadMethod(PREFIX "glProgramUniform4ui");
    this->ProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)LoadMethod(PREFIX "glProgramUniform4uiv");
    this->ProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix2fv");
    this->ProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix3fv");
    this->ProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix4fv");
    this->ProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix2dv");
    this->ProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix3dv");
    this->ProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix4dv");
    this->ProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix2x3fv");
    this->ProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix3x2fv");
    this->ProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix2x4fv");
    this->ProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix4x2fv");
    this->ProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix3x4fv");
    this->ProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)LoadMethod(PREFIX "glProgramUniformMatrix4x3fv");
    this->ProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix2x3dv");
    this->ProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix3x2dv");
    this->ProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix2x4dv");
    this->ProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix4x2dv");
    this->ProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix3x4dv");
    this->ProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)LoadMethod(PREFIX "glProgramUniformMatrix4x3dv");
    this->ValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)LoadMethod(PREFIX "glValidateProgramPipeline");
    this->GetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)LoadMethod(PREFIX "glGetProgramPipelineInfoLog");
    this->VertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)LoadMethod(PREFIX "glVertexAttribL1d");
    this->VertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)LoadMethod(PREFIX "glVertexAttribL2d");
    this->VertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)LoadMethod(PREFIX "glVertexAttribL3d");
    this->VertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)LoadMethod(PREFIX "glVertexAttribL4d");
    this->VertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)LoadMethod(PREFIX "glVertexAttribL1dv");
    this->VertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)LoadMethod(PREFIX "glVertexAttribL2dv");
    this->VertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)LoadMethod(PREFIX "glVertexAttribL3dv");
    this->VertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)LoadMethod(PREFIX "glVertexAttribL4dv");
    this->VertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)LoadMethod(PREFIX "glVertexAttribLPointer");
    this->GetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)LoadMethod(PREFIX "glGetVertexAttribLdv");
    this->ViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)LoadMethod(PREFIX "glViewportArrayv");
    this->ViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)LoadMethod(PREFIX "glViewportIndexedf");
    this->ViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)LoadMethod(PREFIX "glViewportIndexedfv");
    this->ScissorArrayv = (PFNGLSCISSORARRAYVPROC)LoadMethod(PREFIX "glScissorArrayv");
    this->ScissorIndexed = (PFNGLSCISSORINDEXEDPROC)LoadMethod(PREFIX "glScissorIndexed");
    this->ScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)LoadMethod(PREFIX "glScissorIndexedv");
    this->DepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)LoadMethod(PREFIX "glDepthRangeArrayv");
    this->DepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)LoadMethod(PREFIX "glDepthRangeIndexed");
    this->GetFloati_v = (PFNGLGETFLOATI_VPROC)LoadMethod(PREFIX "glGetFloati_v");
    this->GetDoublei_v = (PFNGLGETDOUBLEI_VPROC)LoadMethod(PREFIX "glGetDoublei_v");
    this->DrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)LoadMethod(PREFIX "glDrawArraysInstancedBaseInstance");
    this->DrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)LoadMethod(PREFIX "glDrawElementsInstancedBaseInstance");
    this->DrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)LoadMethod(PREFIX "glDrawElementsInstancedBaseVertexBaseInstance");
    this->GetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)LoadMethod(PREFIX "glGetInternalformativ");
    this->GetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)LoadMethod(PREFIX "glGetActiveAtomicCounterBufferiv");
    this->BindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)LoadMethod(PREFIX "glBindImageTexture");
    this->MemoryBarrier = (PFNGLMEMORYBARRIERPROC)LoadMethod(PREFIX "glMemoryBarrier");
    this->TexStorage1D = (PFNGLTEXSTORAGE1DPROC)LoadMethod(PREFIX "glTexStorage1D");
    this->TexStorage2D = (PFNGLTEXSTORAGE2DPROC)LoadMethod(PREFIX "glTexStorage2D");
    this->TexStorage3D = (PFNGLTEXSTORAGE3DPROC)LoadMethod(PREFIX "glTexStorage3D");
    this->DrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)LoadMethod(PREFIX "glDrawTransformFeedbackInstanced");
    this->DrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)LoadMethod(PREFIX "glDrawTransformFeedbackStreamInstanced");
    this->ClearBufferData = (PFNGLCLEARBUFFERDATAPROC)LoadMethod(PREFIX "glClearBufferData");
    this->ClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)LoadMethod(PREFIX "glClearBufferSubData");
    this->DispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)LoadMethod(PREFIX "glDispatchCompute");
    this->DispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)LoadMethod(PREFIX "glDispatchComputeIndirect");
    this->CopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)LoadMethod(PREFIX "glCopyImageSubData");
    this->FramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)LoadMethod(PREFIX "glFramebufferParameteri");
    this->GetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)LoadMethod(PREFIX "glGetFramebufferParameteriv");
    this->GetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)LoadMethod(PREFIX "glGetInternalformati64v");
    this->InvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)LoadMethod(PREFIX "glInvalidateTexSubImage");
    this->InvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)LoadMethod(PREFIX "glInvalidateTexImage");
    this->InvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)LoadMethod(PREFIX "glInvalidateBufferSubData");
    this->InvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)LoadMethod(PREFIX "glInvalidateBufferData");
    this->InvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)LoadMethod(PREFIX "glInvalidateFramebuffer");
    this->InvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)LoadMethod(PREFIX "glInvalidateSubFramebuffer");
    this->MultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)LoadMethod(PREFIX "glMultiDrawArraysIndirect");
    this->MultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)LoadMethod(PREFIX "glMultiDrawElementsIndirect");
    this->GetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)LoadMethod(PREFIX "glGetProgramInterfaceiv");
    this->GetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)LoadMethod(PREFIX "glGetProgramResourceIndex");
    this->GetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)LoadMethod(PREFIX "glGetProgramResourceName");
    this->GetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)LoadMethod(PREFIX "glGetProgramResourceiv");
    this->GetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)LoadMethod(PREFIX "glGetProgramResourceLocation");
    this->GetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)LoadMethod(PREFIX "glGetProgramResourceLocationIndex");
    this->ShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)LoadMethod(PREFIX "glShaderStorageBlockBinding");
    this->TexBufferRange = (PFNGLTEXBUFFERRANGEPROC)LoadMethod(PREFIX "glTexBufferRange");
    this->TexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)LoadMethod(PREFIX "glTexStorage2DMultisample");
    this->TexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)LoadMethod(PREFIX "glTexStorage3DMultisample");
    this->TextureView = (PFNGLTEXTUREVIEWPROC)LoadMethod(PREFIX "glTextureView");
    this->BindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)LoadMethod(PREFIX "glBindVertexBuffer");
    this->VertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)LoadMethod(PREFIX "glVertexAttribFormat");
    this->VertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)LoadMethod(PREFIX "glVertexAttribIFormat");
    this->VertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)LoadMethod(PREFIX "glVertexAttribLFormat");
    this->VertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)LoadMethod(PREFIX "glVertexAttribBinding");
    this->VertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)LoadMethod(PREFIX "glVertexBindingDivisor");
    this->DebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)LoadMethod(PREFIX "glDebugMessageControl");
    this->DebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)LoadMethod(PREFIX "glDebugMessageInsert");
    this->DebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)LoadMethod(PREFIX "glDebugMessageCallback");
    this->GetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)LoadMethod(PREFIX "glGetDebugMessageLog");
    this->PushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)LoadMethod(PREFIX "glPushDebugGroup");
    this->PopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)LoadMethod(PREFIX "glPopDebugGroup");
    this->ObjectLabel = (PFNGLOBJECTLABELPROC)LoadMethod(PREFIX "glObjectLabel");
    this->GetObjectLabel = (PFNGLGETOBJECTLABELPROC)LoadMethod(PREFIX "glGetObjectLabel");
    this->ObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)LoadMethod(PREFIX "glObjectPtrLabel");
    this->GetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)LoadMethod(PREFIX "glGetObjectPtrLabel");
    this->BufferStorage = (PFNGLBUFFERSTORAGEPROC)LoadMethod(PREFIX "glBufferStorage");
    this->ClearTexImage = (PFNGLCLEARTEXIMAGEPROC)LoadMethod(PREFIX "glClearTexImage");
    this->ClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)LoadMethod(PREFIX "glClearTexSubImage");
    this->BindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)LoadMethod(PREFIX "glBindBuffersBase");
    this->BindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)LoadMethod(PREFIX "glBindBuffersRange");
    this->BindTextures = (PFNGLBINDTEXTURESPROC)LoadMethod(PREFIX "glBindTextures");
    this->BindSamplers = (PFNGLBINDSAMPLERSPROC)LoadMethod(PREFIX "glBindSamplers");
    this->BindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)LoadMethod(PREFIX "glBindImageTextures");
    this->BindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)LoadMethod(PREFIX "glBindVertexBuffers");
    this->ClipControl = (PFNGLCLIPCONTROLPROC)LoadMethod(PREFIX "glClipControl");
    this->CreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)LoadMethod(PREFIX "glCreateTransformFeedbacks");
    this->TransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)LoadMethod(PREFIX "glTransformFeedbackBufferBase");
    this->TransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)LoadMethod(PREFIX "glTransformFeedbackBufferRange");
    this->GetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)LoadMethod(PREFIX "glGetTransformFeedbackiv");
    this->GetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)LoadMethod(PREFIX "glGetTransformFeedbacki_v");
    this->GetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)LoadMethod(PREFIX "glGetTransformFeedbacki64_v");
    this->CreateBuffers = (PFNGLCREATEBUFFERSPROC)LoadMethod(PREFIX "glCreateBuffers");
    this->NamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)LoadMethod(PREFIX "glNamedBufferStorage");
    this->NamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)LoadMethod(PREFIX "glNamedBufferData");
    this->NamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)LoadMethod(PREFIX "glNamedBufferSubData");
    this->CopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)LoadMethod(PREFIX "glCopyNamedBufferSubData");
    this->ClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)LoadMethod(PREFIX "glClearNamedBufferData");
    this->ClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)LoadMethod(PREFIX "glClearNamedBufferSubData");
    this->MapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)LoadMethod(PREFIX "glMapNamedBuffer");
    this->MapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)LoadMethod(PREFIX "glMapNamedBufferRange");
    this->UnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)LoadMethod(PREFIX "glUnmapNamedBuffer");
    this->FlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)LoadMethod(PREFIX "glFlushMappedNamedBufferRange");
    this->GetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)LoadMethod(PREFIX "glGetNamedBufferParameteriv");
    this->GetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)LoadMethod(PREFIX "glGetNamedBufferParameteri64v");
    this->GetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)LoadMethod(PREFIX "glGetNamedBufferPointerv");
    this->GetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)LoadMethod(PREFIX "glGetNamedBufferSubData");
    this->CreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)LoadMethod(PREFIX "glCreateFramebuffers");
    this->NamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)LoadMethod(PREFIX "glNamedFramebufferRenderbuffer");
    this->NamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)LoadMethod(PREFIX "glNamedFramebufferParameteri");
    this->NamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)LoadMethod(PREFIX "glNamedFramebufferTexture");
    this->NamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)LoadMethod(PREFIX "glNamedFramebufferTextureLayer");
    this->NamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)LoadMethod(PREFIX "glNamedFramebufferDrawBuffer");
    this->NamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)LoadMethod(PREFIX "glNamedFramebufferDrawBuffers");
    this->NamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)LoadMethod(PREFIX "glNamedFramebufferReadBuffer");
    this->InvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)LoadMethod(PREFIX "glInvalidateNamedFramebufferData");
    this->InvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)LoadMethod(PREFIX "glInvalidateNamedFramebufferSubData");
    this->ClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)LoadMethod(PREFIX "glClearNamedFramebufferiv");
    this->ClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)LoadMethod(PREFIX "glClearNamedFramebufferuiv");
    this->ClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)LoadMethod(PREFIX "glClearNamedFramebufferfv");
    this->ClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)LoadMethod(PREFIX "glClearNamedFramebufferfi");
    this->BlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)LoadMethod(PREFIX "glBlitNamedFramebuffer");
    this->CheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)LoadMethod(PREFIX "glCheckNamedFramebufferStatus");
    this->GetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)LoadMethod(PREFIX "glGetNamedFramebufferParameteriv");
    this->GetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)LoadMethod(PREFIX "glGetNamedFramebufferAttachmentParameteriv");
    this->CreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)LoadMethod(PREFIX "glCreateRenderbuffers");
    this->NamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)LoadMethod(PREFIX "glNamedRenderbufferStorage");
    this->NamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)LoadMethod(PREFIX "glNamedRenderbufferStorageMultisample");
    this->GetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)LoadMethod(PREFIX "glGetNamedRenderbufferParameteriv");
    this->CreateTextures = (PFNGLCREATETEXTURESPROC)LoadMethod(PREFIX "glCreateTextures");
    this->TextureBuffer = (PFNGLTEXTUREBUFFERPROC)LoadMethod(PREFIX "glTextureBuffer");
    this->TextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)LoadMethod(PREFIX "glTextureBufferRange");
    this->TextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)LoadMethod(PREFIX "glTextureStorage1D");
    this->TextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)LoadMethod(PREFIX "glTextureStorage2D");
    this->TextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)LoadMethod(PREFIX "glTextureStorage3D");
    this->TextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)LoadMethod(PREFIX "glTextureStorage2DMultisample");
    this->TextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)LoadMethod(PREFIX "glTextureStorage3DMultisample");
    this->TextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)LoadMethod(PREFIX "glTextureSubImage1D");
    this->TextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)LoadMethod(PREFIX "glTextureSubImage2D");
    this->TextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)LoadMethod(PREFIX "glTextureSubImage3D");
    this->CompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)LoadMethod(PREFIX "glCompressedTextureSubImage1D");
    this->CompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)LoadMethod(PREFIX "glCompressedTextureSubImage2D");
    this->CompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)LoadMethod(PREFIX "glCompressedTextureSubImage3D");
    this->CopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)LoadMethod(PREFIX "glCopyTextureSubImage1D");
    this->CopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)LoadMethod(PREFIX "glCopyTextureSubImage2D");
    this->CopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)LoadMethod(PREFIX "glCopyTextureSubImage3D");
    this->TextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)LoadMethod(PREFIX "glTextureParameterf");
    this->TextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)LoadMethod(PREFIX "glTextureParameterfv");
    this->TextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)LoadMethod(PREFIX "glTextureParameteri");
    this->TextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)LoadMethod(PREFIX "glTextureParameterIiv");
    this->TextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)LoadMethod(PREFIX "glTextureParameterIuiv");
    this->TextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)LoadMethod(PREFIX "glTextureParameteriv");
    this->GenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)LoadMethod(PREFIX "glGenerateTextureMipmap");
    this->BindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)LoadMethod(PREFIX "glBindTextureUnit");
    this->GetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)LoadMethod(PREFIX "glGetTextureImage");
    this->GetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)LoadMethod(PREFIX "glGetCompressedTextureImage");
    this->GetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)LoadMethod(PREFIX "glGetTextureLevelParameterfv");
    this->GetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)LoadMethod(PREFIX "glGetTextureLevelParameteriv");
    this->GetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)LoadMethod(PREFIX "glGetTextureParameterfv");
    this->GetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)LoadMethod(PREFIX "glGetTextureParameterIiv");
    this->GetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)LoadMethod(PREFIX "glGetTextureParameterIuiv");
    this->GetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)LoadMethod(PREFIX "glGetTextureParameteriv");
    this->CreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)LoadMethod(PREFIX "glCreateVertexArrays");
    this->DisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)LoadMethod(PREFIX "glDisableVertexArrayAttrib");
    this->EnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)LoadMethod(PREFIX "glEnableVertexArrayAttrib");
    this->VertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)LoadMethod(PREFIX "glVertexArrayElementBuffer");
    this->VertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)LoadMethod(PREFIX "glVertexArrayVertexBuffer");
    this->VertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)LoadMethod(PREFIX "glVertexArrayVertexBuffers");
    this->VertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)LoadMethod(PREFIX "glVertexArrayAttribBinding");
    this->VertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)LoadMethod(PREFIX "glVertexArrayAttribFormat");
    this->VertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)LoadMethod(PREFIX "glVertexArrayAttribIFormat");
    this->VertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)LoadMethod(PREFIX "glVertexArrayAttribLFormat");
    this->VertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)LoadMethod(PREFIX "glVertexArrayBindingDivisor");
    this->GetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)LoadMethod(PREFIX "glGetVertexArrayiv");
    this->GetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)LoadMethod(PREFIX "glGetVertexArrayIndexediv");
    this->GetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)LoadMethod(PREFIX "glGetVertexArrayIndexed64iv");
    this->CreateSamplers = (PFNGLCREATESAMPLERSPROC)LoadMethod(PREFIX "glCreateSamplers");
    this->CreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)LoadMethod(PREFIX "glCreateProgramPipelines");
    this->CreateQueries = (PFNGLCREATEQUERIESPROC)LoadMethod(PREFIX "glCreateQueries");
    this->GetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)LoadMethod(PREFIX "glGetQueryBufferObjecti64v");
    this->GetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)LoadMethod(PREFIX "glGetQueryBufferObjectiv");
    this->GetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)LoadMethod(PREFIX "glGetQueryBufferObjectui64v");
    this->GetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)LoadMethod(PREFIX "glGetQueryBufferObjectuiv");
    this->MemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)LoadMethod(PREFIX "glMemoryBarrierByRegion");
    this->GetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)LoadMethod(PREFIX "glGetTextureSubImage");
    this->GetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)LoadMethod(PREFIX "glGetCompressedTextureSubImage");
    this->GetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)LoadMethod(PREFIX "glGetGraphicsResetStatus");
    this->GetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC)LoadMethod(PREFIX "glGetnCompressedTexImage");
    this->GetnTexImage = (PFNGLGETNTEXIMAGEPROC)LoadMethod(PREFIX "glGetnTexImage");
    this->GetnUniformdv = (PFNGLGETNUNIFORMDVPROC)LoadMethod(PREFIX "glGetnUniformdv");
    this->GetnUniformfv = (PFNGLGETNUNIFORMFVPROC)LoadMethod(PREFIX "glGetnUniformfv");
    this->GetnUniformiv = (PFNGLGETNUNIFORMIVPROC)LoadMethod(PREFIX "glGetnUniformiv");
    this->GetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)LoadMethod(PREFIX "glGetnUniformuiv");
    this->ReadnPixels = (PFNGLREADNPIXELSPROC)LoadMethod(PREFIX "glReadnPixels");
    this->TextureBarrier = (PFNGLTEXTUREBARRIERPROC)LoadMethod(PREFIX "glTextureBarrier");
    this->SpecializeShader = (PFNGLSPECIALIZESHADERPROC)LoadMethod(PREFIX "glSpecializeShader");
    this->MultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)LoadMethod(PREFIX "glMultiDrawArraysIndirectCount");
    this->MultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)LoadMethod(PREFIX "glMultiDrawElementsIndirectCount");
    this->PolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)LoadMethod(PREFIX "glPolygonOffsetClamp");

    return true;
}
