diff --git a/src/OpenGl/FILES b/src/OpenGl/FILES index 107ce004c4..fbfde8dbe3 100755 --- a/src/OpenGl/FILES +++ b/src/OpenGl/FILES @@ -95,6 +95,7 @@ OpenGl_GlCore41.hxx OpenGl_GlCore42.hxx OpenGl_GlCore43.hxx OpenGl_GlCore44.hxx +OpenGl_GlCore45.hxx OpenGl_LayerList.cxx OpenGl_LayerList.hxx OpenGl_LayerFilter.hxx diff --git a/src/OpenGl/OpenGl_Context.cxx b/src/OpenGl/OpenGl_Context.cxx index 48bd620f7d..b6ef9c2ef4 100644 --- a/src/OpenGl/OpenGl_Context.cxx +++ b/src/OpenGl/OpenGl_Context.cxx @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include @@ -109,6 +109,8 @@ OpenGl_Context::OpenGl_Context (const Handle(OpenGl_Caps)& theCaps) core43back (NULL), core44 (NULL), core44back (NULL), + core45 (NULL), + core45back (NULL), caps (!theCaps.IsNull() ? theCaps : new OpenGl_Caps()), #if defined(GL_ES_VERSION_2_0) hasHighp (Standard_False), @@ -1266,6 +1268,8 @@ void OpenGl_Context::init (const Standard_Boolean theIsCoreProfile) core43back = NULL; core44 = NULL; core44back = NULL; + core45 = NULL; + core45back = NULL; arbTBO = NULL; arbTboRGB32 = Standard_False; arbIns = NULL; @@ -1532,6 +1536,7 @@ void OpenGl_Context::init (const Standard_Boolean theIsCoreProfile) bool has42 = false; bool has43 = false; bool has44 = false; + bool has45 = false; // retrieve platform-dependent extensions #if defined(HAVE_EGL) @@ -2331,6 +2336,131 @@ void OpenGl_Context::init (const Standard_Boolean theIsCoreProfile) && FindProcShort (glBindImageTextures) && FindProcShort (glBindVertexBuffers); + has45 = IsGlGreaterEqual (4, 5) + && FindProcShort (glBindVertexBuffers) + && FindProcShort (glClipControl) + && FindProcShort (glCreateTransformFeedbacks) + && FindProcShort (glTransformFeedbackBufferBase) + && FindProcShort (glTransformFeedbackBufferRange) + && FindProcShort (glGetTransformFeedbackiv) + && FindProcShort (glGetTransformFeedbacki_v) + && FindProcShort (glGetTransformFeedbacki64_v) + && FindProcShort (glCreateBuffers) + && FindProcShort (glNamedBufferStorage) + && FindProcShort (glNamedBufferData) + && FindProcShort (glNamedBufferSubData) + && FindProcShort (glCopyNamedBufferSubData) + && FindProcShort (glClearNamedBufferData) + && FindProcShort (glClearNamedBufferSubData) + && FindProcShort (glMapNamedBuffer) + && FindProcShort (glMapNamedBufferRange) + && FindProcShort (glUnmapNamedBuffer) + && FindProcShort (glFlushMappedNamedBufferRange) + && FindProcShort (glGetNamedBufferParameteriv) + && FindProcShort (glGetNamedBufferParameteri64v) + && FindProcShort (glGetNamedBufferPointerv) + && FindProcShort (glGetNamedBufferSubData) + && FindProcShort (glCreateFramebuffers) + && FindProcShort (glNamedFramebufferRenderbuffer) + && FindProcShort (glNamedFramebufferParameteri) + && FindProcShort (glNamedFramebufferTexture) + && FindProcShort (glNamedFramebufferTextureLayer) + && FindProcShort (glNamedFramebufferDrawBuffer) + && FindProcShort (glNamedFramebufferDrawBuffers) + && FindProcShort (glNamedFramebufferReadBuffer) + && FindProcShort (glInvalidateNamedFramebufferData) + && FindProcShort (glInvalidateNamedFramebufferSubData) + && FindProcShort (glClearNamedFramebufferiv) + && FindProcShort (glClearNamedFramebufferuiv) + && FindProcShort (glClearNamedFramebufferfv) + && FindProcShort (glClearNamedFramebufferfi) + && FindProcShort (glBlitNamedFramebuffer) + && FindProcShort (glCheckNamedFramebufferStatus) + && FindProcShort (glGetNamedFramebufferParameteriv) + && FindProcShort (glGetNamedFramebufferAttachmentParameteriv) + && FindProcShort (glCreateRenderbuffers) + && FindProcShort (glNamedRenderbufferStorage) + && FindProcShort (glNamedRenderbufferStorageMultisample) + && FindProcShort (glGetNamedRenderbufferParameteriv) + && FindProcShort (glCreateTextures) + && FindProcShort (glTextureBuffer) + && FindProcShort (glTextureBufferRange) + && FindProcShort (glTextureStorage1D) + && FindProcShort (glTextureStorage2D) + && FindProcShort (glTextureStorage3D) + && FindProcShort (glTextureStorage2DMultisample) + && FindProcShort (glTextureStorage3DMultisample) + && FindProcShort (glTextureSubImage1D) + && FindProcShort (glTextureSubImage2D) + && FindProcShort (glTextureSubImage3D) + && FindProcShort (glCompressedTextureSubImage1D) + && FindProcShort (glCompressedTextureSubImage2D) + && FindProcShort (glCompressedTextureSubImage3D) + && FindProcShort (glCopyTextureSubImage1D) + && FindProcShort (glCopyTextureSubImage2D) + && FindProcShort (glCopyTextureSubImage3D) + && FindProcShort (glTextureParameterf) + && FindProcShort (glTextureParameterfv) + && FindProcShort (glTextureParameteri) + && FindProcShort (glTextureParameterIiv) + && FindProcShort (glTextureParameterIuiv) + && FindProcShort (glTextureParameteriv) + && FindProcShort (glGenerateTextureMipmap) + && FindProcShort (glBindTextureUnit) + && FindProcShort (glGetTextureImage) + && FindProcShort (glGetCompressedTextureImage) + && FindProcShort (glGetTextureLevelParameterfv) + && FindProcShort (glGetTextureLevelParameteriv) + && FindProcShort (glGetTextureParameterfv) + && FindProcShort (glGetTextureParameterIiv) + && FindProcShort (glGetTextureParameterIuiv) + && FindProcShort (glGetTextureParameteriv) + && FindProcShort (glCreateVertexArrays) + && FindProcShort (glDisableVertexArrayAttrib) + && FindProcShort (glEnableVertexArrayAttrib) + && FindProcShort (glVertexArrayElementBuffer) + && FindProcShort (glVertexArrayVertexBuffer) + && FindProcShort (glVertexArrayVertexBuffers) + && FindProcShort (glVertexArrayAttribBinding) + && FindProcShort (glVertexArrayAttribFormat) + && FindProcShort (glVertexArrayAttribIFormat) + && FindProcShort (glVertexArrayAttribLFormat) + && FindProcShort (glVertexArrayBindingDivisor) + && FindProcShort (glGetVertexArrayiv) + && FindProcShort (glGetVertexArrayIndexediv) + && FindProcShort (glGetVertexArrayIndexed64iv) + && FindProcShort (glCreateSamplers) + && FindProcShort (glCreateProgramPipelines) + && FindProcShort (glCreateQueries) + && FindProcShort (glGetQueryBufferObjecti64v) + && FindProcShort (glGetQueryBufferObjectiv) + && FindProcShort (glGetQueryBufferObjectui64v) + && FindProcShort (glGetQueryBufferObjectuiv) + && FindProcShort (glMemoryBarrierByRegion) + && FindProcShort (glGetTextureSubImage) + && FindProcShort (glGetCompressedTextureSubImage) + && FindProcShort (glGetGraphicsResetStatus) + && FindProcShort (glGetnCompressedTexImage) + && FindProcShort (glGetnTexImage) + && FindProcShort (glGetnUniformdv) + && FindProcShort (glGetnUniformfv) + && FindProcShort (glGetnUniformiv) + && FindProcShort (glGetnUniformuiv) + && FindProcShort (glReadnPixels) + && FindProcShort (glGetnMapdv) + && FindProcShort (glGetnMapfv) + && FindProcShort (glGetnMapiv) + && FindProcShort (glGetnPixelMapfv) + && FindProcShort (glGetnPixelMapuiv) + && FindProcShort (glGetnPixelMapusv) + && FindProcShort (glGetnPolygonStipple) + && FindProcShort (glGetnColorTable) + && FindProcShort (glGetnConvolutionFilter) + && FindProcShort (glGetnSeparableFilter) + && FindProcShort (glGetnHistogram) + && FindProcShort (glGetnMinmax) + && FindProcShort (glTextureBarrier); + // initialize debug context extension if (CheckExtension ("GL_ARB_debug_output")) { @@ -2636,6 +2766,19 @@ void OpenGl_Context::init (const Standard_Boolean theIsCoreProfile) { core44back = (OpenGl_GlCore44Back* )(&(*myFuncs)); } + + if (!has45) + { + checkWrongVersion (4, 5); + myGlVerMajor = 4; + myGlVerMinor = 4; + return; + } + core45 = (OpenGl_GlCore45* )(&(*myFuncs)); + if (!isCoreProfile) + { + core45back = (OpenGl_GlCore45Back* )(&(*myFuncs)); + } #endif } diff --git a/src/OpenGl/OpenGl_Context.hxx b/src/OpenGl/OpenGl_Context.hxx index f58cb999b3..8a26ab5b35 100644 --- a/src/OpenGl/OpenGl_Context.hxx +++ b/src/OpenGl/OpenGl_Context.hxx @@ -132,6 +132,10 @@ template struct OpenGl_TmplCore44; typedef OpenGl_TmplCore44 OpenGl_GlCore44Back; typedef OpenGl_TmplCore44 OpenGl_GlCore44; +template struct OpenGl_TmplCore45; +typedef OpenGl_TmplCore45 OpenGl_GlCore45Back; +typedef OpenGl_TmplCore45 OpenGl_GlCore45; + class Graphic3d_PresentationAttributes; class OpenGl_Aspects; class OpenGl_FrameBuffer; @@ -853,6 +857,8 @@ public: //! @name core profiles OpenGl_GlCore43Back* core43back; //!< OpenGL 4.3 backward compatibility profile OpenGl_GlCore44* core44; //!< OpenGL 4.4 core profile OpenGl_GlCore44Back* core44back; //!< OpenGL 4.4 backward compatibility profile + OpenGl_GlCore45* core45; //!< OpenGL 4.5 core profile + OpenGl_GlCore45Back* core45back; //!< OpenGL 4.5 backward compatibility profile Handle(OpenGl_Caps) caps; //!< context options diff --git a/src/OpenGl/OpenGl_GlCore45.hxx b/src/OpenGl/OpenGl_GlCore45.hxx new file mode 100644 index 0000000000..e9e9099d30 --- /dev/null +++ b/src/OpenGl/OpenGl_GlCore45.hxx @@ -0,0 +1,159 @@ +// Copyright (c) 2019 OPEN CASCADE SAS +// +// This file is part of Open CASCADE Technology software library. +// +// This library is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License version 2.1 as published +// by the Free Software Foundation, with special exception defined in the file +// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT +// distribution for complete text of the license and disclaimer of any warranty. +// +// Alternatively, this file may be used under the terms of Open CASCADE +// commercial license or contractual agreement. + +#ifndef _OpenGl_GlCore45_Header +#define _OpenGl_GlCore45_Header + +#include + +//! OpenGL 4.5 definition. +template +struct OpenGl_TmplCore45 : public theBaseClass_t +{ + +public: //! @name OpenGL 4.5 additives to 4.4 + +#if !defined(GL_ES_VERSION_2_0) + using theBaseClass_t::glClipControl; + using theBaseClass_t::glCreateTransformFeedbacks; + using theBaseClass_t::glTransformFeedbackBufferBase; + using theBaseClass_t::glTransformFeedbackBufferRange; + using theBaseClass_t::glGetTransformFeedbackiv; + using theBaseClass_t::glGetTransformFeedbacki_v; + using theBaseClass_t::glGetTransformFeedbacki64_v; + using theBaseClass_t::glCreateBuffers; + using theBaseClass_t::glNamedBufferStorage; + using theBaseClass_t::glNamedBufferData; + using theBaseClass_t::glNamedBufferSubData; + using theBaseClass_t::glCopyNamedBufferSubData; + using theBaseClass_t::glClearNamedBufferData; + using theBaseClass_t::glClearNamedBufferSubData; + using theBaseClass_t::glMapNamedBuffer; + using theBaseClass_t::glMapNamedBufferRange; + using theBaseClass_t::glUnmapNamedBuffer; + using theBaseClass_t::glFlushMappedNamedBufferRange; + using theBaseClass_t::glGetNamedBufferParameteriv; + using theBaseClass_t::glGetNamedBufferParameteri64v; + using theBaseClass_t::glGetNamedBufferPointerv; + using theBaseClass_t::glGetNamedBufferSubData; + using theBaseClass_t::glCreateFramebuffers; + using theBaseClass_t::glNamedFramebufferRenderbuffer; + using theBaseClass_t::glNamedFramebufferParameteri; + using theBaseClass_t::glNamedFramebufferTexture; + using theBaseClass_t::glNamedFramebufferTextureLayer; + using theBaseClass_t::glNamedFramebufferDrawBuffer; + using theBaseClass_t::glNamedFramebufferDrawBuffers; + using theBaseClass_t::glNamedFramebufferReadBuffer; + using theBaseClass_t::glInvalidateNamedFramebufferData; + using theBaseClass_t::glInvalidateNamedFramebufferSubData; + using theBaseClass_t::glClearNamedFramebufferiv; + using theBaseClass_t::glClearNamedFramebufferuiv; + using theBaseClass_t::glClearNamedFramebufferfv; + using theBaseClass_t::glClearNamedFramebufferfi; + using theBaseClass_t::glBlitNamedFramebuffer; + using theBaseClass_t::glCheckNamedFramebufferStatus; + using theBaseClass_t::glGetNamedFramebufferParameteriv; + using theBaseClass_t::glGetNamedFramebufferAttachmentParameteriv; + using theBaseClass_t::glCreateRenderbuffers; + using theBaseClass_t::glNamedRenderbufferStorage; + using theBaseClass_t::glNamedRenderbufferStorageMultisample; + using theBaseClass_t::glGetNamedRenderbufferParameteriv; + using theBaseClass_t::glCreateTextures; + using theBaseClass_t::glTextureBuffer; + using theBaseClass_t::glTextureBufferRange; + using theBaseClass_t::glTextureStorage1D; + using theBaseClass_t::glTextureStorage2D; + using theBaseClass_t::glTextureStorage3D; + using theBaseClass_t::glTextureStorage2DMultisample; + using theBaseClass_t::glTextureStorage3DMultisample; + using theBaseClass_t::glTextureSubImage1D; + using theBaseClass_t::glTextureSubImage2D; + using theBaseClass_t::glTextureSubImage3D; + using theBaseClass_t::glCompressedTextureSubImage1D; + using theBaseClass_t::glCompressedTextureSubImage2D; + using theBaseClass_t::glCompressedTextureSubImage3D; + using theBaseClass_t::glCopyTextureSubImage1D; + using theBaseClass_t::glCopyTextureSubImage2D; + using theBaseClass_t::glCopyTextureSubImage3D; + using theBaseClass_t::glTextureParameterf; + using theBaseClass_t::glTextureParameterfv; + using theBaseClass_t::glTextureParameteri; + using theBaseClass_t::glTextureParameterIiv; + using theBaseClass_t::glTextureParameterIuiv; + using theBaseClass_t::glTextureParameteriv; + using theBaseClass_t::glGenerateTextureMipmap; + using theBaseClass_t::glBindTextureUnit; + using theBaseClass_t::glGetTextureImage; + using theBaseClass_t::glGetCompressedTextureImage; + using theBaseClass_t::glGetTextureLevelParameterfv; + using theBaseClass_t::glGetTextureLevelParameteriv; + using theBaseClass_t::glGetTextureParameterfv; + using theBaseClass_t::glGetTextureParameterIiv; + using theBaseClass_t::glGetTextureParameterIuiv; + using theBaseClass_t::glGetTextureParameteriv; + using theBaseClass_t::glCreateVertexArrays; + using theBaseClass_t::glDisableVertexArrayAttrib; + using theBaseClass_t::glEnableVertexArrayAttrib; + using theBaseClass_t::glVertexArrayElementBuffer; + using theBaseClass_t::glVertexArrayVertexBuffer; + using theBaseClass_t::glVertexArrayVertexBuffers; + using theBaseClass_t::glVertexArrayAttribBinding; + using theBaseClass_t::glVertexArrayAttribFormat; + using theBaseClass_t::glVertexArrayAttribIFormat; + using theBaseClass_t::glVertexArrayAttribLFormat; + using theBaseClass_t::glVertexArrayBindingDivisor; + using theBaseClass_t::glGetVertexArrayiv; + using theBaseClass_t::glGetVertexArrayIndexediv; + using theBaseClass_t::glGetVertexArrayIndexed64iv; + using theBaseClass_t::glCreateSamplers; + using theBaseClass_t::glCreateProgramPipelines; + using theBaseClass_t::glCreateQueries; + using theBaseClass_t::glGetQueryBufferObjecti64v; + using theBaseClass_t::glGetQueryBufferObjectiv; + using theBaseClass_t::glGetQueryBufferObjectui64v; + using theBaseClass_t::glGetQueryBufferObjectuiv; + using theBaseClass_t::glMemoryBarrierByRegion; + using theBaseClass_t::glGetTextureSubImage; + using theBaseClass_t::glGetCompressedTextureSubImage; + using theBaseClass_t::glGetGraphicsResetStatus; + using theBaseClass_t::glGetnCompressedTexImage; + using theBaseClass_t::glGetnTexImage; + using theBaseClass_t::glGetnUniformdv; + using theBaseClass_t::glGetnUniformfv; + using theBaseClass_t::glGetnUniformiv; + using theBaseClass_t::glGetnUniformuiv; + using theBaseClass_t::glReadnPixels; + using theBaseClass_t::glGetnMapdv; + using theBaseClass_t::glGetnMapfv; + using theBaseClass_t::glGetnMapiv; + using theBaseClass_t::glGetnPixelMapfv; + using theBaseClass_t::glGetnPixelMapuiv; + using theBaseClass_t::glGetnPixelMapusv; + using theBaseClass_t::glGetnPolygonStipple; + using theBaseClass_t::glGetnColorTable; + using theBaseClass_t::glGetnConvolutionFilter; + using theBaseClass_t::glGetnSeparableFilter; + using theBaseClass_t::glGetnHistogram; + using theBaseClass_t::glGetnMinmax; + using theBaseClass_t::glTextureBarrier; +#endif + +}; + +//! OpenGL 4.5 compatibility profile. +typedef OpenGl_TmplCore45 OpenGl_GlCore45Back; + +//! OpenGL 4.5 core profile. +typedef OpenGl_TmplCore45 OpenGl_GlCore45; + +#endif // _OpenGl_GlCore45_Header diff --git a/src/OpenGl/OpenGl_GlFunctions.hxx b/src/OpenGl/OpenGl_GlFunctions.hxx index d1bb22cf30..f39015e87a 100644 --- a/src/OpenGl/OpenGl_GlFunctions.hxx +++ b/src/OpenGl/OpenGl_GlFunctions.hxx @@ -1528,6 +1528,131 @@ public: //! @name OpenGL 4.4 PFNGLBINDIMAGETEXTURESPROC glBindImageTextures; PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers; +public: //! @name OpenGL 4.5 + + PFNGLCLIPCONTROLPROC glClipControl; + PFNGLCREATETRANSFORMFEEDBACKSPROC glCreateTransformFeedbacks; + PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glTransformFeedbackBufferBase; + PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glTransformFeedbackBufferRange; + PFNGLGETTRANSFORMFEEDBACKIVPROC glGetTransformFeedbackiv; + PFNGLGETTRANSFORMFEEDBACKI_VPROC glGetTransformFeedbacki_v; + PFNGLGETTRANSFORMFEEDBACKI64_VPROC glGetTransformFeedbacki64_v; + PFNGLCREATEBUFFERSPROC glCreateBuffers; + PFNGLNAMEDBUFFERSTORAGEPROC glNamedBufferStorage; + PFNGLNAMEDBUFFERDATAPROC glNamedBufferData; + PFNGLNAMEDBUFFERSUBDATAPROC glNamedBufferSubData; + PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData; + PFNGLCLEARNAMEDBUFFERDATAPROC glClearNamedBufferData; + PFNGLCLEARNAMEDBUFFERSUBDATAPROC glClearNamedBufferSubData; + PFNGLMAPNAMEDBUFFERPROC glMapNamedBuffer; + PFNGLMAPNAMEDBUFFERRANGEPROC glMapNamedBufferRange; + PFNGLUNMAPNAMEDBUFFERPROC glUnmapNamedBuffer; + PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glFlushMappedNamedBufferRange; + PFNGLGETNAMEDBUFFERPARAMETERIVPROC glGetNamedBufferParameteriv; + PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v; + PFNGLGETNAMEDBUFFERPOINTERVPROC glGetNamedBufferPointerv; + PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData; + PFNGLCREATEFRAMEBUFFERSPROC glCreateFramebuffers; + PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glNamedFramebufferRenderbuffer; + PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glNamedFramebufferParameteri; + PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glNamedFramebufferTexture; + PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glNamedFramebufferTextureLayer; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glNamedFramebufferDrawBuffers; + PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glNamedFramebufferReadBuffer; + PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glInvalidateNamedFramebufferData; + PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glInvalidateNamedFramebufferSubData; + PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glClearNamedFramebufferiv; + PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glClearNamedFramebufferuiv; + PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glClearNamedFramebufferfv; + PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glClearNamedFramebufferfi; + PFNGLBLITNAMEDFRAMEBUFFERPROC glBlitNamedFramebuffer; + PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glCheckNamedFramebufferStatus; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glGetNamedFramebufferParameteriv; + PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv; + PFNGLCREATERENDERBUFFERSPROC glCreateRenderbuffers; + PFNGLNAMEDRENDERBUFFERSTORAGEPROC glNamedRenderbufferStorage; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glNamedRenderbufferStorageMultisample; + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glGetNamedRenderbufferParameteriv; + PFNGLCREATETEXTURESPROC glCreateTextures; + PFNGLTEXTUREBUFFERPROC glTextureBuffer; + PFNGLTEXTUREBUFFERRANGEPROC glTextureBufferRange; + PFNGLTEXTURESTORAGE1DPROC glTextureStorage1D; + PFNGLTEXTURESTORAGE2DPROC glTextureStorage2D; + PFNGLTEXTURESTORAGE3DPROC glTextureStorage3D; + PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glTextureStorage2DMultisample; + PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glTextureStorage3DMultisample; + PFNGLTEXTURESUBIMAGE1DPROC glTextureSubImage1D; + PFNGLTEXTURESUBIMAGE2DPROC glTextureSubImage2D; + PFNGLTEXTURESUBIMAGE3DPROC glTextureSubImage3D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glCompressedTextureSubImage1D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glCompressedTextureSubImage2D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glCompressedTextureSubImage3D; + PFNGLCOPYTEXTURESUBIMAGE1DPROC glCopyTextureSubImage1D; + PFNGLCOPYTEXTURESUBIMAGE2DPROC glCopyTextureSubImage2D; + PFNGLCOPYTEXTURESUBIMAGE3DPROC glCopyTextureSubImage3D; + PFNGLTEXTUREPARAMETERFPROC glTextureParameterf; + PFNGLTEXTUREPARAMETERFVPROC glTextureParameterfv; + PFNGLTEXTUREPARAMETERIPROC glTextureParameteri; + PFNGLTEXTUREPARAMETERIIVPROC glTextureParameterIiv; + PFNGLTEXTUREPARAMETERIUIVPROC glTextureParameterIuiv; + PFNGLTEXTUREPARAMETERIVPROC glTextureParameteriv; + PFNGLGENERATETEXTUREMIPMAPPROC glGenerateTextureMipmap; + PFNGLBINDTEXTUREUNITPROC glBindTextureUnit; + PFNGLGETTEXTUREIMAGEPROC glGetTextureImage; + PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glGetCompressedTextureImage; + PFNGLGETTEXTURELEVELPARAMETERFVPROC glGetTextureLevelParameterfv; + PFNGLGETTEXTURELEVELPARAMETERIVPROC glGetTextureLevelParameteriv; + PFNGLGETTEXTUREPARAMETERFVPROC glGetTextureParameterfv; + PFNGLGETTEXTUREPARAMETERIIVPROC glGetTextureParameterIiv; + PFNGLGETTEXTUREPARAMETERIUIVPROC glGetTextureParameterIuiv; + PFNGLGETTEXTUREPARAMETERIVPROC glGetTextureParameteriv; + PFNGLCREATEVERTEXARRAYSPROC glCreateVertexArrays; + PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib; + PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib; + PFNGLVERTEXARRAYELEMENTBUFFERPROC glVertexArrayElementBuffer; + PFNGLVERTEXARRAYVERTEXBUFFERPROC glVertexArrayVertexBuffer; + PFNGLVERTEXARRAYVERTEXBUFFERSPROC glVertexArrayVertexBuffers; + PFNGLVERTEXARRAYATTRIBBINDINGPROC glVertexArrayAttribBinding; + PFNGLVERTEXARRAYATTRIBFORMATPROC glVertexArrayAttribFormat; + PFNGLVERTEXARRAYATTRIBIFORMATPROC glVertexArrayAttribIFormat; + PFNGLVERTEXARRAYATTRIBLFORMATPROC glVertexArrayAttribLFormat; + PFNGLVERTEXARRAYBINDINGDIVISORPROC glVertexArrayBindingDivisor; + PFNGLGETVERTEXARRAYIVPROC glGetVertexArrayiv; + PFNGLGETVERTEXARRAYINDEXEDIVPROC glGetVertexArrayIndexediv; + PFNGLGETVERTEXARRAYINDEXED64IVPROC glGetVertexArrayIndexed64iv; + PFNGLCREATESAMPLERSPROC glCreateSamplers; + PFNGLCREATEPROGRAMPIPELINESPROC glCreateProgramPipelines; + PFNGLCREATEQUERIESPROC glCreateQueries; + PFNGLGETQUERYBUFFEROBJECTI64VPROC glGetQueryBufferObjecti64v; + PFNGLGETQUERYBUFFEROBJECTIVPROC glGetQueryBufferObjectiv; + PFNGLGETQUERYBUFFEROBJECTUI64VPROC glGetQueryBufferObjectui64v; + PFNGLGETQUERYBUFFEROBJECTUIVPROC glGetQueryBufferObjectuiv; + PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion; + PFNGLGETTEXTURESUBIMAGEPROC glGetTextureSubImage; + PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glGetCompressedTextureSubImage; + PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus; + PFNGLGETNCOMPRESSEDTEXIMAGEPROC glGetnCompressedTexImage; + PFNGLGETNTEXIMAGEPROC glGetnTexImage; + PFNGLGETNUNIFORMDVPROC glGetnUniformdv; + PFNGLGETNUNIFORMFVPROC glGetnUniformfv; + PFNGLGETNUNIFORMIVPROC glGetnUniformiv; + PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv; + PFNGLREADNPIXELSPROC glReadnPixels; + PFNGLGETNMAPDVPROC glGetnMapdv; + PFNGLGETNMAPFVPROC glGetnMapfv; + PFNGLGETNMAPIVPROC glGetnMapiv; + PFNGLGETNPIXELMAPFVPROC glGetnPixelMapfv; + PFNGLGETNPIXELMAPUIVPROC glGetnPixelMapuiv; + PFNGLGETNPIXELMAPUSVPROC glGetnPixelMapusv; + PFNGLGETNPOLYGONSTIPPLEPROC glGetnPolygonStipple; + PFNGLGETNCOLORTABLEPROC glGetnColorTable; + PFNGLGETNCONVOLUTIONFILTERPROC glGetnConvolutionFilter; + PFNGLGETNSEPARABLEFILTERPROC glGetnSeparableFilter; + PFNGLGETNHISTOGRAMPROC glGetnHistogram; + PFNGLGETNMINMAXPROC glGetnMinmax; + PFNGLTEXTUREBARRIERPROC glTextureBarrier; + public: //! @name GL_EXT_geometry_shader4 PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;