Hash :
f410e81a
        
        Author :
  
        
        Date :
2021-04-20T14:26:54
        
      
GL: Implement multisampled_render_to_texture Bug: angleproject:2894, angleproject:5988 Change-Id: I17b55f0655d32d9f41cb55a0467b93a00fba751b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2841084 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842
// GENERATED FILE - DO NOT EDIT.
// Generated by generate_gl_dispatch_table.py using data from gl_bindings_data.json and gl.xml.
//
// Copyright 2017 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// DispatchTableGL_autogen.h:
//   Defines the native binding interface for ANGLE's OpenGL back-end.
#ifndef LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
#define LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
#include "common/angleutils.h"
#include "libANGLE/renderer/gl/functionsgl_typedefs.h"
#include <set>
namespace gl
{
struct Version;
}  // namespace gl
namespace rx
{
class DispatchTableGL : angle::NonCopyable
{
  public:
    // clang-format off
    // 1.0
    PFNGLBLENDFUNCPROC blendFunc = nullptr;
    PFNGLCLEARPROC clear = nullptr;
    PFNGLCLEARCOLORPROC clearColor = nullptr;
    PFNGLCLEARDEPTHPROC clearDepth = nullptr;
    PFNGLCLEARSTENCILPROC clearStencil = nullptr;
    PFNGLCOLORMASKPROC colorMask = nullptr;
    PFNGLCULLFACEPROC cullFace = nullptr;
    PFNGLDEPTHFUNCPROC depthFunc = nullptr;
    PFNGLDEPTHMASKPROC depthMask = nullptr;
    PFNGLDEPTHRANGEPROC depthRange = nullptr;
    PFNGLDISABLEPROC disable = nullptr;
    PFNGLDRAWBUFFERPROC drawBuffer = nullptr;
    PFNGLENABLEPROC enable = nullptr;
    PFNGLFINISHPROC finish = nullptr;
    PFNGLFLUSHPROC flush = nullptr;
    PFNGLFRONTFACEPROC frontFace = nullptr;
    PFNGLGETBOOLEANVPROC getBooleanv = nullptr;
    PFNGLGETDOUBLEVPROC getDoublev = nullptr;
    PFNGLGETERRORPROC getError = nullptr;
    PFNGLGETFLOATVPROC getFloatv = nullptr;
    PFNGLGETINTEGERVPROC getIntegerv = nullptr;
    PFNGLGETSTRINGPROC getString = nullptr;
    PFNGLGETTEXIMAGEPROC getTexImage = nullptr;
    PFNGLGETTEXLEVELPARAMETERFVPROC getTexLevelParameterfv = nullptr;
    PFNGLGETTEXLEVELPARAMETERIVPROC getTexLevelParameteriv = nullptr;
    PFNGLGETTEXPARAMETERFVPROC getTexParameterfv = nullptr;
    PFNGLGETTEXPARAMETERIVPROC getTexParameteriv = nullptr;
    PFNGLHINTPROC hint = nullptr;
    PFNGLISENABLEDPROC isEnabled = nullptr;
    PFNGLLINEWIDTHPROC lineWidth = nullptr;
    PFNGLLOGICOPPROC logicOp = nullptr;
    PFNGLPIXELSTOREFPROC pixelStoref = nullptr;
    PFNGLPIXELSTOREIPROC pixelStorei = nullptr;
    PFNGLPOINTSIZEPROC pointSize = nullptr;
    PFNGLPOLYGONMODEPROC polygonMode = nullptr;
    PFNGLREADBUFFERPROC readBuffer = nullptr;
    PFNGLREADPIXELSPROC readPixels = nullptr;
    PFNGLSCISSORPROC scissor = nullptr;
    PFNGLSTENCILFUNCPROC stencilFunc = nullptr;
    PFNGLSTENCILMASKPROC stencilMask = nullptr;
    PFNGLSTENCILOPPROC stencilOp = nullptr;
    PFNGLTEXIMAGE1DPROC texImage1D = nullptr;
    PFNGLTEXIMAGE2DPROC texImage2D = nullptr;
    PFNGLTEXPARAMETERFPROC texParameterf = nullptr;
    PFNGLTEXPARAMETERFVPROC texParameterfv = nullptr;
    PFNGLTEXPARAMETERIPROC texParameteri = nullptr;
    PFNGLTEXPARAMETERIVPROC texParameteriv = nullptr;
    PFNGLVIEWPORTPROC viewport = nullptr;
    // 1.1
    PFNGLBINDTEXTUREPROC bindTexture = nullptr;
    PFNGLCOPYTEXIMAGE1DPROC copyTexImage1D = nullptr;
    PFNGLCOPYTEXIMAGE2DPROC copyTexImage2D = nullptr;
    PFNGLCOPYTEXSUBIMAGE1DPROC copyTexSubImage1D = nullptr;
    PFNGLCOPYTEXSUBIMAGE2DPROC copyTexSubImage2D = nullptr;
    PFNGLDELETETEXTURESPROC deleteTextures = nullptr;
    PFNGLDRAWARRAYSPROC drawArrays = nullptr;
    PFNGLDRAWELEMENTSPROC drawElements = nullptr;
    PFNGLGENTEXTURESPROC genTextures = nullptr;
    PFNGLISTEXTUREPROC isTexture = nullptr;
    PFNGLPOLYGONOFFSETPROC polygonOffset = nullptr;
    PFNGLTEXSUBIMAGE1DPROC texSubImage1D = nullptr;
    PFNGLTEXSUBIMAGE2DPROC texSubImage2D = nullptr;
    // 1.2
    PFNGLBLENDCOLORPROC blendColor = nullptr;
    PFNGLBLENDEQUATIONPROC blendEquation = nullptr;
    PFNGLCOPYTEXSUBIMAGE3DPROC copyTexSubImage3D = nullptr;
    PFNGLDRAWRANGEELEMENTSPROC drawRangeElements = nullptr;
    PFNGLTEXIMAGE3DPROC texImage3D = nullptr;
    PFNGLTEXSUBIMAGE3DPROC texSubImage3D = nullptr;
    // 1.2 Extensions
    PFNGLDELETEFENCESNVPROC deleteFencesNV = nullptr;
    PFNGLFINISHFENCENVPROC finishFenceNV = nullptr;
    PFNGLGENFENCESNVPROC genFencesNV = nullptr;
    PFNGLGETFENCEIVNVPROC getFenceivNV = nullptr;
    PFNGLISFENCENVPROC isFenceNV = nullptr;
    PFNGLSETFENCENVPROC setFenceNV = nullptr;
    PFNGLTESTFENCENVPROC testFenceNV = nullptr;
    // 1.3
    PFNGLACTIVETEXTUREPROC activeTexture = nullptr;
    PFNGLCOMPRESSEDTEXIMAGE1DPROC compressedTexImage1D = nullptr;
    PFNGLCOMPRESSEDTEXIMAGE2DPROC compressedTexImage2D = nullptr;
    PFNGLCOMPRESSEDTEXIMAGE3DPROC compressedTexImage3D = nullptr;
    PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC compressedTexSubImage1D = nullptr;
    PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC compressedTexSubImage2D = nullptr;
    PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC compressedTexSubImage3D = nullptr;
    PFNGLGETCOMPRESSEDTEXIMAGEPROC getCompressedTexImage = nullptr;
    PFNGLSAMPLECOVERAGEPROC sampleCoverage = nullptr;
    // 1.4
    PFNGLBLENDFUNCSEPARATEPROC blendFuncSeparate = nullptr;
    PFNGLMULTIDRAWARRAYSPROC multiDrawArrays = nullptr;
    PFNGLMULTIDRAWELEMENTSPROC multiDrawElements = nullptr;
    PFNGLPOINTPARAMETERFPROC pointParameterf = nullptr;
    PFNGLPOINTPARAMETERFVPROC pointParameterfv = nullptr;
    PFNGLPOINTPARAMETERIPROC pointParameteri = nullptr;
    PFNGLPOINTPARAMETERIVPROC pointParameteriv = nullptr;
    // 1.5
    PFNGLBEGINQUERYPROC beginQuery = nullptr;
    PFNGLBINDBUFFERPROC bindBuffer = nullptr;
    PFNGLBUFFERDATAPROC bufferData = nullptr;
    PFNGLBUFFERSUBDATAPROC bufferSubData = nullptr;
    PFNGLDELETEBUFFERSPROC deleteBuffers = nullptr;
    PFNGLDELETEQUERIESPROC deleteQueries = nullptr;
    PFNGLENDQUERYPROC endQuery = nullptr;
    PFNGLGENBUFFERSPROC genBuffers = nullptr;
    PFNGLGENQUERIESPROC genQueries = nullptr;
    PFNGLGETBUFFERPARAMETERIVPROC getBufferParameteriv = nullptr;
    PFNGLGETBUFFERPOINTERVPROC getBufferPointerv = nullptr;
    PFNGLGETBUFFERSUBDATAPROC getBufferSubData = nullptr;
    PFNGLGETQUERYOBJECTIVPROC getQueryObjectiv = nullptr;
    PFNGLGETQUERYOBJECTUIVPROC getQueryObjectuiv = nullptr;
    PFNGLGETQUERYIVPROC getQueryiv = nullptr;
    PFNGLISBUFFERPROC isBuffer = nullptr;
    PFNGLISQUERYPROC isQuery = nullptr;
    PFNGLMAPBUFFERPROC mapBuffer = nullptr;
    PFNGLUNMAPBUFFERPROC unmapBuffer = nullptr;
    // 2.0
    PFNGLATTACHSHADERPROC attachShader = nullptr;
    PFNGLBINDATTRIBLOCATIONPROC bindAttribLocation = nullptr;
    PFNGLBLENDEQUATIONSEPARATEPROC blendEquationSeparate = nullptr;
    PFNGLCOMPILESHADERPROC compileShader = nullptr;
    PFNGLCREATEPROGRAMPROC createProgram = nullptr;
    PFNGLCREATESHADERPROC createShader = nullptr;
    PFNGLDELETEPROGRAMPROC deleteProgram = nullptr;
    PFNGLDELETESHADERPROC deleteShader = nullptr;
    PFNGLDETACHSHADERPROC detachShader = nullptr;
    PFNGLDISABLEVERTEXATTRIBARRAYPROC disableVertexAttribArray = nullptr;
    PFNGLDRAWBUFFERSPROC drawBuffers = nullptr;
    PFNGLENABLEVERTEXATTRIBARRAYPROC enableVertexAttribArray = nullptr;
    PFNGLGETACTIVEATTRIBPROC getActiveAttrib = nullptr;
    PFNGLGETACTIVEUNIFORMPROC getActiveUniform = nullptr;
    PFNGLGETATTACHEDSHADERSPROC getAttachedShaders = nullptr;
    PFNGLGETATTRIBLOCATIONPROC getAttribLocation = nullptr;
    PFNGLGETPROGRAMINFOLOGPROC getProgramInfoLog = nullptr;
    PFNGLGETPROGRAMIVPROC getProgramiv = nullptr;
    PFNGLGETSHADERINFOLOGPROC getShaderInfoLog = nullptr;
    PFNGLGETSHADERSOURCEPROC getShaderSource = nullptr;
    PFNGLGETSHADERIVPROC getShaderiv = nullptr;
    PFNGLGETUNIFORMLOCATIONPROC getUniformLocation = nullptr;
    PFNGLGETUNIFORMFVPROC getUniformfv = nullptr;
    PFNGLGETUNIFORMIVPROC getUniformiv = nullptr;
    PFNGLGETVERTEXATTRIBPOINTERVPROC getVertexAttribPointerv = nullptr;
    PFNGLGETVERTEXATTRIBDVPROC getVertexAttribdv = nullptr;
    PFNGLGETVERTEXATTRIBFVPROC getVertexAttribfv = nullptr;
    PFNGLGETVERTEXATTRIBIVPROC getVertexAttribiv = nullptr;
    PFNGLISPROGRAMPROC isProgram = nullptr;
    PFNGLISSHADERPROC isShader = nullptr;
    PFNGLLINKPROGRAMPROC linkProgram = nullptr;
    PFNGLSHADERSOURCEPROC shaderSource = nullptr;
    PFNGLSTENCILFUNCSEPARATEPROC stencilFuncSeparate = nullptr;
    PFNGLSTENCILMASKSEPARATEPROC stencilMaskSeparate = nullptr;
    PFNGLSTENCILOPSEPARATEPROC stencilOpSeparate = nullptr;
    PFNGLUNIFORM1FPROC uniform1f = nullptr;
    PFNGLUNIFORM1FVPROC uniform1fv = nullptr;
    PFNGLUNIFORM1IPROC uniform1i = nullptr;
    PFNGLUNIFORM1IVPROC uniform1iv = nullptr;
    PFNGLUNIFORM2FPROC uniform2f = nullptr;
    PFNGLUNIFORM2FVPROC uniform2fv = nullptr;
    PFNGLUNIFORM2IPROC uniform2i = nullptr;
    PFNGLUNIFORM2IVPROC uniform2iv = nullptr;
    PFNGLUNIFORM3FPROC uniform3f = nullptr;
    PFNGLUNIFORM3FVPROC uniform3fv = nullptr;
    PFNGLUNIFORM3IPROC uniform3i = nullptr;
    PFNGLUNIFORM3IVPROC uniform3iv = nullptr;
    PFNGLUNIFORM4FPROC uniform4f = nullptr;
    PFNGLUNIFORM4FVPROC uniform4fv = nullptr;
    PFNGLUNIFORM4IPROC uniform4i = nullptr;
    PFNGLUNIFORM4IVPROC uniform4iv = nullptr;
    PFNGLUNIFORMMATRIX2FVPROC uniformMatrix2fv = nullptr;
    PFNGLUNIFORMMATRIX3FVPROC uniformMatrix3fv = nullptr;
    PFNGLUNIFORMMATRIX4FVPROC uniformMatrix4fv = nullptr;
    PFNGLUSEPROGRAMPROC useProgram = nullptr;
    PFNGLVALIDATEPROGRAMPROC validateProgram = nullptr;
    PFNGLVERTEXATTRIB1DPROC vertexAttrib1d = nullptr;
    PFNGLVERTEXATTRIB1DVPROC vertexAttrib1dv = nullptr;
    PFNGLVERTEXATTRIB1FPROC vertexAttrib1f = nullptr;
    PFNGLVERTEXATTRIB1FVPROC vertexAttrib1fv = nullptr;
    PFNGLVERTEXATTRIB1SPROC vertexAttrib1s = nullptr;
    PFNGLVERTEXATTRIB1SVPROC vertexAttrib1sv = nullptr;
    PFNGLVERTEXATTRIB2DPROC vertexAttrib2d = nullptr;
    PFNGLVERTEXATTRIB2DVPROC vertexAttrib2dv = nullptr;
    PFNGLVERTEXATTRIB2FPROC vertexAttrib2f = nullptr;
    PFNGLVERTEXATTRIB2FVPROC vertexAttrib2fv = nullptr;
    PFNGLVERTEXATTRIB2SPROC vertexAttrib2s = nullptr;
    PFNGLVERTEXATTRIB2SVPROC vertexAttrib2sv = nullptr;
    PFNGLVERTEXATTRIB3DPROC vertexAttrib3d = nullptr;
    PFNGLVERTEXATTRIB3DVPROC vertexAttrib3dv = nullptr;
    PFNGLVERTEXATTRIB3FPROC vertexAttrib3f = nullptr;
    PFNGLVERTEXATTRIB3FVPROC vertexAttrib3fv = nullptr;
    PFNGLVERTEXATTRIB3SPROC vertexAttrib3s = nullptr;
    PFNGLVERTEXATTRIB3SVPROC vertexAttrib3sv = nullptr;
    PFNGLVERTEXATTRIB4NBVPROC vertexAttrib4Nbv = nullptr;
    PFNGLVERTEXATTRIB4NIVPROC vertexAttrib4Niv = nullptr;
    PFNGLVERTEXATTRIB4NSVPROC vertexAttrib4Nsv = nullptr;
    PFNGLVERTEXATTRIB4NUBPROC vertexAttrib4Nub = nullptr;
    PFNGLVERTEXATTRIB4NUBVPROC vertexAttrib4Nubv = nullptr;
    PFNGLVERTEXATTRIB4NUIVPROC vertexAttrib4Nuiv = nullptr;
    PFNGLVERTEXATTRIB4NUSVPROC vertexAttrib4Nusv = nullptr;
    PFNGLVERTEXATTRIB4BVPROC vertexAttrib4bv = nullptr;
    PFNGLVERTEXATTRIB4DPROC vertexAttrib4d = nullptr;
    PFNGLVERTEXATTRIB4DVPROC vertexAttrib4dv = nullptr;
    PFNGLVERTEXATTRIB4FPROC vertexAttrib4f = nullptr;
    PFNGLVERTEXATTRIB4FVPROC vertexAttrib4fv = nullptr;
    PFNGLVERTEXATTRIB4IVPROC vertexAttrib4iv = nullptr;
    PFNGLVERTEXATTRIB4SPROC vertexAttrib4s = nullptr;
    PFNGLVERTEXATTRIB4SVPROC vertexAttrib4sv = nullptr;
    PFNGLVERTEXATTRIB4UBVPROC vertexAttrib4ubv = nullptr;
    PFNGLVERTEXATTRIB4UIVPROC vertexAttrib4uiv = nullptr;
    PFNGLVERTEXATTRIB4USVPROC vertexAttrib4usv = nullptr;
    PFNGLVERTEXATTRIBPOINTERPROC vertexAttribPointer = nullptr;
    // 2.1
    PFNGLUNIFORMMATRIX2X3FVPROC uniformMatrix2x3fv = nullptr;
    PFNGLUNIFORMMATRIX2X4FVPROC uniformMatrix2x4fv = nullptr;
    PFNGLUNIFORMMATRIX3X2FVPROC uniformMatrix3x2fv = nullptr;
    PFNGLUNIFORMMATRIX3X4FVPROC uniformMatrix3x4fv = nullptr;
    PFNGLUNIFORMMATRIX4X2FVPROC uniformMatrix4x2fv = nullptr;
    PFNGLUNIFORMMATRIX4X3FVPROC uniformMatrix4x3fv = nullptr;
    // 3.0
    PFNGLBEGINCONDITIONALRENDERPROC beginConditionalRender = nullptr;
    PFNGLBEGINTRANSFORMFEEDBACKPROC beginTransformFeedback = nullptr;
    PFNGLBINDBUFFERBASEPROC bindBufferBase = nullptr;
    PFNGLBINDBUFFERRANGEPROC bindBufferRange = nullptr;
    PFNGLBINDFRAGDATALOCATIONPROC bindFragDataLocation = nullptr;
    PFNGLBINDFRAMEBUFFERPROC bindFramebuffer = nullptr;
    PFNGLBINDRENDERBUFFERPROC bindRenderbuffer = nullptr;
    PFNGLBINDVERTEXARRAYPROC bindVertexArray = nullptr;
    PFNGLBLITFRAMEBUFFERPROC blitFramebuffer = nullptr;
    PFNGLCHECKFRAMEBUFFERSTATUSPROC checkFramebufferStatus = nullptr;
    PFNGLCLAMPCOLORPROC clampColor = nullptr;
    PFNGLCLEARBUFFERFIPROC clearBufferfi = nullptr;
    PFNGLCLEARBUFFERFVPROC clearBufferfv = nullptr;
    PFNGLCLEARBUFFERIVPROC clearBufferiv = nullptr;
    PFNGLCLEARBUFFERUIVPROC clearBufferuiv = nullptr;
    PFNGLCOLORMASKIPROC colorMaski = nullptr;
    PFNGLDELETEFRAMEBUFFERSPROC deleteFramebuffers = nullptr;
    PFNGLDELETERENDERBUFFERSPROC deleteRenderbuffers = nullptr;
    PFNGLDELETEVERTEXARRAYSPROC deleteVertexArrays = nullptr;
    PFNGLDISABLEIPROC disablei = nullptr;
    PFNGLENABLEIPROC enablei = nullptr;
    PFNGLENDCONDITIONALRENDERPROC endConditionalRender = nullptr;
    PFNGLENDTRANSFORMFEEDBACKPROC endTransformFeedback = nullptr;
    PFNGLFLUSHMAPPEDBUFFERRANGEPROC flushMappedBufferRange = nullptr;
    PFNGLFRAMEBUFFERRENDERBUFFERPROC framebufferRenderbuffer = nullptr;
    PFNGLFRAMEBUFFERTEXTURE1DPROC framebufferTexture1D = nullptr;
    PFNGLFRAMEBUFFERTEXTURE2DPROC framebufferTexture2D = nullptr;
    PFNGLFRAMEBUFFERTEXTURE3DPROC framebufferTexture3D = nullptr;
    PFNGLFRAMEBUFFERTEXTURELAYERPROC framebufferTextureLayer = nullptr;
    PFNGLGENFRAMEBUFFERSPROC genFramebuffers = nullptr;
    PFNGLGENRENDERBUFFERSPROC genRenderbuffers = nullptr;
    PFNGLGENVERTEXARRAYSPROC genVertexArrays = nullptr;
    PFNGLGENERATEMIPMAPPROC generateMipmap = nullptr;
    PFNGLGETBOOLEANI_VPROC getBooleani_v = nullptr;
    PFNGLGETFRAGDATALOCATIONPROC getFragDataLocation = nullptr;
    PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC getFramebufferAttachmentParameteriv = nullptr;
    PFNGLGETINTEGERI_VPROC getIntegeri_v = nullptr;
    PFNGLGETRENDERBUFFERPARAMETERIVPROC getRenderbufferParameteriv = nullptr;
    PFNGLGETSTRINGIPROC getStringi = nullptr;
    PFNGLGETTEXPARAMETERIIVPROC getTexParameterIiv = nullptr;
    PFNGLGETTEXPARAMETERIUIVPROC getTexParameterIuiv = nullptr;
    PFNGLGETTRANSFORMFEEDBACKVARYINGPROC getTransformFeedbackVarying = nullptr;
    PFNGLGETUNIFORMUIVPROC getUniformuiv = nullptr;
    PFNGLGETVERTEXATTRIBIIVPROC getVertexAttribIiv = nullptr;
    PFNGLGETVERTEXATTRIBIUIVPROC getVertexAttribIuiv = nullptr;
    PFNGLISENABLEDIPROC isEnabledi = nullptr;
    PFNGLISFRAMEBUFFERPROC isFramebuffer = nullptr;
    PFNGLISRENDERBUFFERPROC isRenderbuffer = nullptr;
    PFNGLISVERTEXARRAYPROC isVertexArray = nullptr;
    PFNGLMAPBUFFERRANGEPROC mapBufferRange = nullptr;
    PFNGLRENDERBUFFERSTORAGEPROC renderbufferStorage = nullptr;
    PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC renderbufferStorageMultisample = nullptr;
    PFNGLTEXPARAMETERIIVPROC texParameterIiv = nullptr;
    PFNGLTEXPARAMETERIUIVPROC texParameterIuiv = nullptr;
    PFNGLTRANSFORMFEEDBACKVARYINGSPROC transformFeedbackVaryings = nullptr;
    PFNGLUNIFORM1UIPROC uniform1ui = nullptr;
    PFNGLUNIFORM1UIVPROC uniform1uiv = nullptr;
    PFNGLUNIFORM2UIPROC uniform2ui = nullptr;
    PFNGLUNIFORM2UIVPROC uniform2uiv = nullptr;
    PFNGLUNIFORM3UIPROC uniform3ui = nullptr;
    PFNGLUNIFORM3UIVPROC uniform3uiv = nullptr;
    PFNGLUNIFORM4UIPROC uniform4ui = nullptr;
    PFNGLUNIFORM4UIVPROC uniform4uiv = nullptr;
    PFNGLVERTEXATTRIBI1IPROC vertexAttribI1i = nullptr;
    PFNGLVERTEXATTRIBI1IVPROC vertexAttribI1iv = nullptr;
    PFNGLVERTEXATTRIBI1UIPROC vertexAttribI1ui = nullptr;
    PFNGLVERTEXATTRIBI1UIVPROC vertexAttribI1uiv = nullptr;
    PFNGLVERTEXATTRIBI2IPROC vertexAttribI2i = nullptr;
    PFNGLVERTEXATTRIBI2IVPROC vertexAttribI2iv = nullptr;
    PFNGLVERTEXATTRIBI2UIPROC vertexAttribI2ui = nullptr;
    PFNGLVERTEXATTRIBI2UIVPROC vertexAttribI2uiv = nullptr;
    PFNGLVERTEXATTRIBI3IPROC vertexAttribI3i = nullptr;
    PFNGLVERTEXATTRIBI3IVPROC vertexAttribI3iv = nullptr;
    PFNGLVERTEXATTRIBI3UIPROC vertexAttribI3ui = nullptr;
    PFNGLVERTEXATTRIBI3UIVPROC vertexAttribI3uiv = nullptr;
    PFNGLVERTEXATTRIBI4BVPROC vertexAttribI4bv = nullptr;
    PFNGLVERTEXATTRIBI4IPROC vertexAttribI4i = nullptr;
    PFNGLVERTEXATTRIBI4IVPROC vertexAttribI4iv = nullptr;
    PFNGLVERTEXATTRIBI4SVPROC vertexAttribI4sv = nullptr;
    PFNGLVERTEXATTRIBI4UBVPROC vertexAttribI4ubv = nullptr;
    PFNGLVERTEXATTRIBI4UIPROC vertexAttribI4ui = nullptr;
    PFNGLVERTEXATTRIBI4UIVPROC vertexAttribI4uiv = nullptr;
    PFNGLVERTEXATTRIBI4USVPROC vertexAttribI4usv = nullptr;
    PFNGLVERTEXATTRIBIPOINTERPROC vertexAttribIPointer = nullptr;
    // 3.1
    PFNGLCOPYBUFFERSUBDATAPROC copyBufferSubData = nullptr;
    PFNGLDRAWARRAYSINSTANCEDPROC drawArraysInstanced = nullptr;
    PFNGLDRAWELEMENTSINSTANCEDPROC drawElementsInstanced = nullptr;
    PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC getActiveUniformBlockName = nullptr;
    PFNGLGETACTIVEUNIFORMBLOCKIVPROC getActiveUniformBlockiv = nullptr;
    PFNGLGETACTIVEUNIFORMNAMEPROC getActiveUniformName = nullptr;
    PFNGLGETACTIVEUNIFORMSIVPROC getActiveUniformsiv = nullptr;
    PFNGLGETUNIFORMBLOCKINDEXPROC getUniformBlockIndex = nullptr;
    PFNGLGETUNIFORMINDICESPROC getUniformIndices = nullptr;
    PFNGLPRIMITIVERESTARTINDEXPROC primitiveRestartIndex = nullptr;
    PFNGLTEXBUFFERPROC texBuffer = nullptr;
    PFNGLUNIFORMBLOCKBINDINGPROC uniformBlockBinding = nullptr;
    // 3.2
    PFNGLCLIENTWAITSYNCPROC clientWaitSync = nullptr;
    PFNGLDELETESYNCPROC deleteSync = nullptr;
    PFNGLDRAWELEMENTSBASEVERTEXPROC drawElementsBaseVertex = nullptr;
    PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC drawElementsInstancedBaseVertex = nullptr;
    PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC drawRangeElementsBaseVertex = nullptr;
    PFNGLFENCESYNCPROC fenceSync = nullptr;
    PFNGLFRAMEBUFFERTEXTUREPROC framebufferTexture = nullptr;
    PFNGLGETBUFFERPARAMETERI64VPROC getBufferParameteri64v = nullptr;
    PFNGLGETINTEGER64I_VPROC getInteger64i_v = nullptr;
    PFNGLGETINTEGER64VPROC getInteger64v = nullptr;
    PFNGLGETMULTISAMPLEFVPROC getMultisamplefv = nullptr;
    PFNGLGETSYNCIVPROC getSynciv = nullptr;
    PFNGLISSYNCPROC isSync = nullptr;
    PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC multiDrawElementsBaseVertex = nullptr;
    PFNGLPROVOKINGVERTEXPROC provokingVertex = nullptr;
    PFNGLSAMPLEMASKIPROC sampleMaski = nullptr;
    PFNGLTEXIMAGE2DMULTISAMPLEPROC texImage2DMultisample = nullptr;
    PFNGLTEXIMAGE3DMULTISAMPLEPROC texImage3DMultisample = nullptr;
    PFNGLWAITSYNCPROC waitSync = nullptr;
    // 3.3
    PFNGLBINDFRAGDATALOCATIONINDEXEDPROC bindFragDataLocationIndexed = nullptr;
    PFNGLBINDSAMPLERPROC bindSampler = nullptr;
    PFNGLDELETESAMPLERSPROC deleteSamplers = nullptr;
    PFNGLGENSAMPLERSPROC genSamplers = nullptr;
    PFNGLGETFRAGDATAINDEXPROC getFragDataIndex = nullptr;
    PFNGLGETQUERYOBJECTI64VPROC getQueryObjecti64v = nullptr;
    PFNGLGETQUERYOBJECTUI64VPROC getQueryObjectui64v = nullptr;
    PFNGLGETSAMPLERPARAMETERIIVPROC getSamplerParameterIiv = nullptr;
    PFNGLGETSAMPLERPARAMETERIUIVPROC getSamplerParameterIuiv = nullptr;
    PFNGLGETSAMPLERPARAMETERFVPROC getSamplerParameterfv = nullptr;
    PFNGLGETSAMPLERPARAMETERIVPROC getSamplerParameteriv = nullptr;
    PFNGLISSAMPLERPROC isSampler = nullptr;
    PFNGLQUERYCOUNTERPROC queryCounter = nullptr;
    PFNGLSAMPLERPARAMETERIIVPROC samplerParameterIiv = nullptr;
    PFNGLSAMPLERPARAMETERIUIVPROC samplerParameterIuiv = nullptr;
    PFNGLSAMPLERPARAMETERFPROC samplerParameterf = nullptr;
    PFNGLSAMPLERPARAMETERFVPROC samplerParameterfv = nullptr;
    PFNGLSAMPLERPARAMETERIPROC samplerParameteri = nullptr;
    PFNGLSAMPLERPARAMETERIVPROC samplerParameteriv = nullptr;
    PFNGLVERTEXATTRIBDIVISORPROC vertexAttribDivisor = nullptr;
    PFNGLVERTEXATTRIBP1UIPROC vertexAttribP1ui = nullptr;
    PFNGLVERTEXATTRIBP1UIVPROC vertexAttribP1uiv = nullptr;
    PFNGLVERTEXATTRIBP2UIPROC vertexAttribP2ui = nullptr;
    PFNGLVERTEXATTRIBP2UIVPROC vertexAttribP2uiv = nullptr;
    PFNGLVERTEXATTRIBP3UIPROC vertexAttribP3ui = nullptr;
    PFNGLVERTEXATTRIBP3UIVPROC vertexAttribP3uiv = nullptr;
    PFNGLVERTEXATTRIBP4UIPROC vertexAttribP4ui = nullptr;
    PFNGLVERTEXATTRIBP4UIVPROC vertexAttribP4uiv = nullptr;
    // 4.0
    PFNGLBEGINQUERYINDEXEDPROC beginQueryIndexed = nullptr;
    PFNGLBINDTRANSFORMFEEDBACKPROC bindTransformFeedback = nullptr;
    PFNGLBLENDEQUATIONSEPARATEIPROC blendEquationSeparatei = nullptr;
    PFNGLBLENDEQUATIONIPROC blendEquationi = nullptr;
    PFNGLBLENDFUNCSEPARATEIPROC blendFuncSeparatei = nullptr;
    PFNGLBLENDFUNCIPROC blendFunci = nullptr;
    PFNGLDELETETRANSFORMFEEDBACKSPROC deleteTransformFeedbacks = nullptr;
    PFNGLDRAWARRAYSINDIRECTPROC drawArraysIndirect = nullptr;
    PFNGLDRAWELEMENTSINDIRECTPROC drawElementsIndirect = nullptr;
    PFNGLDRAWTRANSFORMFEEDBACKPROC drawTransformFeedback = nullptr;
    PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC drawTransformFeedbackStream = nullptr;
    PFNGLENDQUERYINDEXEDPROC endQueryIndexed = nullptr;
    PFNGLGENTRANSFORMFEEDBACKSPROC genTransformFeedbacks = nullptr;
    PFNGLGETACTIVESUBROUTINENAMEPROC getActiveSubroutineName = nullptr;
    PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC getActiveSubroutineUniformName = nullptr;
    PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC getActiveSubroutineUniformiv = nullptr;
    PFNGLGETPROGRAMSTAGEIVPROC getProgramStageiv = nullptr;
    PFNGLGETQUERYINDEXEDIVPROC getQueryIndexediv = nullptr;
    PFNGLGETSUBROUTINEINDEXPROC getSubroutineIndex = nullptr;
    PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC getSubroutineUniformLocation = nullptr;
    PFNGLGETUNIFORMSUBROUTINEUIVPROC getUniformSubroutineuiv = nullptr;
    PFNGLGETUNIFORMDVPROC getUniformdv = nullptr;
    PFNGLISTRANSFORMFEEDBACKPROC isTransformFeedback = nullptr;
    PFNGLMINSAMPLESHADINGPROC minSampleShading = nullptr;
    PFNGLPATCHPARAMETERFVPROC patchParameterfv = nullptr;
    PFNGLPATCHPARAMETERIPROC patchParameteri = nullptr;
    PFNGLPAUSETRANSFORMFEEDBACKPROC pauseTransformFeedback = nullptr;
    PFNGLRESUMETRANSFORMFEEDBACKPROC resumeTransformFeedback = nullptr;
    PFNGLUNIFORM1DPROC uniform1d = nullptr;
    PFNGLUNIFORM1DVPROC uniform1dv = nullptr;
    PFNGLUNIFORM2DPROC uniform2d = nullptr;
    PFNGLUNIFORM2DVPROC uniform2dv = nullptr;
    PFNGLUNIFORM3DPROC uniform3d = nullptr;
    PFNGLUNIFORM3DVPROC uniform3dv = nullptr;
    PFNGLUNIFORM4DPROC uniform4d = nullptr;
    PFNGLUNIFORM4DVPROC uniform4dv = nullptr;
    PFNGLUNIFORMMATRIX2DVPROC uniformMatrix2dv = nullptr;
    PFNGLUNIFORMMATRIX2X3DVPROC uniformMatrix2x3dv = nullptr;
    PFNGLUNIFORMMATRIX2X4DVPROC uniformMatrix2x4dv = nullptr;
    PFNGLUNIFORMMATRIX3DVPROC uniformMatrix3dv = nullptr;
    PFNGLUNIFORMMATRIX3X2DVPROC uniformMatrix3x2dv = nullptr;
    PFNGLUNIFORMMATRIX3X4DVPROC uniformMatrix3x4dv = nullptr;
    PFNGLUNIFORMMATRIX4DVPROC uniformMatrix4dv = nullptr;
    PFNGLUNIFORMMATRIX4X2DVPROC uniformMatrix4x2dv = nullptr;
    PFNGLUNIFORMMATRIX4X3DVPROC uniformMatrix4x3dv = nullptr;
    PFNGLUNIFORMSUBROUTINESUIVPROC uniformSubroutinesuiv = nullptr;
    // 4.1
    PFNGLACTIVESHADERPROGRAMPROC activeShaderProgram = nullptr;
    PFNGLBINDPROGRAMPIPELINEPROC bindProgramPipeline = nullptr;
    PFNGLCLEARDEPTHFPROC clearDepthf = nullptr;
    PFNGLCREATESHADERPROGRAMVPROC createShaderProgramv = nullptr;
    PFNGLDELETEPROGRAMPIPELINESPROC deleteProgramPipelines = nullptr;
    PFNGLDEPTHRANGEARRAYVPROC depthRangeArrayv = nullptr;
    PFNGLDEPTHRANGEINDEXEDPROC depthRangeIndexed = nullptr;
    PFNGLDEPTHRANGEFPROC depthRangef = nullptr;
    PFNGLGENPROGRAMPIPELINESPROC genProgramPipelines = nullptr;
    PFNGLGETDOUBLEI_VPROC getDoublei_v = nullptr;
    PFNGLGETFLOATI_VPROC getFloati_v = nullptr;
    PFNGLGETPROGRAMBINARYPROC getProgramBinary = nullptr;
    PFNGLGETPROGRAMPIPELINEINFOLOGPROC getProgramPipelineInfoLog = nullptr;
    PFNGLGETPROGRAMPIPELINEIVPROC getProgramPipelineiv = nullptr;
    PFNGLGETSHADERPRECISIONFORMATPROC getShaderPrecisionFormat = nullptr;
    PFNGLGETVERTEXATTRIBLDVPROC getVertexAttribLdv = nullptr;
    PFNGLISPROGRAMPIPELINEPROC isProgramPipeline = nullptr;
    PFNGLPROGRAMBINARYPROC programBinary = nullptr;
    PFNGLPROGRAMPARAMETERIPROC programParameteri = nullptr;
    PFNGLPROGRAMUNIFORM1DPROC programUniform1d = nullptr;
    PFNGLPROGRAMUNIFORM1DVPROC programUniform1dv = nullptr;
    PFNGLPROGRAMUNIFORM1FPROC programUniform1f = nullptr;
    PFNGLPROGRAMUNIFORM1FVPROC programUniform1fv = nullptr;
    PFNGLPROGRAMUNIFORM1IPROC programUniform1i = nullptr;
    PFNGLPROGRAMUNIFORM1IVPROC programUniform1iv = nullptr;
    PFNGLPROGRAMUNIFORM1UIPROC programUniform1ui = nullptr;
    PFNGLPROGRAMUNIFORM1UIVPROC programUniform1uiv = nullptr;
    PFNGLPROGRAMUNIFORM2DPROC programUniform2d = nullptr;
    PFNGLPROGRAMUNIFORM2DVPROC programUniform2dv = nullptr;
    PFNGLPROGRAMUNIFORM2FPROC programUniform2f = nullptr;
    PFNGLPROGRAMUNIFORM2FVPROC programUniform2fv = nullptr;
    PFNGLPROGRAMUNIFORM2IPROC programUniform2i = nullptr;
    PFNGLPROGRAMUNIFORM2IVPROC programUniform2iv = nullptr;
    PFNGLPROGRAMUNIFORM2UIPROC programUniform2ui = nullptr;
    PFNGLPROGRAMUNIFORM2UIVPROC programUniform2uiv = nullptr;
    PFNGLPROGRAMUNIFORM3DPROC programUniform3d = nullptr;
    PFNGLPROGRAMUNIFORM3DVPROC programUniform3dv = nullptr;
    PFNGLPROGRAMUNIFORM3FPROC programUniform3f = nullptr;
    PFNGLPROGRAMUNIFORM3FVPROC programUniform3fv = nullptr;
    PFNGLPROGRAMUNIFORM3IPROC programUniform3i = nullptr;
    PFNGLPROGRAMUNIFORM3IVPROC programUniform3iv = nullptr;
    PFNGLPROGRAMUNIFORM3UIPROC programUniform3ui = nullptr;
    PFNGLPROGRAMUNIFORM3UIVPROC programUniform3uiv = nullptr;
    PFNGLPROGRAMUNIFORM4DPROC programUniform4d = nullptr;
    PFNGLPROGRAMUNIFORM4DVPROC programUniform4dv = nullptr;
    PFNGLPROGRAMUNIFORM4FPROC programUniform4f = nullptr;
    PFNGLPROGRAMUNIFORM4FVPROC programUniform4fv = nullptr;
    PFNGLPROGRAMUNIFORM4IPROC programUniform4i = nullptr;
    PFNGLPROGRAMUNIFORM4IVPROC programUniform4iv = nullptr;
    PFNGLPROGRAMUNIFORM4UIPROC programUniform4ui = nullptr;
    PFNGLPROGRAMUNIFORM4UIVPROC programUniform4uiv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX2DVPROC programUniformMatrix2dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX2FVPROC programUniformMatrix2fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC programUniformMatrix2x3dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC programUniformMatrix2x3fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC programUniformMatrix2x4dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC programUniformMatrix2x4fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX3DVPROC programUniformMatrix3dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX3FVPROC programUniformMatrix3fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC programUniformMatrix3x2dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC programUniformMatrix3x2fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC programUniformMatrix3x4dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC programUniformMatrix3x4fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX4DVPROC programUniformMatrix4dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX4FVPROC programUniformMatrix4fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC programUniformMatrix4x2dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC programUniformMatrix4x2fv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC programUniformMatrix4x3dv = nullptr;
    PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC programUniformMatrix4x3fv = nullptr;
    PFNGLRELEASESHADERCOMPILERPROC releaseShaderCompiler = nullptr;
    PFNGLSCISSORARRAYVPROC scissorArrayv = nullptr;
    PFNGLSCISSORINDEXEDPROC scissorIndexed = nullptr;
    PFNGLSCISSORINDEXEDVPROC scissorIndexedv = nullptr;
    PFNGLSHADERBINARYPROC shaderBinary = nullptr;
    PFNGLUSEPROGRAMSTAGESPROC useProgramStages = nullptr;
    PFNGLVALIDATEPROGRAMPIPELINEPROC validateProgramPipeline = nullptr;
    PFNGLVERTEXATTRIBL1DPROC vertexAttribL1d = nullptr;
    PFNGLVERTEXATTRIBL1DVPROC vertexAttribL1dv = nullptr;
    PFNGLVERTEXATTRIBL2DPROC vertexAttribL2d = nullptr;
    PFNGLVERTEXATTRIBL2DVPROC vertexAttribL2dv = nullptr;
    PFNGLVERTEXATTRIBL3DPROC vertexAttribL3d = nullptr;
    PFNGLVERTEXATTRIBL3DVPROC vertexAttribL3dv = nullptr;
    PFNGLVERTEXATTRIBL4DPROC vertexAttribL4d = nullptr;
    PFNGLVERTEXATTRIBL4DVPROC vertexAttribL4dv = nullptr;
    PFNGLVERTEXATTRIBLPOINTERPROC vertexAttribLPointer = nullptr;
    PFNGLVIEWPORTARRAYVPROC viewportArrayv = nullptr;
    PFNGLVIEWPORTINDEXEDFPROC viewportIndexedf = nullptr;
    PFNGLVIEWPORTINDEXEDFVPROC viewportIndexedfv = nullptr;
    // 4.2
    PFNGLBINDIMAGETEXTUREPROC bindImageTexture = nullptr;
    PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC drawArraysInstancedBaseInstance = nullptr;
    PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC drawElementsInstancedBaseInstance = nullptr;
    PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC drawElementsInstancedBaseVertexBaseInstance = nullptr;
    PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC drawTransformFeedbackInstanced = nullptr;
    PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC drawTransformFeedbackStreamInstanced = nullptr;
    PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC getActiveAtomicCounterBufferiv = nullptr;
    PFNGLGETINTERNALFORMATIVPROC getInternalformativ = nullptr;
    PFNGLMEMORYBARRIERPROC memoryBarrier = nullptr;
    PFNGLTEXSTORAGE1DPROC texStorage1D = nullptr;
    PFNGLTEXSTORAGE2DPROC texStorage2D = nullptr;
    PFNGLTEXSTORAGE3DPROC texStorage3D = nullptr;
    // 4.3
    PFNGLBINDVERTEXBUFFERPROC bindVertexBuffer = nullptr;
    PFNGLCLEARBUFFERDATAPROC clearBufferData = nullptr;
    PFNGLCLEARBUFFERSUBDATAPROC clearBufferSubData = nullptr;
    PFNGLCOPYIMAGESUBDATAPROC copyImageSubData = nullptr;
    PFNGLCOVERAGEMODULATIONNVPROC coverageModulationNV = nullptr;
    PFNGLDEBUGMESSAGECALLBACKPROC debugMessageCallback = nullptr;
    PFNGLDEBUGMESSAGECONTROLPROC debugMessageControl = nullptr;
    PFNGLDEBUGMESSAGEINSERTPROC debugMessageInsert = nullptr;
    PFNGLDISPATCHCOMPUTEPROC dispatchCompute = nullptr;
    PFNGLDISPATCHCOMPUTEINDIRECTPROC dispatchComputeIndirect = nullptr;
    PFNGLFRAMEBUFFERPARAMETERIPROC framebufferParameteri = nullptr;
    PFNGLGETDEBUGMESSAGELOGPROC getDebugMessageLog = nullptr;
    PFNGLGETFRAMEBUFFERPARAMETERIVPROC getFramebufferParameteriv = nullptr;
    PFNGLGETINTERNALFORMATI64VPROC getInternalformati64v = nullptr;
    PFNGLGETOBJECTLABELPROC getObjectLabel = nullptr;
    PFNGLGETOBJECTPTRLABELPROC getObjectPtrLabel = nullptr;
    PFNGLGETPOINTERVPROC getPointerv = nullptr;
    PFNGLGETPROGRAMINTERFACEIVPROC getProgramInterfaceiv = nullptr;
    PFNGLGETPROGRAMRESOURCEINDEXPROC getProgramResourceIndex = nullptr;
    PFNGLGETPROGRAMRESOURCELOCATIONPROC getProgramResourceLocation = nullptr;
    PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC getProgramResourceLocationIndex = nullptr;
    PFNGLGETPROGRAMRESOURCENAMEPROC getProgramResourceName = nullptr;
    PFNGLGETPROGRAMRESOURCEIVPROC getProgramResourceiv = nullptr;
    PFNGLINVALIDATEBUFFERDATAPROC invalidateBufferData = nullptr;
    PFNGLINVALIDATEBUFFERSUBDATAPROC invalidateBufferSubData = nullptr;
    PFNGLINVALIDATEFRAMEBUFFERPROC invalidateFramebuffer = nullptr;
    PFNGLINVALIDATESUBFRAMEBUFFERPROC invalidateSubFramebuffer = nullptr;
    PFNGLINVALIDATETEXIMAGEPROC invalidateTexImage = nullptr;
    PFNGLINVALIDATETEXSUBIMAGEPROC invalidateTexSubImage = nullptr;
    PFNGLMULTIDRAWARRAYSINDIRECTPROC multiDrawArraysIndirect = nullptr;
    PFNGLMULTIDRAWELEMENTSINDIRECTPROC multiDrawElementsIndirect = nullptr;
    PFNGLOBJECTLABELPROC objectLabel = nullptr;
    PFNGLOBJECTPTRLABELPROC objectPtrLabel = nullptr;
    PFNGLPOPDEBUGGROUPPROC popDebugGroup = nullptr;
    PFNGLPUSHDEBUGGROUPPROC pushDebugGroup = nullptr;
    PFNGLSHADERSTORAGEBLOCKBINDINGPROC shaderStorageBlockBinding = nullptr;
    PFNGLTEXBUFFERRANGEPROC texBufferRange = nullptr;
    PFNGLTEXSTORAGE2DMULTISAMPLEPROC texStorage2DMultisample = nullptr;
    PFNGLTEXSTORAGE3DMULTISAMPLEPROC texStorage3DMultisample = nullptr;
    PFNGLTEXTUREVIEWPROC textureView = nullptr;
    PFNGLVERTEXATTRIBBINDINGPROC vertexAttribBinding = nullptr;
    PFNGLVERTEXATTRIBFORMATPROC vertexAttribFormat = nullptr;
    PFNGLVERTEXATTRIBIFORMATPROC vertexAttribIFormat = nullptr;
    PFNGLVERTEXATTRIBLFORMATPROC vertexAttribLFormat = nullptr;
    PFNGLVERTEXBINDINGDIVISORPROC vertexBindingDivisor = nullptr;
    // 4.4
    PFNGLBINDBUFFERSBASEPROC bindBuffersBase = nullptr;
    PFNGLBINDBUFFERSRANGEPROC bindBuffersRange = nullptr;
    PFNGLBINDIMAGETEXTURESPROC bindImageTextures = nullptr;
    PFNGLBINDSAMPLERSPROC bindSamplers = nullptr;
    PFNGLBINDTEXTURESPROC bindTextures = nullptr;
    PFNGLBINDVERTEXBUFFERSPROC bindVertexBuffers = nullptr;
    PFNGLBUFFERSTORAGEPROC bufferStorage = nullptr;
    PFNGLCLEARTEXIMAGEPROC clearTexImage = nullptr;
    PFNGLCLEARTEXSUBIMAGEPROC clearTexSubImage = nullptr;
    // 4.5
    PFNGLBINDTEXTUREUNITPROC bindTextureUnit = nullptr;
    PFNGLBLITNAMEDFRAMEBUFFERPROC blitNamedFramebuffer = nullptr;
    PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC checkNamedFramebufferStatus = nullptr;
    PFNGLCLEARNAMEDBUFFERDATAPROC clearNamedBufferData = nullptr;
    PFNGLCLEARNAMEDBUFFERSUBDATAPROC clearNamedBufferSubData = nullptr;
    PFNGLCLEARNAMEDFRAMEBUFFERFIPROC clearNamedFramebufferfi = nullptr;
    PFNGLCLEARNAMEDFRAMEBUFFERFVPROC clearNamedFramebufferfv = nullptr;
    PFNGLCLEARNAMEDFRAMEBUFFERIVPROC clearNamedFramebufferiv = nullptr;
    PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC clearNamedFramebufferuiv = nullptr;
    PFNGLCLIPCONTROLPROC clipControl = nullptr;
    PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC compressedTextureSubImage1D = nullptr;
    PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC compressedTextureSubImage2D = nullptr;
    PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC compressedTextureSubImage3D = nullptr;
    PFNGLCOPYNAMEDBUFFERSUBDATAPROC copyNamedBufferSubData = nullptr;
    PFNGLCOPYTEXTURESUBIMAGE1DPROC copyTextureSubImage1D = nullptr;
    PFNGLCOPYTEXTURESUBIMAGE2DPROC copyTextureSubImage2D = nullptr;
    PFNGLCOPYTEXTURESUBIMAGE3DPROC copyTextureSubImage3D = nullptr;
    PFNGLCREATEBUFFERSPROC createBuffers = nullptr;
    PFNGLCREATEFRAMEBUFFERSPROC createFramebuffers = nullptr;
    PFNGLCREATEPROGRAMPIPELINESPROC createProgramPipelines = nullptr;
    PFNGLCREATEQUERIESPROC createQueries = nullptr;
    PFNGLCREATERENDERBUFFERSPROC createRenderbuffers = nullptr;
    PFNGLCREATESAMPLERSPROC createSamplers = nullptr;
    PFNGLCREATETEXTURESPROC createTextures = nullptr;
    PFNGLCREATETRANSFORMFEEDBACKSPROC createTransformFeedbacks = nullptr;
    PFNGLCREATEVERTEXARRAYSPROC createVertexArrays = nullptr;
    PFNGLDISABLEVERTEXARRAYATTRIBPROC disableVertexArrayAttrib = nullptr;
    PFNGLENABLEVERTEXARRAYATTRIBPROC enableVertexArrayAttrib = nullptr;
    PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC flushMappedNamedBufferRange = nullptr;
    PFNGLGENERATETEXTUREMIPMAPPROC generateTextureMipmap = nullptr;
    PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC getCompressedTextureImage = nullptr;
    PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC getCompressedTextureSubImage = nullptr;
    PFNGLGETGRAPHICSRESETSTATUSPROC getGraphicsResetStatus = nullptr;
    PFNGLGETNAMEDBUFFERPARAMETERI64VPROC getNamedBufferParameteri64v = nullptr;
    PFNGLGETNAMEDBUFFERPARAMETERIVPROC getNamedBufferParameteriv = nullptr;
    PFNGLGETNAMEDBUFFERPOINTERVPROC getNamedBufferPointerv = nullptr;
    PFNGLGETNAMEDBUFFERSUBDATAPROC getNamedBufferSubData = nullptr;
    PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC getNamedFramebufferAttachmentParameteriv = nullptr;
    PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC getNamedFramebufferParameteriv = nullptr;
    PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC getNamedRenderbufferParameteriv = nullptr;
    PFNGLGETQUERYBUFFEROBJECTI64VPROC getQueryBufferObjecti64v = nullptr;
    PFNGLGETQUERYBUFFEROBJECTIVPROC getQueryBufferObjectiv = nullptr;
    PFNGLGETQUERYBUFFEROBJECTUI64VPROC getQueryBufferObjectui64v = nullptr;
    PFNGLGETQUERYBUFFEROBJECTUIVPROC getQueryBufferObjectuiv = nullptr;
    PFNGLGETTEXTUREIMAGEPROC getTextureImage = nullptr;
    PFNGLGETTEXTURELEVELPARAMETERFVPROC getTextureLevelParameterfv = nullptr;
    PFNGLGETTEXTURELEVELPARAMETERIVPROC getTextureLevelParameteriv = nullptr;
    PFNGLGETTEXTUREPARAMETERIIVPROC getTextureParameterIiv = nullptr;
    PFNGLGETTEXTUREPARAMETERIUIVPROC getTextureParameterIuiv = nullptr;
    PFNGLGETTEXTUREPARAMETERFVPROC getTextureParameterfv = nullptr;
    PFNGLGETTEXTUREPARAMETERIVPROC getTextureParameteriv = nullptr;
    PFNGLGETTEXTURESUBIMAGEPROC getTextureSubImage = nullptr;
    PFNGLGETTRANSFORMFEEDBACKI64_VPROC getTransformFeedbacki64_v = nullptr;
    PFNGLGETTRANSFORMFEEDBACKI_VPROC getTransformFeedbacki_v = nullptr;
    PFNGLGETTRANSFORMFEEDBACKIVPROC getTransformFeedbackiv = nullptr;
    PFNGLGETVERTEXARRAYINDEXED64IVPROC getVertexArrayIndexed64iv = nullptr;
    PFNGLGETVERTEXARRAYINDEXEDIVPROC getVertexArrayIndexediv = nullptr;
    PFNGLGETVERTEXARRAYIVPROC getVertexArrayiv = nullptr;
    PFNGLGETNCOMPRESSEDTEXIMAGEPROC getnCompressedTexImage = nullptr;
    PFNGLGETNTEXIMAGEPROC getnTexImage = nullptr;
    PFNGLGETNUNIFORMDVPROC getnUniformdv = nullptr;
    PFNGLGETNUNIFORMFVPROC getnUniformfv = nullptr;
    PFNGLGETNUNIFORMIVPROC getnUniformiv = nullptr;
    PFNGLGETNUNIFORMUIVPROC getnUniformuiv = nullptr;
    PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC invalidateNamedFramebufferData = nullptr;
    PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC invalidateNamedFramebufferSubData = nullptr;
    PFNGLMAPNAMEDBUFFERPROC mapNamedBuffer = nullptr;
    PFNGLMAPNAMEDBUFFERRANGEPROC mapNamedBufferRange = nullptr;
    PFNGLMEMORYBARRIERBYREGIONPROC memoryBarrierByRegion = nullptr;
    PFNGLNAMEDBUFFERDATAPROC namedBufferData = nullptr;
    PFNGLNAMEDBUFFERSTORAGEPROC namedBufferStorage = nullptr;
    PFNGLNAMEDBUFFERSUBDATAPROC namedBufferSubData = nullptr;
    PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC namedFramebufferDrawBuffer = nullptr;
    PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC namedFramebufferDrawBuffers = nullptr;
    PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC namedFramebufferParameteri = nullptr;
    PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC namedFramebufferReadBuffer = nullptr;
    PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC namedFramebufferRenderbuffer = nullptr;
    PFNGLNAMEDFRAMEBUFFERTEXTUREPROC namedFramebufferTexture = nullptr;
    PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC namedFramebufferTextureLayer = nullptr;
    PFNGLNAMEDRENDERBUFFERSTORAGEPROC namedRenderbufferStorage = nullptr;
    PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC namedRenderbufferStorageMultisample = nullptr;
    PFNGLREADNPIXELSPROC readnPixels = nullptr;
    PFNGLTEXTUREBARRIERPROC textureBarrier = nullptr;
    PFNGLTEXTUREBUFFERPROC textureBuffer = nullptr;
    PFNGLTEXTUREBUFFERRANGEPROC textureBufferRange = nullptr;
    PFNGLTEXTUREPARAMETERIIVPROC textureParameterIiv = nullptr;
    PFNGLTEXTUREPARAMETERIUIVPROC textureParameterIuiv = nullptr;
    PFNGLTEXTUREPARAMETERFPROC textureParameterf = nullptr;
    PFNGLTEXTUREPARAMETERFVPROC textureParameterfv = nullptr;
    PFNGLTEXTUREPARAMETERIPROC textureParameteri = nullptr;
    PFNGLTEXTUREPARAMETERIVPROC textureParameteriv = nullptr;
    PFNGLTEXTURESTORAGE1DPROC textureStorage1D = nullptr;
    PFNGLTEXTURESTORAGE2DPROC textureStorage2D = nullptr;
    PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC textureStorage2DMultisample = nullptr;
    PFNGLTEXTURESTORAGE3DPROC textureStorage3D = nullptr;
    PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC textureStorage3DMultisample = nullptr;
    PFNGLTEXTURESUBIMAGE1DPROC textureSubImage1D = nullptr;
    PFNGLTEXTURESUBIMAGE2DPROC textureSubImage2D = nullptr;
    PFNGLTEXTURESUBIMAGE3DPROC textureSubImage3D = nullptr;
    PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC transformFeedbackBufferBase = nullptr;
    PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC transformFeedbackBufferRange = nullptr;
    PFNGLUNMAPNAMEDBUFFERPROC unmapNamedBuffer = nullptr;
    PFNGLVERTEXARRAYATTRIBBINDINGPROC vertexArrayAttribBinding = nullptr;
    PFNGLVERTEXARRAYATTRIBFORMATPROC vertexArrayAttribFormat = nullptr;
    PFNGLVERTEXARRAYATTRIBIFORMATPROC vertexArrayAttribIFormat = nullptr;
    PFNGLVERTEXARRAYATTRIBLFORMATPROC vertexArrayAttribLFormat = nullptr;
    PFNGLVERTEXARRAYBINDINGDIVISORPROC vertexArrayBindingDivisor = nullptr;
    PFNGLVERTEXARRAYELEMENTBUFFERPROC vertexArrayElementBuffer = nullptr;
    PFNGLVERTEXARRAYVERTEXBUFFERPROC vertexArrayVertexBuffer = nullptr;
    PFNGLVERTEXARRAYVERTEXBUFFERSPROC vertexArrayVertexBuffers = nullptr;
    // ES 3.2
    PFNGLBLENDBARRIERPROC blendBarrier = nullptr;
    PFNGLPRIMITIVEBOUNDINGBOXPROC primitiveBoundingBox = nullptr;
    // GL_ARB_parallel_shader_compile
    PFNGLMAXSHADERCOMPILERTHREADSARBPROC maxShaderCompilerThreadsARB = nullptr;
    // GL_EXT_debug_marker
    PFNGLINSERTEVENTMARKEREXTPROC insertEventMarkerEXT = nullptr;
    PFNGLPOPGROUPMARKEREXTPROC popGroupMarkerEXT = nullptr;
    PFNGLPUSHGROUPMARKEREXTPROC pushGroupMarkerEXT = nullptr;
    // GL_EXT_discard_framebuffer
    PFNGLDISCARDFRAMEBUFFEREXTPROC discardFramebufferEXT = nullptr;
    // GL_EXT_framebuffer_blit
    PFNGLBLITFRAMEBUFFEREXTPROC blitFramebufferEXT = nullptr;
    // GL_EXT_memory_object
    PFNGLBUFFERSTORAGEMEMEXTPROC bufferStorageMemEXT = nullptr;
    PFNGLCREATEMEMORYOBJECTSEXTPROC createMemoryObjectsEXT = nullptr;
    PFNGLDELETEMEMORYOBJECTSEXTPROC deleteMemoryObjectsEXT = nullptr;
    PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC getMemoryObjectParameterivEXT = nullptr;
    PFNGLGETUNSIGNEDBYTEI_VEXTPROC getUnsignedBytei_vEXT = nullptr;
    PFNGLGETUNSIGNEDBYTEVEXTPROC getUnsignedBytevEXT = nullptr;
    PFNGLISMEMORYOBJECTEXTPROC isMemoryObjectEXT = nullptr;
    PFNGLMEMORYOBJECTPARAMETERIVEXTPROC memoryObjectParameterivEXT = nullptr;
    PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC namedBufferStorageMemEXT = nullptr;
    PFNGLTEXSTORAGEMEM2DEXTPROC texStorageMem2DEXT = nullptr;
    PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC texStorageMem2DMultisampleEXT = nullptr;
    PFNGLTEXSTORAGEMEM3DEXTPROC texStorageMem3DEXT = nullptr;
    PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC texStorageMem3DMultisampleEXT = nullptr;
    PFNGLTEXTURESTORAGEMEM2DEXTPROC textureStorageMem2DEXT = nullptr;
    PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC textureStorageMem2DMultisampleEXT = nullptr;
    PFNGLTEXTURESTORAGEMEM3DEXTPROC textureStorageMem3DEXT = nullptr;
    PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC textureStorageMem3DMultisampleEXT = nullptr;
    // GL_EXT_memory_object_fd
    PFNGLIMPORTMEMORYFDEXTPROC importMemoryFdEXT = nullptr;
    // GL_EXT_memory_object_win32
    PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC importMemoryWin32HandleEXT = nullptr;
    PFNGLIMPORTMEMORYWIN32NAMEEXTPROC importMemoryWin32NameEXT = nullptr;
    // GL_EXT_multisampled_render_to_texture
    PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC framebufferTexture2DMultisampleEXT = nullptr;
    PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC renderbufferStorageMultisampleEXT = nullptr;
    // GL_EXT_semaphore
    PFNGLDELETESEMAPHORESEXTPROC deleteSemaphoresEXT = nullptr;
    PFNGLGENSEMAPHORESEXTPROC genSemaphoresEXT = nullptr;
    PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC getSemaphoreParameterui64vEXT = nullptr;
    PFNGLISSEMAPHOREEXTPROC isSemaphoreEXT = nullptr;
    PFNGLSEMAPHOREPARAMETERUI64VEXTPROC semaphoreParameterui64vEXT = nullptr;
    PFNGLSIGNALSEMAPHOREEXTPROC signalSemaphoreEXT = nullptr;
    PFNGLWAITSEMAPHOREEXTPROC waitSemaphoreEXT = nullptr;
    // GL_EXT_semaphore_fd
    PFNGLIMPORTSEMAPHOREFDEXTPROC importSemaphoreFdEXT = nullptr;
    // GL_EXT_semaphore_win32
    PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC importSemaphoreWin32HandleEXT = nullptr;
    PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC importSemaphoreWin32NameEXT = nullptr;
    // GL_EXT_texture_buffer
    PFNGLTEXBUFFEREXTPROC texBufferEXT = nullptr;
    PFNGLTEXBUFFERRANGEEXTPROC texBufferRangeEXT = nullptr;
    // GL_IMG_multisampled_render_to_texture
    PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC framebufferTexture2DMultisampleIMG = nullptr;
    PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC renderbufferStorageMultisampleIMG = nullptr;
    // GL_KHR_parallel_shader_compile
    PFNGLMAXSHADERCOMPILERTHREADSKHRPROC maxShaderCompilerThreadsKHR = nullptr;
    // GL_NV_framebuffer_blit
    PFNGLBLITFRAMEBUFFERNVPROC blitFramebufferNV = nullptr;
    // GL_NV_internalformat_sample_query
    PFNGLGETINTERNALFORMATSAMPLEIVNVPROC getInternalformatSampleivNV = nullptr;
    // GL_OES_EGL_image
    PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC eGLImageTargetRenderbufferStorageOES = nullptr;
    PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eGLImageTargetTexture2DOES = nullptr;
    // GL_OES_texture_buffer
    PFNGLTEXBUFFEROESPROC texBufferOES = nullptr;
    PFNGLTEXBUFFERRANGEOESPROC texBufferRangeOES = nullptr;
    // GL_OVR_multiview2
    PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC framebufferTextureMultiviewOVR = nullptr;
    // clang-format on
    DispatchTableGL();
    virtual ~DispatchTableGL() = default;
  protected:
    virtual void *loadProcAddress(const std::string &function) const = 0;
    void initProcsDesktopGL(const gl::Version &version, const std::set<std::string> &extensions);
    void initProcsGLES(const gl::Version &version, const std::set<std::string> &extensions);
    void initProcsSharedExtensions(const std::set<std::string> &extensions);
#if defined(ANGLE_ENABLE_OPENGL_NULL)
    void initProcsDesktopGLNULL(const gl::Version &version,
                                const std::set<std::string> &extensions);
    void initProcsGLESNULL(const gl::Version &version, const std::set<std::string> &extensions);
    void initProcsSharedExtensionsNULL(const std::set<std::string> &extensions);
#endif  // defined(ANGLE_ENABLE_OPENGL_NULL)
};
}  // namespace rx
#endif  // LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_