Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-25 08:30:14

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