Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-23 09:18:37

0001 // Created on: 2014-03-17
0002 // Created by: Kirill GAVRILOV
0003 // Copyright (c) 2014 OPEN CASCADE SAS
0004 //
0005 // This file is part of Open CASCADE Technology software library.
0006 //
0007 // This library is free software; you can redistribute it and/or modify it under
0008 // the terms of the GNU Lesser General Public License version 2.1 as published
0009 // by the Free Software Foundation, with special exception defined in the file
0010 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0011 // distribution for complete text of the license and disclaimer of any warranty.
0012 //
0013 // Alternatively, this file may be used under the terms of Open CASCADE
0014 // commercial license or contractual agreement.
0015 
0016 #ifndef OpenGl_GlFunctions_HeaderFile
0017 #define OpenGl_GlFunctions_HeaderFile
0018 
0019 #include <Standard_Macro.hxx>
0020 #include <Standard_TypeDef.hxx>
0021 
0022 #include <OpenGl_GlTypes.hxx>
0023 
0024 #if !defined(HAVE_EGL)
0025   #if defined(__ANDROID__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(HAVE_GLES2)   \
0026     || defined(OCCT_UWP)
0027     #if !defined(__APPLE__)
0028       #define HAVE_EGL // EAGL is used instead of EGL
0029     #endif
0030   #elif !defined(_WIN32) && !defined(__APPLE__) && !defined(HAVE_XLIB)
0031     #define HAVE_EGL
0032   #endif
0033 #endif
0034 struct Aspect_XDisplay;
0035 
0036 // GL version can be defined by system gl.h header
0037 #ifdef GL_VERSION_1_2
0038   #undef GL_VERSION_1_2
0039   #undef GL_VERSION_1_3
0040   #undef GL_VERSION_1_4
0041   #undef GL_VERSION_1_5
0042   #undef GL_VERSION_2_0
0043   #undef GL_VERSION_2_1
0044   #undef GL_VERSION_3_0
0045   #undef GL_VERSION_3_1
0046   #undef GL_VERSION_3_2
0047   #undef GL_VERSION_3_3
0048   #undef GL_VERSION_4_0
0049   #undef GL_VERSION_4_1
0050   #undef GL_VERSION_4_2
0051   #undef GL_VERSION_4_3
0052   #undef GL_VERSION_4_4
0053   #undef GL_VERSION_4_5
0054 #endif
0055 #ifdef GL_COPY_READ_BUFFER_BINDING
0056   // suppress iOS SDK -Wmacro-redefined warnings
0057   #undef GL_DRAW_FRAMEBUFFER_BINDING
0058   #undef GL_COPY_READ_BUFFER_BINDING
0059   #undef GL_COPY_WRITE_BUFFER_BINDING
0060 #endif
0061 // include glext.h provided by Khronos group
0062 #include <OpenGl_glext.h>
0063 
0064 class OpenGl_Context;
0065 
0066 //! Mega structure defines the complete list of OpenGL functions.
0067 struct OpenGl_GlFunctions
0068 {
0069 
0070   //! Check glGetError(); defined for debugging purposes.
0071   //! @return TRUE on error
0072   Standard_EXPORT static bool debugPrintError(const char* theName);
0073 
0074   //! Read OpenGL version.
0075   Standard_EXPORT static void readGlVersion(int& theGlVerMajor, int& theGlVerMinor);
0076 
0077   //! Load functions.
0078   Standard_EXPORT void load(OpenGl_Context& theCtx, bool theIsCoreProfile);
0079 
0080 public: //! @name OpenGL 1.1
0081   typedef void(APIENTRYP glClearColor_t)(GLclampf theRed,
0082                                          GLclampf theGreen,
0083                                          GLclampf theBlue,
0084                                          GLclampf theAlpha);
0085   glClearColor_t glClearColor;
0086 
0087   typedef void(APIENTRYP glClear_t)(GLbitfield theMask);
0088   glClear_t glClear;
0089 
0090   typedef void(APIENTRYP glColorMask_t)(GLboolean theRed,
0091                                         GLboolean theGreen,
0092                                         GLboolean theBlue,
0093                                         GLboolean theAlpha);
0094   glColorMask_t glColorMask;
0095 
0096   typedef void(APIENTRYP glBlendFunc_t)(GLenum sfactor, GLenum dfactor);
0097   glBlendFunc_t glBlendFunc;
0098 
0099   typedef void(APIENTRYP glCullFace_t)(GLenum theMode);
0100   glCullFace_t glCullFace;
0101 
0102   typedef void(APIENTRYP glFrontFace_t)(GLenum theMode);
0103   glFrontFace_t glFrontFace;
0104 
0105   typedef void(APIENTRYP glLineWidth_t)(GLfloat theWidth);
0106   glLineWidth_t glLineWidth;
0107 
0108   typedef void(APIENTRYP glPolygonOffset_t)(GLfloat theFactor, GLfloat theUnits);
0109   glPolygonOffset_t glPolygonOffset;
0110 
0111   typedef void(APIENTRYP glScissor_t)(GLint theX, GLint theY, GLsizei theWidth, GLsizei theHeight);
0112   glScissor_t glScissor;
0113 
0114   typedef void(APIENTRYP glEnable_t)(GLenum theCap);
0115   glEnable_t glEnable;
0116 
0117   typedef void(APIENTRYP glDisable_t)(GLenum theCap);
0118   glDisable_t glDisable;
0119 
0120   typedef GLboolean(APIENTRYP glIsEnabled_t)(GLenum theCap);
0121   glIsEnabled_t glIsEnabled;
0122 
0123   typedef void(APIENTRYP glGetBooleanv_t)(GLenum theParamName, GLboolean* theValues);
0124   glGetBooleanv_t glGetBooleanv;
0125 
0126   typedef void(APIENTRYP glGetFloatv_t)(GLenum theParamName, GLfloat* theValues);
0127   glGetFloatv_t glGetFloatv;
0128 
0129   typedef void(APIENTRYP glGetIntegerv_t)(GLenum theParamName, GLint* theValues);
0130   glGetIntegerv_t glGetIntegerv;
0131 
0132   typedef GLenum(APIENTRYP glGetError_t)();
0133   glGetError_t glGetError;
0134 
0135   typedef const GLubyte*(APIENTRYP glGetString_t)(GLenum theName);
0136   glGetString_t glGetString;
0137 
0138   typedef void(APIENTRYP glFinish_t)();
0139   glFinish_t glFinish;
0140 
0141   typedef void(APIENTRYP glFlush_t)();
0142   glFlush_t glFlush;
0143 
0144   typedef void(APIENTRYP glHint_t)(GLenum theTarget, GLenum theMode);
0145   glHint_t glHint;
0146 
0147   typedef void(APIENTRYP glGetPointerv_t)(GLenum pname, GLvoid** params);
0148   glGetPointerv_t glGetPointerv;
0149 
0150   typedef void(APIENTRYP glReadBuffer_t)(GLenum src); // added to OpenGL ES 3.0
0151   glReadBuffer_t glReadBuffer;
0152 
0153   typedef void(APIENTRYP glDrawBuffer_t)(GLenum mode); // added to OpenGL ES 3.0
0154   glDrawBuffer_t glDrawBuffer;
0155 
0156   typedef void(APIENTRYP glPixelTransferi_t)(GLenum pname, GLint param);
0157   glPixelTransferi_t glPixelTransferi;
0158 
0159 public: //! @name Depth Buffer
0160   typedef void(APIENTRYP glClearDepth_t)(GLclampd theDepth);
0161   glClearDepth_t glClearDepth;
0162 
0163   typedef void(APIENTRYP glDepthFunc_t)(GLenum theFunc);
0164   glDepthFunc_t glDepthFunc;
0165 
0166   typedef void(APIENTRYP glDepthMask_t)(GLboolean theFlag);
0167   glDepthMask_t glDepthMask;
0168 
0169   typedef void(APIENTRYP glDepthRange_t)(GLclampd theNearValue, GLclampd theFarValue);
0170   glDepthRange_t glDepthRange;
0171 
0172 public: //! @name Transformation
0173   typedef void(APIENTRYP glViewport_t)(GLint theX, GLint theY, GLsizei theWidth, GLsizei theHeight);
0174   glViewport_t glViewport;
0175 
0176 public: //! @name Vertex Arrays
0177   typedef void(APIENTRYP glDrawArrays_t)(GLenum theMode, GLint theFirst, GLsizei theCount);
0178   glDrawArrays_t glDrawArrays;
0179 
0180   typedef void(APIENTRYP glDrawElements_t)(GLenum        theMode,
0181                                            GLsizei       theCount,
0182                                            GLenum        theType,
0183                                            const GLvoid* theIndices);
0184   glDrawElements_t glDrawElements;
0185 
0186 public: //! @name Raster functions
0187   typedef void(APIENTRYP glPixelStorei_t)(GLenum theParamName, GLint theParam);
0188   glPixelStorei_t glPixelStorei;
0189 
0190   typedef void(APIENTRYP glReadPixels_t)(GLint   x,
0191                                          GLint   y,
0192                                          GLsizei width,
0193                                          GLsizei height,
0194                                          GLenum  format,
0195                                          GLenum  type,
0196                                          GLvoid* pixels);
0197   glReadPixels_t glReadPixels;
0198 
0199 public: //! @name Stenciling
0200   typedef void(APIENTRYP glStencilFunc_t)(GLenum func, GLint ref, GLuint mask);
0201   glStencilFunc_t glStencilFunc;
0202 
0203   typedef void(APIENTRYP glStencilMask_t)(GLuint mask);
0204   glStencilMask_t glStencilMask;
0205 
0206   typedef void(APIENTRYP glStencilOp_t)(GLenum fail, GLenum zfail, GLenum zpass);
0207   glStencilOp_t glStencilOp;
0208 
0209   typedef void(APIENTRYP glClearStencil_t)(GLint s);
0210   glClearStencil_t glClearStencil;
0211 
0212 public: //! @name Texture mapping
0213   typedef void(APIENTRYP glTexParameterf_t)(GLenum target, GLenum pname, GLfloat param);
0214   glTexParameterf_t glTexParameterf;
0215 
0216   typedef void(APIENTRYP glTexParameteri_t)(GLenum target, GLenum pname, GLint param);
0217   glTexParameteri_t glTexParameteri;
0218 
0219   typedef void(APIENTRYP glTexParameterfv_t)(GLenum target, GLenum pname, const GLfloat* params);
0220   glTexParameterfv_t glTexParameterfv;
0221 
0222   typedef void(APIENTRYP glTexParameteriv_t)(GLenum target, GLenum pname, const GLint* params);
0223   glTexParameteriv_t glTexParameteriv;
0224 
0225   typedef void(APIENTRYP glGetTexParameterfv_t)(GLenum target, GLenum pname, GLfloat* params);
0226   glGetTexParameterfv_t glGetTexParameterfv;
0227 
0228   typedef void(APIENTRYP glGetTexParameteriv_t)(GLenum target, GLenum pname, GLint* params);
0229   glGetTexParameteriv_t glGetTexParameteriv;
0230 
0231   typedef void(APIENTRYP glTexImage2D_t)(GLenum        target,
0232                                          GLint         level,
0233                                          GLint         internalFormat,
0234                                          GLsizei       width,
0235                                          GLsizei       height,
0236                                          GLint         border,
0237                                          GLenum        format,
0238                                          GLenum        type,
0239                                          const GLvoid* pixels);
0240   glTexImage2D_t glTexImage2D;
0241 
0242   typedef void(APIENTRYP glGenTextures_t)(GLsizei n, GLuint* textures);
0243   glGenTextures_t glGenTextures;
0244 
0245   typedef void(APIENTRYP glDeleteTextures_t)(GLsizei n, const GLuint* textures);
0246   glDeleteTextures_t glDeleteTextures;
0247 
0248   typedef void(APIENTRYP glBindTexture_t)(GLenum target, GLuint texture);
0249   glBindTexture_t glBindTexture;
0250 
0251   typedef GLboolean(APIENTRYP glIsTexture_t)(GLuint texture);
0252   glIsTexture_t glIsTexture;
0253 
0254   typedef void(APIENTRYP glTexSubImage2D_t)(GLenum        target,
0255                                             GLint         level,
0256                                             GLint         xoffset,
0257                                             GLint         yoffset,
0258                                             GLsizei       width,
0259                                             GLsizei       height,
0260                                             GLenum        format,
0261                                             GLenum        type,
0262                                             const GLvoid* pixels);
0263   glTexSubImage2D_t glTexSubImage2D;
0264 
0265   typedef void(APIENTRYP glCopyTexImage2D_t)(GLenum  target,
0266                                              GLint   level,
0267                                              GLenum  internalformat,
0268                                              GLint   x,
0269                                              GLint   y,
0270                                              GLsizei width,
0271                                              GLsizei height,
0272                                              GLint   border);
0273   glCopyTexImage2D_t glCopyTexImage2D;
0274 
0275   typedef void(APIENTRYP glCopyTexSubImage2D_t)(GLenum  target,
0276                                                 GLint   level,
0277                                                 GLint   xoffset,
0278                                                 GLint   yoffset,
0279                                                 GLint   x,
0280                                                 GLint   y,
0281                                                 GLsizei width,
0282                                                 GLsizei height);
0283   glCopyTexSubImage2D_t glCopyTexSubImage2D;
0284 
0285 public: // not part of OpenGL ES 2.0
0286   typedef void(APIENTRYP glTexImage1D_t)(GLenum        target,
0287                                          GLint         level,
0288                                          GLint         internalFormat,
0289                                          GLsizei       width,
0290                                          GLint         border,
0291                                          GLenum        format,
0292                                          GLenum        type,
0293                                          const GLvoid* pixels);
0294   glTexImage1D_t glTexImage1D;
0295 
0296   typedef void(APIENTRYP glTexSubImage1D_t)(GLenum        target,
0297                                             GLint         level,
0298                                             GLint         xoffset,
0299                                             GLsizei       width,
0300                                             GLenum        format,
0301                                             GLenum        type,
0302                                             const GLvoid* pixels);
0303   glTexSubImage1D_t glTexSubImage1D;
0304 
0305   typedef void(APIENTRYP glCopyTexImage1D_t)(GLenum  target,
0306                                              GLint   level,
0307                                              GLenum  internalformat,
0308                                              GLint   x,
0309                                              GLint   y,
0310                                              GLsizei width,
0311                                              GLint   border);
0312   glCopyTexImage1D_t glCopyTexImage1D;
0313 
0314   typedef void(APIENTRYP glCopyTexSubImage1D_t)(GLenum  target,
0315                                                 GLint   level,
0316                                                 GLint   xoffset,
0317                                                 GLint   x,
0318                                                 GLint   y,
0319                                                 GLsizei width);
0320   glCopyTexSubImage1D_t glCopyTexSubImage1D;
0321 
0322   typedef void(APIENTRYP glGetTexImage_t)(GLenum  target,
0323                                           GLint   level,
0324                                           GLenum  format,
0325                                           GLenum  type,
0326                                           GLvoid* pixels);
0327   glGetTexImage_t glGetTexImage;
0328 
0329   typedef void(APIENTRYP glAlphaFunc_t)(GLenum theFunc, GLclampf theRef);
0330   glAlphaFunc_t glAlphaFunc;
0331 
0332   typedef void(APIENTRYP glPointSize_t)(GLfloat theSize);
0333   glPointSize_t glPointSize;
0334 
0335 public: //! @name OpenGL 1.1 FFP (obsolete, removed since 3.1)
0336   typedef void(APIENTRYP glTexEnvi_t)(GLenum target, GLenum pname, GLint param);
0337   glTexEnvi_t glTexEnvi;
0338 
0339   typedef void(APIENTRYP glGetTexEnviv_t)(GLenum target, GLenum pname, GLint* params);
0340   glGetTexEnviv_t glGetTexEnviv;
0341 
0342   typedef void(APIENTRYP glLogicOp_t)(GLenum opcode);
0343   glLogicOp_t glLogicOp;
0344 
0345 public: //! @name Begin/End primitive specification (removed since 3.1)
0346   typedef void(APIENTRYP glColor4fv_t)(const GLfloat* theVec);
0347   glColor4fv_t glColor4fv;
0348 
0349 public: //! @name Matrix operations (removed since 3.1)
0350   typedef void(APIENTRYP glMatrixMode_t)(GLenum theMode);
0351   glMatrixMode_t glMatrixMode;
0352 
0353   typedef void(APIENTRYP glLoadIdentity_t)();
0354   glLoadIdentity_t glLoadIdentity;
0355 
0356   typedef void(APIENTRYP glLoadMatrixf_t)(const GLfloat* theMatrix);
0357   glLoadMatrixf_t glLoadMatrixf;
0358 
0359 public: //! @name Line and Polygon stipple (removed since 3.1)
0360   typedef void(APIENTRYP glLineStipple_t)(GLint theFactor, GLushort thePattern);
0361   glLineStipple_t glLineStipple;
0362 
0363   typedef void(APIENTRYP glPolygonStipple_t)(const GLubyte* theMask);
0364   glPolygonStipple_t glPolygonStipple;
0365 
0366 public: //! @name Fixed pipeline lighting (removed since 3.1)
0367   typedef void(APIENTRYP glShadeModel_t)(GLenum theMode);
0368   glShadeModel_t glShadeModel;
0369 
0370   typedef void(APIENTRYP glLightf_t)(GLenum theLight, GLenum pname, GLfloat param);
0371   glLightf_t glLightf;
0372 
0373   typedef void(APIENTRYP glLightfv_t)(GLenum theLight, GLenum pname, const GLfloat* params);
0374   glLightfv_t glLightfv;
0375 
0376   typedef void(APIENTRYP glLightModeli_t)(GLenum pname, GLint param);
0377   glLightModeli_t glLightModeli;
0378 
0379   typedef void(APIENTRYP glLightModelfv_t)(GLenum pname, const GLfloat* params);
0380   glLightModelfv_t glLightModelfv;
0381 
0382   typedef void(APIENTRYP glMaterialf_t)(GLenum face, GLenum pname, GLfloat param);
0383   glMaterialf_t glMaterialf;
0384 
0385   typedef void(APIENTRYP glMaterialfv_t)(GLenum face, GLenum pname, const GLfloat* params);
0386   glMaterialfv_t glMaterialfv;
0387 
0388   typedef void(APIENTRYP glColorMaterial_t)(GLenum face, GLenum mode);
0389   glColorMaterial_t glColorMaterial;
0390 
0391 public: //! @name clipping plane (removed since 3.1)
0392   typedef void(APIENTRYP glClipPlane_t)(GLenum thePlane, const GLdouble* theEquation);
0393   glClipPlane_t glClipPlane;
0394 
0395 public: //! @name Display lists (removed since 3.1)
0396   typedef void(APIENTRYP glDeleteLists_t)(GLuint theList, GLsizei theRange);
0397   glDeleteLists_t glDeleteLists;
0398 
0399   typedef GLuint(APIENTRYP glGenLists_t)(GLsizei theRange);
0400   glGenLists_t glGenLists;
0401 
0402   typedef void(APIENTRYP glNewList_t)(GLuint theList, GLenum theMode);
0403   glNewList_t glNewList;
0404 
0405   typedef void(APIENTRYP glEndList_t)();
0406   glEndList_t glEndList;
0407 
0408   typedef void(APIENTRYP glCallList_t)(GLuint theList);
0409   glCallList_t glCallList;
0410 
0411   typedef void(APIENTRYP glCallLists_t)(GLsizei theNb, GLenum theType, const GLvoid* theLists);
0412   glCallLists_t glCallLists;
0413 
0414   typedef void(APIENTRYP glListBase_t)(GLuint theBase);
0415   glListBase_t glListBase;
0416 
0417 public: //! @name Current raster position and Rectangles (removed since 3.1)
0418   typedef void(APIENTRYP glRasterPos2i_t)(GLint x, GLint y);
0419   glRasterPos2i_t glRasterPos2i;
0420 
0421   typedef void(APIENTRYP glRasterPos3fv_t)(const GLfloat* theVec);
0422   glRasterPos3fv_t glRasterPos3fv;
0423 
0424 public: //! @name Texture mapping (removed since 3.1)
0425   typedef void(APIENTRYP glTexGeni_t)(GLenum coord, GLenum pname, GLint param);
0426   glTexGeni_t glTexGeni;
0427 
0428   typedef void(APIENTRYP glTexGenfv_t)(GLenum coord, GLenum pname, const GLfloat* params);
0429   glTexGenfv_t glTexGenfv;
0430 
0431 public: //! @name Pixel copying (removed since 3.1)
0432   typedef void(APIENTRYP glDrawPixels_t)(GLsizei       width,
0433                                          GLsizei       height,
0434                                          GLenum        format,
0435                                          GLenum        type,
0436                                          const GLvoid* pixels);
0437   glDrawPixels_t glDrawPixels;
0438 
0439   typedef void(
0440     APIENTRYP glCopyPixels_t)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
0441   glCopyPixels_t glCopyPixels;
0442 
0443   typedef void(APIENTRYP glBitmap_t)(GLsizei        width,
0444                                      GLsizei        height,
0445                                      GLfloat        xorig,
0446                                      GLfloat        yorig,
0447                                      GLfloat        xmove,
0448                                      GLfloat        ymove,
0449                                      const GLubyte* bitmap);
0450   glBitmap_t glBitmap;
0451 
0452 public: //! @name Edge flags and fixed-function vertex processing (removed since 3.1)
0453   typedef void(APIENTRYP glIndexPointer_t)(GLenum theType, GLsizei theStride, const GLvoid* thePtr);
0454   glIndexPointer_t glIndexPointer;
0455 
0456   typedef void(APIENTRYP glVertexPointer_t)(GLint         theSize,
0457                                             GLenum        theType,
0458                                             GLsizei       theStride,
0459                                             const GLvoid* thePtr);
0460   glVertexPointer_t glVertexPointer;
0461 
0462   typedef void(APIENTRYP glNormalPointer_t)(GLenum        theType,
0463                                             GLsizei       theStride,
0464                                             const GLvoid* thePtr);
0465   glNormalPointer_t glNormalPointer;
0466 
0467   typedef void(APIENTRYP glColorPointer_t)(GLint         theSize,
0468                                            GLenum        theType,
0469                                            GLsizei       theStride,
0470                                            const GLvoid* thePtr);
0471   glColorPointer_t glColorPointer;
0472 
0473   typedef void(APIENTRYP glTexCoordPointer_t)(GLint         theSize,
0474                                               GLenum        theType,
0475                                               GLsizei       theStride,
0476                                               const GLvoid* thePtr);
0477   glTexCoordPointer_t glTexCoordPointer;
0478 
0479   typedef void(APIENTRYP glEnableClientState_t)(GLenum theCap);
0480   glEnableClientState_t glEnableClientState;
0481 
0482   typedef void(APIENTRYP glDisableClientState_t)(GLenum theCap);
0483   glDisableClientState_t glDisableClientState;
0484 
0485   typedef void(APIENTRYP glGetTexLevelParameterfv_t)(GLenum   target,
0486                                                      GLint    level,
0487                                                      GLenum   pname,
0488                                                      GLfloat* params);
0489   glGetTexLevelParameterfv_t glGetTexLevelParameterfv;
0490 
0491   typedef void(APIENTRYP glGetTexLevelParameteriv_t)(GLenum target,
0492                                                      GLint  level,
0493                                                      GLenum pname,
0494                                                      GLint* params);
0495   glGetTexLevelParameteriv_t glGetTexLevelParameteriv;
0496 
0497   typedef void(APIENTRYP glPolygonMode_t)(GLenum face, GLenum mode);
0498   glPolygonMode_t glPolygonMode;
0499 
0500 public: //! @name OpenGL ES 3.2
0501   typedef void(APIENTRYP glBlendBarrier_t)();
0502   glBlendBarrier_t glBlendBarrier;
0503 
0504   typedef void(APIENTRYP glPrimitiveBoundingBox_t)(GLfloat minX,
0505                                                    GLfloat minY,
0506                                                    GLfloat minZ,
0507                                                    GLfloat minW,
0508                                                    GLfloat maxX,
0509                                                    GLfloat maxY,
0510                                                    GLfloat maxZ,
0511                                                    GLfloat maxW);
0512   glPrimitiveBoundingBox_t glPrimitiveBoundingBox;
0513 
0514 public: //! @name OpenGL 1.2
0515   PFNGLBLENDCOLORPROC        glBlendColor;
0516   PFNGLBLENDEQUATIONPROC     glBlendEquation;
0517   PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
0518   PFNGLTEXIMAGE3DPROC        glTexImage3D;
0519   PFNGLTEXSUBIMAGE3DPROC     glTexSubImage3D;
0520   PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
0521 
0522 public: //! @name OpenGL 1.3
0523   PFNGLACTIVETEXTUREPROC           glActiveTexture;
0524   PFNGLSAMPLECOVERAGEPROC          glSampleCoverage;
0525   PFNGLCOMPRESSEDTEXIMAGE3DPROC    glCompressedTexImage3D;
0526   PFNGLCOMPRESSEDTEXIMAGE2DPROC    glCompressedTexImage2D;
0527   PFNGLCOMPRESSEDTEXIMAGE1DPROC    glCompressedTexImage1D;
0528   PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
0529   PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
0530   PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
0531   PFNGLGETCOMPRESSEDTEXIMAGEPROC   glGetCompressedTexImage;
0532 
0533 public: //! @name OpenGL 1.4
0534   PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
0535   PFNGLMULTIDRAWARRAYSPROC   glMultiDrawArrays;
0536   PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
0537   PFNGLPOINTPARAMETERFPROC   glPointParameterf;
0538   PFNGLPOINTPARAMETERFVPROC  glPointParameterfv;
0539   PFNGLPOINTPARAMETERIPROC   glPointParameteri;
0540   PFNGLPOINTPARAMETERIVPROC  glPointParameteriv;
0541 
0542 public: //! @name OpenGL 1.5
0543   PFNGLGENQUERIESPROC           glGenQueries;
0544   PFNGLDELETEQUERIESPROC        glDeleteQueries;
0545   PFNGLISQUERYPROC              glIsQuery;
0546   PFNGLBEGINQUERYPROC           glBeginQuery;
0547   PFNGLENDQUERYPROC             glEndQuery;
0548   PFNGLGETQUERYIVPROC           glGetQueryiv;
0549   PFNGLGETQUERYOBJECTIVPROC     glGetQueryObjectiv;
0550   PFNGLGETQUERYOBJECTUIVPROC    glGetQueryObjectuiv;
0551   PFNGLBINDBUFFERPROC           glBindBuffer;
0552   PFNGLDELETEBUFFERSPROC        glDeleteBuffers;
0553   PFNGLGENBUFFERSPROC           glGenBuffers;
0554   PFNGLISBUFFERPROC             glIsBuffer;
0555   PFNGLBUFFERDATAPROC           glBufferData;
0556   PFNGLBUFFERSUBDATAPROC        glBufferSubData;
0557   PFNGLGETBUFFERSUBDATAPROC     glGetBufferSubData;
0558   PFNGLMAPBUFFERPROC            glMapBuffer;
0559   PFNGLUNMAPBUFFERPROC          glUnmapBuffer;
0560   PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
0561   PFNGLGETBUFFERPOINTERVPROC    glGetBufferPointerv;
0562 
0563 public: //! @name OpenGL 2.0
0564   PFNGLBLENDEQUATIONSEPARATEPROC    glBlendEquationSeparate;
0565   PFNGLDRAWBUFFERSPROC              glDrawBuffers;
0566   PFNGLSTENCILOPSEPARATEPROC        glStencilOpSeparate;
0567   PFNGLSTENCILFUNCSEPARATEPROC      glStencilFuncSeparate;
0568   PFNGLSTENCILMASKSEPARATEPROC      glStencilMaskSeparate;
0569   PFNGLATTACHSHADERPROC             glAttachShader;
0570   PFNGLBINDATTRIBLOCATIONPROC       glBindAttribLocation;
0571   PFNGLCOMPILESHADERPROC            glCompileShader;
0572   PFNGLCREATEPROGRAMPROC            glCreateProgram;
0573   PFNGLCREATESHADERPROC             glCreateShader;
0574   PFNGLDELETEPROGRAMPROC            glDeleteProgram;
0575   PFNGLDELETESHADERPROC             glDeleteShader;
0576   PFNGLDETACHSHADERPROC             glDetachShader;
0577   PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
0578   PFNGLENABLEVERTEXATTRIBARRAYPROC  glEnableVertexAttribArray;
0579   PFNGLGETACTIVEATTRIBPROC          glGetActiveAttrib;
0580   PFNGLGETACTIVEUNIFORMPROC         glGetActiveUniform;
0581   PFNGLGETATTACHEDSHADERSPROC       glGetAttachedShaders;
0582   PFNGLGETATTRIBLOCATIONPROC        glGetAttribLocation;
0583   PFNGLGETPROGRAMIVPROC             glGetProgramiv;
0584   PFNGLGETPROGRAMINFOLOGPROC        glGetProgramInfoLog;
0585   PFNGLGETSHADERIVPROC              glGetShaderiv;
0586   PFNGLGETSHADERINFOLOGPROC         glGetShaderInfoLog;
0587   PFNGLGETSHADERSOURCEPROC          glGetShaderSource;
0588   PFNGLGETUNIFORMLOCATIONPROC       glGetUniformLocation;
0589   PFNGLGETUNIFORMFVPROC             glGetUniformfv;
0590   PFNGLGETUNIFORMIVPROC             glGetUniformiv;
0591   PFNGLGETVERTEXATTRIBDVPROC        glGetVertexAttribdv;
0592   PFNGLGETVERTEXATTRIBFVPROC        glGetVertexAttribfv;
0593   PFNGLGETVERTEXATTRIBIVPROC        glGetVertexAttribiv;
0594   PFNGLGETVERTEXATTRIBPOINTERVPROC  glGetVertexAttribPointerv;
0595   PFNGLISPROGRAMPROC                glIsProgram;
0596   PFNGLISSHADERPROC                 glIsShader;
0597   PFNGLLINKPROGRAMPROC              glLinkProgram;
0598   PFNGLSHADERSOURCEPROC             glShaderSource;
0599   PFNGLUSEPROGRAMPROC               glUseProgram;
0600   PFNGLUNIFORM1FPROC                glUniform1f;
0601   PFNGLUNIFORM2FPROC                glUniform2f;
0602   PFNGLUNIFORM3FPROC                glUniform3f;
0603   PFNGLUNIFORM4FPROC                glUniform4f;
0604   PFNGLUNIFORM1IPROC                glUniform1i;
0605   PFNGLUNIFORM2IPROC                glUniform2i;
0606   PFNGLUNIFORM3IPROC                glUniform3i;
0607   PFNGLUNIFORM4IPROC                glUniform4i;
0608   PFNGLUNIFORM1FVPROC               glUniform1fv;
0609   PFNGLUNIFORM2FVPROC               glUniform2fv;
0610   PFNGLUNIFORM3FVPROC               glUniform3fv;
0611   PFNGLUNIFORM4FVPROC               glUniform4fv;
0612   PFNGLUNIFORM1IVPROC               glUniform1iv;
0613   PFNGLUNIFORM2IVPROC               glUniform2iv;
0614   PFNGLUNIFORM3IVPROC               glUniform3iv;
0615   PFNGLUNIFORM4IVPROC               glUniform4iv;
0616   PFNGLUNIFORMMATRIX2FVPROC         glUniformMatrix2fv;
0617   PFNGLUNIFORMMATRIX3FVPROC         glUniformMatrix3fv;
0618   PFNGLUNIFORMMATRIX4FVPROC         glUniformMatrix4fv;
0619   PFNGLVALIDATEPROGRAMPROC          glValidateProgram;
0620   PFNGLVERTEXATTRIB1DPROC           glVertexAttrib1d;
0621   PFNGLVERTEXATTRIB1DVPROC          glVertexAttrib1dv;
0622   PFNGLVERTEXATTRIB1FPROC           glVertexAttrib1f;
0623   PFNGLVERTEXATTRIB1FVPROC          glVertexAttrib1fv;
0624   PFNGLVERTEXATTRIB1SPROC           glVertexAttrib1s;
0625   PFNGLVERTEXATTRIB1SVPROC          glVertexAttrib1sv;
0626   PFNGLVERTEXATTRIB2DPROC           glVertexAttrib2d;
0627   PFNGLVERTEXATTRIB2DVPROC          glVertexAttrib2dv;
0628   PFNGLVERTEXATTRIB2FPROC           glVertexAttrib2f;
0629   PFNGLVERTEXATTRIB2FVPROC          glVertexAttrib2fv;
0630   PFNGLVERTEXATTRIB2SPROC           glVertexAttrib2s;
0631   PFNGLVERTEXATTRIB2SVPROC          glVertexAttrib2sv;
0632   PFNGLVERTEXATTRIB3DPROC           glVertexAttrib3d;
0633   PFNGLVERTEXATTRIB3DVPROC          glVertexAttrib3dv;
0634   PFNGLVERTEXATTRIB3FPROC           glVertexAttrib3f;
0635   PFNGLVERTEXATTRIB3FVPROC          glVertexAttrib3fv;
0636   PFNGLVERTEXATTRIB3SPROC           glVertexAttrib3s;
0637   PFNGLVERTEXATTRIB3SVPROC          glVertexAttrib3sv;
0638   PFNGLVERTEXATTRIB4NBVPROC         glVertexAttrib4Nbv;
0639   PFNGLVERTEXATTRIB4NIVPROC         glVertexAttrib4Niv;
0640   PFNGLVERTEXATTRIB4NSVPROC         glVertexAttrib4Nsv;
0641   PFNGLVERTEXATTRIB4NUBPROC         glVertexAttrib4Nub;
0642   PFNGLVERTEXATTRIB4NUBVPROC        glVertexAttrib4Nubv;
0643   PFNGLVERTEXATTRIB4NUIVPROC        glVertexAttrib4Nuiv;
0644   PFNGLVERTEXATTRIB4NUSVPROC        glVertexAttrib4Nusv;
0645   PFNGLVERTEXATTRIB4BVPROC          glVertexAttrib4bv;
0646   PFNGLVERTEXATTRIB4DPROC           glVertexAttrib4d;
0647   PFNGLVERTEXATTRIB4DVPROC          glVertexAttrib4dv;
0648   PFNGLVERTEXATTRIB4FPROC           glVertexAttrib4f;
0649   PFNGLVERTEXATTRIB4FVPROC          glVertexAttrib4fv;
0650   PFNGLVERTEXATTRIB4IVPROC          glVertexAttrib4iv;
0651   PFNGLVERTEXATTRIB4SPROC           glVertexAttrib4s;
0652   PFNGLVERTEXATTRIB4SVPROC          glVertexAttrib4sv;
0653   PFNGLVERTEXATTRIB4UBVPROC         glVertexAttrib4ubv;
0654   PFNGLVERTEXATTRIB4UIVPROC         glVertexAttrib4uiv;
0655   PFNGLVERTEXATTRIB4USVPROC         glVertexAttrib4usv;
0656   PFNGLVERTEXATTRIBPOINTERPROC      glVertexAttribPointer;
0657 
0658 public: //! @name OpenGL 2.1
0659   PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
0660   PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
0661   PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
0662   PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
0663   PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
0664   PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
0665 
0666 public: //! @name GL_ARB_framebuffer_object (added to OpenGL 3.0 core)
0667   PFNGLISRENDERBUFFERPROC                      glIsRenderbuffer;
0668   PFNGLBINDRENDERBUFFERPROC                    glBindRenderbuffer;
0669   PFNGLDELETERENDERBUFFERSPROC                 glDeleteRenderbuffers;
0670   PFNGLGENRENDERBUFFERSPROC                    glGenRenderbuffers;
0671   PFNGLRENDERBUFFERSTORAGEPROC                 glRenderbufferStorage;
0672   PFNGLGETRENDERBUFFERPARAMETERIVPROC          glGetRenderbufferParameteriv;
0673   PFNGLISFRAMEBUFFERPROC                       glIsFramebuffer;
0674   PFNGLBINDFRAMEBUFFERPROC                     glBindFramebuffer;
0675   PFNGLDELETEFRAMEBUFFERSPROC                  glDeleteFramebuffers;
0676   PFNGLGENFRAMEBUFFERSPROC                     glGenFramebuffers;
0677   PFNGLCHECKFRAMEBUFFERSTATUSPROC              glCheckFramebufferStatus;
0678   PFNGLFRAMEBUFFERTEXTURE1DPROC                glFramebufferTexture1D;
0679   PFNGLFRAMEBUFFERTEXTURE2DPROC                glFramebufferTexture2D;
0680   PFNGLFRAMEBUFFERTEXTURE3DPROC                glFramebufferTexture3D;
0681   PFNGLFRAMEBUFFERRENDERBUFFERPROC             glFramebufferRenderbuffer;
0682   PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
0683   PFNGLGENERATEMIPMAPPROC                      glGenerateMipmap;
0684   PFNGLBLITFRAMEBUFFERPROC                     glBlitFramebuffer;
0685   PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC      glRenderbufferStorageMultisample;
0686   PFNGLFRAMEBUFFERTEXTURELAYERPROC             glFramebufferTextureLayer;
0687 
0688 public: //! @name GL_ARB_vertex_array_object (added to OpenGL 3.0 core)
0689   PFNGLBINDVERTEXARRAYPROC    glBindVertexArray;
0690   PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
0691   PFNGLGENVERTEXARRAYSPROC    glGenVertexArrays;
0692   PFNGLISVERTEXARRAYPROC      glIsVertexArray;
0693 
0694 public: //! @name GL_ARB_map_buffer_range (added to OpenGL 3.0 core)
0695   PFNGLMAPBUFFERRANGEPROC         glMapBufferRange;
0696   PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
0697 
0698 public: //! @name OpenGL 3.0
0699   PFNGLCOLORMASKIPROC                  glColorMaski;
0700   PFNGLGETBOOLEANI_VPROC               glGetBooleani_v;
0701   PFNGLGETINTEGERI_VPROC               glGetIntegeri_v;
0702   PFNGLENABLEIPROC                     glEnablei;
0703   PFNGLDISABLEIPROC                    glDisablei;
0704   PFNGLISENABLEDIPROC                  glIsEnabledi;
0705   PFNGLBEGINTRANSFORMFEEDBACKPROC      glBeginTransformFeedback;
0706   PFNGLENDTRANSFORMFEEDBACKPROC        glEndTransformFeedback;
0707   PFNGLBINDBUFFERRANGEPROC             glBindBufferRange;
0708   PFNGLBINDBUFFERBASEPROC              glBindBufferBase;
0709   PFNGLTRANSFORMFEEDBACKVARYINGSPROC   glTransformFeedbackVaryings;
0710   PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
0711   PFNGLCLAMPCOLORPROC                  glClampColor;
0712   PFNGLBEGINCONDITIONALRENDERPROC      glBeginConditionalRender;
0713   PFNGLENDCONDITIONALRENDERPROC        glEndConditionalRender;
0714   PFNGLVERTEXATTRIBIPOINTERPROC        glVertexAttribIPointer;
0715   PFNGLGETVERTEXATTRIBIIVPROC          glGetVertexAttribIiv;
0716   PFNGLGETVERTEXATTRIBIUIVPROC         glGetVertexAttribIuiv;
0717   PFNGLVERTEXATTRIBI1IPROC             glVertexAttribI1i;
0718   PFNGLVERTEXATTRIBI2IPROC             glVertexAttribI2i;
0719   PFNGLVERTEXATTRIBI3IPROC             glVertexAttribI3i;
0720   PFNGLVERTEXATTRIBI4IPROC             glVertexAttribI4i;
0721   PFNGLVERTEXATTRIBI1UIPROC            glVertexAttribI1ui;
0722   PFNGLVERTEXATTRIBI2UIPROC            glVertexAttribI2ui;
0723   PFNGLVERTEXATTRIBI3UIPROC            glVertexAttribI3ui;
0724   PFNGLVERTEXATTRIBI4UIPROC            glVertexAttribI4ui;
0725   PFNGLVERTEXATTRIBI1IVPROC            glVertexAttribI1iv;
0726   PFNGLVERTEXATTRIBI2IVPROC            glVertexAttribI2iv;
0727   PFNGLVERTEXATTRIBI3IVPROC            glVertexAttribI3iv;
0728   PFNGLVERTEXATTRIBI4IVPROC            glVertexAttribI4iv;
0729   PFNGLVERTEXATTRIBI1UIVPROC           glVertexAttribI1uiv;
0730   PFNGLVERTEXATTRIBI2UIVPROC           glVertexAttribI2uiv;
0731   PFNGLVERTEXATTRIBI3UIVPROC           glVertexAttribI3uiv;
0732   PFNGLVERTEXATTRIBI4UIVPROC           glVertexAttribI4uiv;
0733   PFNGLVERTEXATTRIBI4BVPROC            glVertexAttribI4bv;
0734   PFNGLVERTEXATTRIBI4SVPROC            glVertexAttribI4sv;
0735   PFNGLVERTEXATTRIBI4UBVPROC           glVertexAttribI4ubv;
0736   PFNGLVERTEXATTRIBI4USVPROC           glVertexAttribI4usv;
0737   PFNGLGETUNIFORMUIVPROC               glGetUniformuiv;
0738   PFNGLBINDFRAGDATALOCATIONPROC        glBindFragDataLocation;
0739   PFNGLGETFRAGDATALOCATIONPROC         glGetFragDataLocation;
0740   PFNGLUNIFORM1UIPROC                  glUniform1ui;
0741   PFNGLUNIFORM2UIPROC                  glUniform2ui;
0742   PFNGLUNIFORM3UIPROC                  glUniform3ui;
0743   PFNGLUNIFORM4UIPROC                  glUniform4ui;
0744   PFNGLUNIFORM1UIVPROC                 glUniform1uiv;
0745   PFNGLUNIFORM2UIVPROC                 glUniform2uiv;
0746   PFNGLUNIFORM3UIVPROC                 glUniform3uiv;
0747   PFNGLUNIFORM4UIVPROC                 glUniform4uiv;
0748   PFNGLTEXPARAMETERIIVPROC             glTexParameterIiv;
0749   PFNGLTEXPARAMETERIUIVPROC            glTexParameterIuiv;
0750   PFNGLGETTEXPARAMETERIIVPROC          glGetTexParameterIiv;
0751   PFNGLGETTEXPARAMETERIUIVPROC         glGetTexParameterIuiv;
0752   PFNGLCLEARBUFFERIVPROC               glClearBufferiv;
0753   PFNGLCLEARBUFFERUIVPROC              glClearBufferuiv;
0754   PFNGLCLEARBUFFERFVPROC               glClearBufferfv;
0755   PFNGLCLEARBUFFERFIPROC               glClearBufferfi;
0756   PFNGLGETSTRINGIPROC                  glGetStringi;
0757 
0758 public: //! @name GL_ARB_uniform_buffer_object (added to OpenGL 3.1 core)
0759   PFNGLGETUNIFORMINDICESPROC         glGetUniformIndices;
0760   PFNGLGETACTIVEUNIFORMSIVPROC       glGetActiveUniformsiv;
0761   PFNGLGETACTIVEUNIFORMNAMEPROC      glGetActiveUniformName;
0762   PFNGLGETUNIFORMBLOCKINDEXPROC      glGetUniformBlockIndex;
0763   PFNGLGETACTIVEUNIFORMBLOCKIVPROC   glGetActiveUniformBlockiv;
0764   PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
0765   PFNGLUNIFORMBLOCKBINDINGPROC       glUniformBlockBinding;
0766 
0767 public: //! @name GL_ARB_copy_buffer (added to OpenGL 3.1 core)
0768   PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
0769 
0770 public: //! @name OpenGL 3.1
0771   PFNGLDRAWARRAYSINSTANCEDPROC   glDrawArraysInstanced;
0772   PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
0773   PFNGLTEXBUFFERPROC             glTexBuffer;
0774   PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
0775 
0776 public: //! @name GL_ARB_draw_elements_base_vertex (added to OpenGL 3.2 core)
0777   PFNGLDRAWELEMENTSBASEVERTEXPROC          glDrawElementsBaseVertex;
0778   PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC     glDrawRangeElementsBaseVertex;
0779   PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
0780   PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC     glMultiDrawElementsBaseVertex;
0781 
0782 public: //! @name GL_ARB_provoking_vertex (added to OpenGL 3.2 core)
0783   PFNGLPROVOKINGVERTEXPROC glProvokingVertex;
0784 
0785 public: //! @name GL_ARB_sync (added to OpenGL 3.2 core)
0786   PFNGLFENCESYNCPROC      glFenceSync;
0787   PFNGLISSYNCPROC         glIsSync;
0788   PFNGLDELETESYNCPROC     glDeleteSync;
0789   PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
0790   PFNGLWAITSYNCPROC       glWaitSync;
0791   PFNGLGETINTEGER64VPROC  glGetInteger64v;
0792   PFNGLGETSYNCIVPROC      glGetSynciv;
0793 
0794 public: //! @name GL_ARB_texture_multisample (added to OpenGL 3.2 core)
0795   PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
0796   PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
0797   PFNGLGETMULTISAMPLEFVPROC      glGetMultisamplefv;
0798   PFNGLSAMPLEMASKIPROC           glSampleMaski;
0799 
0800 public: //! @name OpenGL 3.2
0801   PFNGLGETINTEGER64I_VPROC        glGetInteger64i_v;
0802   PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
0803   PFNGLFRAMEBUFFERTEXTUREPROC     glFramebufferTexture;
0804 
0805 public: //! @name GL_ARB_blend_func_extended (added to OpenGL 3.3 core)
0806   PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
0807   PFNGLGETFRAGDATAINDEXPROC            glGetFragDataIndex;
0808 
0809 public: //! @name GL_ARB_sampler_objects (added to OpenGL 3.3 core)
0810   PFNGLGENSAMPLERSPROC             glGenSamplers;
0811   PFNGLDELETESAMPLERSPROC          glDeleteSamplers;
0812   PFNGLISSAMPLERPROC               glIsSampler;
0813   PFNGLBINDSAMPLERPROC             glBindSampler;
0814   PFNGLSAMPLERPARAMETERIPROC       glSamplerParameteri;
0815   PFNGLSAMPLERPARAMETERIVPROC      glSamplerParameteriv;
0816   PFNGLSAMPLERPARAMETERFPROC       glSamplerParameterf;
0817   PFNGLSAMPLERPARAMETERFVPROC      glSamplerParameterfv;
0818   PFNGLSAMPLERPARAMETERIIVPROC     glSamplerParameterIiv;
0819   PFNGLSAMPLERPARAMETERIUIVPROC    glSamplerParameterIuiv;
0820   PFNGLGETSAMPLERPARAMETERIVPROC   glGetSamplerParameteriv;
0821   PFNGLGETSAMPLERPARAMETERIIVPROC  glGetSamplerParameterIiv;
0822   PFNGLGETSAMPLERPARAMETERFVPROC   glGetSamplerParameterfv;
0823   PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
0824 
0825 public: //! @name GL_ARB_timer_query (added to OpenGL 3.3 core)
0826   PFNGLQUERYCOUNTERPROC        glQueryCounter;
0827   PFNGLGETQUERYOBJECTI64VPROC  glGetQueryObjecti64v;
0828   PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
0829 
0830 public: //! @name GL_ARB_vertex_type_2_10_10_10_rev (added to OpenGL 3.3 core)
0831   PFNGLVERTEXATTRIBP1UIPROC  glVertexAttribP1ui;
0832   PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv;
0833   PFNGLVERTEXATTRIBP2UIPROC  glVertexAttribP2ui;
0834   PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv;
0835   PFNGLVERTEXATTRIBP3UIPROC  glVertexAttribP3ui;
0836   PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv;
0837   PFNGLVERTEXATTRIBP4UIPROC  glVertexAttribP4ui;
0838   PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv;
0839 
0840 public: //! @name OpenGL 3.3
0841   PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
0842 
0843 public: //! @name GL_ARB_draw_indirect (added to OpenGL 4.0 core)
0844   PFNGLDRAWARRAYSINDIRECTPROC   glDrawArraysIndirect;
0845   PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
0846 
0847 public: //! @name GL_ARB_gpu_shader_fp64 (added to OpenGL 4.0 core)
0848   PFNGLUNIFORM1DPROC          glUniform1d;
0849   PFNGLUNIFORM2DPROC          glUniform2d;
0850   PFNGLUNIFORM3DPROC          glUniform3d;
0851   PFNGLUNIFORM4DPROC          glUniform4d;
0852   PFNGLUNIFORM1DVPROC         glUniform1dv;
0853   PFNGLUNIFORM2DVPROC         glUniform2dv;
0854   PFNGLUNIFORM3DVPROC         glUniform3dv;
0855   PFNGLUNIFORM4DVPROC         glUniform4dv;
0856   PFNGLUNIFORMMATRIX2DVPROC   glUniformMatrix2dv;
0857   PFNGLUNIFORMMATRIX3DVPROC   glUniformMatrix3dv;
0858   PFNGLUNIFORMMATRIX4DVPROC   glUniformMatrix4dv;
0859   PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
0860   PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
0861   PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
0862   PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
0863   PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
0864   PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
0865   PFNGLGETUNIFORMDVPROC       glGetUniformdv;
0866 
0867 public: //! @name GL_ARB_shader_subroutine (added to OpenGL 4.0 core)
0868   PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC   glGetSubroutineUniformLocation;
0869   PFNGLGETSUBROUTINEINDEXPROC             glGetSubroutineIndex;
0870   PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC   glGetActiveSubroutineUniformiv;
0871   PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName;
0872   PFNGLGETACTIVESUBROUTINENAMEPROC        glGetActiveSubroutineName;
0873   PFNGLUNIFORMSUBROUTINESUIVPROC          glUniformSubroutinesuiv;
0874   PFNGLGETUNIFORMSUBROUTINEUIVPROC        glGetUniformSubroutineuiv;
0875   PFNGLGETPROGRAMSTAGEIVPROC              glGetProgramStageiv;
0876 
0877 public: //! @name GL_ARB_tessellation_shader (added to OpenGL 4.0 core)
0878   PFNGLPATCHPARAMETERIPROC  glPatchParameteri;
0879   PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
0880 
0881 public: //! @name GL_ARB_transform_feedback2 (added to OpenGL 4.0 core)
0882   PFNGLBINDTRANSFORMFEEDBACKPROC    glBindTransformFeedback;
0883   PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
0884   PFNGLGENTRANSFORMFEEDBACKSPROC    glGenTransformFeedbacks;
0885   PFNGLISTRANSFORMFEEDBACKPROC      glIsTransformFeedback;
0886   PFNGLPAUSETRANSFORMFEEDBACKPROC   glPauseTransformFeedback;
0887   PFNGLRESUMETRANSFORMFEEDBACKPROC  glResumeTransformFeedback;
0888   PFNGLDRAWTRANSFORMFEEDBACKPROC    glDrawTransformFeedback;
0889 
0890 public: //! @name GL_ARB_transform_feedback3 (added to OpenGL 4.0 core)
0891   PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
0892   PFNGLBEGINQUERYINDEXEDPROC           glBeginQueryIndexed;
0893   PFNGLENDQUERYINDEXEDPROC             glEndQueryIndexed;
0894   PFNGLGETQUERYINDEXEDIVPROC           glGetQueryIndexediv;
0895 
0896 public: //! @name OpenGL 4.0
0897   PFNGLMINSAMPLESHADINGPROC       glMinSampleShading;
0898   PFNGLBLENDEQUATIONIPROC         glBlendEquationi;
0899   PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
0900   PFNGLBLENDFUNCIPROC             glBlendFunci;
0901   PFNGLBLENDFUNCSEPARATEIPROC     glBlendFuncSeparatei;
0902 
0903 public: //! @name GL_ARB_ES2_compatibility (added to OpenGL 4.1 core)
0904   PFNGLRELEASESHADERCOMPILERPROC    glReleaseShaderCompiler;
0905   PFNGLSHADERBINARYPROC             glShaderBinary;
0906   PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
0907   PFNGLDEPTHRANGEFPROC              glDepthRangef;
0908   PFNGLCLEARDEPTHFPROC              glClearDepthf;
0909 
0910 public: //! @name GL_ARB_get_program_binary (added to OpenGL 4.1 core)
0911   PFNGLGETPROGRAMBINARYPROC  glGetProgramBinary;
0912   PFNGLPROGRAMBINARYPROC     glProgramBinary;
0913   PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
0914 
0915 public: //! @name GL_ARB_separate_shader_objects (added to OpenGL 4.1 core)
0916   PFNGLUSEPROGRAMSTAGESPROC          glUseProgramStages;
0917   PFNGLACTIVESHADERPROGRAMPROC       glActiveShaderProgram;
0918   PFNGLCREATESHADERPROGRAMVPROC      glCreateShaderProgramv;
0919   PFNGLBINDPROGRAMPIPELINEPROC       glBindProgramPipeline;
0920   PFNGLDELETEPROGRAMPIPELINESPROC    glDeleteProgramPipelines;
0921   PFNGLGENPROGRAMPIPELINESPROC       glGenProgramPipelines;
0922   PFNGLISPROGRAMPIPELINEPROC         glIsProgramPipeline;
0923   PFNGLGETPROGRAMPIPELINEIVPROC      glGetProgramPipelineiv;
0924   PFNGLPROGRAMUNIFORM1IPROC          glProgramUniform1i;
0925   PFNGLPROGRAMUNIFORM1IVPROC         glProgramUniform1iv;
0926   PFNGLPROGRAMUNIFORM1FPROC          glProgramUniform1f;
0927   PFNGLPROGRAMUNIFORM1FVPROC         glProgramUniform1fv;
0928   PFNGLPROGRAMUNIFORM1DPROC          glProgramUniform1d;
0929   PFNGLPROGRAMUNIFORM1DVPROC         glProgramUniform1dv;
0930   PFNGLPROGRAMUNIFORM1UIPROC         glProgramUniform1ui;
0931   PFNGLPROGRAMUNIFORM1UIVPROC        glProgramUniform1uiv;
0932   PFNGLPROGRAMUNIFORM2IPROC          glProgramUniform2i;
0933   PFNGLPROGRAMUNIFORM2IVPROC         glProgramUniform2iv;
0934   PFNGLPROGRAMUNIFORM2FPROC          glProgramUniform2f;
0935   PFNGLPROGRAMUNIFORM2FVPROC         glProgramUniform2fv;
0936   PFNGLPROGRAMUNIFORM2DPROC          glProgramUniform2d;
0937   PFNGLPROGRAMUNIFORM2DVPROC         glProgramUniform2dv;
0938   PFNGLPROGRAMUNIFORM2UIPROC         glProgramUniform2ui;
0939   PFNGLPROGRAMUNIFORM2UIVPROC        glProgramUniform2uiv;
0940   PFNGLPROGRAMUNIFORM3IPROC          glProgramUniform3i;
0941   PFNGLPROGRAMUNIFORM3IVPROC         glProgramUniform3iv;
0942   PFNGLPROGRAMUNIFORM3FPROC          glProgramUniform3f;
0943   PFNGLPROGRAMUNIFORM3FVPROC         glProgramUniform3fv;
0944   PFNGLPROGRAMUNIFORM3DPROC          glProgramUniform3d;
0945   PFNGLPROGRAMUNIFORM3DVPROC         glProgramUniform3dv;
0946   PFNGLPROGRAMUNIFORM3UIPROC         glProgramUniform3ui;
0947   PFNGLPROGRAMUNIFORM3UIVPROC        glProgramUniform3uiv;
0948   PFNGLPROGRAMUNIFORM4IPROC          glProgramUniform4i;
0949   PFNGLPROGRAMUNIFORM4IVPROC         glProgramUniform4iv;
0950   PFNGLPROGRAMUNIFORM4FPROC          glProgramUniform4f;
0951   PFNGLPROGRAMUNIFORM4FVPROC         glProgramUniform4fv;
0952   PFNGLPROGRAMUNIFORM4DPROC          glProgramUniform4d;
0953   PFNGLPROGRAMUNIFORM4DVPROC         glProgramUniform4dv;
0954   PFNGLPROGRAMUNIFORM4UIPROC         glProgramUniform4ui;
0955   PFNGLPROGRAMUNIFORM4UIVPROC        glProgramUniform4uiv;
0956   PFNGLPROGRAMUNIFORMMATRIX2FVPROC   glProgramUniformMatrix2fv;
0957   PFNGLPROGRAMUNIFORMMATRIX3FVPROC   glProgramUniformMatrix3fv;
0958   PFNGLPROGRAMUNIFORMMATRIX4FVPROC   glProgramUniformMatrix4fv;
0959   PFNGLPROGRAMUNIFORMMATRIX2DVPROC   glProgramUniformMatrix2dv;
0960   PFNGLPROGRAMUNIFORMMATRIX3DVPROC   glProgramUniformMatrix3dv;
0961   PFNGLPROGRAMUNIFORMMATRIX4DVPROC   glProgramUniformMatrix4dv;
0962   PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
0963   PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
0964   PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
0965   PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
0966   PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
0967   PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
0968   PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
0969   PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
0970   PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
0971   PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
0972   PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
0973   PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
0974   PFNGLVALIDATEPROGRAMPIPELINEPROC   glValidateProgramPipeline;
0975   PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
0976 
0977 public: //! @name GL_ARB_vertex_attrib_64bit (added to OpenGL 4.1 core)
0978   PFNGLVERTEXATTRIBL1DPROC      glVertexAttribL1d;
0979   PFNGLVERTEXATTRIBL2DPROC      glVertexAttribL2d;
0980   PFNGLVERTEXATTRIBL3DPROC      glVertexAttribL3d;
0981   PFNGLVERTEXATTRIBL4DPROC      glVertexAttribL4d;
0982   PFNGLVERTEXATTRIBL1DVPROC     glVertexAttribL1dv;
0983   PFNGLVERTEXATTRIBL2DVPROC     glVertexAttribL2dv;
0984   PFNGLVERTEXATTRIBL3DVPROC     glVertexAttribL3dv;
0985   PFNGLVERTEXATTRIBL4DVPROC     glVertexAttribL4dv;
0986   PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
0987   PFNGLGETVERTEXATTRIBLDVPROC   glGetVertexAttribLdv;
0988 
0989 public: //! @name GL_ARB_viewport_array (added to OpenGL 4.1 core)
0990   PFNGLVIEWPORTARRAYVPROC    glViewportArrayv;
0991   PFNGLVIEWPORTINDEXEDFPROC  glViewportIndexedf;
0992   PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
0993   PFNGLSCISSORARRAYVPROC     glScissorArrayv;
0994   PFNGLSCISSORINDEXEDPROC    glScissorIndexed;
0995   PFNGLSCISSORINDEXEDVPROC   glScissorIndexedv;
0996   PFNGLDEPTHRANGEARRAYVPROC  glDepthRangeArrayv;
0997   PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
0998   PFNGLGETFLOATI_VPROC       glGetFloati_v;
0999   PFNGLGETDOUBLEI_VPROC      glGetDoublei_v;
1000 
1001 public: //! @name OpenGL 4.1
1002         //
1003 public: //! @name GL_ARB_base_instance (added to OpenGL 4.2 core)
1004   PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC   glDrawArraysInstancedBaseInstance;
1005   PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
1006   PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC
1007   glDrawElementsInstancedBaseVertexBaseInstance;
1008 
1009 public: //! @name GL_ARB_transform_feedback_instanced (added to OpenGL 4.2 core)
1010   PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC       glDrawTransformFeedbackInstanced;
1011   PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
1012 
1013 public: //! @name GL_ARB_internalformat_query (added to OpenGL 4.2 core)
1014   PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
1015 
1016 public: //! @name GL_ARB_shader_atomic_counters (added to OpenGL 4.2 core)
1017   PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
1018 
1019 public: //! @name GL_ARB_shader_image_load_store (added to OpenGL 4.2 core)
1020   PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
1021   PFNGLMEMORYBARRIERPROC    glMemoryBarrier;
1022 
1023 public: //! @name GL_ARB_texture_storage (added to OpenGL 4.2 core)
1024   PFNGLTEXSTORAGE1DPROC glTexStorage1D;
1025   PFNGLTEXSTORAGE2DPROC glTexStorage2D;
1026   PFNGLTEXSTORAGE3DPROC glTexStorage3D;
1027 
1028 public: //! @name OpenGL 4.2
1029 public: //! @name OpenGL 4.3
1030   PFNGLCLEARBUFFERDATAPROC                 glClearBufferData;
1031   PFNGLCLEARBUFFERSUBDATAPROC              glClearBufferSubData;
1032   PFNGLDISPATCHCOMPUTEPROC                 glDispatchCompute;
1033   PFNGLDISPATCHCOMPUTEINDIRECTPROC         glDispatchComputeIndirect;
1034   PFNGLCOPYIMAGESUBDATAPROC                glCopyImageSubData;
1035   PFNGLFRAMEBUFFERPARAMETERIPROC           glFramebufferParameteri;
1036   PFNGLGETFRAMEBUFFERPARAMETERIVPROC       glGetFramebufferParameteriv;
1037   PFNGLGETINTERNALFORMATI64VPROC           glGetInternalformati64v;
1038   PFNGLINVALIDATETEXSUBIMAGEPROC           glInvalidateTexSubImage;
1039   PFNGLINVALIDATETEXIMAGEPROC              glInvalidateTexImage;
1040   PFNGLINVALIDATEBUFFERSUBDATAPROC         glInvalidateBufferSubData;
1041   PFNGLINVALIDATEBUFFERDATAPROC            glInvalidateBufferData;
1042   PFNGLINVALIDATEFRAMEBUFFERPROC           glInvalidateFramebuffer;
1043   PFNGLINVALIDATESUBFRAMEBUFFERPROC        glInvalidateSubFramebuffer;
1044   PFNGLMULTIDRAWARRAYSINDIRECTPROC         glMultiDrawArraysIndirect;
1045   PFNGLMULTIDRAWELEMENTSINDIRECTPROC       glMultiDrawElementsIndirect;
1046   PFNGLGETPROGRAMINTERFACEIVPROC           glGetProgramInterfaceiv;
1047   PFNGLGETPROGRAMRESOURCEINDEXPROC         glGetProgramResourceIndex;
1048   PFNGLGETPROGRAMRESOURCENAMEPROC          glGetProgramResourceName;
1049   PFNGLGETPROGRAMRESOURCEIVPROC            glGetProgramResourceiv;
1050   PFNGLGETPROGRAMRESOURCELOCATIONPROC      glGetProgramResourceLocation;
1051   PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
1052   PFNGLSHADERSTORAGEBLOCKBINDINGPROC       glShaderStorageBlockBinding;
1053   PFNGLTEXBUFFERRANGEPROC                  glTexBufferRange;
1054   PFNGLTEXSTORAGE2DMULTISAMPLEPROC         glTexStorage2DMultisample;
1055   PFNGLTEXSTORAGE3DMULTISAMPLEPROC         glTexStorage3DMultisample;
1056   PFNGLTEXTUREVIEWPROC                     glTextureView;
1057   PFNGLBINDVERTEXBUFFERPROC                glBindVertexBuffer;
1058   PFNGLVERTEXATTRIBFORMATPROC              glVertexAttribFormat;
1059   PFNGLVERTEXATTRIBIFORMATPROC             glVertexAttribIFormat;
1060   PFNGLVERTEXATTRIBLFORMATPROC             glVertexAttribLFormat;
1061   PFNGLVERTEXATTRIBBINDINGPROC             glVertexAttribBinding;
1062   PFNGLVERTEXBINDINGDIVISORPROC            glVertexBindingDivisor;
1063   PFNGLDEBUGMESSAGECONTROLPROC             glDebugMessageControl;
1064   PFNGLDEBUGMESSAGEINSERTPROC              glDebugMessageInsert;
1065   PFNGLDEBUGMESSAGECALLBACKPROC            glDebugMessageCallback;
1066   PFNGLGETDEBUGMESSAGELOGPROC              glGetDebugMessageLog;
1067   PFNGLPUSHDEBUGGROUPPROC                  glPushDebugGroup;
1068   PFNGLPOPDEBUGGROUPPROC                   glPopDebugGroup;
1069   PFNGLOBJECTLABELPROC                     glObjectLabel;
1070   PFNGLGETOBJECTLABELPROC                  glGetObjectLabel;
1071   PFNGLOBJECTPTRLABELPROC                  glObjectPtrLabel;
1072   PFNGLGETOBJECTPTRLABELPROC               glGetObjectPtrLabel;
1073 
1074 public: //! @name OpenGL 4.4
1075   PFNGLBUFFERSTORAGEPROC     glBufferStorage;
1076   PFNGLCLEARTEXIMAGEPROC     glClearTexImage;
1077   PFNGLCLEARTEXSUBIMAGEPROC  glClearTexSubImage;
1078   PFNGLBINDBUFFERSBASEPROC   glBindBuffersBase;
1079   PFNGLBINDBUFFERSRANGEPROC  glBindBuffersRange;
1080   PFNGLBINDTEXTURESPROC      glBindTextures;
1081   PFNGLBINDSAMPLERSPROC      glBindSamplers;
1082   PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
1083   PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
1084 
1085 public: //! @name OpenGL 4.5
1086   PFNGLCLIPCONTROLPROC                              glClipControl;
1087   PFNGLCREATETRANSFORMFEEDBACKSPROC                 glCreateTransformFeedbacks;
1088   PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC              glTransformFeedbackBufferBase;
1089   PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC             glTransformFeedbackBufferRange;
1090   PFNGLGETTRANSFORMFEEDBACKIVPROC                   glGetTransformFeedbackiv;
1091   PFNGLGETTRANSFORMFEEDBACKI_VPROC                  glGetTransformFeedbacki_v;
1092   PFNGLGETTRANSFORMFEEDBACKI64_VPROC                glGetTransformFeedbacki64_v;
1093   PFNGLCREATEBUFFERSPROC                            glCreateBuffers;
1094   PFNGLNAMEDBUFFERSTORAGEPROC                       glNamedBufferStorage;
1095   PFNGLNAMEDBUFFERDATAPROC                          glNamedBufferData;
1096   PFNGLNAMEDBUFFERSUBDATAPROC                       glNamedBufferSubData;
1097   PFNGLCOPYNAMEDBUFFERSUBDATAPROC                   glCopyNamedBufferSubData;
1098   PFNGLCLEARNAMEDBUFFERDATAPROC                     glClearNamedBufferData;
1099   PFNGLCLEARNAMEDBUFFERSUBDATAPROC                  glClearNamedBufferSubData;
1100   PFNGLMAPNAMEDBUFFERPROC                           glMapNamedBuffer;
1101   PFNGLMAPNAMEDBUFFERRANGEPROC                      glMapNamedBufferRange;
1102   PFNGLUNMAPNAMEDBUFFERPROC                         glUnmapNamedBuffer;
1103   PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC              glFlushMappedNamedBufferRange;
1104   PFNGLGETNAMEDBUFFERPARAMETERIVPROC                glGetNamedBufferParameteriv;
1105   PFNGLGETNAMEDBUFFERPARAMETERI64VPROC              glGetNamedBufferParameteri64v;
1106   PFNGLGETNAMEDBUFFERPOINTERVPROC                   glGetNamedBufferPointerv;
1107   PFNGLGETNAMEDBUFFERSUBDATAPROC                    glGetNamedBufferSubData;
1108   PFNGLCREATEFRAMEBUFFERSPROC                       glCreateFramebuffers;
1109   PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC             glNamedFramebufferRenderbuffer;
1110   PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC               glNamedFramebufferParameteri;
1111   PFNGLNAMEDFRAMEBUFFERTEXTUREPROC                  glNamedFramebufferTexture;
1112   PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC             glNamedFramebufferTextureLayer;
1113   PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC               glNamedFramebufferDrawBuffer;
1114   PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC              glNamedFramebufferDrawBuffers;
1115   PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC               glNamedFramebufferReadBuffer;
1116   PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC           glInvalidateNamedFramebufferData;
1117   PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC        glInvalidateNamedFramebufferSubData;
1118   PFNGLCLEARNAMEDFRAMEBUFFERIVPROC                  glClearNamedFramebufferiv;
1119   PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC                 glClearNamedFramebufferuiv;
1120   PFNGLCLEARNAMEDFRAMEBUFFERFVPROC                  glClearNamedFramebufferfv;
1121   PFNGLCLEARNAMEDFRAMEBUFFERFIPROC                  glClearNamedFramebufferfi;
1122   PFNGLBLITNAMEDFRAMEBUFFERPROC                     glBlitNamedFramebuffer;
1123   PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC              glCheckNamedFramebufferStatus;
1124   PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC           glGetNamedFramebufferParameteriv;
1125   PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv;
1126   PFNGLCREATERENDERBUFFERSPROC                      glCreateRenderbuffers;
1127   PFNGLNAMEDRENDERBUFFERSTORAGEPROC                 glNamedRenderbufferStorage;
1128   PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC      glNamedRenderbufferStorageMultisample;
1129   PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC          glGetNamedRenderbufferParameteriv;
1130   PFNGLCREATETEXTURESPROC                           glCreateTextures;
1131   PFNGLTEXTUREBUFFERPROC                            glTextureBuffer;
1132   PFNGLTEXTUREBUFFERRANGEPROC                       glTextureBufferRange;
1133   PFNGLTEXTURESTORAGE1DPROC                         glTextureStorage1D;
1134   PFNGLTEXTURESTORAGE2DPROC                         glTextureStorage2D;
1135   PFNGLTEXTURESTORAGE3DPROC                         glTextureStorage3D;
1136   PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC              glTextureStorage2DMultisample;
1137   PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC              glTextureStorage3DMultisample;
1138   PFNGLTEXTURESUBIMAGE1DPROC                        glTextureSubImage1D;
1139   PFNGLTEXTURESUBIMAGE2DPROC                        glTextureSubImage2D;
1140   PFNGLTEXTURESUBIMAGE3DPROC                        glTextureSubImage3D;
1141   PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC              glCompressedTextureSubImage1D;
1142   PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC              glCompressedTextureSubImage2D;
1143   PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC              glCompressedTextureSubImage3D;
1144   PFNGLCOPYTEXTURESUBIMAGE1DPROC                    glCopyTextureSubImage1D;
1145   PFNGLCOPYTEXTURESUBIMAGE2DPROC                    glCopyTextureSubImage2D;
1146   PFNGLCOPYTEXTURESUBIMAGE3DPROC                    glCopyTextureSubImage3D;
1147   PFNGLTEXTUREPARAMETERFPROC                        glTextureParameterf;
1148   PFNGLTEXTUREPARAMETERFVPROC                       glTextureParameterfv;
1149   PFNGLTEXTUREPARAMETERIPROC                        glTextureParameteri;
1150   PFNGLTEXTUREPARAMETERIIVPROC                      glTextureParameterIiv;
1151   PFNGLTEXTUREPARAMETERIUIVPROC                     glTextureParameterIuiv;
1152   PFNGLTEXTUREPARAMETERIVPROC                       glTextureParameteriv;
1153   PFNGLGENERATETEXTUREMIPMAPPROC                    glGenerateTextureMipmap;
1154   PFNGLBINDTEXTUREUNITPROC                          glBindTextureUnit;
1155   PFNGLGETTEXTUREIMAGEPROC                          glGetTextureImage;
1156   PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC                glGetCompressedTextureImage;
1157   PFNGLGETTEXTURELEVELPARAMETERFVPROC               glGetTextureLevelParameterfv;
1158   PFNGLGETTEXTURELEVELPARAMETERIVPROC               glGetTextureLevelParameteriv;
1159   PFNGLGETTEXTUREPARAMETERFVPROC                    glGetTextureParameterfv;
1160   PFNGLGETTEXTUREPARAMETERIIVPROC                   glGetTextureParameterIiv;
1161   PFNGLGETTEXTUREPARAMETERIUIVPROC                  glGetTextureParameterIuiv;
1162   PFNGLGETTEXTUREPARAMETERIVPROC                    glGetTextureParameteriv;
1163   PFNGLCREATEVERTEXARRAYSPROC                       glCreateVertexArrays;
1164   PFNGLDISABLEVERTEXARRAYATTRIBPROC                 glDisableVertexArrayAttrib;
1165   PFNGLENABLEVERTEXARRAYATTRIBPROC                  glEnableVertexArrayAttrib;
1166   PFNGLVERTEXARRAYELEMENTBUFFERPROC                 glVertexArrayElementBuffer;
1167   PFNGLVERTEXARRAYVERTEXBUFFERPROC                  glVertexArrayVertexBuffer;
1168   PFNGLVERTEXARRAYVERTEXBUFFERSPROC                 glVertexArrayVertexBuffers;
1169   PFNGLVERTEXARRAYATTRIBBINDINGPROC                 glVertexArrayAttribBinding;
1170   PFNGLVERTEXARRAYATTRIBFORMATPROC                  glVertexArrayAttribFormat;
1171   PFNGLVERTEXARRAYATTRIBIFORMATPROC                 glVertexArrayAttribIFormat;
1172   PFNGLVERTEXARRAYATTRIBLFORMATPROC                 glVertexArrayAttribLFormat;
1173   PFNGLVERTEXARRAYBINDINGDIVISORPROC                glVertexArrayBindingDivisor;
1174   PFNGLGETVERTEXARRAYIVPROC                         glGetVertexArrayiv;
1175   PFNGLGETVERTEXARRAYINDEXEDIVPROC                  glGetVertexArrayIndexediv;
1176   PFNGLGETVERTEXARRAYINDEXED64IVPROC                glGetVertexArrayIndexed64iv;
1177   PFNGLCREATESAMPLERSPROC                           glCreateSamplers;
1178   PFNGLCREATEPROGRAMPIPELINESPROC                   glCreateProgramPipelines;
1179   PFNGLCREATEQUERIESPROC                            glCreateQueries;
1180   PFNGLGETQUERYBUFFEROBJECTI64VPROC                 glGetQueryBufferObjecti64v;
1181   PFNGLGETQUERYBUFFEROBJECTIVPROC                   glGetQueryBufferObjectiv;
1182   PFNGLGETQUERYBUFFEROBJECTUI64VPROC                glGetQueryBufferObjectui64v;
1183   PFNGLGETQUERYBUFFEROBJECTUIVPROC                  glGetQueryBufferObjectuiv;
1184   PFNGLMEMORYBARRIERBYREGIONPROC                    glMemoryBarrierByRegion;
1185   PFNGLGETTEXTURESUBIMAGEPROC                       glGetTextureSubImage;
1186   PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC             glGetCompressedTextureSubImage;
1187   PFNGLGETGRAPHICSRESETSTATUSPROC                   glGetGraphicsResetStatus;
1188   PFNGLGETNCOMPRESSEDTEXIMAGEPROC                   glGetnCompressedTexImage;
1189   PFNGLGETNTEXIMAGEPROC                             glGetnTexImage;
1190   PFNGLGETNUNIFORMDVPROC                            glGetnUniformdv;
1191   PFNGLGETNUNIFORMFVPROC                            glGetnUniformfv;
1192   PFNGLGETNUNIFORMIVPROC                            glGetnUniformiv;
1193   PFNGLGETNUNIFORMUIVPROC                           glGetnUniformuiv;
1194   PFNGLREADNPIXELSPROC                              glReadnPixels;
1195   PFNGLTEXTUREBARRIERPROC                           glTextureBarrier;
1196 
1197 public: //! @name OpenGL 4.6
1198   PFNGLSPECIALIZESHADERPROC               glSpecializeShader;
1199   PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC   glMultiDrawArraysIndirectCount;
1200   PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glMultiDrawElementsIndirectCount;
1201   PFNGLPOLYGONOFFSETCLAMPPROC             glPolygonOffsetClamp;
1202 
1203 public: //! @name GL_EXT_geometry_shader4
1204   PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;
1205 
1206 public: //! @name GL_ARB_bindless_texture
1207   PFNGLGETTEXTUREHANDLEARBPROC             glGetTextureHandleARB;
1208   PFNGLGETTEXTURESAMPLERHANDLEARBPROC      glGetTextureSamplerHandleARB;
1209   PFNGLMAKETEXTUREHANDLERESIDENTARBPROC    glMakeTextureHandleResidentARB;
1210   PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
1211   PFNGLGETIMAGEHANDLEARBPROC               glGetImageHandleARB;
1212   PFNGLMAKEIMAGEHANDLERESIDENTARBPROC      glMakeImageHandleResidentARB;
1213   PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC   glMakeImageHandleNonResidentARB;
1214   PFNGLUNIFORMHANDLEUI64ARBPROC            glUniformHandleui64ARB;
1215   PFNGLUNIFORMHANDLEUI64VARBPROC           glUniformHandleui64vARB;
1216   PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC     glProgramUniformHandleui64ARB;
1217   PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC    glProgramUniformHandleui64vARB;
1218   PFNGLISTEXTUREHANDLERESIDENTARBPROC      glIsTextureHandleResidentARB;
1219   PFNGLISIMAGEHANDLERESIDENTARBPROC        glIsImageHandleResidentARB;
1220   PFNGLVERTEXATTRIBL1UI64ARBPROC           glVertexAttribL1ui64ARB;
1221   PFNGLVERTEXATTRIBL1UI64VARBPROC          glVertexAttribL1ui64vARB;
1222   PFNGLGETVERTEXATTRIBLUI64VARBPROC        glGetVertexAttribLui64vARB;
1223 
1224 #if defined(_WIN32)
1225 public: //! @name wgl extensions
1226   typedef const char*(WINAPI* wglGetExtensionsStringARB_t)(HDC theDeviceContext);
1227   wglGetExtensionsStringARB_t wglGetExtensionsStringARB;
1228 
1229   typedef BOOL(WINAPI* wglSwapIntervalEXT_t)(int theInterval);
1230   wglSwapIntervalEXT_t wglSwapIntervalEXT;
1231 
1232     // WGL_ARB_pixel_format
1233 
1234   #ifndef WGL_NUMBER_PIXEL_FORMATS_ARB
1235     #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
1236     #define WGL_DRAW_TO_WINDOW_ARB 0x2001
1237     #define WGL_DRAW_TO_BITMAP_ARB 0x2002
1238     #define WGL_ACCELERATION_ARB 0x2003
1239     #define WGL_NEED_PALETTE_ARB 0x2004
1240     #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
1241     #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
1242     #define WGL_SWAP_METHOD_ARB 0x2007
1243     #define WGL_NUMBER_OVERLAYS_ARB 0x2008
1244     #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
1245     #define WGL_TRANSPARENT_ARB 0x200A
1246     #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
1247     #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
1248     #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
1249     #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
1250     #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
1251     #define WGL_SHARE_DEPTH_ARB 0x200C
1252     #define WGL_SHARE_STENCIL_ARB 0x200D
1253     #define WGL_SHARE_ACCUM_ARB 0x200E
1254     #define WGL_SUPPORT_GDI_ARB 0x200F
1255     #define WGL_SUPPORT_OPENGL_ARB 0x2010
1256     #define WGL_DOUBLE_BUFFER_ARB 0x2011
1257     #define WGL_STEREO_ARB 0x2012
1258     #define WGL_PIXEL_TYPE_ARB 0x2013
1259     #define WGL_COLOR_BITS_ARB 0x2014
1260     #define WGL_RED_BITS_ARB 0x2015
1261     #define WGL_RED_SHIFT_ARB 0x2016
1262     #define WGL_GREEN_BITS_ARB 0x2017
1263     #define WGL_GREEN_SHIFT_ARB 0x2018
1264     #define WGL_BLUE_BITS_ARB 0x2019
1265     #define WGL_BLUE_SHIFT_ARB 0x201A
1266     #define WGL_ALPHA_BITS_ARB 0x201B
1267     #define WGL_ALPHA_SHIFT_ARB 0x201C
1268     #define WGL_ACCUM_BITS_ARB 0x201D
1269     #define WGL_ACCUM_RED_BITS_ARB 0x201E
1270     #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
1271     #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
1272     #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
1273     #define WGL_DEPTH_BITS_ARB 0x2022
1274     #define WGL_STENCIL_BITS_ARB 0x2023
1275     #define WGL_AUX_BUFFERS_ARB 0x2024
1276 
1277     #define WGL_NO_ACCELERATION_ARB 0x2025
1278     #define WGL_GENERIC_ACCELERATION_ARB 0x2026
1279     #define WGL_FULL_ACCELERATION_ARB 0x2027
1280 
1281     #define WGL_SWAP_EXCHANGE_ARB 0x2028
1282     #define WGL_SWAP_COPY_ARB 0x2029
1283     #define WGL_SWAP_UNDEFINED_ARB 0x202A
1284 
1285     #define WGL_TYPE_RGBA_ARB 0x202B
1286     #define WGL_TYPE_COLORINDEX_ARB 0x202C
1287 
1288   #endif // WGL_NUMBER_PIXEL_FORMATS_ARB
1289 
1290     // WGL_ARB_multisample
1291   #ifndef WGL_SAMPLE_BUFFERS_ARB
1292     #define WGL_SAMPLE_BUFFERS_ARB 0x2041
1293     #define WGL_SAMPLES_ARB 0x2042
1294   #endif
1295 
1296     // WGL_ARB_create_context_robustness
1297   #ifndef WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB
1298     #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
1299     #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
1300     #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
1301     #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
1302   #endif
1303 
1304   typedef BOOL(WINAPI* wglChoosePixelFormatARB_t)(HDC           theDevCtx,
1305                                                   const int*    theIntAttribs,
1306                                                   const float*  theFloatAttribs,
1307                                                   unsigned int  theMaxFormats,
1308                                                   int*          theFormatsOut,
1309                                                   unsigned int* theNumFormatsOut);
1310   wglChoosePixelFormatARB_t wglChoosePixelFormatARB;
1311 
1312     // WGL_ARB_create_context_profile
1313 
1314   #ifndef WGL_CONTEXT_MAJOR_VERSION_ARB
1315     #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
1316     #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
1317     #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
1318     #define WGL_CONTEXT_FLAGS_ARB 0x2094
1319     #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
1320 
1321     // WGL_CONTEXT_FLAGS bits
1322     #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
1323     #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
1324 
1325     // WGL_CONTEXT_PROFILE_MASK_ARB bits
1326     #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
1327     #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
1328   #endif // WGL_CONTEXT_MAJOR_VERSION_ARB
1329 
1330   typedef HGLRC(WINAPI* wglCreateContextAttribsARB_t)(HDC        theDevCtx,
1331                                                       HGLRC      theShareContext,
1332                                                       const int* theAttribs);
1333   wglCreateContextAttribsARB_t wglCreateContextAttribsARB;
1334 
1335   // WGL_NV_DX_interop
1336 
1337   typedef BOOL(WINAPI* wglDXSetResourceShareHandleNV_t)(void* theObjectD3d, HANDLE theShareHandle);
1338   typedef HANDLE(WINAPI* wglDXOpenDeviceNV_t)(void* theDeviceD3d);
1339   typedef BOOL(WINAPI* wglDXCloseDeviceNV_t)(HANDLE theDeviceIOP);
1340   typedef HANDLE(WINAPI* wglDXRegisterObjectNV_t)(HANDLE theDeviceIOP,
1341                                                   void*  theObjectD3d,
1342                                                   GLuint theName,
1343                                                   GLenum theType,
1344                                                   GLenum theAccess);
1345   typedef BOOL(WINAPI* wglDXUnregisterObjectNV_t)(HANDLE theDeviceIOP, HANDLE theObject);
1346   typedef BOOL(WINAPI* wglDXObjectAccessNV_t)(HANDLE theObject, GLenum theAccess);
1347   typedef BOOL(WINAPI* wglDXLockObjectsNV_t)(HANDLE  theDeviceIOP,
1348                                              GLint   theCount,
1349                                              HANDLE* theObjects);
1350   typedef BOOL(WINAPI* wglDXUnlockObjectsNV_t)(HANDLE  theDeviceIOP,
1351                                                GLint   theCount,
1352                                                HANDLE* theObjects);
1353 
1354   wglDXSetResourceShareHandleNV_t wglDXSetResourceShareHandleNV;
1355   wglDXOpenDeviceNV_t             wglDXOpenDeviceNV;
1356   wglDXCloseDeviceNV_t            wglDXCloseDeviceNV;
1357   wglDXRegisterObjectNV_t         wglDXRegisterObjectNV;
1358   wglDXUnregisterObjectNV_t       wglDXUnregisterObjectNV;
1359   wglDXObjectAccessNV_t           wglDXObjectAccessNV;
1360   wglDXLockObjectsNV_t            wglDXLockObjectsNV;
1361   wglDXUnlockObjectsNV_t          wglDXUnlockObjectsNV;
1362 
1363   #ifndef WGL_ACCESS_READ_WRITE_NV
1364     #define WGL_ACCESS_READ_ONLY_NV 0x0000
1365     #define WGL_ACCESS_READ_WRITE_NV 0x0001
1366     #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
1367   #endif
1368 
1369     // WGL_AMD_gpu_association
1370 
1371   #ifndef WGL_GPU_VENDOR_AMD
1372     #define WGL_GPU_VENDOR_AMD 0x1F00
1373     #define WGL_GPU_RENDERER_STRING_AMD 0x1F01
1374     #define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
1375     #define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
1376     #define WGL_GPU_RAM_AMD 0x21A3
1377     #define WGL_GPU_CLOCK_AMD 0x21A4
1378     #define WGL_GPU_NUM_PIPES_AMD 0x21A5
1379     #define WGL_GPU_NUM_SIMD_AMD 0x21A6
1380     #define WGL_GPU_NUM_RB_AMD 0x21A7
1381     #define WGL_GPU_NUM_SPI_AMD 0x21A8
1382   #endif
1383 
1384   typedef UINT(WINAPI* wglGetGPUIDsAMD_t)(UINT theMaxCount, UINT* theIds);
1385   typedef INT(WINAPI* wglGetGPUInfoAMD_t)(UINT   theId,
1386                                           INT    theProperty,
1387                                           GLenum theDataType,
1388                                           UINT   theSize,
1389                                           void*  theData);
1390   typedef UINT(WINAPI* wglGetContextGPUIDAMD_t)(HGLRC theHglrc);
1391   wglGetGPUIDsAMD_t       wglGetGPUIDsAMD;
1392   wglGetGPUInfoAMD_t      wglGetGPUInfoAMD;
1393   wglGetContextGPUIDAMD_t wglGetContextGPUIDAMD;
1394 
1395 #elif defined(__APPLE__)
1396 public: //! @name CGL extensions
1397 
1398 #else
1399 public: //! @name glX extensions
1400   // GLX_EXT_swap_control
1401   // typedef int         (*glXSwapIntervalEXT_t)(Display* theDisplay, GLXDrawable theDrawable, int
1402   // theInterval);
1403   typedef int (*glXSwapIntervalEXT_t)();
1404   glXSwapIntervalEXT_t glXSwapIntervalEXT;
1405 
1406   typedef int (*glXSwapIntervalSGI_t)(int theInterval);
1407   glXSwapIntervalSGI_t glXSwapIntervalSGI;
1408 
1409     // GLX_MESA_query_renderer
1410   #ifndef GLX_RENDERER_VENDOR_ID_MESA
1411     // for glXQueryRendererIntegerMESA() and glXQueryCurrentRendererIntegerMESA()
1412     #define GLX_RENDERER_VENDOR_ID_MESA 0x8183
1413     #define GLX_RENDERER_DEVICE_ID_MESA 0x8184
1414     #define GLX_RENDERER_VERSION_MESA 0x8185
1415     #define GLX_RENDERER_ACCELERATED_MESA 0x8186
1416     #define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
1417     #define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
1418     #define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
1419     #define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
1420     #define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
1421     #define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
1422     #define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
1423 
1424     #define GLX_RENDERER_ID_MESA 0x818E
1425   #endif // GLX_RENDERER_VENDOR_ID_MESA
1426 
1427   typedef int (*glXQueryRendererIntegerMESA_t)(Aspect_XDisplay* theDisplay,
1428                                                int              theScreen,
1429                                                int              theRenderer,
1430                                                int              theAttribute,
1431                                                unsigned int*    theValue);
1432   typedef int (*glXQueryCurrentRendererIntegerMESA_t)(int theAttribute, unsigned int* theValue);
1433   typedef const char* (*glXQueryRendererStringMESA_t)(Aspect_XDisplay* theDisplay,
1434                                                       int              theScreen,
1435                                                       int              theRenderer,
1436                                                       int              theAttribute);
1437   typedef const char* (*glXQueryCurrentRendererStringMESA_t)(int theAttribute);
1438 
1439   glXQueryRendererIntegerMESA_t        glXQueryRendererIntegerMESA;
1440   glXQueryCurrentRendererIntegerMESA_t glXQueryCurrentRendererIntegerMESA;
1441   glXQueryRendererStringMESA_t         glXQueryRendererStringMESA;
1442   glXQueryCurrentRendererStringMESA_t  glXQueryCurrentRendererStringMESA;
1443 #endif
1444 };
1445 
1446 #endif // _OpenGl_GlFunctions_Header