2509 lines
109 KiB
C++
2509 lines
109 KiB
C++
// Copyright 2013 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#include <sstream>
|
|
#include <unordered_map>
|
|
|
|
#include "Common/GL/GLContext.h"
|
|
#include "Common/GL/GLExtensions/GLExtensions.h"
|
|
#include "Common/Logging/Log.h"
|
|
|
|
#if defined(__linux__) || defined(__APPLE__)
|
|
#include <dlfcn.h>
|
|
#endif
|
|
|
|
// gl_1_1
|
|
PFNDOLCLEARINDEXPROC dolClearIndex;
|
|
PFNDOLCLEARCOLORPROC dolClearColor;
|
|
PFNDOLCLEARPROC dolClear;
|
|
PFNDOLINDEXMASKPROC dolIndexMask;
|
|
PFNDOLCOLORMASKPROC dolColorMask;
|
|
PFNDOLALPHAFUNCPROC dolAlphaFunc;
|
|
PFNDOLBLENDFUNCPROC dolBlendFunc;
|
|
PFNDOLLOGICOPPROC dolLogicOp;
|
|
PFNDOLCULLFACEPROC dolCullFace;
|
|
PFNDOLFRONTFACEPROC dolFrontFace;
|
|
PFNDOLPOINTSIZEPROC dolPointSize;
|
|
PFNDOLLINEWIDTHPROC dolLineWidth;
|
|
PFNDOLLINESTIPPLEPROC dolLineStipple;
|
|
PFNDOLPOLYGONMODEPROC dolPolygonMode;
|
|
PFNDOLPOLYGONOFFSETPROC dolPolygonOffset;
|
|
PFNDOLPOLYGONSTIPPLEPROC dolPolygonStipple;
|
|
PFNDOLGETPOLYGONSTIPPLEPROC dolGetPolygonStipple;
|
|
PFNDOLEDGEFLAGPROC dolEdgeFlag;
|
|
PFNDOLEDGEFLAGVPROC dolEdgeFlagv;
|
|
PFNDOLSCISSORPROC dolScissor;
|
|
PFNDOLCLIPPLANEPROC dolClipPlane;
|
|
PFNDOLGETCLIPPLANEPROC dolGetClipPlane;
|
|
PFNDOLDRAWBUFFERPROC dolDrawBuffer;
|
|
PFNDOLREADBUFFERPROC dolReadBuffer;
|
|
PFNDOLENABLEPROC dolEnable;
|
|
PFNDOLDISABLEPROC dolDisable;
|
|
PFNDOLISENABLEDPROC dolIsEnabled;
|
|
PFNDOLENABLECLIENTSTATEPROC dolEnableClientState;
|
|
PFNDOLDISABLECLIENTSTATEPROC dolDisableClientState;
|
|
PFNDOLGETBOOLEANVPROC dolGetBooleanv;
|
|
PFNDOLGETDOUBLEVPROC dolGetDoublev;
|
|
PFNDOLGETFLOATVPROC dolGetFloatv;
|
|
PFNDOLGETINTEGERVPROC dolGetIntegerv;
|
|
PFNDOLPUSHATTRIBPROC dolPushAttrib;
|
|
PFNDOLPOPATTRIBPROC dolPopAttrib;
|
|
PFNDOLPUSHCLIENTATTRIBPROC dolPushClientAttrib;
|
|
PFNDOLPOPCLIENTATTRIBPROC dolPopClientAttrib;
|
|
PFNDOLRENDERMODEPROC dolRenderMode;
|
|
PFNDOLGETERRORPROC dolGetError;
|
|
PFNDOLGETSTRINGPROC dolGetString;
|
|
PFNDOLFINISHPROC dolFinish;
|
|
PFNDOLFLUSHPROC dolFlush;
|
|
PFNDOLHINTPROC dolHint;
|
|
PFNDOLCLEARDEPTHPROC dolClearDepth;
|
|
PFNDOLDEPTHFUNCPROC dolDepthFunc;
|
|
PFNDOLDEPTHMASKPROC dolDepthMask;
|
|
PFNDOLDEPTHRANGEPROC dolDepthRange;
|
|
PFNDOLCLEARACCUMPROC dolClearAccum;
|
|
PFNDOLACCUMPROC dolAccum;
|
|
PFNDOLMATRIXMODEPROC dolMatrixMode;
|
|
PFNDOLORTHOPROC dolOrtho;
|
|
PFNDOLFRUSTUMPROC dolFrustum;
|
|
PFNDOLVIEWPORTPROC dolViewport;
|
|
PFNDOLPUSHMATRIXPROC dolPushMatrix;
|
|
PFNDOLPOPMATRIXPROC dolPopMatrix;
|
|
PFNDOLLOADIDENTITYPROC dolLoadIdentity;
|
|
PFNDOLLOADMATRIXDPROC dolLoadMatrixd;
|
|
PFNDOLLOADMATRIXFPROC dolLoadMatrixf;
|
|
PFNDOLMULTMATRIXDPROC dolMultMatrixd;
|
|
PFNDOLMULTMATRIXFPROC dolMultMatrixf;
|
|
PFNDOLROTATEDPROC dolRotated;
|
|
PFNDOLROTATEFPROC dolRotatef;
|
|
PFNDOLSCALEDPROC dolScaled;
|
|
PFNDOLSCALEFPROC dolScalef;
|
|
PFNDOLTRANSLATEDPROC dolTranslated;
|
|
PFNDOLTRANSLATEFPROC dolTranslatef;
|
|
PFNDOLISLISTPROC dolIsList;
|
|
PFNDOLDELETELISTSPROC dolDeleteLists;
|
|
PFNDOLGENLISTSPROC dolGenLists;
|
|
PFNDOLNEWLISTPROC dolNewList;
|
|
PFNDOLENDLISTPROC dolEndList;
|
|
PFNDOLCALLLISTPROC dolCallList;
|
|
PFNDOLCALLLISTSPROC dolCallLists;
|
|
PFNDOLLISTBASEPROC dolListBase;
|
|
PFNDOLBEGINPROC dolBegin;
|
|
PFNDOLENDPROC dolEnd;
|
|
PFNDOLVERTEX2DPROC dolVertex2d;
|
|
PFNDOLVERTEX2FPROC dolVertex2f;
|
|
PFNDOLVERTEX2IPROC dolVertex2i;
|
|
PFNDOLVERTEX2SPROC dolVertex2s;
|
|
PFNDOLVERTEX3DPROC dolVertex3d;
|
|
PFNDOLVERTEX3FPROC dolVertex3f;
|
|
PFNDOLVERTEX3IPROC dolVertex3i;
|
|
PFNDOLVERTEX3SPROC dolVertex3s;
|
|
PFNDOLVERTEX4DPROC dolVertex4d;
|
|
PFNDOLVERTEX4FPROC dolVertex4f;
|
|
PFNDOLVERTEX4IPROC dolVertex4i;
|
|
PFNDOLVERTEX4SPROC dolVertex4s;
|
|
PFNDOLVERTEX2DVPROC dolVertex2dv;
|
|
PFNDOLVERTEX2FVPROC dolVertex2fv;
|
|
PFNDOLVERTEX2IVPROC dolVertex2iv;
|
|
PFNDOLVERTEX2SVPROC dolVertex2sv;
|
|
PFNDOLVERTEX3DVPROC dolVertex3dv;
|
|
PFNDOLVERTEX3FVPROC dolVertex3fv;
|
|
PFNDOLVERTEX3IVPROC dolVertex3iv;
|
|
PFNDOLVERTEX3SVPROC dolVertex3sv;
|
|
PFNDOLVERTEX4DVPROC dolVertex4dv;
|
|
PFNDOLVERTEX4FVPROC dolVertex4fv;
|
|
PFNDOLVERTEX4IVPROC dolVertex4iv;
|
|
PFNDOLVERTEX4SVPROC dolVertex4sv;
|
|
PFNDOLNORMAL3BPROC dolNormal3b;
|
|
PFNDOLNORMAL3DPROC dolNormal3d;
|
|
PFNDOLNORMAL3FPROC dolNormal3f;
|
|
PFNDOLNORMAL3IPROC dolNormal3i;
|
|
PFNDOLNORMAL3SPROC dolNormal3s;
|
|
PFNDOLNORMAL3BVPROC dolNormal3bv;
|
|
PFNDOLNORMAL3DVPROC dolNormal3dv;
|
|
PFNDOLNORMAL3FVPROC dolNormal3fv;
|
|
PFNDOLNORMAL3IVPROC dolNormal3iv;
|
|
PFNDOLNORMAL3SVPROC dolNormal3sv;
|
|
PFNDOLINDEXDPROC dolIndexd;
|
|
PFNDOLINDEXFPROC dolIndexf;
|
|
PFNDOLINDEXIPROC dolIndexi;
|
|
PFNDOLINDEXSPROC dolIndexs;
|
|
PFNDOLINDEXUBPROC dolIndexub;
|
|
PFNDOLINDEXDVPROC dolIndexdv;
|
|
PFNDOLINDEXFVPROC dolIndexfv;
|
|
PFNDOLINDEXIVPROC dolIndexiv;
|
|
PFNDOLINDEXSVPROC dolIndexsv;
|
|
PFNDOLINDEXUBVPROC dolIndexubv;
|
|
PFNDOLCOLOR3BPROC dolColor3b;
|
|
PFNDOLCOLOR3DPROC dolColor3d;
|
|
PFNDOLCOLOR3FPROC dolColor3f;
|
|
PFNDOLCOLOR3IPROC dolColor3i;
|
|
PFNDOLCOLOR3SPROC dolColor3s;
|
|
PFNDOLCOLOR3UBPROC dolColor3ub;
|
|
PFNDOLCOLOR3UIPROC dolColor3ui;
|
|
PFNDOLCOLOR3USPROC dolColor3us;
|
|
PFNDOLCOLOR4BPROC dolColor4b;
|
|
PFNDOLCOLOR4DPROC dolColor4d;
|
|
PFNDOLCOLOR4FPROC dolColor4f;
|
|
PFNDOLCOLOR4IPROC dolColor4i;
|
|
PFNDOLCOLOR4SPROC dolColor4s;
|
|
PFNDOLCOLOR4UBPROC dolColor4ub;
|
|
PFNDOLCOLOR4UIPROC dolColor4ui;
|
|
PFNDOLCOLOR4USPROC dolColor4us;
|
|
PFNDOLCOLOR3BVPROC dolColor3bv;
|
|
PFNDOLCOLOR3DVPROC dolColor3dv;
|
|
PFNDOLCOLOR3FVPROC dolColor3fv;
|
|
PFNDOLCOLOR3IVPROC dolColor3iv;
|
|
PFNDOLCOLOR3SVPROC dolColor3sv;
|
|
PFNDOLCOLOR3UBVPROC dolColor3ubv;
|
|
PFNDOLCOLOR3UIVPROC dolColor3uiv;
|
|
PFNDOLCOLOR3USVPROC dolColor3usv;
|
|
PFNDOLCOLOR4BVPROC dolColor4bv;
|
|
PFNDOLCOLOR4DVPROC dolColor4dv;
|
|
PFNDOLCOLOR4FVPROC dolColor4fv;
|
|
PFNDOLCOLOR4IVPROC dolColor4iv;
|
|
PFNDOLCOLOR4SVPROC dolColor4sv;
|
|
PFNDOLCOLOR4UBVPROC dolColor4ubv;
|
|
PFNDOLCOLOR4UIVPROC dolColor4uiv;
|
|
PFNDOLCOLOR4USVPROC dolColor4usv;
|
|
PFNDOLTEXCOORD1DPROC dolTexCoord1d;
|
|
PFNDOLTEXCOORD1FPROC dolTexCoord1f;
|
|
PFNDOLTEXCOORD1IPROC dolTexCoord1i;
|
|
PFNDOLTEXCOORD1SPROC dolTexCoord1s;
|
|
PFNDOLTEXCOORD2DPROC dolTexCoord2d;
|
|
PFNDOLTEXCOORD2FPROC dolTexCoord2f;
|
|
PFNDOLTEXCOORD2IPROC dolTexCoord2i;
|
|
PFNDOLTEXCOORD2SPROC dolTexCoord2s;
|
|
PFNDOLTEXCOORD3DPROC dolTexCoord3d;
|
|
PFNDOLTEXCOORD3FPROC dolTexCoord3f;
|
|
PFNDOLTEXCOORD3IPROC dolTexCoord3i;
|
|
PFNDOLTEXCOORD3SPROC dolTexCoord3s;
|
|
PFNDOLTEXCOORD4DPROC dolTexCoord4d;
|
|
PFNDOLTEXCOORD4FPROC dolTexCoord4f;
|
|
PFNDOLTEXCOORD4IPROC dolTexCoord4i;
|
|
PFNDOLTEXCOORD4SPROC dolTexCoord4s;
|
|
PFNDOLTEXCOORD1DVPROC dolTexCoord1dv;
|
|
PFNDOLTEXCOORD1FVPROC dolTexCoord1fv;
|
|
PFNDOLTEXCOORD1IVPROC dolTexCoord1iv;
|
|
PFNDOLTEXCOORD1SVPROC dolTexCoord1sv;
|
|
PFNDOLTEXCOORD2DVPROC dolTexCoord2dv;
|
|
PFNDOLTEXCOORD2FVPROC dolTexCoord2fv;
|
|
PFNDOLTEXCOORD2IVPROC dolTexCoord2iv;
|
|
PFNDOLTEXCOORD2SVPROC dolTexCoord2sv;
|
|
PFNDOLTEXCOORD3DVPROC dolTexCoord3dv;
|
|
PFNDOLTEXCOORD3FVPROC dolTexCoord3fv;
|
|
PFNDOLTEXCOORD3IVPROC dolTexCoord3iv;
|
|
PFNDOLTEXCOORD3SVPROC dolTexCoord3sv;
|
|
PFNDOLTEXCOORD4DVPROC dolTexCoord4dv;
|
|
PFNDOLTEXCOORD4FVPROC dolTexCoord4fv;
|
|
PFNDOLTEXCOORD4IVPROC dolTexCoord4iv;
|
|
PFNDOLTEXCOORD4SVPROC dolTexCoord4sv;
|
|
PFNDOLRASTERPOS2DPROC dolRasterPos2d;
|
|
PFNDOLRASTERPOS2FPROC dolRasterPos2f;
|
|
PFNDOLRASTERPOS2IPROC dolRasterPos2i;
|
|
PFNDOLRASTERPOS2SPROC dolRasterPos2s;
|
|
PFNDOLRASTERPOS3DPROC dolRasterPos3d;
|
|
PFNDOLRASTERPOS3FPROC dolRasterPos3f;
|
|
PFNDOLRASTERPOS3IPROC dolRasterPos3i;
|
|
PFNDOLRASTERPOS3SPROC dolRasterPos3s;
|
|
PFNDOLRASTERPOS4DPROC dolRasterPos4d;
|
|
PFNDOLRASTERPOS4FPROC dolRasterPos4f;
|
|
PFNDOLRASTERPOS4IPROC dolRasterPos4i;
|
|
PFNDOLRASTERPOS4SPROC dolRasterPos4s;
|
|
PFNDOLRASTERPOS2DVPROC dolRasterPos2dv;
|
|
PFNDOLRASTERPOS2FVPROC dolRasterPos2fv;
|
|
PFNDOLRASTERPOS2IVPROC dolRasterPos2iv;
|
|
PFNDOLRASTERPOS2SVPROC dolRasterPos2sv;
|
|
PFNDOLRASTERPOS3DVPROC dolRasterPos3dv;
|
|
PFNDOLRASTERPOS3FVPROC dolRasterPos3fv;
|
|
PFNDOLRASTERPOS3IVPROC dolRasterPos3iv;
|
|
PFNDOLRASTERPOS3SVPROC dolRasterPos3sv;
|
|
PFNDOLRASTERPOS4DVPROC dolRasterPos4dv;
|
|
PFNDOLRASTERPOS4FVPROC dolRasterPos4fv;
|
|
PFNDOLRASTERPOS4IVPROC dolRasterPos4iv;
|
|
PFNDOLRASTERPOS4SVPROC dolRasterPos4sv;
|
|
PFNDOLRECTDPROC dolRectd;
|
|
PFNDOLRECTFPROC dolRectf;
|
|
PFNDOLRECTIPROC dolRecti;
|
|
PFNDOLRECTSPROC dolRects;
|
|
PFNDOLRECTDVPROC dolRectdv;
|
|
PFNDOLRECTFVPROC dolRectfv;
|
|
PFNDOLRECTIVPROC dolRectiv;
|
|
PFNDOLRECTSVPROC dolRectsv;
|
|
PFNDOLVERTEXPOINTERPROC dolVertexPointer;
|
|
PFNDOLNORMALPOINTERPROC dolNormalPointer;
|
|
PFNDOLCOLORPOINTERPROC dolColorPointer;
|
|
PFNDOLINDEXPOINTERPROC dolIndexPointer;
|
|
PFNDOLTEXCOORDPOINTERPROC dolTexCoordPointer;
|
|
PFNDOLEDGEFLAGPOINTERPROC dolEdgeFlagPointer;
|
|
PFNDOLGETPOINTERVPROC dolGetPointerv;
|
|
PFNDOLARRAYELEMENTPROC dolArrayElement;
|
|
PFNDOLDRAWARRAYSPROC dolDrawArrays;
|
|
PFNDOLDRAWELEMENTSPROC dolDrawElements;
|
|
PFNDOLINTERLEAVEDARRAYSPROC dolInterleavedArrays;
|
|
PFNDOLSHADEMODELPROC dolShadeModel;
|
|
PFNDOLLIGHTFPROC dolLightf;
|
|
PFNDOLLIGHTIPROC dolLighti;
|
|
PFNDOLLIGHTFVPROC dolLightfv;
|
|
PFNDOLLIGHTIVPROC dolLightiv;
|
|
PFNDOLGETLIGHTFVPROC dolGetLightfv;
|
|
PFNDOLGETLIGHTIVPROC dolGetLightiv;
|
|
PFNDOLLIGHTMODELFPROC dolLightModelf;
|
|
PFNDOLLIGHTMODELIPROC dolLightModeli;
|
|
PFNDOLLIGHTMODELFVPROC dolLightModelfv;
|
|
PFNDOLLIGHTMODELIVPROC dolLightModeliv;
|
|
PFNDOLMATERIALFPROC dolMaterialf;
|
|
PFNDOLMATERIALIPROC dolMateriali;
|
|
PFNDOLMATERIALFVPROC dolMaterialfv;
|
|
PFNDOLMATERIALIVPROC dolMaterialiv;
|
|
PFNDOLGETMATERIALFVPROC dolGetMaterialfv;
|
|
PFNDOLGETMATERIALIVPROC dolGetMaterialiv;
|
|
PFNDOLCOLORMATERIALPROC dolColorMaterial;
|
|
PFNDOLPIXELZOOMPROC dolPixelZoom;
|
|
PFNDOLPIXELSTOREFPROC dolPixelStoref;
|
|
PFNDOLPIXELSTOREIPROC dolPixelStorei;
|
|
PFNDOLPIXELTRANSFERFPROC dolPixelTransferf;
|
|
PFNDOLPIXELTRANSFERIPROC dolPixelTransferi;
|
|
PFNDOLPIXELMAPFVPROC dolPixelMapfv;
|
|
PFNDOLPIXELMAPUIVPROC dolPixelMapuiv;
|
|
PFNDOLPIXELMAPUSVPROC dolPixelMapusv;
|
|
PFNDOLGETPIXELMAPFVPROC dolGetPixelMapfv;
|
|
PFNDOLGETPIXELMAPUIVPROC dolGetPixelMapuiv;
|
|
PFNDOLGETPIXELMAPUSVPROC dolGetPixelMapusv;
|
|
PFNDOLBITMAPPROC dolBitmap;
|
|
PFNDOLREADPIXELSPROC dolReadPixels;
|
|
PFNDOLDRAWPIXELSPROC dolDrawPixels;
|
|
PFNDOLCOPYPIXELSPROC dolCopyPixels;
|
|
PFNDOLSTENCILFUNCPROC dolStencilFunc;
|
|
PFNDOLSTENCILMASKPROC dolStencilMask;
|
|
PFNDOLSTENCILOPPROC dolStencilOp;
|
|
PFNDOLCLEARSTENCILPROC dolClearStencil;
|
|
PFNDOLTEXGENDPROC dolTexGend;
|
|
PFNDOLTEXGENFPROC dolTexGenf;
|
|
PFNDOLTEXGENIPROC dolTexGeni;
|
|
PFNDOLTEXGENDVPROC dolTexGendv;
|
|
PFNDOLTEXGENFVPROC dolTexGenfv;
|
|
PFNDOLTEXGENIVPROC dolTexGeniv;
|
|
PFNDOLGETTEXGENDVPROC dolGetTexGendv;
|
|
PFNDOLGETTEXGENFVPROC dolGetTexGenfv;
|
|
PFNDOLGETTEXGENIVPROC dolGetTexGeniv;
|
|
PFNDOLTEXENVFPROC dolTexEnvf;
|
|
PFNDOLTEXENVIPROC dolTexEnvi;
|
|
PFNDOLTEXENVFVPROC dolTexEnvfv;
|
|
PFNDOLTEXENVIVPROC dolTexEnviv;
|
|
PFNDOLGETTEXENVFVPROC dolGetTexEnvfv;
|
|
PFNDOLGETTEXENVIVPROC dolGetTexEnviv;
|
|
PFNDOLTEXPARAMETERFPROC dolTexParameterf;
|
|
PFNDOLTEXPARAMETERIPROC dolTexParameteri;
|
|
PFNDOLTEXPARAMETERFVPROC dolTexParameterfv;
|
|
PFNDOLTEXPARAMETERIVPROC dolTexParameteriv;
|
|
PFNDOLGETTEXPARAMETERFVPROC dolGetTexParameterfv;
|
|
PFNDOLGETTEXPARAMETERIVPROC dolGetTexParameteriv;
|
|
PFNDOLGETTEXLEVELPARAMETERFVPROC dolGetTexLevelParameterfv;
|
|
PFNDOLGETTEXLEVELPARAMETERIVPROC dolGetTexLevelParameteriv;
|
|
PFNDOLTEXIMAGE1DPROC dolTexImage1D;
|
|
PFNDOLTEXIMAGE2DPROC dolTexImage2D;
|
|
PFNDOLGETTEXIMAGEPROC dolGetTexImage;
|
|
PFNDOLGENTEXTURESPROC dolGenTextures;
|
|
PFNDOLDELETETEXTURESPROC dolDeleteTextures;
|
|
PFNDOLBINDTEXTUREPROC dolBindTexture;
|
|
PFNDOLPRIORITIZETEXTURESPROC dolPrioritizeTextures;
|
|
PFNDOLARETEXTURESRESIDENTPROC dolAreTexturesResident;
|
|
PFNDOLISTEXTUREPROC dolIsTexture;
|
|
PFNDOLTEXSUBIMAGE1DPROC dolTexSubImage1D;
|
|
PFNDOLTEXSUBIMAGE2DPROC dolTexSubImage2D;
|
|
PFNDOLCOPYTEXIMAGE1DPROC dolCopyTexImage1D;
|
|
PFNDOLCOPYTEXIMAGE2DPROC dolCopyTexImage2D;
|
|
PFNDOLCOPYTEXSUBIMAGE1DPROC dolCopyTexSubImage1D;
|
|
PFNDOLCOPYTEXSUBIMAGE2DPROC dolCopyTexSubImage2D;
|
|
PFNDOLMAP1DPROC dolMap1d;
|
|
PFNDOLMAP1FPROC dolMap1f;
|
|
PFNDOLMAP2DPROC dolMap2d;
|
|
PFNDOLMAP2FPROC dolMap2f;
|
|
PFNDOLGETMAPDVPROC dolGetMapdv;
|
|
PFNDOLGETMAPFVPROC dolGetMapfv;
|
|
PFNDOLGETMAPIVPROC dolGetMapiv;
|
|
PFNDOLEVALCOORD1DPROC dolEvalCoord1d;
|
|
PFNDOLEVALCOORD1FPROC dolEvalCoord1f;
|
|
PFNDOLEVALCOORD1DVPROC dolEvalCoord1dv;
|
|
PFNDOLEVALCOORD1FVPROC dolEvalCoord1fv;
|
|
PFNDOLEVALCOORD2DPROC dolEvalCoord2d;
|
|
PFNDOLEVALCOORD2FPROC dolEvalCoord2f;
|
|
PFNDOLEVALCOORD2DVPROC dolEvalCoord2dv;
|
|
PFNDOLEVALCOORD2FVPROC dolEvalCoord2fv;
|
|
PFNDOLMAPGRID1DPROC dolMapGrid1d;
|
|
PFNDOLMAPGRID1FPROC dolMapGrid1f;
|
|
PFNDOLMAPGRID2DPROC dolMapGrid2d;
|
|
PFNDOLMAPGRID2FPROC dolMapGrid2f;
|
|
PFNDOLEVALPOINT1PROC dolEvalPoint1;
|
|
PFNDOLEVALPOINT2PROC dolEvalPoint2;
|
|
PFNDOLEVALMESH1PROC dolEvalMesh1;
|
|
PFNDOLEVALMESH2PROC dolEvalMesh2;
|
|
PFNDOLFOGFPROC dolFogf;
|
|
PFNDOLFOGIPROC dolFogi;
|
|
PFNDOLFOGFVPROC dolFogfv;
|
|
PFNDOLFOGIVPROC dolFogiv;
|
|
PFNDOLFEEDBACKBUFFERPROC dolFeedbackBuffer;
|
|
PFNDOLPASSTHROUGHPROC dolPassThrough;
|
|
PFNDOLSELECTBUFFERPROC dolSelectBuffer;
|
|
PFNDOLINITNAMESPROC dolInitNames;
|
|
PFNDOLLOADNAMEPROC dolLoadName;
|
|
PFNDOLPUSHNAMEPROC dolPushName;
|
|
PFNDOLPOPNAMEPROC dolPopName;
|
|
|
|
// gl_1_2
|
|
PFNDOLCOPYTEXSUBIMAGE3DPROC dolCopyTexSubImage3D;
|
|
PFNDOLDRAWRANGEELEMENTSPROC dolDrawRangeElements;
|
|
PFNDOLTEXIMAGE3DPROC dolTexImage3D;
|
|
PFNDOLTEXSUBIMAGE3DPROC dolTexSubImage3D;
|
|
|
|
// gl_1_3
|
|
PFNDOLACTIVETEXTUREARBPROC dolActiveTexture;
|
|
PFNDOLCLIENTACTIVETEXTUREARBPROC dolClientActiveTexture;
|
|
PFNDOLCOMPRESSEDTEXIMAGE1DPROC dolCompressedTexImage1D;
|
|
PFNDOLCOMPRESSEDTEXIMAGE2DPROC dolCompressedTexImage2D;
|
|
PFNDOLCOMPRESSEDTEXIMAGE3DPROC dolCompressedTexImage3D;
|
|
PFNDOLCOMPRESSEDTEXSUBIMAGE1DPROC dolCompressedTexSubImage1D;
|
|
PFNDOLCOMPRESSEDTEXSUBIMAGE2DPROC dolCompressedTexSubImage2D;
|
|
PFNDOLCOMPRESSEDTEXSUBIMAGE3DPROC dolCompressedTexSubImage3D;
|
|
PFNDOLGETCOMPRESSEDTEXIMAGEPROC dolGetCompressedTexImage;
|
|
PFNDOLLOADTRANSPOSEMATRIXDARBPROC dolLoadTransposeMatrixd;
|
|
PFNDOLLOADTRANSPOSEMATRIXFARBPROC dolLoadTransposeMatrixf;
|
|
PFNDOLMULTTRANSPOSEMATRIXDARBPROC dolMultTransposeMatrixd;
|
|
PFNDOLMULTTRANSPOSEMATRIXFARBPROC dolMultTransposeMatrixf;
|
|
PFNDOLMULTITEXCOORD1DARBPROC dolMultiTexCoord1d;
|
|
PFNDOLMULTITEXCOORD1DVARBPROC dolMultiTexCoord1dv;
|
|
PFNDOLMULTITEXCOORD1FARBPROC dolMultiTexCoord1f;
|
|
PFNDOLMULTITEXCOORD1FVARBPROC dolMultiTexCoord1fv;
|
|
PFNDOLMULTITEXCOORD1IARBPROC dolMultiTexCoord1i;
|
|
PFNDOLMULTITEXCOORD1IVARBPROC dolMultiTexCoord1iv;
|
|
PFNDOLMULTITEXCOORD1SARBPROC dolMultiTexCoord1s;
|
|
PFNDOLMULTITEXCOORD1SVARBPROC dolMultiTexCoord1sv;
|
|
PFNDOLMULTITEXCOORD2DARBPROC dolMultiTexCoord2d;
|
|
PFNDOLMULTITEXCOORD2DVARBPROC dolMultiTexCoord2dv;
|
|
PFNDOLMULTITEXCOORD2FARBPROC dolMultiTexCoord2f;
|
|
PFNDOLMULTITEXCOORD2FVARBPROC dolMultiTexCoord2fv;
|
|
PFNDOLMULTITEXCOORD2IARBPROC dolMultiTexCoord2i;
|
|
PFNDOLMULTITEXCOORD2IVARBPROC dolMultiTexCoord2iv;
|
|
PFNDOLMULTITEXCOORD2SARBPROC dolMultiTexCoord2s;
|
|
PFNDOLMULTITEXCOORD2SVARBPROC dolMultiTexCoord2sv;
|
|
PFNDOLMULTITEXCOORD3DARBPROC dolMultiTexCoord3d;
|
|
PFNDOLMULTITEXCOORD3DVARBPROC dolMultiTexCoord3dv;
|
|
PFNDOLMULTITEXCOORD3FARBPROC dolMultiTexCoord3f;
|
|
PFNDOLMULTITEXCOORD3FVARBPROC dolMultiTexCoord3fv;
|
|
PFNDOLMULTITEXCOORD3IARBPROC dolMultiTexCoord3i;
|
|
PFNDOLMULTITEXCOORD3IVARBPROC dolMultiTexCoord3iv;
|
|
PFNDOLMULTITEXCOORD3SARBPROC dolMultiTexCoord3s;
|
|
PFNDOLMULTITEXCOORD3SVARBPROC dolMultiTexCoord3sv;
|
|
PFNDOLMULTITEXCOORD4DARBPROC dolMultiTexCoord4d;
|
|
PFNDOLMULTITEXCOORD4DVARBPROC dolMultiTexCoord4dv;
|
|
PFNDOLMULTITEXCOORD4FARBPROC dolMultiTexCoord4f;
|
|
PFNDOLMULTITEXCOORD4FVARBPROC dolMultiTexCoord4fv;
|
|
PFNDOLMULTITEXCOORD4IARBPROC dolMultiTexCoord4i;
|
|
PFNDOLMULTITEXCOORD4IVARBPROC dolMultiTexCoord4iv;
|
|
PFNDOLMULTITEXCOORD4SARBPROC dolMultiTexCoord4s;
|
|
PFNDOLMULTITEXCOORD4SVARBPROC dolMultiTexCoord4sv;
|
|
PFNDOLSAMPLECOVERAGEARBPROC dolSampleCoverage;
|
|
|
|
// gl_1_4
|
|
PFNDOLBLENDCOLORPROC dolBlendColor;
|
|
PFNDOLBLENDEQUATIONPROC dolBlendEquation;
|
|
PFNDOLBLENDFUNCSEPARATEPROC dolBlendFuncSeparate;
|
|
PFNDOLFOGCOORDPOINTERPROC dolFogCoordPointer;
|
|
PFNDOLFOGCOORDDPROC dolFogCoordd;
|
|
PFNDOLFOGCOORDDVPROC dolFogCoorddv;
|
|
PFNDOLFOGCOORDFPROC dolFogCoordf;
|
|
PFNDOLFOGCOORDFVPROC dolFogCoordfv;
|
|
PFNDOLMULTIDRAWARRAYSPROC dolMultiDrawArrays;
|
|
PFNDOLMULTIDRAWELEMENTSPROC dolMultiDrawElements;
|
|
PFNDOLPOINTPARAMETERFPROC dolPointParameterf;
|
|
PFNDOLPOINTPARAMETERFVPROC dolPointParameterfv;
|
|
PFNDOLPOINTPARAMETERIPROC dolPointParameteri;
|
|
PFNDOLPOINTPARAMETERIVPROC dolPointParameteriv;
|
|
PFNDOLSECONDARYCOLOR3BPROC dolSecondaryColor3b;
|
|
PFNDOLSECONDARYCOLOR3BVPROC dolSecondaryColor3bv;
|
|
PFNDOLSECONDARYCOLOR3DPROC dolSecondaryColor3d;
|
|
PFNDOLSECONDARYCOLOR3DVPROC dolSecondaryColor3dv;
|
|
PFNDOLSECONDARYCOLOR3FPROC dolSecondaryColor3f;
|
|
PFNDOLSECONDARYCOLOR3FVPROC dolSecondaryColor3fv;
|
|
PFNDOLSECONDARYCOLOR3IPROC dolSecondaryColor3i;
|
|
PFNDOLSECONDARYCOLOR3IVPROC dolSecondaryColor3iv;
|
|
PFNDOLSECONDARYCOLOR3SPROC dolSecondaryColor3s;
|
|
PFNDOLSECONDARYCOLOR3SVPROC dolSecondaryColor3sv;
|
|
PFNDOLSECONDARYCOLOR3UBPROC dolSecondaryColor3ub;
|
|
PFNDOLSECONDARYCOLOR3UBVPROC dolSecondaryColor3ubv;
|
|
PFNDOLSECONDARYCOLOR3UIPROC dolSecondaryColor3ui;
|
|
PFNDOLSECONDARYCOLOR3UIVPROC dolSecondaryColor3uiv;
|
|
PFNDOLSECONDARYCOLOR3USPROC dolSecondaryColor3us;
|
|
PFNDOLSECONDARYCOLOR3USVPROC dolSecondaryColor3usv;
|
|
PFNDOLSECONDARYCOLORPOINTERPROC dolSecondaryColorPointer;
|
|
PFNDOLWINDOWPOS2DPROC dolWindowPos2d;
|
|
PFNDOLWINDOWPOS2DVPROC dolWindowPos2dv;
|
|
PFNDOLWINDOWPOS2FPROC dolWindowPos2f;
|
|
PFNDOLWINDOWPOS2FVPROC dolWindowPos2fv;
|
|
PFNDOLWINDOWPOS2IPROC dolWindowPos2i;
|
|
PFNDOLWINDOWPOS2IVPROC dolWindowPos2iv;
|
|
PFNDOLWINDOWPOS2SPROC dolWindowPos2s;
|
|
PFNDOLWINDOWPOS2SVPROC dolWindowPos2sv;
|
|
PFNDOLWINDOWPOS3DPROC dolWindowPos3d;
|
|
PFNDOLWINDOWPOS3DVPROC dolWindowPos3dv;
|
|
PFNDOLWINDOWPOS3FPROC dolWindowPos3f;
|
|
PFNDOLWINDOWPOS3FVPROC dolWindowPos3fv;
|
|
PFNDOLWINDOWPOS3IPROC dolWindowPos3i;
|
|
PFNDOLWINDOWPOS3IVPROC dolWindowPos3iv;
|
|
PFNDOLWINDOWPOS3SPROC dolWindowPos3s;
|
|
PFNDOLWINDOWPOS3SVPROC dolWindowPos3sv;
|
|
|
|
// gl_1_5
|
|
PFNDOLBEGINQUERYPROC dolBeginQuery;
|
|
PFNDOLBINDBUFFERPROC dolBindBuffer;
|
|
PFNDOLBUFFERDATAPROC dolBufferData;
|
|
PFNDOLBUFFERSUBDATAPROC dolBufferSubData;
|
|
PFNDOLDELETEBUFFERSPROC dolDeleteBuffers;
|
|
PFNDOLDELETEQUERIESPROC dolDeleteQueries;
|
|
PFNDOLENDQUERYPROC dolEndQuery;
|
|
PFNDOLGENBUFFERSPROC dolGenBuffers;
|
|
PFNDOLGENQUERIESPROC dolGenQueries;
|
|
PFNDOLGETBUFFERPARAMETERIVPROC dolGetBufferParameteriv;
|
|
PFNDOLGETBUFFERPOINTERVPROC dolGetBufferPointerv;
|
|
PFNDOLGETBUFFERSUBDATAPROC dolGetBufferSubData;
|
|
PFNDOLGETQUERYOBJECTIVPROC dolGetQueryObjectiv;
|
|
PFNDOLGETQUERYOBJECTUIVPROC dolGetQueryObjectuiv;
|
|
PFNDOLGETQUERYIVPROC dolGetQueryiv;
|
|
PFNDOLISBUFFERPROC dolIsBuffer;
|
|
PFNDOLISQUERYPROC dolIsQuery;
|
|
PFNDOLMAPBUFFERPROC dolMapBuffer;
|
|
PFNDOLUNMAPBUFFERPROC dolUnmapBuffer;
|
|
|
|
// gl_2_0
|
|
PFNDOLATTACHSHADERPROC dolAttachShader;
|
|
PFNDOLBINDATTRIBLOCATIONPROC dolBindAttribLocation;
|
|
PFNDOLBLENDEQUATIONSEPARATEPROC dolBlendEquationSeparate;
|
|
PFNDOLCOMPILESHADERPROC dolCompileShader;
|
|
PFNDOLCREATEPROGRAMPROC dolCreateProgram;
|
|
PFNDOLCREATESHADERPROC dolCreateShader;
|
|
PFNDOLDELETEPROGRAMPROC dolDeleteProgram;
|
|
PFNDOLDELETESHADERPROC dolDeleteShader;
|
|
PFNDOLDETACHSHADERPROC dolDetachShader;
|
|
PFNDOLDISABLEVERTEXATTRIBARRAYPROC dolDisableVertexAttribArray;
|
|
PFNDOLDRAWBUFFERSPROC dolDrawBuffers;
|
|
PFNDOLENABLEVERTEXATTRIBARRAYPROC dolEnableVertexAttribArray;
|
|
PFNDOLGETACTIVEATTRIBPROC dolGetActiveAttrib;
|
|
PFNDOLGETACTIVEUNIFORMPROC dolGetActiveUniform;
|
|
PFNDOLGETATTACHEDSHADERSPROC dolGetAttachedShaders;
|
|
PFNDOLGETATTRIBLOCATIONPROC dolGetAttribLocation;
|
|
PFNDOLGETPROGRAMINFOLOGPROC dolGetProgramInfoLog;
|
|
PFNDOLGETPROGRAMIVPROC dolGetProgramiv;
|
|
PFNDOLGETSHADERINFOLOGPROC dolGetShaderInfoLog;
|
|
PFNDOLGETSHADERSOURCEPROC dolGetShaderSource;
|
|
PFNDOLGETSHADERIVPROC dolGetShaderiv;
|
|
PFNDOLGETUNIFORMLOCATIONPROC dolGetUniformLocation;
|
|
PFNDOLGETUNIFORMFVPROC dolGetUniformfv;
|
|
PFNDOLGETUNIFORMIVPROC dolGetUniformiv;
|
|
PFNDOLGETVERTEXATTRIBPOINTERVPROC dolGetVertexAttribPointerv;
|
|
PFNDOLGETVERTEXATTRIBDVPROC dolGetVertexAttribdv;
|
|
PFNDOLGETVERTEXATTRIBFVPROC dolGetVertexAttribfv;
|
|
PFNDOLGETVERTEXATTRIBIVPROC dolGetVertexAttribiv;
|
|
PFNDOLISPROGRAMPROC dolIsProgram;
|
|
PFNDOLISSHADERPROC dolIsShader;
|
|
PFNDOLLINKPROGRAMPROC dolLinkProgram;
|
|
PFNDOLSHADERSOURCEPROC dolShaderSource;
|
|
PFNDOLSTENCILFUNCSEPARATEPROC dolStencilFuncSeparate;
|
|
PFNDOLSTENCILMASKSEPARATEPROC dolStencilMaskSeparate;
|
|
PFNDOLSTENCILOPSEPARATEPROC dolStencilOpSeparate;
|
|
PFNDOLUNIFORM1FPROC dolUniform1f;
|
|
PFNDOLUNIFORM1FVPROC dolUniform1fv;
|
|
PFNDOLUNIFORM1IPROC dolUniform1i;
|
|
PFNDOLUNIFORM1IVPROC dolUniform1iv;
|
|
PFNDOLUNIFORM2FPROC dolUniform2f;
|
|
PFNDOLUNIFORM2FVPROC dolUniform2fv;
|
|
PFNDOLUNIFORM2IPROC dolUniform2i;
|
|
PFNDOLUNIFORM2IVPROC dolUniform2iv;
|
|
PFNDOLUNIFORM3FPROC dolUniform3f;
|
|
PFNDOLUNIFORM3FVPROC dolUniform3fv;
|
|
PFNDOLUNIFORM3IPROC dolUniform3i;
|
|
PFNDOLUNIFORM3IVPROC dolUniform3iv;
|
|
PFNDOLUNIFORM4FPROC dolUniform4f;
|
|
PFNDOLUNIFORM4FVPROC dolUniform4fv;
|
|
PFNDOLUNIFORM4IPROC dolUniform4i;
|
|
PFNDOLUNIFORM4IVPROC dolUniform4iv;
|
|
PFNDOLUNIFORMMATRIX2FVPROC dolUniformMatrix2fv;
|
|
PFNDOLUNIFORMMATRIX3FVPROC dolUniformMatrix3fv;
|
|
PFNDOLUNIFORMMATRIX4FVPROC dolUniformMatrix4fv;
|
|
PFNDOLUSEPROGRAMPROC dolUseProgram;
|
|
PFNDOLVALIDATEPROGRAMPROC dolValidateProgram;
|
|
PFNDOLVERTEXATTRIB1DPROC dolVertexAttrib1d;
|
|
PFNDOLVERTEXATTRIB1DVPROC dolVertexAttrib1dv;
|
|
PFNDOLVERTEXATTRIB1FPROC dolVertexAttrib1f;
|
|
PFNDOLVERTEXATTRIB1FVPROC dolVertexAttrib1fv;
|
|
PFNDOLVERTEXATTRIB1SPROC dolVertexAttrib1s;
|
|
PFNDOLVERTEXATTRIB1SVPROC dolVertexAttrib1sv;
|
|
PFNDOLVERTEXATTRIB2DPROC dolVertexAttrib2d;
|
|
PFNDOLVERTEXATTRIB2DVPROC dolVertexAttrib2dv;
|
|
PFNDOLVERTEXATTRIB2FPROC dolVertexAttrib2f;
|
|
PFNDOLVERTEXATTRIB2FVPROC dolVertexAttrib2fv;
|
|
PFNDOLVERTEXATTRIB2SPROC dolVertexAttrib2s;
|
|
PFNDOLVERTEXATTRIB2SVPROC dolVertexAttrib2sv;
|
|
PFNDOLVERTEXATTRIB3DPROC dolVertexAttrib3d;
|
|
PFNDOLVERTEXATTRIB3DVPROC dolVertexAttrib3dv;
|
|
PFNDOLVERTEXATTRIB3FPROC dolVertexAttrib3f;
|
|
PFNDOLVERTEXATTRIB3FVPROC dolVertexAttrib3fv;
|
|
PFNDOLVERTEXATTRIB3SPROC dolVertexAttrib3s;
|
|
PFNDOLVERTEXATTRIB3SVPROC dolVertexAttrib3sv;
|
|
PFNDOLVERTEXATTRIB4NBVPROC dolVertexAttrib4Nbv;
|
|
PFNDOLVERTEXATTRIB4NIVPROC dolVertexAttrib4Niv;
|
|
PFNDOLVERTEXATTRIB4NSVPROC dolVertexAttrib4Nsv;
|
|
PFNDOLVERTEXATTRIB4NUBPROC dolVertexAttrib4Nub;
|
|
PFNDOLVERTEXATTRIB4NUBVPROC dolVertexAttrib4Nubv;
|
|
PFNDOLVERTEXATTRIB4NUIVPROC dolVertexAttrib4Nuiv;
|
|
PFNDOLVERTEXATTRIB4NUSVPROC dolVertexAttrib4Nusv;
|
|
PFNDOLVERTEXATTRIB4BVPROC dolVertexAttrib4bv;
|
|
PFNDOLVERTEXATTRIB4DPROC dolVertexAttrib4d;
|
|
PFNDOLVERTEXATTRIB4DVPROC dolVertexAttrib4dv;
|
|
PFNDOLVERTEXATTRIB4FPROC dolVertexAttrib4f;
|
|
PFNDOLVERTEXATTRIB4FVPROC dolVertexAttrib4fv;
|
|
PFNDOLVERTEXATTRIB4IVPROC dolVertexAttrib4iv;
|
|
PFNDOLVERTEXATTRIB4SPROC dolVertexAttrib4s;
|
|
PFNDOLVERTEXATTRIB4SVPROC dolVertexAttrib4sv;
|
|
PFNDOLVERTEXATTRIB4UBVPROC dolVertexAttrib4ubv;
|
|
PFNDOLVERTEXATTRIB4UIVPROC dolVertexAttrib4uiv;
|
|
PFNDOLVERTEXATTRIB4USVPROC dolVertexAttrib4usv;
|
|
PFNDOLVERTEXATTRIBPOINTERPROC dolVertexAttribPointer;
|
|
|
|
// gl_2_1
|
|
PFNDOLUNIFORMMATRIX2X3FVPROC dolUniformMatrix2x3fv;
|
|
PFNDOLUNIFORMMATRIX2X4FVPROC dolUniformMatrix2x4fv;
|
|
PFNDOLUNIFORMMATRIX3X2FVPROC dolUniformMatrix3x2fv;
|
|
PFNDOLUNIFORMMATRIX3X4FVPROC dolUniformMatrix3x4fv;
|
|
PFNDOLUNIFORMMATRIX4X2FVPROC dolUniformMatrix4x2fv;
|
|
PFNDOLUNIFORMMATRIX4X3FVPROC dolUniformMatrix4x3fv;
|
|
|
|
// gl_3_0
|
|
PFNDOLBEGINCONDITIONALRENDERPROC dolBeginConditionalRender;
|
|
PFNDOLBEGINTRANSFORMFEEDBACKPROC dolBeginTransformFeedback;
|
|
PFNDOLBINDFRAGDATALOCATIONPROC dolBindFragDataLocation;
|
|
PFNDOLCLAMPCOLORPROC dolClampColor;
|
|
PFNDOLCLEARBUFFERFIPROC dolClearBufferfi;
|
|
PFNDOLCLEARBUFFERFVPROC dolClearBufferfv;
|
|
PFNDOLCLEARBUFFERIVPROC dolClearBufferiv;
|
|
PFNDOLCLEARBUFFERUIVPROC dolClearBufferuiv;
|
|
PFNDOLCOLORMASKIPROC dolColorMaski;
|
|
PFNDOLDISABLEIPROC dolDisablei;
|
|
PFNDOLENABLEIPROC dolEnablei;
|
|
PFNDOLENDCONDITIONALRENDERPROC dolEndConditionalRender;
|
|
PFNDOLENDTRANSFORMFEEDBACKPROC dolEndTransformFeedback;
|
|
PFNDOLGETBOOLEANI_VPROC dolGetBooleani_v;
|
|
PFNDOLGETFRAGDATALOCATIONPROC dolGetFragDataLocation;
|
|
PFNDOLGETSTRINGIPROC dolGetStringi;
|
|
PFNDOLGETTEXPARAMETERIIVPROC dolGetTexParameterIiv;
|
|
PFNDOLGETTEXPARAMETERIUIVPROC dolGetTexParameterIuiv;
|
|
PFNDOLGETTRANSFORMFEEDBACKVARYINGPROC dolGetTransformFeedbackVarying;
|
|
PFNDOLGETUNIFORMUIVPROC dolGetUniformuiv;
|
|
PFNDOLGETVERTEXATTRIBIIVPROC dolGetVertexAttribIiv;
|
|
PFNDOLGETVERTEXATTRIBIUIVPROC dolGetVertexAttribIuiv;
|
|
PFNDOLISENABLEDIPROC dolIsEnabledi;
|
|
PFNDOLTEXPARAMETERIIVPROC dolTexParameterIiv;
|
|
PFNDOLTEXPARAMETERIUIVPROC dolTexParameterIuiv;
|
|
PFNDOLTRANSFORMFEEDBACKVARYINGSPROC dolTransformFeedbackVaryings;
|
|
PFNDOLUNIFORM1UIPROC dolUniform1ui;
|
|
PFNDOLUNIFORM1UIVPROC dolUniform1uiv;
|
|
PFNDOLUNIFORM2UIPROC dolUniform2ui;
|
|
PFNDOLUNIFORM2UIVPROC dolUniform2uiv;
|
|
PFNDOLUNIFORM3UIPROC dolUniform3ui;
|
|
PFNDOLUNIFORM3UIVPROC dolUniform3uiv;
|
|
PFNDOLUNIFORM4UIPROC dolUniform4ui;
|
|
PFNDOLUNIFORM4UIVPROC dolUniform4uiv;
|
|
PFNDOLVERTEXATTRIBI1IPROC dolVertexAttribI1i;
|
|
PFNDOLVERTEXATTRIBI1IVPROC dolVertexAttribI1iv;
|
|
PFNDOLVERTEXATTRIBI1UIPROC dolVertexAttribI1ui;
|
|
PFNDOLVERTEXATTRIBI1UIVPROC dolVertexAttribI1uiv;
|
|
PFNDOLVERTEXATTRIBI2IPROC dolVertexAttribI2i;
|
|
PFNDOLVERTEXATTRIBI2IVPROC dolVertexAttribI2iv;
|
|
PFNDOLVERTEXATTRIBI2UIPROC dolVertexAttribI2ui;
|
|
PFNDOLVERTEXATTRIBI2UIVPROC dolVertexAttribI2uiv;
|
|
PFNDOLVERTEXATTRIBI3IPROC dolVertexAttribI3i;
|
|
PFNDOLVERTEXATTRIBI3IVPROC dolVertexAttribI3iv;
|
|
PFNDOLVERTEXATTRIBI3UIPROC dolVertexAttribI3ui;
|
|
PFNDOLVERTEXATTRIBI3UIVPROC dolVertexAttribI3uiv;
|
|
PFNDOLVERTEXATTRIBI4BVPROC dolVertexAttribI4bv;
|
|
PFNDOLVERTEXATTRIBI4IPROC dolVertexAttribI4i;
|
|
PFNDOLVERTEXATTRIBI4IVPROC dolVertexAttribI4iv;
|
|
PFNDOLVERTEXATTRIBI4SVPROC dolVertexAttribI4sv;
|
|
PFNDOLVERTEXATTRIBI4UBVPROC dolVertexAttribI4ubv;
|
|
PFNDOLVERTEXATTRIBI4UIPROC dolVertexAttribI4ui;
|
|
PFNDOLVERTEXATTRIBI4UIVPROC dolVertexAttribI4uiv;
|
|
PFNDOLVERTEXATTRIBI4USVPROC dolVertexAttribI4usv;
|
|
PFNDOLVERTEXATTRIBIPOINTERPROC dolVertexAttribIPointer;
|
|
|
|
// gl_3_1
|
|
PFNDOLDRAWARRAYSINSTANCEDPROC dolDrawArraysInstanced;
|
|
PFNDOLDRAWELEMENTSINSTANCEDPROC dolDrawElementsInstanced;
|
|
PFNDOLPRIMITIVERESTARTINDEXPROC dolPrimitiveRestartIndex;
|
|
PFNDOLTEXBUFFERPROC dolTexBuffer;
|
|
|
|
// gl_3_2
|
|
PFNDOLFRAMEBUFFERTEXTUREPROC dolFramebufferTexture;
|
|
PFNDOLGETBUFFERPARAMETERI64VPROC dolGetBufferParameteri64v;
|
|
PFNDOLGETINTEGER64I_VPROC dolGetInteger64i_v;
|
|
|
|
// gl 4_2
|
|
PFNDOLDRAWARRAYSINSTANCEDBASEINSTANCEPROC dolDrawArraysInstancedBaseInstance;
|
|
PFNDOLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC dolDrawElementsInstancedBaseInstance;
|
|
PFNDOLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC
|
|
dolDrawElementsInstancedBaseVertexBaseInstance;
|
|
PFNDOLGETINTERNALFORMATIVPROC dolGetInternalformativ;
|
|
PFNDOLGETACTIVEATOMICCOUNTERBUFFERIVPROC dolGetActiveAtomicCounterBufferiv;
|
|
PFNDOLDRAWTRANSFORMFEEDBACKINSTANCEDPROC dolDrawTransformFeedbackInstanced;
|
|
PFNDOLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC dolDrawTransformFeedbackStreamInstanced;
|
|
|
|
// gl_4_3
|
|
PFNDOLCLEARBUFFERDATAPROC dolClearBufferData;
|
|
PFNDOLCLEARBUFFERSUBDATAPROC dolClearBufferSubData;
|
|
PFNDOLFRAMEBUFFERPARAMETERIPROC dolFramebufferParameteri;
|
|
PFNDOLGETFRAMEBUFFERPARAMETERIVPROC dolGetFramebufferParameteriv;
|
|
PFNDOLGETINTERNALFORMATI64VPROC dolGetInternalformati64v;
|
|
PFNDOLINVALIDATETEXSUBIMAGEPROC dolInvalidateTexSubImage;
|
|
PFNDOLINVALIDATETEXIMAGEPROC dolInvalidateTexImage;
|
|
PFNDOLINVALIDATEBUFFERSUBDATAPROC dolInvalidateBufferSubData;
|
|
PFNDOLINVALIDATEBUFFERDATAPROC dolInvalidateBufferData;
|
|
PFNDOLINVALIDATEFRAMEBUFFERPROC dolInvalidateFramebuffer;
|
|
PFNDOLINVALIDATESUBFRAMEBUFFERPROC dolInvalidateSubFramebuffer;
|
|
PFNDOLMULTIDRAWARRAYSINDIRECTPROC dolMultiDrawArraysIndirect;
|
|
PFNDOLMULTIDRAWELEMENTSINDIRECTPROC dolMultiDrawElementsIndirect;
|
|
PFNDOLGETPROGRAMINTERFACEIVPROC dolGetProgramInterfaceiv;
|
|
PFNDOLGETPROGRAMRESOURCEINDEXPROC dolGetProgramResourceIndex;
|
|
PFNDOLGETPROGRAMRESOURCENAMEPROC dolGetProgramResourceName;
|
|
PFNDOLGETPROGRAMRESOURCEIVPROC dolGetProgramResourceiv;
|
|
PFNDOLGETPROGRAMRESOURCELOCATIONPROC dolGetProgramResourceLocation;
|
|
PFNDOLGETPROGRAMRESOURCELOCATIONINDEXPROC dolGetProgramResourceLocationIndex;
|
|
PFNDOLTEXBUFFERRANGEPROC dolTexBufferRange;
|
|
PFNDOLTEXTUREVIEWPROC dolTextureView;
|
|
PFNDOLBINDVERTEXBUFFERPROC dolBindVertexBuffer;
|
|
PFNDOLVERTEXATTRIBFORMATPROC dolVertexAttribFormat;
|
|
PFNDOLVERTEXATTRIBIFORMATPROC dolVertexAttribIFormat;
|
|
PFNDOLVERTEXATTRIBLFORMATPROC dolVertexAttribLFormat;
|
|
PFNDOLVERTEXATTRIBBINDINGPROC dolVertexAttribBinding;
|
|
PFNDOLVERTEXBINDINGDIVISORPROC dolVertexBindingDivisor;
|
|
|
|
// gl_4_4
|
|
PFNDOLCLEARTEXIMAGEPROC dolClearTexImage;
|
|
PFNDOLCLEARTEXSUBIMAGEPROC dolClearTexSubImage;
|
|
PFNDOLBINDBUFFERSBASEPROC dolBindBuffersBase;
|
|
PFNDOLBINDBUFFERSRANGEPROC dolBindBuffersRange;
|
|
PFNDOLBINDTEXTURESPROC dolBindTextures;
|
|
PFNDOLBINDSAMPLERSPROC dolBindSamplers;
|
|
PFNDOLBINDIMAGETEXTURESPROC dolBindImageTextures;
|
|
PFNDOLBINDVERTEXBUFFERSPROC dolBindVertexBuffers;
|
|
|
|
// gl_4_5
|
|
PFNDOLCREATETRANSFORMFEEDBACKSPROC dolCreateTransformFeedbacks;
|
|
PFNDOLTRANSFORMFEEDBACKBUFFERBASEPROC dolTransformFeedbackBufferBase;
|
|
PFNDOLTRANSFORMFEEDBACKBUFFERRANGEPROC dolTransformFeedbackBufferRange;
|
|
PFNDOLGETTRANSFORMFEEDBACKIVPROC dolGetTransformFeedbackiv;
|
|
PFNDOLGETTRANSFORMFEEDBACKI_VPROC dolGetTransformFeedbacki_v;
|
|
PFNDOLGETTRANSFORMFEEDBACKI64_VPROC dolGetTransformFeedbacki64_v;
|
|
PFNDOLCREATEBUFFERSPROC dolCreateBuffers;
|
|
PFNDOLNAMEDBUFFERSTORAGEPROC dolNamedBufferStorage;
|
|
PFNDOLNAMEDBUFFERDATAPROC dolNamedBufferData;
|
|
PFNDOLNAMEDBUFFERSUBDATAPROC dolNamedBufferSubData;
|
|
PFNDOLCOPYNAMEDBUFFERSUBDATAPROC dolCopyNamedBufferSubData;
|
|
PFNDOLCLEARNAMEDBUFFERDATAPROC dolClearNamedBufferData;
|
|
PFNDOLCLEARNAMEDBUFFERSUBDATAPROC dolClearNamedBufferSubData;
|
|
PFNDOLMAPNAMEDBUFFERPROC dolMapNamedBuffer;
|
|
PFNDOLMAPNAMEDBUFFERRANGEPROC dolMapNamedBufferRange;
|
|
PFNDOLUNMAPNAMEDBUFFERPROC dolUnmapNamedBuffer;
|
|
PFNDOLFLUSHMAPPEDNAMEDBUFFERRANGEPROC dolFlushMappedNamedBufferRange;
|
|
PFNDOLGETNAMEDBUFFERPARAMETERIVPROC dolGetNamedBufferParameteriv;
|
|
PFNDOLGETNAMEDBUFFERPARAMETERI64VPROC dolGetNamedBufferParameteri64v;
|
|
PFNDOLGETNAMEDBUFFERPOINTERVPROC dolGetNamedBufferPointerv;
|
|
PFNDOLGETNAMEDBUFFERSUBDATAPROC dolGetNamedBufferSubData;
|
|
PFNDOLCREATEFRAMEBUFFERSPROC dolCreateFramebuffers;
|
|
PFNDOLNAMEDFRAMEBUFFERRENDERBUFFERPROC dolNamedFramebufferRenderbuffer;
|
|
PFNDOLNAMEDFRAMEBUFFERPARAMETERIPROC dolNamedFramebufferParameteri;
|
|
PFNDOLNAMEDFRAMEBUFFERTEXTUREPROC dolNamedFramebufferTexture;
|
|
PFNDOLNAMEDFRAMEBUFFERTEXTURELAYERPROC dolNamedFramebufferTextureLayer;
|
|
PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERPROC dolNamedFramebufferDrawBuffer;
|
|
PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERSPROC dolNamedFramebufferDrawBuffers;
|
|
PFNDOLNAMEDFRAMEBUFFERREADBUFFERPROC dolNamedFramebufferReadBuffer;
|
|
PFNDOLINVALIDATENAMEDFRAMEBUFFERDATAPROC dolInvalidateNamedFramebufferData;
|
|
PFNDOLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC dolInvalidateNamedFramebufferSubData;
|
|
PFNDOLCLEARNAMEDFRAMEBUFFERIVPROC dolClearNamedFramebufferiv;
|
|
PFNDOLCLEARNAMEDFRAMEBUFFERUIVPROC dolClearNamedFramebufferuiv;
|
|
PFNDOLCLEARNAMEDFRAMEBUFFERFVPROC dolClearNamedFramebufferfv;
|
|
PFNDOLCLEARNAMEDFRAMEBUFFERFIPROC dolClearNamedFramebufferfi;
|
|
PFNDOLBLITNAMEDFRAMEBUFFERPROC dolBlitNamedFramebuffer;
|
|
PFNDOLCHECKNAMEDFRAMEBUFFERSTATUSPROC dolCheckNamedFramebufferStatus;
|
|
PFNDOLGETNAMEDFRAMEBUFFERPARAMETERIVPROC dolGetNamedFramebufferParameteriv;
|
|
PFNDOLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC dolGetNamedFramebufferAttachmentParameteriv;
|
|
PFNDOLCREATERENDERBUFFERSPROC dolCreateRenderbuffers;
|
|
PFNDOLNAMEDRENDERBUFFERSTORAGEPROC dolNamedRenderbufferStorage;
|
|
PFNDOLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC dolNamedRenderbufferStorageMultisample;
|
|
PFNDOLGETNAMEDRENDERBUFFERPARAMETERIVPROC dolGetNamedRenderbufferParameteriv;
|
|
PFNDOLCREATETEXTURESPROC dolCreateTextures;
|
|
PFNDOLTEXTUREBUFFERPROC dolTextureBuffer;
|
|
PFNDOLTEXTUREBUFFERRANGEPROC dolTextureBufferRange;
|
|
PFNDOLTEXTURESTORAGE1DPROC dolTextureStorage1D;
|
|
PFNDOLTEXTURESTORAGE2DPROC dolTextureStorage2D;
|
|
PFNDOLTEXTURESTORAGE3DPROC dolTextureStorage3D;
|
|
PFNDOLTEXTURESTORAGE2DMULTISAMPLEPROC dolTextureStorage2DMultisample;
|
|
PFNDOLTEXTURESTORAGE3DMULTISAMPLEPROC dolTextureStorage3DMultisample;
|
|
PFNDOLTEXTURESUBIMAGE1DPROC dolTextureSubImage1D;
|
|
PFNDOLTEXTURESUBIMAGE2DPROC dolTextureSubImage2D;
|
|
PFNDOLTEXTURESUBIMAGE3DPROC dolTextureSubImage3D;
|
|
PFNDOLCOMPRESSEDTEXTURESUBIMAGE1DPROC dolCompressedTextureSubImage1D;
|
|
PFNDOLCOMPRESSEDTEXTURESUBIMAGE2DPROC dolCompressedTextureSubImage2D;
|
|
PFNDOLCOMPRESSEDTEXTURESUBIMAGE3DPROC dolCompressedTextureSubImage3D;
|
|
PFNDOLCOPYTEXTURESUBIMAGE1DPROC dolCopyTextureSubImage1D;
|
|
PFNDOLCOPYTEXTURESUBIMAGE2DPROC dolCopyTextureSubImage2D;
|
|
PFNDOLCOPYTEXTURESUBIMAGE3DPROC dolCopyTextureSubImage3D;
|
|
PFNDOLTEXTUREPARAMETERFPROC dolTextureParameterf;
|
|
PFNDOLTEXTUREPARAMETERFVPROC dolTextureParameterfv;
|
|
PFNDOLTEXTUREPARAMETERIPROC dolTextureParameteri;
|
|
PFNDOLTEXTUREPARAMETERIIVPROC dolTextureParameterIiv;
|
|
PFNDOLTEXTUREPARAMETERIUIVPROC dolTextureParameterIuiv;
|
|
PFNDOLTEXTUREPARAMETERIVPROC dolTextureParameteriv;
|
|
PFNDOLGENERATETEXTUREMIPMAPPROC dolGenerateTextureMipmap;
|
|
PFNDOLBINDTEXTUREUNITPROC dolBindTextureUnit;
|
|
PFNDOLGETTEXTUREIMAGEPROC dolGetTextureImage;
|
|
PFNDOLGETCOMPRESSEDTEXTUREIMAGEPROC dolGetCompressedTextureImage;
|
|
PFNDOLGETTEXTURELEVELPARAMETERFVPROC dolGetTextureLevelParameterfv;
|
|
PFNDOLGETTEXTURELEVELPARAMETERIVPROC dolGetTextureLevelParameteriv;
|
|
PFNDOLGETTEXTUREPARAMETERFVPROC dolGetTextureParameterfv;
|
|
PFNDOLGETTEXTUREPARAMETERIIVPROC dolGetTextureParameterIiv;
|
|
PFNDOLGETTEXTUREPARAMETERIUIVPROC dolGetTextureParameterIuiv;
|
|
PFNDOLGETTEXTUREPARAMETERIVPROC dolGetTextureParameteriv;
|
|
PFNDOLCREATEVERTEXARRAYSPROC dolCreateVertexArrays;
|
|
PFNDOLDISABLEVERTEXARRAYATTRIBPROC dolDisableVertexArrayAttrib;
|
|
PFNDOLENABLEVERTEXARRAYATTRIBPROC dolEnableVertexArrayAttrib;
|
|
PFNDOLVERTEXARRAYELEMENTBUFFERPROC dolVertexArrayElementBuffer;
|
|
PFNDOLVERTEXARRAYVERTEXBUFFERPROC dolVertexArrayVertexBuffer;
|
|
PFNDOLVERTEXARRAYVERTEXBUFFERSPROC dolVertexArrayVertexBuffers;
|
|
PFNDOLVERTEXARRAYATTRIBBINDINGPROC dolVertexArrayAttribBinding;
|
|
PFNDOLVERTEXARRAYATTRIBFORMATPROC dolVertexArrayAttribFormat;
|
|
PFNDOLVERTEXARRAYATTRIBIFORMATPROC dolVertexArrayAttribIFormat;
|
|
PFNDOLVERTEXARRAYATTRIBLFORMATPROC dolVertexArrayAttribLFormat;
|
|
PFNDOLVERTEXARRAYBINDINGDIVISORPROC dolVertexArrayBindingDivisor;
|
|
PFNDOLGETVERTEXARRAYIVPROC dolGetVertexArrayiv;
|
|
PFNDOLGETVERTEXARRAYINDEXEDIVPROC dolGetVertexArrayIndexediv;
|
|
PFNDOLGETVERTEXARRAYINDEXED64IVPROC dolGetVertexArrayIndexed64iv;
|
|
PFNDOLCREATESAMPLERSPROC dolCreateSamplers;
|
|
PFNDOLCREATEPROGRAMPIPELINESPROC dolCreateProgramPipelines;
|
|
PFNDOLCREATEQUERIESPROC dolCreateQueries;
|
|
PFNDOLGETQUERYBUFFEROBJECTI64VPROC dolGetQueryBufferObjecti64v;
|
|
PFNDOLGETQUERYBUFFEROBJECTIVPROC dolGetQueryBufferObjectiv;
|
|
PFNDOLGETQUERYBUFFEROBJECTUI64VPROC dolGetQueryBufferObjectui64v;
|
|
PFNDOLGETQUERYBUFFEROBJECTUIVPROC dolGetQueryBufferObjectuiv;
|
|
PFNDOLMEMORYBARRIERBYREGIONPROC dolMemoryBarrierByRegion;
|
|
PFNDOLGETTEXTURESUBIMAGEPROC dolGetTextureSubImage;
|
|
PFNDOLGETCOMPRESSEDTEXTURESUBIMAGEPROC dolGetCompressedTextureSubImage;
|
|
PFNDOLGETGRAPHICSRESETSTATUSPROC dolGetGraphicsResetStatus;
|
|
PFNDOLGETNCOMPRESSEDTEXIMAGEPROC dolGetnCompressedTexImage;
|
|
PFNDOLGETNTEXIMAGEPROC dolGetnTexImage;
|
|
PFNDOLGETNUNIFORMDVPROC dolGetnUniformdv;
|
|
PFNDOLGETNUNIFORMFVPROC dolGetnUniformfv;
|
|
PFNDOLGETNUNIFORMIVPROC dolGetnUniformiv;
|
|
PFNDOLGETNUNIFORMUIVPROC dolGetnUniformuiv;
|
|
PFNDOLREADNPIXELSPROC dolReadnPixels;
|
|
PFNDOLGETNMAPDVPROC dolGetnMapdv;
|
|
PFNDOLGETNMAPFVPROC dolGetnMapfv;
|
|
PFNDOLGETNMAPIVPROC dolGetnMapiv;
|
|
PFNDOLGETNPIXELMAPFVPROC dolGetnPixelMapfv;
|
|
PFNDOLGETNPIXELMAPUIVPROC dolGetnPixelMapuiv;
|
|
PFNDOLGETNPIXELMAPUSVPROC dolGetnPixelMapusv;
|
|
PFNDOLGETNPOLYGONSTIPPLEPROC dolGetnPolygonStipple;
|
|
PFNDOLGETNCOLORTABLEPROC dolGetnColorTable;
|
|
PFNDOLGETNCONVOLUTIONFILTERPROC dolGetnConvolutionFilter;
|
|
PFNDOLGETNSEPARABLEFILTERPROC dolGetnSeparableFilter;
|
|
PFNDOLGETNHISTOGRAMPROC dolGetnHistogram;
|
|
PFNDOLGETNMINMAXPROC dolGetnMinmax;
|
|
PFNDOLTEXTUREBARRIERPROC dolTextureBarrier;
|
|
|
|
// ARB_uniform_buffer_object
|
|
PFNDOLBINDBUFFERBASEPROC dolBindBufferBase;
|
|
PFNDOLBINDBUFFERRANGEPROC dolBindBufferRange;
|
|
PFNDOLGETACTIVEUNIFORMBLOCKNAMEPROC dolGetActiveUniformBlockName;
|
|
PFNDOLGETACTIVEUNIFORMBLOCKIVPROC dolGetActiveUniformBlockiv;
|
|
PFNDOLGETACTIVEUNIFORMNAMEPROC dolGetActiveUniformName;
|
|
PFNDOLGETACTIVEUNIFORMSIVPROC dolGetActiveUniformsiv;
|
|
PFNDOLGETINTEGERI_VPROC dolGetIntegeri_v;
|
|
PFNDOLGETUNIFORMBLOCKINDEXPROC dolGetUniformBlockIndex;
|
|
PFNDOLGETUNIFORMINDICESPROC dolGetUniformIndices;
|
|
PFNDOLUNIFORMBLOCKBINDINGPROC dolUniformBlockBinding;
|
|
|
|
// ARB_sampler_objects
|
|
PFNDOLBINDSAMPLERPROC dolBindSampler;
|
|
PFNDOLDELETESAMPLERSPROC dolDeleteSamplers;
|
|
PFNDOLGENSAMPLERSPROC dolGenSamplers;
|
|
PFNDOLGETSAMPLERPARAMETERIIVPROC dolGetSamplerParameterIiv;
|
|
PFNDOLGETSAMPLERPARAMETERIUIVPROC dolGetSamplerParameterIuiv;
|
|
PFNDOLGETSAMPLERPARAMETERFVPROC dolGetSamplerParameterfv;
|
|
PFNDOLGETSAMPLERPARAMETERIVPROC dolGetSamplerParameteriv;
|
|
PFNDOLISSAMPLERPROC dolIsSampler;
|
|
PFNDOLSAMPLERPARAMETERIIVPROC dolSamplerParameterIiv;
|
|
PFNDOLSAMPLERPARAMETERIUIVPROC dolSamplerParameterIuiv;
|
|
PFNDOLSAMPLERPARAMETERFPROC dolSamplerParameterf;
|
|
PFNDOLSAMPLERPARAMETERFVPROC dolSamplerParameterfv;
|
|
PFNDOLSAMPLERPARAMETERIPROC dolSamplerParameteri;
|
|
PFNDOLSAMPLERPARAMETERIVPROC dolSamplerParameteriv;
|
|
|
|
// ARB_map_buffer_range
|
|
PFNDOLFLUSHMAPPEDBUFFERRANGEPROC dolFlushMappedBufferRange;
|
|
PFNDOLMAPBUFFERRANGEPROC dolMapBufferRange;
|
|
|
|
// ARB_vertex_array_object
|
|
PFNDOLBINDVERTEXARRAYPROC dolBindVertexArray;
|
|
PFNDOLDELETEVERTEXARRAYSPROC dolDeleteVertexArrays;
|
|
PFNDOLGENVERTEXARRAYSPROC dolGenVertexArrays;
|
|
PFNDOLISVERTEXARRAYPROC dolIsVertexArray;
|
|
|
|
// ARB_framebuffer_object
|
|
PFNDOLBINDFRAMEBUFFERPROC dolBindFramebuffer;
|
|
PFNDOLBINDRENDERBUFFERPROC dolBindRenderbuffer;
|
|
PFNDOLBLITFRAMEBUFFERPROC dolBlitFramebuffer;
|
|
PFNDOLCHECKFRAMEBUFFERSTATUSPROC dolCheckFramebufferStatus;
|
|
PFNDOLDELETEFRAMEBUFFERSPROC dolDeleteFramebuffers;
|
|
PFNDOLDELETERENDERBUFFERSPROC dolDeleteRenderbuffers;
|
|
PFNDOLFRAMEBUFFERRENDERBUFFERPROC dolFramebufferRenderbuffer;
|
|
PFNDOLFRAMEBUFFERTEXTURE1DPROC dolFramebufferTexture1D;
|
|
PFNDOLFRAMEBUFFERTEXTURE2DPROC dolFramebufferTexture2D;
|
|
PFNDOLFRAMEBUFFERTEXTURE3DPROC dolFramebufferTexture3D;
|
|
PFNDOLFRAMEBUFFERTEXTURELAYERPROC dolFramebufferTextureLayer;
|
|
PFNDOLGENFRAMEBUFFERSPROC dolGenFramebuffers;
|
|
PFNDOLGENRENDERBUFFERSPROC dolGenRenderbuffers;
|
|
PFNDOLGENERATEMIPMAPPROC dolGenerateMipmap;
|
|
PFNDOLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC dolGetFramebufferAttachmentParameteriv;
|
|
PFNDOLGETRENDERBUFFERPARAMETERIVPROC dolGetRenderbufferParameteriv;
|
|
PFNDOLISFRAMEBUFFERPROC dolIsFramebuffer;
|
|
PFNDOLISRENDERBUFFERPROC dolIsRenderbuffer;
|
|
PFNDOLRENDERBUFFERSTORAGEPROC dolRenderbufferStorage;
|
|
PFNDOLRENDERBUFFERSTORAGEMULTISAMPLEPROC dolRenderbufferStorageMultisample;
|
|
|
|
// ARB_get_program_binary
|
|
PFNDOLGETPROGRAMBINARYPROC dolGetProgramBinary;
|
|
PFNDOLPROGRAMBINARYPROC dolProgramBinary;
|
|
PFNDOLPROGRAMPARAMETERIPROC dolProgramParameteri;
|
|
|
|
// ARB_sync
|
|
PFNDOLCLIENTWAITSYNCPROC dolClientWaitSync;
|
|
PFNDOLDELETESYNCPROC dolDeleteSync;
|
|
PFNDOLFENCESYNCPROC dolFenceSync;
|
|
PFNDOLGETINTEGER64VPROC dolGetInteger64v;
|
|
PFNDOLGETSYNCIVPROC dolGetSynciv;
|
|
PFNDOLISSYNCPROC dolIsSync;
|
|
PFNDOLWAITSYNCPROC dolWaitSync;
|
|
|
|
// ARB_texture_multisample
|
|
PFNDOLTEXIMAGE2DMULTISAMPLEPROC dolTexImage2DMultisample;
|
|
PFNDOLTEXIMAGE3DMULTISAMPLEPROC dolTexImage3DMultisample;
|
|
PFNDOLGETMULTISAMPLEFVPROC dolGetMultisamplefv;
|
|
PFNDOLSAMPLEMASKIPROC dolSampleMaski;
|
|
|
|
// ARB_texture_storage
|
|
PFNDOLTEXSTORAGE1DPROC dolTexStorage1D;
|
|
PFNDOLTEXSTORAGE2DPROC dolTexStorage2D;
|
|
PFNDOLTEXSTORAGE3DPROC dolTexStorage3D;
|
|
|
|
// ARB_texture_storage_multisample
|
|
PFNDOLTEXSTORAGE2DMULTISAMPLEPROC dolTexStorage2DMultisample;
|
|
PFNDOLTEXSTORAGE3DMULTISAMPLEPROC dolTexStorage3DMultisample;
|
|
|
|
// ARB_ES2_compatibility
|
|
PFNDOLCLEARDEPTHFPROC dolClearDepthf;
|
|
PFNDOLDEPTHRANGEFPROC dolDepthRangef;
|
|
PFNDOLGETSHADERPRECISIONFORMATPROC dolGetShaderPrecisionFormat;
|
|
PFNDOLRELEASESHADERCOMPILERPROC dolReleaseShaderCompiler;
|
|
PFNDOLSHADERBINARYPROC dolShaderBinary;
|
|
|
|
// NV_primitive_restart
|
|
PFNDOLPRIMITIVERESTARTINDEXNVPROC dolPrimitiveRestartIndexNV;
|
|
PFNDOLPRIMITIVERESTARTNVPROC dolPrimitiveRestartNV;
|
|
|
|
// ARB_blend_func_extended
|
|
PFNDOLBINDFRAGDATALOCATIONINDEXEDPROC dolBindFragDataLocationIndexed;
|
|
PFNDOLGETFRAGDATAINDEXPROC dolGetFragDataIndex;
|
|
|
|
// ARB_viewport_array
|
|
PFNDOLDEPTHRANGEARRAYVPROC dolDepthRangeArrayv;
|
|
PFNDOLDEPTHRANGEINDEXEDPROC dolDepthRangeIndexed;
|
|
PFNDOLGETDOUBLEI_VPROC dolGetDoublei_v;
|
|
PFNDOLGETFLOATI_VPROC dolGetFloati_v;
|
|
PFNDOLSCISSORARRAYVPROC dolScissorArrayv;
|
|
PFNDOLSCISSORINDEXEDPROC dolScissorIndexed;
|
|
PFNDOLSCISSORINDEXEDVPROC dolScissorIndexedv;
|
|
PFNDOLVIEWPORTARRAYVPROC dolViewportArrayv;
|
|
PFNDOLVIEWPORTINDEXEDFPROC dolViewportIndexedf;
|
|
PFNDOLVIEWPORTINDEXEDFVPROC dolViewportIndexedfv;
|
|
|
|
// ARB_draw_elements_base_vertex
|
|
PFNDOLDRAWELEMENTSBASEVERTEXPROC dolDrawElementsBaseVertex;
|
|
PFNDOLDRAWELEMENTSINSTANCEDBASEVERTEXPROC dolDrawElementsInstancedBaseVertex;
|
|
PFNDOLDRAWRANGEELEMENTSBASEVERTEXPROC dolDrawRangeElementsBaseVertex;
|
|
PFNDOLMULTIDRAWELEMENTSBASEVERTEXPROC dolMultiDrawElementsBaseVertex;
|
|
|
|
// ARB_sample_shading
|
|
PFNDOLMINSAMPLESHADINGARBPROC dolMinSampleShading;
|
|
|
|
// ARB_debug_output
|
|
PFNDOLDEBUGMESSAGECALLBACKARBPROC dolDebugMessageCallbackARB;
|
|
PFNDOLDEBUGMESSAGECONTROLARBPROC dolDebugMessageControlARB;
|
|
PFNDOLDEBUGMESSAGEINSERTARBPROC dolDebugMessageInsertARB;
|
|
PFNDOLGETDEBUGMESSAGELOGARBPROC dolGetDebugMessageLogARB;
|
|
|
|
// KHR_debug
|
|
PFNDOLDEBUGMESSAGECALLBACKPROC dolDebugMessageCallback;
|
|
PFNDOLDEBUGMESSAGECONTROLPROC dolDebugMessageControl;
|
|
PFNDOLDEBUGMESSAGEINSERTPROC dolDebugMessageInsert;
|
|
PFNDOLGETDEBUGMESSAGELOGPROC dolGetDebugMessageLog;
|
|
PFNDOLGETOBJECTLABELPROC dolGetObjectLabel;
|
|
PFNDOLGETOBJECTPTRLABELPROC dolGetObjectPtrLabel;
|
|
PFNDOLOBJECTLABELPROC dolObjectLabel;
|
|
PFNDOLOBJECTPTRLABELPROC dolObjectPtrLabel;
|
|
PFNDOLPOPDEBUGGROUPPROC dolPopDebugGroup;
|
|
PFNDOLPUSHDEBUGGROUPPROC dolPushDebugGroup;
|
|
|
|
// ARB_buffer_storage
|
|
PFNDOLBUFFERSTORAGEPROC dolBufferStorage;
|
|
|
|
// GL_NV_occlusion_query_samples
|
|
PFNDOLGENOCCLUSIONQUERIESNVPROC dolGenOcclusionQueriesNV;
|
|
PFNDOLDELETEOCCLUSIONQUERIESNVPROC dolDeleteOcclusionQueriesNV;
|
|
PFNDOLISOCCLUSIONQUERYNVPROC dolIsOcclusionQueryNV;
|
|
PFNDOLBEGINOCCLUSIONQUERYNVPROC dolBeginOcclusionQueryNV;
|
|
PFNDOLENDOCCLUSIONQUERYNVPROC dolEndOcclusionQueryNV;
|
|
PFNDOLGETOCCLUSIONQUERYIVNVPROC dolGetOcclusionQueryivNV;
|
|
PFNDOLGETOCCLUSIONQUERYUIVNVPROC dolGetOcclusionQueryuivNV;
|
|
|
|
// ARB_clip_control
|
|
PFNDOLCLIPCONTROLPROC dolClipControl;
|
|
|
|
// ARB_copy_image
|
|
PFNDOLCOPYIMAGESUBDATAPROC dolCopyImageSubData;
|
|
|
|
// ARB_shader_storage_buffer_object
|
|
PFNDOLSHADERSTORAGEBLOCKBINDINGPROC dolShaderStorageBlockBinding;
|
|
|
|
// NV_depth_buffer_float
|
|
PFNDOLDEPTHRANGEDNVPROC dolDepthRangedNV;
|
|
PFNDOLCLEARDEPTHDNVPROC dolClearDepthdNV;
|
|
PFNDOLDEPTHBOUNDSDNVPROC dolDepthBoundsdNV;
|
|
|
|
// ARB_shader_image_load_store
|
|
PFNDOLBINDIMAGETEXTUREPROC dolBindImageTexture;
|
|
PFNDOLMEMORYBARRIERPROC dolMemoryBarrier;
|
|
|
|
// ARB_compute_shader
|
|
PFNDOLDISPATCHCOMPUTEPROC dolDispatchCompute;
|
|
PFNDOLDISPATCHCOMPUTEINDIRECTPROC dolDispatchComputeIndirect;
|
|
|
|
// Creates a GLFunc object that requires a feature
|
|
#define GLFUNC_REQUIRES(x, y) \
|
|
{ \
|
|
(void**)&x, #x, y \
|
|
}
|
|
// Creates a GLFunc object with a different function suffix
|
|
// For when we want to use the same function pointer, but different function name
|
|
#define GLFUNC_SUFFIX(x, y, z) \
|
|
{ \
|
|
(void**)&x, #x #y, z \
|
|
}
|
|
// Creates a GLFunc object that should always be able to get grabbed
|
|
// Used for Desktop OpenGL functions that should /always/ be provided.
|
|
// aka GL 1.1/1.2/1.3/1.4
|
|
#define GLFUNC_ALWAYS_REQUIRED(x) \
|
|
{ \
|
|
(void**)&x, #x, "VERSION_GL" \
|
|
}
|
|
// Creates a GLFunc object that should be able to get grabbed
|
|
// on both GL and ES
|
|
#define GL_ES_FUNC_ALWAYS_REQUIRED(x) \
|
|
{ \
|
|
(void**)&x, #x, "VERSION_GL |VERSION_GLES_2" \
|
|
}
|
|
// Creates a GLFunc object that should be able to get grabbed
|
|
// on both GL and ES 3.0
|
|
#define GL_ES3_FUNC_ALWAYS_REQUIRED(x) \
|
|
{ \
|
|
(void**)&x, #x, "VERSION_GL |VERSION_GLES_3" \
|
|
}
|
|
// Creates a GLFunc object that should be able to get grabbed
|
|
// on both GL and ES 3.2
|
|
#define GL_ES32_FUNC_ALWAYS_REQUIRED(x) \
|
|
{ \
|
|
(void**)&x, #x, "VERSION_GL |VERSION_GLES_3_2" \
|
|
}
|
|
|
|
struct GLFunc
|
|
{
|
|
void** function_ptr;
|
|
const std::string function_name;
|
|
const std::string requirements;
|
|
};
|
|
|
|
const GLFunc gl_function_array[] = {
|
|
// gl_1_1
|
|
GLFUNC_ALWAYS_REQUIRED(glClearIndex),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexMask),
|
|
GLFUNC_ALWAYS_REQUIRED(glAlphaFunc),
|
|
GLFUNC_ALWAYS_REQUIRED(glLogicOp),
|
|
GLFUNC_ALWAYS_REQUIRED(glPointSize),
|
|
GLFUNC_ALWAYS_REQUIRED(glLineStipple),
|
|
GLFUNC_ALWAYS_REQUIRED(glPolygonMode),
|
|
GLFUNC_ALWAYS_REQUIRED(glPolygonStipple),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetPolygonStipple),
|
|
GLFUNC_ALWAYS_REQUIRED(glEdgeFlag),
|
|
GLFUNC_ALWAYS_REQUIRED(glEdgeFlagv),
|
|
GLFUNC_ALWAYS_REQUIRED(glClipPlane),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetClipPlane),
|
|
GLFUNC_ALWAYS_REQUIRED(glDrawBuffer),
|
|
GLFUNC_ALWAYS_REQUIRED(glEnableClientState),
|
|
GLFUNC_ALWAYS_REQUIRED(glDisableClientState),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetDoublev),
|
|
GLFUNC_ALWAYS_REQUIRED(glPushAttrib),
|
|
GLFUNC_ALWAYS_REQUIRED(glPopAttrib),
|
|
GLFUNC_ALWAYS_REQUIRED(glPushClientAttrib),
|
|
GLFUNC_ALWAYS_REQUIRED(glPopClientAttrib),
|
|
GLFUNC_ALWAYS_REQUIRED(glRenderMode),
|
|
GLFUNC_ALWAYS_REQUIRED(glClearDepth),
|
|
GLFUNC_ALWAYS_REQUIRED(glDepthRange),
|
|
GLFUNC_ALWAYS_REQUIRED(glClearAccum),
|
|
GLFUNC_ALWAYS_REQUIRED(glAccum),
|
|
GLFUNC_ALWAYS_REQUIRED(glMatrixMode),
|
|
GLFUNC_ALWAYS_REQUIRED(glOrtho),
|
|
GLFUNC_ALWAYS_REQUIRED(glFrustum),
|
|
GLFUNC_ALWAYS_REQUIRED(glPushMatrix),
|
|
GLFUNC_ALWAYS_REQUIRED(glPopMatrix),
|
|
GLFUNC_ALWAYS_REQUIRED(glLoadIdentity),
|
|
GLFUNC_ALWAYS_REQUIRED(glLoadMatrixd),
|
|
GLFUNC_ALWAYS_REQUIRED(glLoadMatrixf),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultMatrixd),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultMatrixf),
|
|
GLFUNC_ALWAYS_REQUIRED(glRotated),
|
|
GLFUNC_ALWAYS_REQUIRED(glRotatef),
|
|
GLFUNC_ALWAYS_REQUIRED(glScaled),
|
|
GLFUNC_ALWAYS_REQUIRED(glScalef),
|
|
GLFUNC_ALWAYS_REQUIRED(glTranslated),
|
|
GLFUNC_ALWAYS_REQUIRED(glTranslatef),
|
|
GLFUNC_ALWAYS_REQUIRED(glIsList),
|
|
GLFUNC_ALWAYS_REQUIRED(glDeleteLists),
|
|
GLFUNC_ALWAYS_REQUIRED(glGenLists),
|
|
GLFUNC_ALWAYS_REQUIRED(glNewList),
|
|
GLFUNC_ALWAYS_REQUIRED(glEndList),
|
|
GLFUNC_ALWAYS_REQUIRED(glCallList),
|
|
GLFUNC_ALWAYS_REQUIRED(glCallLists),
|
|
GLFUNC_ALWAYS_REQUIRED(glListBase),
|
|
GLFUNC_ALWAYS_REQUIRED(glBegin),
|
|
GLFUNC_ALWAYS_REQUIRED(glEnd),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2i),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4f),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4i),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex2sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertex4sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3b),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3bv),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormal3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexd),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexf),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexi),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexs),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexub),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexdv),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexsv),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexubv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3b),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3ub),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3ui),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3us),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4b),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4d),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4f),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4i),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4s),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4ub),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4ui),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4us),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3bv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3ubv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3uiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor3usv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4bv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4ubv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4uiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColor4usv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1d),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1f),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1i),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1s),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2i),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2s),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4d),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4f),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4i),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4s),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord1sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord2sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoord4sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2i),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2s),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4d),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4f),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4i),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4s),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos2sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRasterPos4sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRectd),
|
|
GLFUNC_ALWAYS_REQUIRED(glRectf),
|
|
GLFUNC_ALWAYS_REQUIRED(glRecti),
|
|
GLFUNC_ALWAYS_REQUIRED(glRects),
|
|
GLFUNC_ALWAYS_REQUIRED(glRectdv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRectfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRectiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glRectsv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glNormalPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glColorPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glIndexPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexCoordPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glEdgeFlagPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glArrayElement),
|
|
GLFUNC_ALWAYS_REQUIRED(glInterleavedArrays),
|
|
GLFUNC_ALWAYS_REQUIRED(glShadeModel),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightf),
|
|
GLFUNC_ALWAYS_REQUIRED(glLighti),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetLightfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetLightiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightModelf),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightModeli),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightModelfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glLightModeliv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMaterialf),
|
|
GLFUNC_ALWAYS_REQUIRED(glMateriali),
|
|
GLFUNC_ALWAYS_REQUIRED(glMaterialfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMaterialiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetMaterialfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetMaterialiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glColorMaterial),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelZoom),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelStoref),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelTransferf),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelTransferi),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelMapfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelMapuiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glPixelMapusv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetPixelMapfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetPixelMapuiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetPixelMapusv),
|
|
GLFUNC_ALWAYS_REQUIRED(glBitmap),
|
|
GLFUNC_ALWAYS_REQUIRED(glDrawPixels),
|
|
GLFUNC_ALWAYS_REQUIRED(glCopyPixels),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexGend),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexGenf),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexGeni),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexGendv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexGenfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexGeniv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexGendv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexGenfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexGeniv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexEnvf),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexEnvi),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexEnvfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexEnviv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexEnvfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexEnviv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexLevelParameterfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexLevelParameteriv),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexImage1D),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetTexImage),
|
|
GLFUNC_ALWAYS_REQUIRED(glPrioritizeTextures),
|
|
GLFUNC_ALWAYS_REQUIRED(glAreTexturesResident),
|
|
GLFUNC_ALWAYS_REQUIRED(glTexSubImage1D),
|
|
GLFUNC_ALWAYS_REQUIRED(glCopyTexImage1D),
|
|
GLFUNC_ALWAYS_REQUIRED(glCopyTexSubImage1D),
|
|
GLFUNC_ALWAYS_REQUIRED(glMap1d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMap1f),
|
|
GLFUNC_ALWAYS_REQUIRED(glMap2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMap2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetMapdv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetMapfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetMapiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord1d),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord1f),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord1dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord1fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalCoord2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMapGrid1d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMapGrid1f),
|
|
GLFUNC_ALWAYS_REQUIRED(glMapGrid2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMapGrid2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalPoint1),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalPoint2),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalMesh1),
|
|
GLFUNC_ALWAYS_REQUIRED(glEvalMesh2),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogf),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogi),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glFeedbackBuffer),
|
|
GLFUNC_ALWAYS_REQUIRED(glPassThrough),
|
|
GLFUNC_ALWAYS_REQUIRED(glSelectBuffer),
|
|
GLFUNC_ALWAYS_REQUIRED(glInitNames),
|
|
GLFUNC_ALWAYS_REQUIRED(glLoadName),
|
|
GLFUNC_ALWAYS_REQUIRED(glPushName),
|
|
GLFUNC_ALWAYS_REQUIRED(glPopName),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glTexImage2D),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glClearColor),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glClear),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glColorMask),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBlendFunc),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCullFace),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glFrontFace),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glLineWidth),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glPolygonOffset),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glScissor),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glEnable),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDisable),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glIsEnabled),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetBooleanv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetFloatv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glFinish),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glFlush),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glHint),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDepthFunc),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDepthMask),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glViewport),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDrawArrays),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDrawElements),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glPixelStorei),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glReadPixels),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glStencilFunc),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glStencilMask),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glStencilOp),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glClearStencil),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glTexParameterf),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glTexParameteri),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glTexParameterfv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glTexParameteriv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetTexParameterfv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetTexParameteriv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGenTextures),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDeleteTextures),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBindTexture),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glIsTexture),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glTexSubImage2D),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCopyTexImage2D),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCopyTexSubImage2D),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glReadBuffer),
|
|
GL_ES32_FUNC_ALWAYS_REQUIRED(glGetPointerv),
|
|
|
|
// gl_1_2
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glCopyTexSubImage3D),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glDrawRangeElements),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glTexImage3D),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glTexSubImage3D),
|
|
|
|
// gl_1_3
|
|
GLFUNC_ALWAYS_REQUIRED(glClientActiveTexture),
|
|
GLFUNC_ALWAYS_REQUIRED(glCompressedTexImage1D),
|
|
GLFUNC_ALWAYS_REQUIRED(glCompressedTexSubImage1D),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetCompressedTexImage),
|
|
GLFUNC_ALWAYS_REQUIRED(glLoadTransposeMatrixd),
|
|
GLFUNC_ALWAYS_REQUIRED(glLoadTransposeMatrixf),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultTransposeMatrixd),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultTransposeMatrixf),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1f),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1i),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1s),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord1sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2i),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2s),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord2sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4d),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4f),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4i),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4s),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiTexCoord4sv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glSampleCoverage),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glActiveTexture),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCompressedTexImage2D),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCompressedTexSubImage2D),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glCompressedTexImage3D),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glCompressedTexSubImage3D),
|
|
|
|
// gl_1_4
|
|
GLFUNC_ALWAYS_REQUIRED(glFogCoordPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogCoordd),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogCoorddv),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogCoordf),
|
|
GLFUNC_ALWAYS_REQUIRED(glFogCoordfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiDrawArrays),
|
|
GLFUNC_ALWAYS_REQUIRED(glMultiDrawElements),
|
|
GLFUNC_ALWAYS_REQUIRED(glPointParameterf),
|
|
GLFUNC_ALWAYS_REQUIRED(glPointParameterfv),
|
|
GLFUNC_ALWAYS_REQUIRED(glPointParameteri),
|
|
GLFUNC_ALWAYS_REQUIRED(glPointParameteriv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3b),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3bv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3ub),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3ubv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3ui),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3uiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3us),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColor3usv),
|
|
GLFUNC_ALWAYS_REQUIRED(glSecondaryColorPointer),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2f),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2i),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2s),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos2sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3f),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3i),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glWindowPos3sv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBlendColor),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBlendEquation),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBlendFuncSeparate),
|
|
|
|
// gl_1_5
|
|
GLFUNC_ALWAYS_REQUIRED(glGetBufferSubData),
|
|
GLFUNC_ALWAYS_REQUIRED(glGetQueryObjectiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glMapBuffer),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBindBuffer),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBufferData),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBufferSubData),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDeleteBuffers),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGenBuffers),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetBufferParameteriv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glIsBuffer),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glBeginQuery),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glDeleteQueries),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glEndQuery),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glGenQueries),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glIsQuery),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glGetQueryiv),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glGetQueryObjectuiv),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glGetBufferPointerv),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glUnmapBuffer),
|
|
|
|
// gl_2_0
|
|
GLFUNC_ALWAYS_REQUIRED(glGetVertexAttribdv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib1d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib1dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib1s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib1sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib2d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib2dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib2s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib2sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib3d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib3dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib3s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib3sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Nbv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Niv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Nsv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Nub),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Nubv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Nuiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4Nusv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4bv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4d),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4dv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4iv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4s),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4sv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4ubv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4uiv),
|
|
GLFUNC_ALWAYS_REQUIRED(glVertexAttrib4usv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glAttachShader),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBindAttribLocation),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glBlendEquationSeparate),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCompileShader),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCreateProgram),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glCreateShader),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDeleteProgram),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDeleteShader),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDetachShader),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glDisableVertexAttribArray),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glEnableVertexAttribArray),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetActiveAttrib),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetActiveUniform),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetAttachedShaders),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetAttribLocation),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetProgramInfoLog),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetProgramiv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetShaderInfoLog),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetShaderSource),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetShaderiv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetUniformLocation),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetUniformfv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetUniformiv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetVertexAttribPointerv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetVertexAttribfv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glGetVertexAttribiv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glIsProgram),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glIsShader),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glLinkProgram),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glShaderSource),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glStencilFuncSeparate),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glStencilMaskSeparate),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glStencilOpSeparate),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform1f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform1fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform1i),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform1iv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform2f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform2fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform2i),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform2iv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform3f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform3fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform3i),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform3iv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform4f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform4fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform4i),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniform4iv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniformMatrix2fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniformMatrix3fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUniformMatrix4fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glUseProgram),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glValidateProgram),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib1f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib1fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib2f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib2fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib3f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib3fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib4f),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttrib4fv),
|
|
GL_ES_FUNC_ALWAYS_REQUIRED(glVertexAttribPointer),
|
|
GL_ES3_FUNC_ALWAYS_REQUIRED(glDrawBuffers),
|
|
|
|
// gl_2_1
|
|
GLFUNC_ALWAYS_REQUIRED(glUniformMatrix2x3fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glUniformMatrix2x4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glUniformMatrix3x2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glUniformMatrix3x4fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glUniformMatrix4x2fv),
|
|
GLFUNC_ALWAYS_REQUIRED(glUniformMatrix4x3fv),
|
|
|
|
// gl_3_0
|
|
GLFUNC_REQUIRES(glBeginConditionalRender, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glBindFragDataLocation, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glClampColor, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glEndConditionalRender, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glGetBooleani_v, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI1i, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI1iv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI1ui, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI1uiv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI2i, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI2iv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI2ui, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI2uiv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI3i, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI3iv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI3ui, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI3uiv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4bv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4sv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4ubv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4usv, "VERSION_3_0"),
|
|
GLFUNC_REQUIRES(glBeginTransformFeedback, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glClearBufferfi, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glClearBufferfv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glClearBufferiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glClearBufferuiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glEndTransformFeedback, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetFragDataLocation, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetStringi, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetTransformFeedbackVarying, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetUniformuiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetVertexAttribIiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetVertexAttribIuiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glTransformFeedbackVaryings, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform1ui, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform1uiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform2ui, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform2uiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform3ui, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform3uiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform4ui, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniform4uiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4i, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4iv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4ui, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribI4uiv, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribIPointer, "VERSION_3_0 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glColorMaski, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glDisablei, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glEnablei, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glGetTexParameterIiv, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glGetTexParameterIuiv, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glIsEnabledi, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glTexParameterIiv, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glTexParameterIuiv, "VERSION_3_0 |VERSION_GLES_3_2"),
|
|
|
|
// gl_3_1
|
|
GLFUNC_REQUIRES(glPrimitiveRestartIndex, "VERSION_3_1"),
|
|
GLFUNC_REQUIRES(glDrawArraysInstanced, "VERSION_3_1 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glDrawElementsInstanced, "VERSION_3_1 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glTexBuffer, "VERSION_3_1 |VERSION_GLES_3_2"),
|
|
|
|
// gl_3_2
|
|
GLFUNC_REQUIRES(glGetBufferParameteri64v, "VERSION_3_2 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetInteger64i_v, "VERSION_3_2 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glFramebufferTexture, "VERSION_3_2 |VERSION_GLES_3_2"),
|
|
|
|
// gl_4_2
|
|
GLFUNC_REQUIRES(glDrawArraysInstancedBaseInstance, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glDrawElementsInstancedBaseInstance, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glDrawElementsInstancedBaseVertexBaseInstance, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glGetInternalformativ, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glGetActiveAtomicCounterBufferiv, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glBindImageTexture, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glMemoryBarrier, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glTexStorage1D, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glTexStorage2D, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glTexStorage3D, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glDrawTransformFeedbackInstanced, "VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glDrawTransformFeedbackStreamInstanced, "VERSION_4_2"),
|
|
|
|
// gl_4_3
|
|
GLFUNC_REQUIRES(glClearBufferData, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glClearBufferSubData, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glDispatchCompute, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glDispatchComputeIndirect, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glCopyImageSubData, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glFramebufferParameteri, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetFramebufferParameteriv, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetInternalformati64v, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glInvalidateTexSubImage, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glInvalidateTexImage, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glInvalidateBufferSubData, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glInvalidateBufferData, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glInvalidateFramebuffer, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glInvalidateSubFramebuffer, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glMultiDrawArraysIndirect, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glMultiDrawElementsIndirect, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetProgramInterfaceiv, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetProgramResourceIndex, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetProgramResourceName, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetProgramResourceiv, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetProgramResourceLocation, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetProgramResourceLocationIndex, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glShaderStorageBlockBinding, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glTexBufferRange, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glTexStorage2DMultisample, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glTexStorage3DMultisample, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glTextureView, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glBindVertexBuffer, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribFormat, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribIFormat, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribLFormat, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glVertexAttribBinding, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glVertexBindingDivisor, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glDebugMessageControl, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glDebugMessageInsert, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glDebugMessageCallback, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetDebugMessageLog, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glPushDebugGroup, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glPopDebugGroup, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glObjectLabel, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetObjectLabel, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glObjectPtrLabel, "VERSION_4_3"),
|
|
GLFUNC_REQUIRES(glGetObjectPtrLabel, "VERSION_4_3"),
|
|
|
|
// gl_4_4
|
|
GLFUNC_REQUIRES(glBufferStorage, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glClearTexImage, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glClearTexSubImage, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glBindBuffersBase, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glBindBuffersRange, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glBindTextures, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glBindSamplers, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glBindImageTextures, "VERSION_4_4"),
|
|
GLFUNC_REQUIRES(glBindVertexBuffers, "VERSION_4_4"),
|
|
|
|
// gl_4_5
|
|
GLFUNC_REQUIRES(glClipControl, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateTransformFeedbacks, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTransformFeedbackBufferBase, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTransformFeedbackBufferRange, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTransformFeedbackiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTransformFeedbacki_v, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTransformFeedbacki64_v, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateBuffers, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedBufferStorage, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedBufferData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedBufferSubData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCopyNamedBufferSubData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glClearNamedBufferData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glClearNamedBufferSubData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glMapNamedBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glMapNamedBufferRange, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glUnmapNamedBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glFlushMappedNamedBufferRange, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedBufferParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedBufferParameteri64v, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedBufferPointerv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedBufferSubData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateFramebuffers, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferRenderbuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferParameteri, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferTexture, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferTextureLayer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferDrawBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferDrawBuffers, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedFramebufferReadBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glInvalidateNamedFramebufferData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glInvalidateNamedFramebufferSubData, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glClearNamedFramebufferiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glClearNamedFramebufferuiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glClearNamedFramebufferfv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glClearNamedFramebufferfi, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glBlitNamedFramebuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCheckNamedFramebufferStatus, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedFramebufferParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedFramebufferAttachmentParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateRenderbuffers, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedRenderbufferStorage, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glNamedRenderbufferStorageMultisample, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetNamedRenderbufferParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateTextures, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureBufferRange, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureStorage1D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureStorage2D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureStorage3D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureStorage2DMultisample, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureStorage3DMultisample, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureSubImage1D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureSubImage2D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureSubImage3D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCompressedTextureSubImage1D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCompressedTextureSubImage2D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCompressedTextureSubImage3D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCopyTextureSubImage1D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCopyTextureSubImage2D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCopyTextureSubImage3D, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureParameterf, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureParameterfv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureParameteri, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureParameterIiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureParameterIuiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGenerateTextureMipmap, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glBindTextureUnit, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureImage, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetCompressedTextureImage, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureLevelParameterfv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureLevelParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureParameterfv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureParameterIiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureParameterIuiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureParameteriv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateVertexArrays, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glDisableVertexArrayAttrib, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glEnableVertexArrayAttrib, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayElementBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayVertexBuffer, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayVertexBuffers, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayAttribBinding, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayAttribFormat, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayAttribIFormat, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayAttribLFormat, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glVertexArrayBindingDivisor, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetVertexArrayiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetVertexArrayIndexediv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetVertexArrayIndexed64iv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateSamplers, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateProgramPipelines, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glCreateQueries, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetQueryBufferObjecti64v, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetQueryBufferObjectiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetQueryBufferObjectui64v, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetQueryBufferObjectuiv, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glMemoryBarrierByRegion, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetTextureSubImage, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetCompressedTextureSubImage, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glGetGraphicsResetStatus, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glReadnPixels, "VERSION_4_5"),
|
|
GLFUNC_REQUIRES(glTextureBarrier, "VERSION_4_5"),
|
|
// AMD's video driver is trash and doesn't expose these function pointers
|
|
// Remove them for now until they learn how to implement the spec properly.
|
|
// GLFUNC_REQUIRES(glGetnCompressedTexImage, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnTexImage, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnUniformdv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnUniformfv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnUniformiv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnUniformuiv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnMapdv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnMapfv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnMapiv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnPixelMapfv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnPixelMapuiv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnPixelMapusv, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnPolygonStipple, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnColorTable, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnConvolutionFilter, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnSeparableFilter, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnHistogram, "VERSION_4_5"),
|
|
// GLFUNC_REQUIRES(glGetnMinmax, "VERSION_4_5"),
|
|
|
|
// ARB_uniform_buffer_object
|
|
GLFUNC_REQUIRES(glGetActiveUniformName, "GL_ARB_uniform_buffer_object"),
|
|
GLFUNC_REQUIRES(glBindBufferBase, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glBindBufferRange, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetActiveUniformBlockName, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetActiveUniformBlockiv, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetActiveUniformsiv, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetIntegeri_v, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetUniformBlockIndex, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetUniformIndices, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glUniformBlockBinding, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
|
|
|
|
// ARB_sampler_objects
|
|
GLFUNC_REQUIRES(glBindSampler, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glDeleteSamplers, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGenSamplers, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetSamplerParameterfv, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetSamplerParameteriv, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glIsSampler, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glSamplerParameterf, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glSamplerParameterfv, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glSamplerParameteri, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glSamplerParameteriv, "GL_ARB_sampler_objects |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetSamplerParameterIiv, "GL_ARB_sampler_objects |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glGetSamplerParameterIuiv, "GL_ARB_sampler_objects |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glSamplerParameterIiv, "GL_ARB_sampler_objects |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glSamplerParameterIuiv, "GL_ARB_sampler_objects |VERSION_GLES_3_2"),
|
|
|
|
// ARB_map_buffer_range
|
|
GLFUNC_REQUIRES(glFlushMappedBufferRange, "GL_ARB_map_buffer_range |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glMapBufferRange, "GL_ARB_map_buffer_range |VERSION_GLES_3"),
|
|
|
|
// ARB_vertex_array_object
|
|
GLFUNC_REQUIRES(glBindVertexArray, "GL_ARB_vertex_array_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glDeleteVertexArrays, "GL_ARB_vertex_array_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGenVertexArrays, "GL_ARB_vertex_array_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glIsVertexArray, "GL_ARB_vertex_array_object |VERSION_GLES_3"),
|
|
|
|
// APPLE_vertex_array_object
|
|
GLFUNC_SUFFIX(glBindVertexArray, APPLE,
|
|
"GL_APPLE_vertex_array_object !GL_ARB_vertex_array_object"),
|
|
GLFUNC_SUFFIX(glDeleteVertexArrays, APPLE,
|
|
"GL_APPLE_vertex_array_object !GL_ARB_vertex_array_object"),
|
|
GLFUNC_SUFFIX(glGenVertexArrays, APPLE,
|
|
"GL_APPLE_vertex_array_object !GL_ARB_vertex_array_object"),
|
|
GLFUNC_SUFFIX(glIsVertexArray, APPLE,
|
|
"GL_APPLE_vertex_array_object !GL_ARB_vertex_array_object"),
|
|
|
|
// ARB_framebuffer_object
|
|
GLFUNC_REQUIRES(glFramebufferTexture1D, "GL_ARB_framebuffer_object"),
|
|
GLFUNC_REQUIRES(glFramebufferTexture3D, "GL_ARB_framebuffer_object"),
|
|
GLFUNC_REQUIRES(glBindFramebuffer, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glBindRenderbuffer, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glBlitFramebuffer, "GL_ARB_framebuffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glCheckFramebufferStatus, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glDeleteFramebuffers, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glDeleteRenderbuffers, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glFramebufferRenderbuffer, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glFramebufferTexture2D, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glFramebufferTextureLayer, "GL_ARB_framebuffer_object |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGenFramebuffers, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glGenRenderbuffers, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glGenerateMipmap, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glGetFramebufferAttachmentParameteriv,
|
|
"GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glGetRenderbufferParameteriv, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glIsFramebuffer, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glIsRenderbuffer, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glRenderbufferStorage, "GL_ARB_framebuffer_object |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glRenderbufferStorageMultisample, "GL_ARB_framebuffer_object |VERSION_GLES_3"),
|
|
|
|
// ARB_get_program_binary
|
|
GLFUNC_REQUIRES(glGetProgramBinary, "GL_ARB_get_program_binary |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glProgramBinary, "GL_ARB_get_program_binary |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glProgramParameteri, "GL_ARB_get_program_binary |VERSION_GLES_3"),
|
|
|
|
// ARB_sync
|
|
GLFUNC_REQUIRES(glClientWaitSync, "GL_ARB_sync |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glDeleteSync, "GL_ARB_sync |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glFenceSync, "GL_ARB_sync |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetInteger64v, "GL_ARB_sync |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glGetSynciv, "GL_ARB_sync |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glIsSync, "GL_ARB_sync |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glWaitSync, "GL_ARB_sync |VERSION_GLES_3"),
|
|
|
|
// ARB_texture_multisample
|
|
GLFUNC_REQUIRES(glTexImage2DMultisample, "GL_ARB_texture_multisample"),
|
|
GLFUNC_REQUIRES(glTexImage3DMultisample, "GL_ARB_texture_multisample"),
|
|
GLFUNC_REQUIRES(glGetMultisamplefv, "GL_ARB_texture_multisample"),
|
|
GLFUNC_REQUIRES(glSampleMaski, "GL_ARB_texture_multisample"),
|
|
|
|
// ARB_texture_storage
|
|
GLFUNC_REQUIRES(glTexStorage1D, "GL_ARB_texture_storage !VERSION_4_2"),
|
|
GLFUNC_REQUIRES(glTexStorage2D, "GL_ARB_texture_storage !VERSION_4_2 |VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glTexStorage3D, "GL_ARB_texture_storage !VERSION_4_2 |VERSION_GLES_3"),
|
|
|
|
// ARB_texture_storage_multisample
|
|
GLFUNC_REQUIRES(glTexStorage2DMultisample,
|
|
"GL_ARB_texture_storage_multisample !VERSION_4_3 |VERSION_GLES_3_1"),
|
|
GLFUNC_REQUIRES(glTexStorage3DMultisample,
|
|
"GL_ARB_texture_storage_multisample !VERSION_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glTexStorage3DMultisample, OES,
|
|
"GL_OES_texture_storage_multisample_2d_array !VERSION_GLES_3_2"),
|
|
|
|
// ARB_ES2_compatibility
|
|
GLFUNC_REQUIRES(glClearDepthf, "GL_ARB_ES2_compatibility |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glDepthRangef, "GL_ARB_ES2_compatibility |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glGetShaderPrecisionFormat, "GL_ARB_ES2_compatibility |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glReleaseShaderCompiler, "GL_ARB_ES2_compatibility |VERSION_GLES_2"),
|
|
GLFUNC_REQUIRES(glShaderBinary, "GL_ARB_ES2_compatibility |VERSION_GLES_2"),
|
|
|
|
// NV_primitive_restart
|
|
GLFUNC_REQUIRES(glPrimitiveRestartIndexNV, "GL_NV_primitive_restart"),
|
|
GLFUNC_REQUIRES(glPrimitiveRestartNV, "GL_NV_primitive_restart"),
|
|
|
|
// ARB_blend_func_extended
|
|
GLFUNC_REQUIRES(glBindFragDataLocationIndexed, "GL_ARB_blend_func_extended"),
|
|
GLFUNC_REQUIRES(glGetFragDataIndex, "GL_ARB_blend_func_extended"),
|
|
|
|
// ARB_viewport_array
|
|
GLFUNC_REQUIRES(glDepthRangeArrayv, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glDepthRangeIndexed, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glGetDoublei_v, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glGetFloati_v, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glScissorArrayv, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glScissorIndexed, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glScissorIndexedv, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glViewportArrayv, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glViewportIndexedf, "GL_ARB_viewport_array"),
|
|
GLFUNC_REQUIRES(glViewportIndexedfv, "GL_ARB_viewport_array"),
|
|
|
|
// ARB_draw_elements_base_vertex
|
|
GLFUNC_REQUIRES(glDrawElementsBaseVertex, "GL_ARB_draw_elements_base_vertex |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glDrawElementsInstancedBaseVertex,
|
|
"GL_ARB_draw_elements_base_vertex |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glDrawRangeElementsBaseVertex,
|
|
"GL_ARB_draw_elements_base_vertex |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glMultiDrawElementsBaseVertex, "GL_ARB_draw_elements_base_vertex"),
|
|
|
|
// OES_draw_elements_base_vertex
|
|
GLFUNC_SUFFIX(glDrawElementsBaseVertex, OES,
|
|
"GL_OES_draw_elements_base_vertex !VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glDrawElementsInstancedBaseVertex, OES,
|
|
"GL_OES_draw_elements_base_vertex VERSION_GLES_3 !VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glDrawRangeElementsBaseVertex, OES,
|
|
"GL_OES_draw_elements_base_vertex VERSION_GLES_3 !VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glMultiDrawElementsBaseVertex, EXT,
|
|
"GL_OES_draw_elements_base_vertex GL_EXT_multi_draw_arrays"),
|
|
|
|
// EXT_draw_elements_base_vertex
|
|
GLFUNC_SUFFIX(
|
|
glDrawElementsBaseVertex, EXT,
|
|
"GL_EXT_draw_elements_base_vertex !GL_OES_draw_elements_base_vertex !VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glDrawElementsInstancedBaseVertex, EXT,
|
|
"GL_EXT_draw_elements_base_vertex VERSION_GLES_3 "
|
|
"!GL_OES_draw_elements_base_vertex !VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glDrawRangeElementsBaseVertex, EXT,
|
|
"GL_EXT_draw_elements_base_vertex VERSION_GLES_3 "
|
|
"!GL_OES_draw_elements_base_vertex !VERSION_GLES_3_2"),
|
|
GLFUNC_SUFFIX(glMultiDrawElementsBaseVertex, EXT,
|
|
"GL_EXT_draw_elements_base_vertex GL_EXT_multi_draw_arrays "
|
|
"!GL_OES_draw_elements_base_vertex !VERSION_GLES_3_2"),
|
|
|
|
// ARB_sample_shading
|
|
GLFUNC_SUFFIX(glMinSampleShading, ARB, "GL_ARB_sample_shading"),
|
|
|
|
// OES_sample_shading
|
|
GLFUNC_SUFFIX(glMinSampleShading, OES, "GL_OES_sample_shading !VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glMinSampleShading, "VERSION_GLES_3_2"),
|
|
|
|
// ARB_debug_output
|
|
GLFUNC_REQUIRES(glDebugMessageCallbackARB, "GL_ARB_debug_output"),
|
|
GLFUNC_REQUIRES(glDebugMessageControlARB, "GL_ARB_debug_output"),
|
|
GLFUNC_REQUIRES(glDebugMessageInsertARB, "GL_ARB_debug_output"),
|
|
GLFUNC_REQUIRES(glGetDebugMessageLogARB, "GL_ARB_debug_output"),
|
|
|
|
// KHR_debug
|
|
GLFUNC_SUFFIX(glDebugMessageCallback, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glDebugMessageControl, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glDebugMessageInsert, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glGetDebugMessageLog, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glGetObjectLabel, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glGetObjectPtrLabel, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glObjectLabel, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glObjectPtrLabel, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glPopDebugGroup, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_SUFFIX(glPushDebugGroup, KHR, "GL_KHR_debug VERSION_GLES_3"),
|
|
GLFUNC_REQUIRES(glDebugMessageCallback,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glDebugMessageControl,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glDebugMessageInsert,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glGetDebugMessageLog,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glGetObjectLabel,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glGetObjectPtrLabel,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glObjectLabel,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glObjectPtrLabel,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glPopDebugGroup,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
GLFUNC_REQUIRES(glPushDebugGroup,
|
|
"GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
|
|
|
|
// ARB_buffer_storage
|
|
GLFUNC_REQUIRES(glBufferStorage, "GL_ARB_buffer_storage !VERSION_4_4"),
|
|
GLFUNC_SUFFIX(glNamedBufferStorage, EXT,
|
|
"GL_ARB_buffer_storage GL_EXT_direct_state_access !VERSION_4_5"),
|
|
|
|
// EXT_buffer_storage
|
|
GLFUNC_SUFFIX(glBufferStorage, EXT,
|
|
"GL_EXT_buffer_storage !GL_ARB_buffer_storage !VERSION_4_4"),
|
|
|
|
// EXT_geometry_shader
|
|
GLFUNC_SUFFIX(glFramebufferTexture, EXT, "GL_EXT_geometry_shader !VERSION_3_2"),
|
|
|
|
// NV_occlusion_query_samples
|
|
GLFUNC_REQUIRES(glGenOcclusionQueriesNV, "GL_NV_occlusion_query_samples"),
|
|
GLFUNC_REQUIRES(glDeleteOcclusionQueriesNV, "GL_NV_occlusion_query_samples"),
|
|
GLFUNC_REQUIRES(glIsOcclusionQueryNV, "GL_NV_occlusion_query_samples"),
|
|
GLFUNC_REQUIRES(glBeginOcclusionQueryNV, "GL_NV_occlusion_query_samples"),
|
|
GLFUNC_REQUIRES(glEndOcclusionQueryNV, "GL_NV_occlusion_query_samples"),
|
|
GLFUNC_REQUIRES(glGetOcclusionQueryivNV, "GL_NV_occlusion_query_samples"),
|
|
GLFUNC_REQUIRES(glGetOcclusionQueryuivNV, "GL_NV_occlusion_query_samples"),
|
|
|
|
// ARB_clip_control
|
|
GLFUNC_REQUIRES(glClipControl, "GL_ARB_clip_control !VERSION_4_5"),
|
|
|
|
// ARB_copy_image
|
|
GLFUNC_REQUIRES(glCopyImageSubData, "GL_ARB_copy_image !VERSION_4_3 |VERSION_GLES_3_2"),
|
|
|
|
// NV_copy_image
|
|
GLFUNC_SUFFIX(glCopyImageSubData, NV, "GL_NV_copy_image !GL_ARB_copy_image !VERSION_GLES_3_2"),
|
|
|
|
// OES_copy_image
|
|
GLFUNC_SUFFIX(glCopyImageSubData, OES, "GL_OES_copy_image !VERSION_GLES_3_2"),
|
|
|
|
// EXT_copy_image
|
|
GLFUNC_SUFFIX(glCopyImageSubData, EXT,
|
|
"GL_EXT_copy_image !GL_OES_copy_image !VERSION_GLES_3_2"),
|
|
|
|
// EXT_texture_buffer
|
|
GLFUNC_SUFFIX(glTexBuffer, OES, "GL_OES_texture_buffer !VERSION_GLES_3_2"),
|
|
|
|
// EXT_texture_buffer
|
|
GLFUNC_SUFFIX(glTexBuffer, EXT,
|
|
"GL_EXT_texture_buffer !GL_OES_texture_buffer !VERSION_GLES_3_2"),
|
|
|
|
// EXT_blend_func_extended
|
|
GLFUNC_SUFFIX(glBindFragDataLocationIndexed, EXT, "GL_EXT_blend_func_extended"),
|
|
GLFUNC_SUFFIX(glGetFragDataIndex, EXT, "GL_EXT_blend_func_extended"),
|
|
|
|
// ARB_shader_storage_buffer_object
|
|
GLFUNC_REQUIRES(glShaderStorageBlockBinding, "ARB_shader_storage_buffer_object !VERSION_4_3"),
|
|
|
|
// NV_depth_buffer_float
|
|
GLFUNC_REQUIRES(glDepthRangedNV, "GL_NV_depth_buffer_float"),
|
|
GLFUNC_REQUIRES(glClearDepthdNV, "GL_NV_depth_buffer_float"),
|
|
GLFUNC_REQUIRES(glDepthBoundsdNV, "GL_NV_depth_buffer_float"),
|
|
|
|
// ARB_shader_image_load_store
|
|
GLFUNC_REQUIRES(glBindImageTexture,
|
|
"GL_ARB_shader_image_load_store !VERSION_4_2 |VERSION_GLES_3_1"),
|
|
GLFUNC_REQUIRES(glMemoryBarrier,
|
|
"GL_ARB_shader_image_load_store !VERSION_4_2 |VERSION_GLES_3_1"),
|
|
|
|
// ARB_compute_shader
|
|
GLFUNC_REQUIRES(glDispatchCompute, "GL_ARB_compute_shader !VERSION_4_3 |VERSION_GLES_3_1"),
|
|
GLFUNC_REQUIRES(glDispatchComputeIndirect,
|
|
"GL_ARB_compute_shader !VERSION_4_3 |VERSION_GLES_3_1"),
|
|
|
|
// ARB_get_texture_sub_image
|
|
GLFUNC_REQUIRES(glGetTextureSubImage, "GL_ARB_get_texture_sub_image !VERSION_4_5"),
|
|
};
|
|
|
|
namespace GLExtensions
|
|
{
|
|
// Private members and functions
|
|
static u32 s_gl_version;
|
|
static std::unordered_map<std::string, bool> s_extension_list;
|
|
|
|
// Private initialization functions
|
|
bool InitFunctionPointers(GLContext* context);
|
|
|
|
// Initializes the extension list the old way
|
|
static void InitExtensionList21()
|
|
{
|
|
const char* extensions = (const char*)glGetString(GL_EXTENSIONS);
|
|
std::string tmp(extensions);
|
|
std::istringstream buffer(tmp);
|
|
|
|
while (buffer >> tmp)
|
|
s_extension_list[tmp] = true;
|
|
}
|
|
|
|
static void InitExtensionList(GLContext* context)
|
|
{
|
|
s_extension_list.clear();
|
|
if (context->IsGLES())
|
|
{
|
|
switch (s_gl_version)
|
|
{
|
|
default:
|
|
case 320:
|
|
s_extension_list["VERSION_GLES_3_2"] = true;
|
|
case 310:
|
|
s_extension_list["VERSION_GLES_3_1"] = true;
|
|
case 300:
|
|
s_extension_list["VERSION_GLES_3"] = true;
|
|
break;
|
|
}
|
|
|
|
// We always have ES 2.0
|
|
s_extension_list["VERSION_GLES_2"] = true;
|
|
}
|
|
else
|
|
{
|
|
// Some OpenGL implementations chose to not expose core extensions as extensions
|
|
// Let's add them to the list manually depending on which version of OpenGL we have
|
|
// We need to be slightly careful here
|
|
// When an extension got merged in to core, the naming may have changed
|
|
|
|
// This has intentional fall through
|
|
switch (s_gl_version)
|
|
{
|
|
default:
|
|
case 450:
|
|
{
|
|
static const char* const gl450exts[] = {
|
|
"GL_ARB_ES3_1_compatibility",
|
|
"GL_ARB_clip_control",
|
|
"GL_ARB_conditional_render_inverted",
|
|
"GL_ARB_cull_distance",
|
|
"GL_ARB_derivative_control",
|
|
"GL_ARB_direct_state_access",
|
|
"GL_ARB_get_texture_sub_image",
|
|
"GL_ARB_robustness",
|
|
"GL_ARB_shader_texture_image_samples",
|
|
"GL_ARB_texture_barrier",
|
|
"VERSION_4_5",
|
|
};
|
|
for (auto it : gl450exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 440:
|
|
{
|
|
static const char* const gl440exts[] = {
|
|
"GL_ARB_buffer_storage",
|
|
"GL_ARB_clear_texture",
|
|
"GL_ARB_enhanced_layouts",
|
|
"GL_ARB_multi_bind",
|
|
"GL_ARB_query_buffer_object",
|
|
"GL_ARB_texture_mirror_clamp_to_edge",
|
|
"GL_ARB_texture_stencil8",
|
|
"GL_ARB_vertex_type_10f_11f_11f_rev",
|
|
"VERSION_4_4",
|
|
};
|
|
for (auto it : gl440exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 430:
|
|
{
|
|
static const char* const gl430exts[] = {
|
|
"GL_ARB_ES3_compatibility",
|
|
"GL_ARB_arrays_of_arrays",
|
|
"GL_ARB_clear_buffer_object",
|
|
"GL_ARB_compute_shader",
|
|
"GL_ARB_copy_image",
|
|
"GL_ARB_explicit_uniform_location",
|
|
"GL_ARB_fragment_layer_viewport",
|
|
"GL_ARB_framebuffer_no_attachments",
|
|
"GL_ARB_internalformat_query2",
|
|
"GL_ARB_invalidate_subdata",
|
|
"GL_ARB_multi_draw_indirect",
|
|
"GL_ARB_program_interface_query",
|
|
"GL_ARB_shader_image_size",
|
|
"GL_ARB_shader_storage_buffer_object",
|
|
"GL_ARB_stencil_texturing",
|
|
"GL_ARB_texture_buffer_range",
|
|
"GL_ARB_texture_query_levels",
|
|
"GL_ARB_texture_storage_multisample",
|
|
"GL_ARB_texture_view",
|
|
"GL_ARB_vertex_attrib_binding",
|
|
"VERSION_4_3",
|
|
};
|
|
for (auto it : gl430exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 420:
|
|
{
|
|
static const char* const gl420exts[] = {
|
|
"GL_ARB_base_instance",
|
|
"GL_ARB_compressed_texture_pixel_storage",
|
|
"GL_ARB_conservative_depth",
|
|
"GL_ARB_internalformat_query",
|
|
"GL_ARB_map_buffer_alignment",
|
|
"GL_ARB_shader_atomic_counters",
|
|
"GL_ARB_shader_image_load_store",
|
|
"GL_ARB_shading_language_420pack",
|
|
"GL_ARB_shading_language_packing",
|
|
"GL_ARB_texture_compression_BPTC",
|
|
"GL_ARB_texture_storage",
|
|
"GL_ARB_transform_feedback_instanced",
|
|
"VERSION_4_2",
|
|
};
|
|
for (auto it : gl420exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 410:
|
|
{
|
|
static const char* const gl410exts[] = {
|
|
"GL_ARB_ES2_compatibility",
|
|
"GL_ARB_get_program_binary",
|
|
"GL_ARB_separate_shader_objects",
|
|
"GL_ARB_shader_precision",
|
|
"GL_ARB_vertex_attrib_64_bit",
|
|
"GL_ARB_viewport_array",
|
|
"VERSION_4_1",
|
|
};
|
|
for (auto it : gl410exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 400:
|
|
{
|
|
static const char* const gl400exts[] = {
|
|
"GL_ARB_draw_indirect",
|
|
"GL_ARB_gpu_shader5",
|
|
"GL_ARB_gpu_shader_fp64",
|
|
"GL_ARB_sample_shading",
|
|
"GL_ARB_shader_subroutine",
|
|
"GL_ARB_tessellation_shader",
|
|
"GL_ARB_texture_buffer_object_rgb32",
|
|
"GL_ARB_texture_cube_map_array",
|
|
"GL_ARB_texture_gather",
|
|
"GL_ARB_texture_query_lod",
|
|
"GL_ARB_transform_feedback2",
|
|
"GL_ARB_transform_feedback3",
|
|
"VERSION_4_0",
|
|
};
|
|
for (auto it : gl400exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 330:
|
|
{
|
|
static const char* const gl330exts[] = {
|
|
"GL_ARB_shader_bit_encoding",
|
|
"GL_ARB_blend_func_extended",
|
|
"GL_ARB_explicit_attrib_location",
|
|
"GL_ARB_occlusion_query2",
|
|
"GL_ARB_sampler_objects",
|
|
"GL_ARB_texture_swizzle",
|
|
"GL_ARB_timer_query",
|
|
"GL_ARB_instanced_arrays",
|
|
"GL_ARB_texture_rgb10_a2ui",
|
|
"GL_ARB_vertex_type_2_10_10_10_rev",
|
|
"VERSION_3_3",
|
|
};
|
|
for (auto it : gl330exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 320:
|
|
{
|
|
static const char* const gl320exts[] = {
|
|
"GL_ARB_geometry_shader4",
|
|
"GL_ARB_sync",
|
|
"GL_ARB_vertex_array_bgra",
|
|
"GL_ARB_draw_elements_base_vertex",
|
|
"GL_ARB_seamless_cube_map",
|
|
"GL_ARB_texture_multisample",
|
|
"GL_ARB_fragment_coord_conventions",
|
|
"GL_ARB_provoking_vertex",
|
|
"GL_ARB_depth_clamp",
|
|
"VERSION_3_2",
|
|
};
|
|
for (auto it : gl320exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 310:
|
|
{
|
|
// Can't add NV_primitive_restart since function name changed
|
|
static const char* const gl310exts[] = {
|
|
"GL_ARB_draw_instanced",
|
|
"GL_ARB_copy_buffer",
|
|
"GL_ARB_texture_buffer_object",
|
|
"GL_ARB_texture_rectangle",
|
|
"GL_ARB_uniform_buffer_object",
|
|
//"GL_NV_primitive_restart",
|
|
"VERSION_3_1",
|
|
};
|
|
for (auto it : gl310exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 300:
|
|
{
|
|
// Quite a lot of these had their names changed when merged in to core
|
|
// Disable the ones that have
|
|
static const char* const gl300exts[] = {
|
|
"GL_ARB_map_buffer_range",
|
|
"GL_ARB_color_buffer_float",
|
|
"GL_ARB_texture_float",
|
|
"GL_ARB_half_float_pixel",
|
|
"GL_ARB_framebuffer_object",
|
|
"GL_ARB_texture_float",
|
|
"GL_ARB_vertex_array_object",
|
|
"GL_ARB_depth_buffer_float",
|
|
//"GL_EXT_texture_integer",
|
|
//"GL_EXT_gpu_shader4",
|
|
//"GL_APPLE_flush_buffer_range",
|
|
//"GL_EXT_packed_float",
|
|
//"GL_EXT_texture_shared_exponent",
|
|
//"GL_NV_half_float",
|
|
//"GL_EXT_framebuffer_sRGB",
|
|
//"GL_EXT_draw_buffers2",
|
|
//"GL_EXT_texture_integer",
|
|
//"GL_EXT_texture_array",
|
|
//"GL_EXT_texture_compression_rgtc",
|
|
//"GL_EXT_transform_feedback",
|
|
//"GL_NV_conditional_render",
|
|
"VERSION_3_0",
|
|
};
|
|
for (auto it : gl300exts)
|
|
s_extension_list[it] = true;
|
|
}
|
|
case 210:
|
|
case 200:
|
|
case 150:
|
|
case 140:
|
|
case 130:
|
|
case 121:
|
|
case 120:
|
|
case 110:
|
|
case 100:
|
|
break;
|
|
}
|
|
// So we can easily determine if we are running dekstop GL
|
|
s_extension_list["VERSION_GL"] = true;
|
|
}
|
|
|
|
if (s_gl_version < 300)
|
|
{
|
|
InitExtensionList21();
|
|
return;
|
|
}
|
|
GLint NumExtension = 0;
|
|
glGetIntegerv(GL_NUM_EXTENSIONS, &NumExtension);
|
|
for (GLint i = 0; i < NumExtension; ++i)
|
|
s_extension_list[std::string((const char*)glGetStringi(GL_EXTENSIONS, i))] = true;
|
|
}
|
|
static void InitVersion()
|
|
{
|
|
GLint major, minor;
|
|
glGetIntegerv(GL_MAJOR_VERSION, &major);
|
|
glGetIntegerv(GL_MINOR_VERSION, &minor);
|
|
if (glGetError() == GL_NO_ERROR)
|
|
s_gl_version = major * 100 + minor * 10;
|
|
else
|
|
s_gl_version = 210;
|
|
}
|
|
|
|
static void* GetFuncAddress(GLContext* context, const std::string& name, void** func)
|
|
{
|
|
*func = context->GetFuncAddress(name);
|
|
if (*func == nullptr)
|
|
{
|
|
#if defined(__linux__) || defined(__APPLE__)
|
|
// Give it a second try with dlsym
|
|
*func = dlsym(RTLD_NEXT, name.c_str());
|
|
#endif
|
|
if (*func == nullptr)
|
|
ERROR_LOG_FMT(VIDEO, "Couldn't load function {}", name);
|
|
}
|
|
return *func;
|
|
}
|
|
|
|
// Public members
|
|
u32 Version()
|
|
{
|
|
return s_gl_version;
|
|
}
|
|
bool Supports(const std::string& name)
|
|
{
|
|
return s_extension_list[name];
|
|
}
|
|
|
|
bool Init(GLContext* context)
|
|
{
|
|
// Grab a few functions for initial checking
|
|
// We need them to grab the extension list
|
|
// Also to check if there is an error grabbing the version
|
|
if (GetFuncAddress(context, "glGetIntegerv", (void**)&glGetIntegerv) == nullptr)
|
|
return false;
|
|
if (GetFuncAddress(context, "glGetString", (void**)&glGetString) == nullptr)
|
|
return false;
|
|
if (GetFuncAddress(context, "glGetError", (void**)&glGetError) == nullptr)
|
|
return false;
|
|
|
|
InitVersion();
|
|
|
|
// We need to use glGetStringi to get the extension list
|
|
// if we are using GLES3 or a GL version greater than 2.1
|
|
if (s_gl_version > 210 &&
|
|
GetFuncAddress(context, "glGetStringi", (void**)&glGetStringi) == nullptr)
|
|
return false;
|
|
|
|
InitExtensionList(context);
|
|
|
|
return InitFunctionPointers(context);
|
|
}
|
|
|
|
// Private initialization functions
|
|
static bool HasFeatures(const std::string& extensions)
|
|
{
|
|
bool result = true;
|
|
std::string tmp;
|
|
std::istringstream buffer(extensions);
|
|
|
|
while (buffer >> tmp)
|
|
{
|
|
if (tmp[0] == '!')
|
|
result &= !s_extension_list[tmp.erase(0, 1)];
|
|
else if (tmp[0] == '|')
|
|
result |= s_extension_list[tmp.erase(0, 1)];
|
|
else
|
|
result &= s_extension_list[tmp];
|
|
}
|
|
return result;
|
|
}
|
|
bool InitFunctionPointers(GLContext* context)
|
|
{
|
|
bool result = true;
|
|
for (const auto& it : gl_function_array)
|
|
if (HasFeatures(it.requirements))
|
|
result &= !!GetFuncAddress(context, it.function_name, it.function_ptr);
|
|
return result;
|
|
}
|
|
} // namespace GLExtensions
|