diff --git a/CMakeLists.txt b/CMakeLists.txt index 490f45bc3..e5f980ff2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,11 @@ cmake_dependent_option(WITH_SHAPES "Build Shapes library" ON "NOT WITH_DEBUGTOOL option(WITH_TEXT "Build Text library" ON) cmake_dependent_option(WITH_TEXTURETOOLS "Build TextureTools library" ON "NOT WITH_TEXT;NOT WITH_DISTANCEFIELDCONVERTER" ON) +# EGL context, available everywhere except on platforms which don't support extension loading +if(NOT CORRADE_TARGET_EMSCRIPTEN AND NOT CORRADE_TARGET_NACL) + option(WITH_EGLCONTEXT "Build EglContext library" OFF) +endif() + # NaCl-specific application libraries if(CORRADE_TARGET_NACL) option(WITH_NACLAPPLICATION "Build NaClApplication library" OFF) @@ -61,19 +66,19 @@ elseif(CORRADE_TARGET_ANDROID) # OS X-specific application libraries elseif(CORRADE_TARGET_APPLE) cmake_dependent_option(WITH_WINDOWLESSCGLAPPLICATION "Build WindowlessCglApplication library" OFF "NOT WITH_MAGNUMINFO;NOT WITH_FONTCONVERTER;NOT WITH_DISTANCEFIELDCONVERTER" ON) - cmake_dependent_option(WITH_CGLCONTEXT "Build CglContext library" OFF "NOT TARGET_GLES" OFF) + option(WITH_CGLCONTEXT "Build CglContext library" OFF) # X11 + GLX/EGL-specific application libraries elseif(CORRADE_TARGET_UNIX) option(WITH_GLXAPPLICATION "Build GlxApplication library" OFF) cmake_dependent_option(WITH_WINDOWLESSGLXAPPLICATION "Build WindowlessGlxApplication library" OFF "NOT WITH_MAGNUMINFO;NOT WITH_FONTCONVERTER;NOT WITH_DISTANCEFIELDCONVERTER" ON) cmake_dependent_option(WITH_XEGLAPPLICATION "Build XEglApplication library" OFF "TARGET_GLES" OFF) - cmake_dependent_option(WITH_GLXCONTEXT "Build GlxContext library" OFF "NOT TARGET_GLES" OFF) + option(WITH_GLXCONTEXT "Build GlxContext library" OFF) # Windows-specific application libraries elseif(CORRADE_TARGET_WINDOWS) cmake_dependent_option(WITH_WINDOWLESSWGLAPPLICATION "Build WindowlessWglApplication library" OFF "NOT WITH_MAGNUMINFO;NOT WITH_FONTCONVERTER;NOT WITH_DISTANCEFIELDCONVERTER" ON) - cmake_dependent_option(WITH_WGLCONTEXT "Build WglContext library" OFF "NOT TARGET_GLES" OFF) + option(WITH_WGLCONTEXT "Build WglContext library" OFF) endif() # Platform-independent (almost) application libraries diff --git a/Doxyfile b/Doxyfile index 538c742ca..bbf610f7c 100644 --- a/Doxyfile +++ b/Doxyfile @@ -262,6 +262,7 @@ ALIASES = \ "extension{2}=\1_\2" \ "extension2{2}=\1_\2" \ "requires_gles30=@xrefitem requires-gles30 \"Requires OpenGL ES 3.0\" \"Functionality requiring OpenGL ES 3.0\"" \ + "requires_gles31=@xrefitem requires-gles31 \"Requires OpenGL ES 3.1\" \"Functionality requiring OpenGL ES 3.1\"" \ "requires_gl=@xrefitem requires-gl \"Requires desktop OpenGL\" \"Functionality requiring desktop OpenGL (not available in OpenGL ES)\"" \ "requires_gles20=@xrefitem requires-gles20 \"Requires OpenGL ES 2.0\" \"Functionality requiring OpenGL ES 2.0 (not available in ES 3.0 and desktop OpenGL)\"" \ "requires_es_extension=@xrefitem requires-es-extension \"Requires OpenGL ES extension\" \"Functionality requiring specific OpenGL ES extension\"" \ diff --git a/README.md b/README.md index 83e98b7be..645ecfff7 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,8 @@ Graphics APIs: * **OpenGL** 2.1 through 4.4, core profile functionality and modern extensions -* **OpenGL ES** 2.0, 3.0 and extensions to match desktop OpenGL functionality +* **OpenGL ES** 2.0, 3.0, 3.1 and extensions to match desktop OpenGL + functionality * **WebGL** 1.0 and extensions to match desktop OpenGL functionality Platforms: diff --git a/doc/building.dox b/doc/building.dox index 475072420..5693d73a4 100644 --- a/doc/building.dox +++ b/doc/building.dox @@ -210,6 +210,7 @@ choose to not use any application library (see @ref platform-custom for more information): - `WITH_CGLCONTEXT` -- CGL context +- `WITH_EGLCONTEXT` -- EGL context - `WITH_GLXCONTEXT` -- GLX context - `WITH_WGLCONTEXT` -- WGL context diff --git a/doc/cmake.dox b/doc/cmake.dox index cea2328cb..46ba9862a 100644 --- a/doc/cmake.dox +++ b/doc/cmake.dox @@ -107,6 +107,7 @@ platform-specific context libraries (see @ref platform-custom for more information): - `CglContext` -- CGL context +- `EglContext` -- EGL context - `GlxContext` -- GLX context - `WglContext` -- WGL context diff --git a/doc/mainpage.dox b/doc/mainpage.dox index 64774d72e..41f8e69f8 100644 --- a/doc/mainpage.dox +++ b/doc/mainpage.dox @@ -69,7 +69,8 @@ Graphics APIs: - **OpenGL** 2.1 through 4.4, core profile functionality and modern extensions -- **OpenGL ES** 2.0, 3.0 and extensions to match desktop OpenGL functionality +- **OpenGL ES** 2.0, 3.0, 3.1 and extensions to match desktop OpenGL + functionality - **WebGL** 1.0 and extensions to match desktop OpenGL functionality Platforms: diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 48ce39b86..c1984a2d0 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -238,6 +238,11 @@ supported. Features that have their equivalents implemented in desktop version are supported. +@subsection opengl-support-es31 OpenGL ES 3.1 + +Features that have their equivalents implemented in desktop version are +supported. + @subsection opengl-support-es30-extensions OpenGL ES 2.0 extensions to match ES 3.0 functionality %Extension | Status diff --git a/doc/opengl.dox b/doc/opengl.dox index 3b4713e71..582ad9213 100644 --- a/doc/opengl.dox +++ b/doc/opengl.dox @@ -59,6 +59,7 @@ is supported on older Intel GPUs even if they are capable of OpenGL 2.1 only). - @subpage requires-gl - @subpage requires-gles20 - @subpage requires-gles30 +- @subpage requires-gles31 - @subpage requires-es-extension @see @ref building, @ref cmake, @ref MAGNUM_TARGET_GLES, @@ -82,9 +83,14 @@ is supported on older Intel GPUs even if they are capable of OpenGL 2.1 only). @page requires-gles20 Functionality requiring OpenGL ES 2.0 (not available on desktop or ES 3.0) @see @ref MAGNUM_TARGET_GLES2 -@page requires-gles30 Functionality requiring OpenGL ES 3.0 +@page requires-gles30 Functionality requiring at least OpenGL ES 3.0 + +The following symbols are not defined at all when targeting OpenGL ES 2.0. + @see @ref MAGNUM_TARGET_GLES3 +@page requires-gles31 Functionality requiring OpenGL ES 3.1 + @page requires-es-extension Functionality requiring specific OpenGL ES extension @see @ref MAGNUM_TARGET_GLES2 diff --git a/doc/platform.dox b/doc/platform.dox index e6a4199f4..b15efcf0b 100644 --- a/doc/platform.dox +++ b/doc/platform.dox @@ -293,6 +293,7 @@ find particular `*Context` library, add its include dir and then link to it. These platform-specific libraries are available: - `CglContext` -- CGL context (Mac OS X) +- `EglContext` -- EGL context (everywhere except Emscripten and NaCl) - `GlxContext` -- GLX context (X11-based Unix) - `WglContext` -- WGL context (Windows) diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake index 66f41f4fc..3af940f32 100644 --- a/modules/FindMagnum.cmake +++ b/modules/FindMagnum.cmake @@ -61,6 +61,7 @@ # WindowlessNaClApplication - Windowless NaCl application # WindowlessWglApplication - Windowless WGL application # CglContext - CGL context +# EglContext - EGL context # GlxContext - GLX context # WglContext - WGL context # Example usage with specifying additional components is: @@ -430,6 +431,16 @@ foreach(component ${Magnum_FIND_COMPONENTS}) endif() endif() + # EGL context dependencies + if(${component} STREQUAL EglContext) + find_package(EGL) + if(EGL_FOUND) + set(_MAGNUM_${_COMPONENT}_LIBRARIES ${EGL_LIBRARIES}) + else() + unset(MAGNUM_${_COMPONENT}_LIBRARY) + endif() + endif() + # No additional dependencies for CGL context # No additional dependencies for WGL context diff --git a/package/archlinux/PKGBUILD b/package/archlinux/PKGBUILD index 6ab801bdb..5a005ec32 100644 --- a/package/archlinux/PKGBUILD +++ b/package/archlinux/PKGBUILD @@ -27,6 +27,7 @@ build() { -DWITH_GLXAPPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ diff --git a/package/archlinux/PKGBUILD-android-arm b/package/archlinux/PKGBUILD-android-arm index 87fc2e959..a23ee7512 100644 --- a/package/archlinux/PKGBUILD-android-arm +++ b/package/archlinux/PKGBUILD-android-arm @@ -32,7 +32,8 @@ build() { -DWITH_OBJIMPORTER=ON \ -DWITH_TGAIMAGECONVERTER=ON \ -DWITH_TGAIMPORTER=ON \ - -DWITH_ANDROIDAPPLICATION=ON + -DWITH_ANDROIDAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON ninja } diff --git a/package/archlinux/PKGBUILD-android-x86 b/package/archlinux/PKGBUILD-android-x86 index 0db9c1e59..921d7bbf4 100644 --- a/package/archlinux/PKGBUILD-android-x86 +++ b/package/archlinux/PKGBUILD-android-x86 @@ -32,7 +32,8 @@ build() { -DWITH_OBJIMPORTER=ON \ -DWITH_TGAIMAGECONVERTER=ON \ -DWITH_TGAIMPORTER=ON \ - -DWITH_ANDROIDAPPLICATION=ON + -DWITH_ANDROIDAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON ninja } diff --git a/package/archlinux/PKGBUILD-clang b/package/archlinux/PKGBUILD-clang index d02919f0d..3882d4229 100644 --- a/package/archlinux/PKGBUILD-clang +++ b/package/archlinux/PKGBUILD-clang @@ -31,6 +31,7 @@ build() { -DWITH_GLXAPPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ diff --git a/package/archlinux/PKGBUILD-clang-libc++ b/package/archlinux/PKGBUILD-clang-libc++ index 29fbeb1de..092789cbb 100644 --- a/package/archlinux/PKGBUILD-clang-libc++ +++ b/package/archlinux/PKGBUILD-clang-libc++ @@ -33,6 +33,7 @@ build() { -DWITH_GLXAPPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ diff --git a/package/archlinux/PKGBUILD-es2 b/package/archlinux/PKGBUILD-es2 index 3cbd211ff..78fcaa57e 100644 --- a/package/archlinux/PKGBUILD-es2 +++ b/package/archlinux/PKGBUILD-es2 @@ -22,6 +22,7 @@ build() { -DTARGET_GLES2=ON \ -DWITH_AUDIO=ON \ -DWITH_XEGLAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_OBJIMPORTER=ON \ -DWITH_TGAIMAGECONVERTER=ON \ diff --git a/package/archlinux/PKGBUILD-es2desktop b/package/archlinux/PKGBUILD-es2desktop index e44afb6ce..27d41d901 100644 --- a/package/archlinux/PKGBUILD-es2desktop +++ b/package/archlinux/PKGBUILD-es2desktop @@ -25,6 +25,7 @@ build() { -DWITH_SDL2APPLICATION=ON \ -DWITH_GLXAPPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_OBJIMPORTER=ON \ diff --git a/package/archlinux/PKGBUILD-es3 b/package/archlinux/PKGBUILD-es3 index c13f5029f..33348f83a 100644 --- a/package/archlinux/PKGBUILD-es3 +++ b/package/archlinux/PKGBUILD-es3 @@ -22,6 +22,7 @@ build() { -DTARGET_GLES2=OFF \ -DWITH_AUDIO=ON \ -DWITH_XEGLAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_OBJIMPORTER=ON \ -DWITH_TGAIMAGECONVERTER=ON \ diff --git a/package/archlinux/PKGBUILD-es3desktop b/package/archlinux/PKGBUILD-es3desktop index 1b896a3f4..f808cb972 100644 --- a/package/archlinux/PKGBUILD-es3desktop +++ b/package/archlinux/PKGBUILD-es3desktop @@ -25,6 +25,7 @@ build() { -DWITH_SDL2APPLICATION=ON \ -DWITH_GLXAPPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_OBJIMPORTER=ON \ diff --git a/package/archlinux/PKGBUILD-gcc47 b/package/archlinux/PKGBUILD-gcc47 index 5311e8836..fefa175e0 100644 --- a/package/archlinux/PKGBUILD-gcc47 +++ b/package/archlinux/PKGBUILD-gcc47 @@ -31,6 +31,7 @@ build() { -DWITH_GLXAPPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ diff --git a/package/archlinux/PKGBUILD-release b/package/archlinux/PKGBUILD-release index 30a275b13..09bbdcc5a 100644 --- a/package/archlinux/PKGBUILD-release +++ b/package/archlinux/PKGBUILD-release @@ -23,6 +23,7 @@ build() { -DWITH_GLXAPPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ diff --git a/package/ci/jenkins-android.xml b/package/ci/jenkins-android.xml index bc64708ee..a5b1543a2 100644 --- a/package/ci/jenkins-android.xml +++ b/package/ci/jenkins-android.xml @@ -79,6 +79,7 @@ cmake .. \ -DBUILD_DEPRECATED=${deprecated_build_flag} \ `#-DWITH_AUDIO=ON` \ -DWITH_ANDROIDAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_OBJIMPORTER=ON \ diff --git a/package/ci/jenkins.xml b/package/ci/jenkins.xml index d5cf17832..b7878e11c 100644 --- a/package/ci/jenkins.xml +++ b/package/ci/jenkins.xml @@ -143,6 +143,7 @@ cmake .. \ -DWITH_GLXAPPLICATION=ON \ -DWITH_SDL2APPLICATION=ON \ -DWITH_XEGLAPPLICATION=${es_flag} \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=${desktop_flag} \ diff --git a/package/debian/rules b/package/debian/rules index c26b9613d..9752ff134 100755 --- a/package/debian/rules +++ b/package/debian/rules @@ -9,6 +9,7 @@ override_dh_auto_configure: -DWITH_GLUTAPPLICATION=ON \ -DWITH_GLXAPPLICATION=ON \ -DWITH_WINDOWLESSGLXAPPLICATION=ON \ + -DWITH_EGLCONTEXT=ON \ -DWITH_GLXCONTEXT=ON \ -DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \ diff --git a/src/Magnum/AbstractFramebuffer.cpp b/src/Magnum/AbstractFramebuffer.cpp index b57f6597a..f205c4f2d 100644 --- a/src/Magnum/AbstractFramebuffer.cpp +++ b/src/Magnum/AbstractFramebuffer.cpp @@ -140,16 +140,28 @@ void AbstractFramebuffer::blit(AbstractFramebuffer& source, AbstractFramebuffer& } #ifdef MAGNUM_TARGET_GLES2 -void AbstractFramebuffer::blitImplementationANGLE(const Range2Di&, const Range2Di&, FramebufferBlitMask, FramebufferBlitFilter) { - /** @todo Re-enable when extension loader is available for ES */ - CORRADE_INTERNAL_ASSERT(false); - //glBlitFramebufferANGLE(sourceRectangle.left(), sourceRectangle.bottom(), sourceRectangle.right(), sourceRectangle.top(), destinationRectangle.left(), destinationRectangle.bottom(), destinationRectangle.right(), destinationRectangle.top(), GLbitfield(mask), GLenum(filter)); +void AbstractFramebuffer::blitImplementationANGLE(const Range2Di& sourceRectangle, const Range2Di& destinationRectangle, const FramebufferBlitMask mask, const FramebufferBlitFilter filter) { + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glBlitFramebufferANGLE(sourceRectangle.left(), sourceRectangle.bottom(), sourceRectangle.right(), sourceRectangle.top(), destinationRectangle.left(), destinationRectangle.bottom(), destinationRectangle.right(), destinationRectangle.top(), GLbitfield(mask), GLenum(filter)); + #else + static_cast(sourceRectangle); + static_cast(destinationRectangle); + static_cast(mask); + static_cast(filter); + CORRADE_ASSERT_UNREACHABLE(); + #endif } -void AbstractFramebuffer::blitImplementationNV(const Range2Di&, const Range2Di&, FramebufferBlitMask, FramebufferBlitFilter) { - /** @todo Re-enable when extension loader is available for ES */ - CORRADE_INTERNAL_ASSERT(false); - //glBlitFramebufferNV(sourceRectangle.left(), sourceRectangle.bottom(), sourceRectangle.right(), sourceRectangle.top(), destinationRectangle.left(), destinationRectangle.bottom(), destinationRectangle.right(), destinationRectangle.top(), GLbitfield(mask), GLenum(filter)); +void AbstractFramebuffer::blitImplementationNV(const Range2Di& sourceRectangle, const Range2Di& destinationRectangle, const FramebufferBlitMask mask, const FramebufferBlitFilter filter) { + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glBlitFramebufferNV(sourceRectangle.left(), sourceRectangle.bottom(), sourceRectangle.right(), sourceRectangle.top(), destinationRectangle.left(), destinationRectangle.bottom(), destinationRectangle.right(), destinationRectangle.top(), GLbitfield(mask), GLenum(filter)); + #else + static_cast(sourceRectangle); + static_cast(destinationRectangle); + static_cast(mask); + static_cast(filter); + CORRADE_ASSERT_UNREACHABLE(); + #endif } #endif @@ -218,14 +230,14 @@ void AbstractFramebuffer::read(const Vector2i& offset, const Vector2i& size, Buf void AbstractFramebuffer::invalidateImplementationNoOp(GLsizei, const GLenum* const) {} void AbstractFramebuffer::invalidateImplementationDefault(const GLsizei count, const GLenum* const attachments) { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glInvalidateFramebuffer(GLenum(bindInternal()), count, attachments); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDiscardFramebufferEXT(GLenum(bindInternal()), count, attachments); #else static_cast(count); static_cast(attachments); - CORRADE_INTERNAL_ASSERT(false); - //glDiscardFramebufferEXT(GLenum(bindInternal()), count, attachments); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -249,17 +261,20 @@ GLenum AbstractFramebuffer::checkStatusImplementationDSA(const FramebufferTarget #endif void AbstractFramebuffer::drawBuffersImplementationDefault(GLsizei count, const GLenum* buffers) { - /** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2 bindInternal(FramebufferTarget::Draw); #else - bindInternal(drawTarget); + bindInternal(Context::current()->state().framebuffer->drawTarget); #endif + + #ifndef MAGNUM_TARGET_GLES2 glDrawBuffers(count, buffers); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawBuffersNV(count, buffers); #else static_cast(count); static_cast(buffers); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -270,22 +285,21 @@ void AbstractFramebuffer::drawBuffersImplementationDSA(GLsizei count, const GLen #endif void AbstractFramebuffer::drawBufferImplementationDefault(GLenum buffer) { - /** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2 bindInternal(FramebufferTarget::Draw); #else - bindInternal(drawTarget); + bindInternal(Context::current()->state().framebuffer->drawTarget); #endif - #ifndef MAGNUM_TARGET_GLES3 + + #ifndef MAGNUM_TARGET_GLES glDrawBuffer(buffer); - #else + #elif !defined(MAGNUM_TARGET_GLES2) glDrawBuffers(1, &buffer); - #endif + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawBuffersNV(1, &buffer); #else static_cast(buffer); - CORRADE_INTERNAL_ASSERT(false); - //glDrawBuffersNV(1, &buffer); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -296,18 +310,19 @@ void AbstractFramebuffer::drawBufferImplementationDSA(GLenum buffer) { #endif void AbstractFramebuffer::readBufferImplementationDefault(GLenum buffer) { - /** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2 bindInternal(FramebufferTarget::Read); #else - bindInternal(readTarget); + bindInternal(Context::current()->state().framebuffer->readTarget); #endif + + #ifndef MAGNUM_TARGET_GLES2 glReadBuffer(buffer); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glReadBufferNV(buffer); #else static_cast(buffer); - CORRADE_INTERNAL_ASSERT(false); - //glReadBufferNV(buffer); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -322,9 +337,10 @@ void AbstractFramebuffer::readImplementationDefault(const Vector2i& offset, cons } void AbstractFramebuffer::readImplementationRobustness(const Vector2i& offset, const Vector2i& size, const ColorFormat format, const ColorType type, const std::size_t dataSize, GLvoid* const data) { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES glReadnPixelsARB(offset.x(), offset.y(), size.x(), size.y(), GLenum(format), GLenum(type), dataSize, data); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glReadnPixelsEXT(offset.x(), offset.y(), size.x(), size.y(), GLenum(format), GLenum(type), dataSize, data); #else static_cast(offset); static_cast(size); @@ -332,8 +348,7 @@ void AbstractFramebuffer::readImplementationRobustness(const Vector2i& offset, c static_cast(type); static_cast(dataSize); static_cast(data); - CORRADE_INTERNAL_ASSERT(false); - //glReadnPixelsEXT(offset.x(), offset.y(), size.x(), size.y(), GLenum(format), GLenum(type), data); + CORRADE_ASSERT_UNREACHABLE(); #endif } diff --git a/src/Magnum/AbstractObject.cpp b/src/Magnum/AbstractObject.cpp index 0b07d3c8f..e59038394 100644 --- a/src/Magnum/AbstractObject.cpp +++ b/src/Magnum/AbstractObject.cpp @@ -36,6 +36,7 @@ namespace Magnum { +#if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) namespace { inline GLenum extTypeFromKhrIdentifier(GLenum khrIdentifier) { switch(khrIdentifier) { @@ -106,6 +107,7 @@ namespace { CORRADE_ASSERT_UNREACHABLE(); } } +#endif Int AbstractObject::maxLabelLength() { if(!Context::current()->isExtensionSupported()) @@ -127,28 +129,27 @@ Int AbstractObject::maxLabelLength() { void AbstractObject::labelImplementationNoOp(GLenum, GLuint, Containers::ArrayReference) {} void AbstractObject::labelImplementationKhr(const GLenum identifier, const GLuint name, const Containers::ArrayReference label) { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES glObjectLabel(identifier, name, label.size(), label); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glObjectLabelKHR(identifier, name, label.size(), label); #else static_cast(identifier); static_cast(name); static_cast(label); - CORRADE_INTERNAL_ASSERT(false); - //glObjectLabelKHR(identifier, name, label.size(), label); + CORRADE_ASSERT_UNREACHABLE(); #endif } void AbstractObject::labelImplementationExt(const GLenum identifier, const GLuint name, const Containers::ArrayReference label) { + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) const GLenum type = extTypeFromKhrIdentifier(identifier); - /** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES glLabelObjectEXT(type, name, label.size(), label); #else - static_cast(type); + static_cast(identifier); static_cast(name); static_cast(label); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -157,24 +158,25 @@ std::string AbstractObject::getLabelImplementationNoOp(GLenum, GLuint) { return std::string AbstractObject::getLabelImplementationKhr(const GLenum identifier, const GLuint name) { /* Get label size (w/o null terminator) */ GLsizei size; - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES glGetObjectLabel(identifier, name, 0, &size, nullptr); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glGetObjectLabelKHR(identifier, name, 0, &size, nullptr); #else static_cast(identifier); static_cast(name); - CORRADE_INTERNAL_ASSERT(false); - //glGetObjectLabelKHR(identifier, name, 0, &size, nullptr); + CORRADE_ASSERT_UNREACHABLE(); #endif /* Make place also for the null terminator */ std::string label; label.resize(size+1); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES glGetObjectLabel(identifier, name, size+1, nullptr, &label[0]); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glGetObjectLabelKHR(identifier, name, size+1, nullptr, &label[0]); #else - //glGetObjectLabelKHR(identifier, name, size+1, nullptr, &label[0]); + CORRADE_ASSERT_UNREACHABLE(); #endif /* Pop null terminator and return the string */ @@ -183,25 +185,25 @@ std::string AbstractObject::getLabelImplementationKhr(const GLenum identifier, c } std::string AbstractObject::getLabelImplementationExt(const GLenum identifier, const GLuint name) { - const GLenum type = extTypeFromKhrIdentifier(identifier); + GLsizei size; /* Get label size (w/o null terminator) */ - GLsizei size; - /** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + const GLenum type = extTypeFromKhrIdentifier(identifier); glGetObjectLabelEXT(type, name, 0, &size, nullptr); #else - static_cast(type); + static_cast(identifier); static_cast(name); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif /* Make place also for the null terminator */ std::string label; label.resize(size+1); - /** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) glGetObjectLabelEXT(identifier, name, size+1, nullptr, &label[0]); + #else + CORRADE_ASSERT_UNREACHABLE(); #endif /* Pop null terminator and return the string */ diff --git a/src/Magnum/AbstractShaderProgram.cpp b/src/Magnum/AbstractShaderProgram.cpp index 064af490d..7f36d74ac 100644 --- a/src/Magnum/AbstractShaderProgram.cpp +++ b/src/Magnum/AbstractShaderProgram.cpp @@ -52,9 +52,13 @@ Int AbstractShaderProgram::maxVertexAttributes() { return value; } -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 Int AbstractShaderProgram::maxAtomicCounterBufferSize() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shaderProgram->maxAtomicCounterBufferSize; @@ -66,7 +70,11 @@ Int AbstractShaderProgram::maxAtomicCounterBufferSize() { } Int AbstractShaderProgram::maxComputeSharedMemorySize() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shaderProgram->maxComputeSharedMemorySize; @@ -78,7 +86,11 @@ Int AbstractShaderProgram::maxComputeSharedMemorySize() { } Int AbstractShaderProgram::maxComputeWorkGroupInvocations() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shaderProgram->maxComputeWorkGroupInvocations; @@ -90,7 +102,11 @@ Int AbstractShaderProgram::maxComputeWorkGroupInvocations() { } Int AbstractShaderProgram::maxImageUnits() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shaderProgram->maxImageUnits; @@ -100,7 +116,9 @@ Int AbstractShaderProgram::maxImageUnits() { return value; } +#endif +#ifndef MAGNUM_TARGET_GLES Int AbstractShaderProgram::maxImageSamples() { if(!Context::current()->isExtensionSupported()) return 0; @@ -112,9 +130,15 @@ Int AbstractShaderProgram::maxImageSamples() { return value; } +#endif +#ifndef MAGNUM_TARGET_GLES2 Int AbstractShaderProgram::maxCombinedShaderOutputResources() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported() || !Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shaderProgram->maxCombinedShaderOutputResources; @@ -126,7 +150,11 @@ Int AbstractShaderProgram::maxCombinedShaderOutputResources() { } Long AbstractShaderProgram::maxShaderStorageBlockSize() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint64& value = Context::current()->state().shaderProgram->maxShaderStorageBlockSize; @@ -154,9 +182,13 @@ Int AbstractShaderProgram::maxUniformBlockSize() { } #endif -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 Int AbstractShaderProgram::maxUniformLocations() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shaderProgram->maxUniformLocations; @@ -376,15 +408,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const GLfloat* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform1fv(_id, location, count, values); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform1fvEXT(_id, location, count, values); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform1fvEXT(_id, location, count, values); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -404,15 +436,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<2, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform2fv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform2fvEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform2fvEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -432,15 +464,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<3, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform3fv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform3fvEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform3fvEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -460,15 +492,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<4, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform4fv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform4fvEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform4fvEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -488,15 +520,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const GLint* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform1iv(_id, location, count, values); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform1ivEXT(_id, location, count, values); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform1ivEXT(_id, location, count, values); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -516,15 +548,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<2, GLint>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform2iv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform2ivEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform2ivEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -544,15 +576,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<3, GLint>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform3iv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform3ivEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform3ivEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -572,15 +604,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<4, GLint>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform4iv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform4ivEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform4ivEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -601,15 +633,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const GLuint* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform1uiv(_id, location, count, values); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform1uivEXT(_id, location, count, values); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform1uivEXT(_id, location, count, values); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -629,15 +661,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<2, GLuint>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform2uiv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform2uivEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform2uivEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -657,15 +689,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<3, GLuint>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform3uiv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform3uivEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform3uivEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -685,15 +717,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<4, GLuint>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniform4uiv(_id, location, count, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniform4uivEXT(_id, location, count, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniform4uivEXT(_id, location, count, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -784,15 +816,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 2, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix2fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix2fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix2fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -812,15 +844,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 3, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix3fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix3fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix3fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -840,15 +872,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 4, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix4fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix4fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix4fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -869,15 +901,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 3, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix2x3fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix2x3fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix2x3fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -897,15 +929,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 2, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix3x2fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix3x2fv(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix3x2fv(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -925,15 +957,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 4, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix2x4fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix2x4fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix2x4fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -953,15 +985,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 2, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix4x2fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix4x2fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix4x2fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -981,15 +1013,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 4, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix3x4fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix3x4fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix3x4fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -1009,15 +1041,15 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c } void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 3, GLfloat>* const values) { - /** @todo Enable when extension loader for ES is available */ #ifndef MAGNUM_TARGET_GLES glProgramUniformMatrix4x3fv(_id, location, count, GL_FALSE, values[0].data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glProgramUniformMatrix4x3fvEXT(_id, location, count, GL_FALSE, values[0].data()); #else - CORRADE_INTERNAL_ASSERT(false); - //glProgramUniformMatrix4x3fvEXT(_id, location, count, GL_FALSE, values[0].data()); static_cast(location); static_cast(count); static_cast(values); + CORRADE_ASSERT_UNREACHABLE(); #endif } diff --git a/src/Magnum/AbstractShaderProgram.h b/src/Magnum/AbstractShaderProgram.h index b77b46cbc..74c8e31a1 100644 --- a/src/Magnum/AbstractShaderProgram.h +++ b/src/Magnum/AbstractShaderProgram.h @@ -219,8 +219,8 @@ Int normalMatrixUniform = uniformLocation("normalMatrix"); @requires_gl43 %Extension @extension{ARB,explicit_uniform_location} for explicit uniform location instead of using @ref Magnum::AbstractShaderProgram::uniformLocation() "uniformLocation()". -@requires_gl Explicit uniform location is not supported in OpenGL ES. Use - @ref Magnum::AbstractShaderProgram::uniformLocation() "uniformLocation()" +@requires_gles31 Explicit uniform location is not supported in OpenGL ES 3.0 + and older. Use @ref Magnum::AbstractShaderProgram::uniformLocation() "uniformLocation()" instead. @anchor AbstractShaderProgram-texture-units @@ -252,8 +252,8 @@ setUniform(uniformLocation("specularTexture"), 1); @requires_gl42 %Extension @extension{ARB,shading_language_420pack} for explicit texture binding unit instead of using @ref Magnum::AbstractShaderProgram::setUniform(Int, const T&) "setUniform(Int, Int)". -@requires_gl Explicit texture binding unit is not supported in OpenGL ES. Use - @ref Magnum::AbstractShaderProgram::setUniform(Int, const T&) "setUniform(Int, Int)" +@requires_gles31 Explicit texture binding unit is not supported in OpenGL ES + 3.0 and older. Use @ref Magnum::AbstractShaderProgram::setUniform(Int, const T&) "setUniform(Int, Int)" instead. @anchor AbstractShaderProgram-rendering-workflow @@ -352,15 +352,15 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject { */ static Int maxVertexAttributes(); - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported atomic counter buffer size * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_atomic_counters} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_atomic_counters} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_ATOMIC_COUNTER_BUFFER_SIZE} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxAtomicCounterBufferSize(); @@ -368,10 +368,10 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject { * @brief Max supported compute shared memory size * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,compute_shader} is not - * available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,compute_shader} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_COMPUTE_SHARED_MEMORY_SIZE} - * @requires_gl Compute shaders are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxComputeSharedMemorySize(); @@ -379,10 +379,10 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject { * @brief Max supported compute work group invocation count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,compute_shader} is not - * available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,compute_shader} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_COMPUTE_WORK_GROUP_INVOCATIONS} - * @requires_gl Compute shaders are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxComputeWorkGroupInvocations(); @@ -393,32 +393,37 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject { * * The result is cached, repeated queries don't result in repeated * OpenGL calls. If extension @extension{ARB,shader_image_load_store} - * is not available, returns `0`. + * (part of OpenGL 4.2) or OpenGL ES 3.1 is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_IMAGE_UNITS} - * @requires_gl %Image load/store is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxImageUnits(); + #endif + #ifndef MAGNUM_TARGET_GLES /** * @brief Max supported image sample count * * The result is cached, repeated queries don't result in repeated * OpenGL calls. If extension @extension{ARB,shader_image_load_store} - * is not available, returns `0`. + * (part of OpenGL 4.2) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_IMAGE_SAMPLES} - * @requires_gl %Image load/store is not available in OpenGL ES. + * @requires_gl Multisample image load/store is not available in OpenGL + * ES. */ static Int maxImageSamples(); + #endif + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported combined shader output resource count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If neither @extension{ARB,shader_image_load_store} - * nor @extension{ARB,shader_storage_buffer_object} extension is - * available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_image_load_store} + * (part of OpenGL 4.2) nor extension @extension{ARB,shader_storage_buffer_object} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_COMBINED_SHADER_OUTPUT_RESOURCES} - * @requires_gl %Image load/store is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxCombinedShaderOutputResources(); @@ -426,50 +431,44 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject { * @brief Max supported shader storage block size * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_storage_buffer_object} - * is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_storage_buffer_object} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_SHADER_STORAGE_BLOCK_SIZE} - * @requires_gl %Shader storage is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Long maxShaderStorageBlockSize(); - #endif - #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported uniform block size * * The result is cached, repeated queries don't result in repeated * OpenGL calls. If extension @extension{ARB,uniform_buffer_object} - * is not available, returns `0`. + * (part of OpenGL 3.1) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_UNIFORM_BLOCK_SIZE} - * @requires_gles30 Uniform blocks are not available in OpenGL ES 2.0. + * @requires_gles30 Uniform blocks are not available in OpenGL ES 2.0 */ static Int maxUniformBlockSize(); - #endif - #ifndef MAGNUM_TARGET_GLES /** * @brief Max supported explicit uniform location count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,explicit_uniform_location} - * is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,explicit_uniform_location} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_UNIFORM_LOCATIONS} - * @requires_gl Explicit uniform location is not supported in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxUniformLocations(); - #endif - #ifndef MAGNUM_TARGET_GLES2 /** * @brief Min supported program texel offset * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{EXT,gpu_shader4} is not - * available, returns `0`. + * OpenGL calls. If extension @extension{EXT,gpu_shader4} (part of + * OpenGL 3.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MIN_PROGRAM_TEXEL_OFFSET} * @requires_gles30 %Texture lookup with offset is not available in - * OpenGL ES 2.0. + * OpenGL ES 2.0 */ static Int minTexelOffset(); @@ -477,11 +476,11 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject { * @brief Max supported program texel offset * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{EXT,gpu_shader4} is not - * available, returns `0`. + * OpenGL calls. If extension @extension{EXT,gpu_shader4} (part of + * OpenGL 3.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_PROGRAM_TEXEL_OFFSET} * @requires_gles30 %Texture lookup with offset is not available in - * OpenGL ES 2.0. + * OpenGL ES 2.0 */ static Int maxTexelOffset(); #endif diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index 5f4069bb2..480dc7959 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -62,9 +62,13 @@ Float AbstractTexture::maxLodBias() { } #endif -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 Int AbstractTexture::maxColorSamples() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().texture->maxColorSamples; @@ -77,7 +81,11 @@ Int AbstractTexture::maxColorSamples() { } Int AbstractTexture::maxDepthSamples() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().texture->maxDepthSamples; @@ -90,7 +98,11 @@ Int AbstractTexture::maxDepthSamples() { } Int AbstractTexture::maxIntegerSamples() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().texture->maxIntegerSamples; @@ -327,7 +339,7 @@ void AbstractTexture::setCompareFunction(const Sampler::CompareFunction function , GLenum(function)); } -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 void AbstractTexture::setDepthStencilMode(const Sampler::DepthStencilMode mode) { (this->*Context::current()->state().texture->parameteriImplementation)(GL_DEPTH_STENCIL_TEXTURE_MODE, GLenum(mode)); } @@ -818,16 +830,18 @@ void AbstractTexture::setMaxAnisotropyImplementationExt(GLfloat anisotropy) { (this->*Context::current()->state().texture->parameterfImplementation)(GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropy); } -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 void AbstractTexture::getLevelParameterImplementationDefault(GLenum target, GLint level, GLenum parameter, GLint* values) { bindInternal(); glGetTexLevelParameteriv(target, level, parameter, values); } +#ifndef MAGNUM_TARGET_GLES void AbstractTexture::getLevelParameterImplementationDSA(GLenum target, GLint level, GLenum parameter, GLint* values) { glGetTextureLevelParameterivEXT(_id, target, level, parameter, values); } #endif +#endif #ifndef MAGNUM_TARGET_GLES void AbstractTexture::storageImplementationFallback(const GLenum target, const GLsizei levels, const TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size) { @@ -895,16 +909,16 @@ void AbstractTexture::storageImplementationFallback(const GLenum target, const G void AbstractTexture::storageImplementationDefault(GLenum target, GLsizei levels, TextureFormat internalFormat, const Vector2i& size) { bindInternal(); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glTexStorage2D(target, levels, GLenum(internalFormat), size.x(), size.y()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glTexStorage2DEXT(target, levels, GLenum(internalFormat), size.x(), size.y()); #else static_cast(target); static_cast(levels); static_cast(internalFormat); static_cast(size); - CORRADE_INTERNAL_ASSERT(false); - //glTexStorage2DEXT(target, levels, GLenum(internalFormat), size.x(), size.y()); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -949,16 +963,16 @@ void AbstractTexture::storageImplementationFallback(GLenum target, GLsizei level void AbstractTexture::storageImplementationDefault(GLenum target, GLsizei levels, TextureFormat internalFormat, const Vector3i& size) { bindInternal(); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glTexStorage3D(target, levels, GLenum(internalFormat), size.x(), size.y(), size.z()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glTexStorage3DEXT(target, levels, GLenum(internalFormat), size.x(), size.y(), size.z()); #else static_cast(target); static_cast(levels); static_cast(internalFormat); static_cast(size); - CORRADE_INTERNAL_ASSERT(false); - //glTexStorage3DEXT(target, levels, GLenum(internalFormat), size.x(), size.y(), size.z()); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -973,12 +987,16 @@ void AbstractTexture::storageMultisampleImplementationFallback(const GLenum targ bindInternal(); glTexImage2DMultisample(target, samples, GLenum(internalFormat), size.x(), size.y(), fixedSampleLocations); } +#endif +#ifndef MAGNUM_TARGET_GLES2 void AbstractTexture::storageMultisampleImplementationDefault(const GLenum target, const GLsizei samples, const TextureFormat internalFormat, const Vector2i& size, const GLboolean fixedSampleLocations) { bindInternal(); glTexStorage2DMultisample(target, samples, GLenum(internalFormat), size.x(), size.y(), fixedSampleLocations); } +#endif +#ifndef MAGNUM_TARGET_GLES void AbstractTexture::storageMultisampleImplementationDSA(const GLenum target, const GLsizei samples, const TextureFormat internalFormat, const Vector2i& size, const GLboolean fixedSampleLocations) { glTextureStorage2DMultisampleEXT(_id, target, samples, GLenum(internalFormat), size.x(), size.y(), fixedSampleLocations); } @@ -1038,9 +1056,10 @@ void AbstractTexture::imageImplementationDSA(GLenum target, GLint level, Texture void AbstractTexture::imageImplementationDefault(GLenum target, GLint level, TextureFormat internalFormat, const Vector3i& size, ColorFormat format, ColorType type, const GLvoid* data) { bindInternal(); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glTexImage3D(target, level, GLint(internalFormat), size.x(), size.y(), size.z(), 0, GLenum(format), GLenum(type), data); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glTexImage3DOES(target, level, GLint(internalFormat), size.x(), size.y(), size.z(), 0, GLenum(format), GLenum(type), data); #else static_cast(target); static_cast(level); @@ -1049,8 +1068,7 @@ void AbstractTexture::imageImplementationDefault(GLenum target, GLint level, Tex static_cast(format); static_cast(type); static_cast(data); - CORRADE_INTERNAL_ASSERT(false); - //glTexImage3DOES(target, level, GLint(internalFormat), size.x(), size.y(), size.z(), 0, GLenum(format), GLenum(type), data); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -1084,9 +1102,10 @@ void AbstractTexture::subImageImplementationDSA(GLenum target, GLint level, cons void AbstractTexture::subImageImplementationDefault(GLenum target, GLint level, const Vector3i& offset, const Vector3i& size, ColorFormat format, ColorType type, const GLvoid* data) { bindInternal(); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glTexSubImage3D(target, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), GLenum(format), GLenum(type), data); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glTexSubImage3DOES(target, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), GLenum(format), GLenum(type), data); #else static_cast(target); static_cast(level); @@ -1095,8 +1114,7 @@ void AbstractTexture::subImageImplementationDefault(GLenum target, GLint level, static_cast(format); static_cast(type); static_cast(data); - CORRADE_INTERNAL_ASSERT(false); - //glTexSubImage3DOES(target, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), GLenum(format), GLenum(type), data); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -1159,7 +1177,9 @@ Math::Vector<1, GLint> AbstractTexture::DataHelper<1>::imageSize(AbstractTexture (texture.*Context::current()->state().texture->getLevelParameterivImplementation)(target, level, GL_TEXTURE_WIDTH, &value[0]); return value; } +#endif +#ifndef MAGNUM_TARGET_GLES2 Vector2i AbstractTexture::DataHelper<2>::imageSize(AbstractTexture& texture, const GLenum target, const GLint level) { const Implementation::TextureState& state = *Context::current()->state().texture; @@ -1194,11 +1214,13 @@ void AbstractTexture::DataHelper<3>::setStorage(AbstractTexture& texture, const (texture.*Context::current()->state().texture->storage3DImplementation)(target, levels, internalFormat, size); } -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 void AbstractTexture::DataHelper<2>::setStorageMultisample(AbstractTexture& texture, const GLenum target, const GLsizei samples, const TextureFormat internalFormat, const Vector2i& size, const GLboolean fixedSampleLocations) { (texture.*Context::current()->state().texture->storage2DMultisampleImplementation)(target, samples, internalFormat, size, fixedSampleLocations); } +#endif +#ifndef MAGNUM_TARGET_GLES void AbstractTexture::DataHelper<3>::setStorageMultisample(AbstractTexture& texture, const GLenum target, const GLsizei samples, const TextureFormat internalFormat, const Vector3i& size, const GLboolean fixedSampleLocations) { (texture.*Context::current()->state().texture->storage3DMultisampleImplementation)(target, samples, internalFormat, size, fixedSampleLocations); } diff --git a/src/Magnum/AbstractTexture.h b/src/Magnum/AbstractTexture.h index 902518328..09c19c3e8 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -159,15 +159,15 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { static Float maxLodBias(); #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported color sample count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,texture_multisample} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,texture_multisample} + * (part of OpenGL 3.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_COLOR_TEXTURE_SAMPLES} - * @requires_gl Multisample textures are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxColorSamples(); @@ -175,10 +175,10 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { * @brief Max supported depth sample count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,texture_multisample} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,texture_multisample} + * (part of OpenGL 3.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_DEPTH_TEXTURE_SAMPLES} - * @requires_gl Multisample textures are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxDepthSamples(); @@ -186,10 +186,10 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { * @brief Max supported integer sample count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,texture_multisample} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,texture_multisample} + * (part of OpenGL 3.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_INTEGER_SAMPLES} - * @requires_gl Multisample textures are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxIntegerSamples(); #endif @@ -341,7 +341,7 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { void setCompareMode(Sampler::CompareMode mode); void setCompareFunction(Sampler::CompareFunction function); - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 void setDepthStencilMode(Sampler::DepthStencilMode mode); #endif void invalidateImage(Int level); @@ -394,10 +394,12 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { void MAGNUM_LOCAL setMaxAnisotropyImplementationNoOp(GLfloat); void MAGNUM_LOCAL setMaxAnisotropyImplementationExt(GLfloat anisotropy); - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 void MAGNUM_LOCAL getLevelParameterImplementationDefault(GLenum target, GLint level, GLenum parameter, GLint* values); + #ifndef MAGNUM_TARGET_GLES void MAGNUM_LOCAL getLevelParameterImplementationDSA(GLenum target, GLint level, GLenum parameter, GLint* values); #endif + #endif void MAGNUM_LOCAL mipmapImplementationDefault(); #ifndef MAGNUM_TARGET_GLES @@ -424,9 +426,15 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { #ifndef MAGNUM_TARGET_GLES void MAGNUM_LOCAL storageMultisampleImplementationFallback(GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector2i& size, GLboolean fixedsamplelocations); + #endif + #ifndef MAGNUM_TARGET_GLES2 void MAGNUM_LOCAL storageMultisampleImplementationDefault(GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector2i& size, GLboolean fixedsamplelocations); + #endif + #ifndef MAGNUM_TARGET_GLES void MAGNUM_LOCAL storageMultisampleImplementationDSA(GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector2i& size, GLboolean fixedsamplelocations); + #endif + #ifndef MAGNUM_TARGET_GLES void MAGNUM_LOCAL storageMultisampleImplementationFallback(GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector3i& size, GLboolean fixedsamplelocations); void MAGNUM_LOCAL storageMultisampleImplementationDefault(GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector3i& size, GLboolean fixedsamplelocations); void MAGNUM_LOCAL storageMultisampleImplementationDSA(GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector3i& size, GLboolean fixedsamplelocations); @@ -520,7 +528,7 @@ template<> struct MAGNUM_EXPORT AbstractTexture::DataHelper<2> { }; #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 static Vector2i imageSize(AbstractTexture& texture, GLenum target, GLint level); #endif @@ -528,7 +536,9 @@ template<> struct MAGNUM_EXPORT AbstractTexture::DataHelper<2> { static void setStorage(AbstractTexture& texture, GLenum target, GLsizei levels, TextureFormat internalFormat, const Vector2i& size); + #ifndef MAGNUM_TARGET_GLES2 static void setStorageMultisample(AbstractTexture& texture, GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector2i& size, GLboolean fixedSampleLocations); + #endif static void setImage(AbstractTexture& texture, GLenum target, GLint level, TextureFormat internalFormat, const ImageReference2D& image); #ifndef MAGNUM_TARGET_GLES2 @@ -557,7 +567,7 @@ template<> struct MAGNUM_EXPORT AbstractTexture::DataHelper<3> { }; #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 static Vector3i imageSize(AbstractTexture& texture, GLenum target, GLint level); #endif @@ -565,7 +575,9 @@ template<> struct MAGNUM_EXPORT AbstractTexture::DataHelper<3> { static void setStorage(AbstractTexture& texture, GLenum target, GLsizei levels, TextureFormat internalFormat, const Vector3i& size); + #ifndef MAGNUM_TARGET_GLES static void setStorageMultisample(AbstractTexture& texture, GLenum target, GLsizei samples, TextureFormat internalFormat, const Vector3i& size, GLboolean fixedSampleLocations); + #endif static void setImage(AbstractTexture& texture, GLenum target, GLint level, TextureFormat internalFormat, const ImageReference3D& image); #ifndef MAGNUM_TARGET_GLES2 diff --git a/src/Magnum/Buffer.cpp b/src/Magnum/Buffer.cpp index 75411ae09..e6c704ba5 100644 --- a/src/Magnum/Buffer.cpp +++ b/src/Magnum/Buffer.cpp @@ -48,9 +48,15 @@ Int Buffer::minMapAlignment() { return value; } +#endif +#ifndef MAGNUM_TARGET_GLES2 Int Buffer::maxAtomicCounterBindings() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().buffer->maxAtomicCounterBindings; @@ -62,7 +68,11 @@ Int Buffer::maxAtomicCounterBindings() { } Int Buffer::maxShaderStorageBindings() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().buffer->maxShaderStorageBindings; @@ -74,7 +84,11 @@ Int Buffer::maxShaderStorageBindings() { } Int Buffer::shaderStorageOffsetAlignment() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().buffer->shaderStorageOffsetAlignment; @@ -212,15 +226,14 @@ void* Buffer::map(const MapAccess access) { #ifdef MAGNUM_TARGET_GLES2 void* Buffer::mapSub(const GLintptr offset, const GLsizeiptr length, const MapAccess access) { - /** @todo Enable also in Emscripten (?) when extension loader is available */ #ifdef CORRADE_TARGET_NACL CORRADE_ASSERT(!_mappedBuffer, "Buffer::mapSub(): the buffer is already mapped", nullptr); return _mappedBuffer = glMapBufferSubDataCHROMIUM(GLenum(bindInternal(_targetHint)), offset, length, GLenum(access)); #else - CORRADE_INTERNAL_ASSERT(false); static_cast(offset); static_cast(length); static_cast(access); + CORRADE_ASSERT_UNREACHABLE(); #endif } #endif @@ -238,13 +251,12 @@ bool Buffer::unmap() { return (this->*Context::current()->state().buffer->unmapI #ifdef MAGNUM_TARGET_GLES2 void Buffer::unmapSub() { - /** @todo Enable also in Emscripten (?) when extension loader is available */ #ifdef CORRADE_TARGET_NACL CORRADE_ASSERT(_mappedBuffer, "Buffer::unmapSub(): the buffer is not mapped", ); glUnmapBufferSubDataCHROMIUM(_mappedBuffer); _mappedBuffer = nullptr; #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } #endif @@ -324,13 +336,13 @@ void Buffer::invalidateSubImplementationARB(GLintptr offset, GLsizeiptr length) #endif void* Buffer::mapImplementationDefault(MapAccess access) { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES return glMapBuffer(GLenum(bindInternal(_targetHint)), GLenum(access)); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + return glMapBufferOES(GLenum(bindInternal(_targetHint)), GLenum(access)); #else static_cast(access); - CORRADE_INTERNAL_ASSERT(false); - //return glMapBufferOES(GLenum(bindInternal(_targetHint)), GLenum(access)); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -341,15 +353,15 @@ void* Buffer::mapImplementationDSA(MapAccess access) { #endif void* Buffer::mapRangeImplementationDefault(GLintptr offset, GLsizeiptr length, MapFlags access) { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 return glMapBufferRange(GLenum(bindInternal(_targetHint)), offset, length, GLenum(access)); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + return glMapBufferRangeEXT(GLenum(bindInternal(_targetHint)), offset, length, GLenum(access)); #else static_cast(offset); static_cast(length); static_cast(access); - CORRADE_INTERNAL_ASSERT(false); - //return glMapBufferRangeEXT(GLenum(bindInternal(_targetHint)), offset, length, GLenum(access)); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -360,14 +372,14 @@ void* Buffer::mapRangeImplementationDSA(GLintptr offset, GLsizeiptr length, MapF #endif void Buffer::flushMappedRangeImplementationDefault(GLintptr offset, GLsizeiptr length) { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glFlushMappedBufferRange(GLenum(bindInternal(_targetHint)), offset, length); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glFlushMappedBufferRangeEXT(GLenum(bindInternal(_targetHint)), offset, length); #else static_cast(offset); static_cast(length); - CORRADE_INTERNAL_ASSERT(false); - //glFlushMappedBufferRangeEXT(GLenum(bindInternal(_targetHint)), offset, length); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -378,12 +390,12 @@ void Buffer::flushMappedRangeImplementationDSA(GLintptr offset, GLsizeiptr lengt #endif bool Buffer::unmapImplementationDefault() { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 return glUnmapBuffer(GLenum(bindInternal(_targetHint))); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + return glUnmapBufferOES(GLenum(bindInternal(_targetHint))); #else - CORRADE_INTERNAL_ASSERT(false); - //return glUnmapBufferOES(GLenum(bindInternal(_targetHint))); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -398,14 +410,10 @@ Debug operator<<(Debug debug, Buffer::Target value) { switch(value) { #define _c(value) case Buffer::Target::value: return debug << "Buffer::Target::" #value; _c(Array) - #ifndef MAGNUM_TARGET_GLES - _c(AtomicCounter) - #endif #ifndef MAGNUM_TARGET_GLES2 + _c(AtomicCounter) _c(CopyRead) _c(CopyWrite) - #endif - #ifndef MAGNUM_TARGET_GLES _c(DispatchIndirect) _c(DrawIndirect) #endif @@ -413,9 +421,9 @@ Debug operator<<(Debug debug, Buffer::Target value) { #ifndef MAGNUM_TARGET_GLES2 _c(PixelPack) _c(PixelUnpack) + _c(ShaderStorage) #endif #ifndef MAGNUM_TARGET_GLES - _c(ShaderStorage) _c(Texture) #endif #ifndef MAGNUM_TARGET_GLES2 diff --git a/src/Magnum/Buffer.h b/src/Magnum/Buffer.h index 3c5611914..a1aba4dfe 100644 --- a/src/Magnum/Buffer.h +++ b/src/Magnum/Buffer.h @@ -219,11 +219,12 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { /** Used for storing vertex attributes. */ Array = GL_ARRAY_BUFFER, - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * Used for storing atomic counters. * @requires_gl42 %Extension @extension{ARB,shader_atomic_counters} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles31 Atomic counters are not available in OpenGL ES + * 3.0 and older. */ AtomicCounter = GL_ATOMIC_COUNTER_BUFFER, #endif @@ -246,18 +247,20 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { CopyWrite = GL_COPY_WRITE_BUFFER, #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * Indirect compute dispatch commands. * @requires_gl43 %Extension @extension{ARB,compute_shader} - * @requires_gl Compute shaders are not available in OpenGL ES. + * @requires_gles31 Compute shaders are not available in OpenGL ES + * 3.0 and older. */ DispatchIndirect = GL_DISPATCH_INDIRECT_BUFFER, /** * Used for supplying arguments for indirect drawing. * @requires_gl40 %Extension @extension{ARB,draw_indirect} - * @requires_gl Indirect drawing not available in OpenGL ES. + * @requires_gles31 Indirect drawing not available in OpenGL ES 3.0 + * and older. */ DrawIndirect = GL_DRAW_INDIRECT_BUFFER, #endif @@ -283,14 +286,17 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { PixelUnpack = GL_PIXEL_UNPACK_BUFFER, #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * Used for shader storage. * @requires_gl43 %Extension @extension{ARB,shader_storage_buffer_object} - * @requires_gl Shader storage is not available in OpenGL ES. + * @requires_gles31 Shader storage is not available in OpenGL ES + * 3.0 and older. */ ShaderStorage = GL_SHADER_STORAGE_BUFFER, + #endif + #ifndef MAGNUM_TARGET_GLES /** * Source for texel fetches. See @ref BufferTexture. * @requires_gl31 %Extension @extension{ARB,texture_buffer_object} @@ -442,21 +448,23 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { * @brief Minimal supported mapping alignment * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,map_buffer_alignment} is - * not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,map_buffer_alignment} + * (part of OpenGL 4.2) is not available, returns `0`. * @see @ref map(), @fn_gl{Get} with @def_gl{MIN_MAP_BUFFER_ALIGNMENT} * @requires_gl No minimal value is specified for OpenGL ES. */ static Int minMapAlignment(); + #endif + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported atomic counter buffer binding count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_atomic_counters} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_atomic_counters} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_ATOMIC_COUNTER_BUFFER_BINDINGS} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxAtomicCounterBindings(); @@ -464,10 +472,10 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { * @brief Max supported shader storage buffer binding count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_storage_buffer_object} - * is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_storage_buffer_object} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_SHADER_STORAGE_BUFFER_BINDINGS} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxShaderStorageBindings(); @@ -475,10 +483,10 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { * @brief Alignment of shader storage buffer binding offset * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_storage_buffer_object} - * is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_storage_buffer_object} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @fn_gl{Get} with @def_gl{SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int shaderStorageOffsetAlignment(); #endif @@ -489,7 +497,7 @@ class MAGNUM_EXPORT Buffer: public AbstractObject { * * The result is cached, repeated queries don't result in repeated * OpenGL calls. If extension @extension{ARB,uniform_buffer_object} - * is not available, returns `0`. + * (part of OpenGL 3.1) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_UNIFORM_BUFFER_BINDINGS} * @requires_gles30 Uniform blocks are not available in OpenGL ES 2.0. */ diff --git a/src/Magnum/CMakeLists.txt b/src/Magnum/CMakeLists.txt index 38b7a1242..d6db799e4 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -143,26 +143,30 @@ if(NOT TARGET_GLES) set(Magnum_HEADERS ${Magnum_HEADERS} BufferTexture.h CubeMapTextureArray.h - MultisampleTexture.h RectangleTexture.h) set(Magnum_SRCS ${Magnum_SRCS} BufferTexture.cpp CubeMapTextureArray.cpp - MultisampleTexture.cpp - RectangleTexture.cpp - $) + RectangleTexture.cpp) endif() # Non-ES2 stuff if(NOT TARGET_GLES2) set(Magnum_HEADERS ${Magnum_HEADERS} BufferImage.h + MultisampleTexture.h TextureArray.h) set(Magnum_SRCS ${Magnum_SRCS} BufferImage.cpp + MultisampleTexture.cpp TextureArray.cpp) endif() +# Link in GL function pointer variables on platforms that support it +if(NOT CORRADE_TARGET_EMSCRIPTEN AND NOT CORRADE_TARGET_NACL) + list(APPEND Magnum_SRCS $) +endif() + # Files shared between main library and math unit test library set(MagnumMath_SRCS Math/Functions.cpp diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index 42dc883ea..dc3c24611 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -281,6 +281,7 @@ const std::vector& Extension::extensions(Version version) { #else case Version::GLES200: return empty; case Version::GLES300: + case Version::GLES310: #ifdef MAGNUM_TARGET_GLES2 return extensionsES300; #else @@ -396,6 +397,7 @@ Context::Context(void functionLoader()) { #else Version::GLES200, Version::GLES300, + Version::GLES310, #endif Version::None }; diff --git a/src/Magnum/CubeMapTexture.h b/src/Magnum/CubeMapTexture.h index d98d1f8c8..93ba1ffc7 100644 --- a/src/Magnum/CubeMapTexture.h +++ b/src/Magnum/CubeMapTexture.h @@ -238,7 +238,7 @@ class MAGNUM_EXPORT CubeMapTexture: public AbstractTexture { return *this; } - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** @copydoc Texture::setDepthStencilMode() */ CubeMapTexture& setDepthStencilMode(Sampler::DepthStencilMode mode) { AbstractTexture::setDepthStencilMode(mode); @@ -246,14 +246,15 @@ class MAGNUM_EXPORT CubeMapTexture: public AbstractTexture { } #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief %Image size in given mip level * @param coordinate Coordinate * @param level Mip level * * See @ref Texture::imageSize() for more information. - * @requires_gl %Texture image queries are not available in OpenGL ES. + * @requires_gles31 %Texture image size queries are not available in + * OpenGL ES 3.0 and older. */ Vector2i imageSize(Coordinate coordinate, Int level) { return DataHelper<2>::imageSize(*this, GLenum(coordinate), level); diff --git a/src/Magnum/DebugMessage.cpp b/src/Magnum/DebugMessage.cpp index ef9f0685f..a444ee618 100644 --- a/src/Magnum/DebugMessage.cpp +++ b/src/Magnum/DebugMessage.cpp @@ -36,8 +36,7 @@ namespace Magnum { namespace { -/** @todo Re-enable when extension wrangler is available for ES */ -#ifndef MAGNUM_TARGET_GLES +#if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) void #ifdef CORRADE_TARGET_WINDOWS APIENTRY @@ -113,27 +112,26 @@ void DebugMessage::insertInternal(const Source source, const Type type, const Un void DebugMessage::insertImplementationNoOp(Source, Type, UnsignedInt, Severity, const Containers::ArrayReference) {} void DebugMessage::insertImplementationKhr(const Source source, const Type type, const UnsignedInt id, const Severity severity, const Containers::ArrayReference string) { - /** @todo Re-enable when extension wrangler is available for ES */ #ifndef MAGNUM_TARGET_GLES glDebugMessageInsert(GLenum(source), GLenum(type), id, GLenum(severity), string.size(), string.data()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDebugMessageInsertKHR(GLenum(source), GLenum(type), id, GLenum(severity), string.size(), string.data()); #else static_cast(source); static_cast(type); static_cast(id); static_cast(severity); static_cast(string); - CORRADE_INTERNAL_ASSERT(false); - //glDebugMessageInsertEXT(GLenum(source), GLenum(type), id, GLenum(severity), string.size(), string.data()); + CORRADE_ASSERT_UNREACHABLE(); #endif } void DebugMessage::insertImplementationExt(Source, Type, UnsignedInt, Severity, const Containers::ArrayReference string) { - /** @todo Re-enable when extension wrangler is available for ES */ - #ifndef MAGNUM_TARGET_GLES + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) glInsertEventMarkerEXT(string.size(), string.data()); #else static_cast(string); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -150,17 +148,17 @@ void DebugMessage::setEnabledInternal(const GLenum source, const GLenum type, co void DebugMessage::controlImplementationNoOp(GLenum, GLenum, GLenum, std::initializer_list, bool) {} void DebugMessage::controlImplementationKhr(const GLenum source, const GLenum type, const GLenum severity, const std::initializer_list ids, const bool enabled) { - /** @todo Re-enable when extension wrangler is available for ES */ #ifndef MAGNUM_TARGET_GLES glDebugMessageControl(source, type, severity, ids.size(), ids.begin(), enabled); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDebugMessageControlKHR(source, type, severity, ids.size(), ids.begin(), enabled); #else static_cast(source); static_cast(type); static_cast(severity); static_cast(ids); static_cast(enabled); - CORRADE_INTERNAL_ASSERT(false); - //glDebugMessageControlKHR(source, type, severity, ids.size(), ids.begin(), enabled); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -173,23 +171,23 @@ void DebugMessage::callbackImplementationKhr(const Callback callback, const void /* Adding callback */ if(!original && callback) { - /** @todo Re-enable when extension wrangler is available for ES */ #ifndef MAGNUM_TARGET_GLES glDebugMessageCallback(callbackWrapper, userParam); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDebugMessageCallbackKHR(callbackWrapper, userParam); #else static_cast(userParam); - CORRADE_INTERNAL_ASSERT(false); - //glDebugMessageCallbackEXT(callbackWrapper, userParam); + CORRADE_ASSERT_UNREACHABLE(); #endif /* Deleting callback */ } else if(original && !callback) { - /** @todo Re-enable when extension wrangler is available for ES */ #ifndef MAGNUM_TARGET_GLES glDebugMessageCallback(nullptr, nullptr); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDebugMessageCallbackKHR(nullptr, nullptr); #else - CORRADE_INTERNAL_ASSERT(false); - //glDebugMessageCallbackEXT(nullptr, nullptr); + CORRADE_ASSERT_UNREACHABLE(); #endif } } diff --git a/src/Magnum/Framebuffer.cpp b/src/Magnum/Framebuffer.cpp index 03aec516a..d09a23e14 100644 --- a/src/Magnum/Framebuffer.cpp +++ b/src/Magnum/Framebuffer.cpp @@ -36,12 +36,12 @@ #ifndef MAGNUM_TARGET_GLES2 #include "Magnum/BufferImage.h" +#include "Magnum/MultisampleTexture.h" #include "Magnum/TextureArray.h" #endif #ifndef MAGNUM_TARGET_GLES #include "Magnum/CubeMapTextureArray.h" -#include "Magnum/MultisampleTexture.h" #include "Magnum/RectangleTexture.h" #endif @@ -190,7 +190,9 @@ Framebuffer& Framebuffer::attachTexture(const BufferAttachment attachment, Recta (this->*Context::current()->state().framebuffer->texture2DImplementation)(attachment, GL_TEXTURE_RECTANGLE, texture.id(), 0); return *this; } +#endif +#ifndef MAGNUM_TARGET_GLES2 Framebuffer& Framebuffer::attachTexture(const BufferAttachment attachment, MultisampleTexture2D& texture) { (this->*Context::current()->state().framebuffer->texture2DImplementation)(attachment, GL_TEXTURE_2D_MULTISAMPLE, texture.id(), 0); return *this; @@ -276,16 +278,16 @@ void Framebuffer::texture2DImplementationDSA(BufferAttachment attachment, GLenum #endif void Framebuffer::textureLayerImplementationDefault(BufferAttachment attachment, GLuint textureId, GLint mipLevel, GLint layer) { - /** @todo Re-enable when extension loader is available for ES 2.0 */ #ifndef MAGNUM_TARGET_GLES2 glFramebufferTextureLayer(GLenum(bindInternal()), GLenum(attachment), textureId, mipLevel, layer); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glFramebufferTexture3DOES(GLenum(bindInternal()), GLenum(attachment), GL_TEXTURE_3D_OES, textureId, mipLevel, layer); #else static_cast(attachment); static_cast(textureId); static_cast(mipLevel); static_cast(layer); - CORRADE_INTERNAL_ASSERT(false); - //glFramebufferTexture3DOES(GLenum(bindInternal()), GLenum(attachment), GL_TEXTURE_3D_OES, texture.id(), mipLevel, layer); + CORRADE_ASSERT_UNREACHABLE(); #endif } diff --git a/src/Magnum/Framebuffer.h b/src/Magnum/Framebuffer.h index 613878540..0759f611e 100644 --- a/src/Magnum/Framebuffer.h +++ b/src/Magnum/Framebuffer.h @@ -539,10 +539,13 @@ class MAGNUM_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractObje * @requires_gl Rectangle textures are not available in OpenGL ES. */ Framebuffer& attachTexture(BufferAttachment attachment, RectangleTexture& texture); + #endif + #ifndef MAGNUM_TARGET_GLES2 /** @overload * @requires_gl32 %Extension @extension{ARB,texture_multisample} - * @requires_gl Multisample textures are not available in OpenGL ES. + * @requires_gles31 Multisample textures are not available in OpenGL ES + * 3.0 and older. */ Framebuffer& attachTexture(BufferAttachment attachment, MultisampleTexture2D& texture); #endif @@ -608,7 +611,7 @@ class MAGNUM_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractObje /** @overload * @requires_gl32 %Extension @extension{ARB,texture_multisample} - * @requires_gl Multisample textures are not available in OpenGL ES. + * @requires_gl Multisample array textures are not available in OpenGL ES. */ Framebuffer& attachTextureLayer(BufferAttachment attachment, MultisampleTexture2DArray& texture, Int layer); #endif diff --git a/src/Magnum/Implementation/BufferState.cpp b/src/Magnum/Implementation/BufferState.cpp index e123a6547..dda1acb73 100644 --- a/src/Magnum/Implementation/BufferState.cpp +++ b/src/Magnum/Implementation/BufferState.cpp @@ -36,24 +36,22 @@ namespace Magnum { namespace Implementation { const Buffer::Target BufferState::targetForIndex[] = { Buffer::Target::Array, - Buffer::Target::ElementArray + Buffer::Target::ElementArray, #ifndef MAGNUM_TARGET_GLES2 - , Buffer::Target::CopyRead, Buffer::Target::CopyWrite, Buffer::Target::PixelPack, Buffer::Target::PixelUnpack, Buffer::Target::TransformFeedback, - Buffer::Target::Uniform - #endif - #ifndef MAGNUM_TARGET_GLES - , + Buffer::Target::Uniform, Buffer::Target::AtomicCounter, Buffer::Target::DispatchIndirect, Buffer::Target::DrawIndirect, Buffer::Target::ShaderStorage, + #ifndef MAGNUM_TARGET_GLES Buffer::Target::Texture #endif + #endif }; std::size_t BufferState::indexForTarget(Buffer::Target target) { @@ -67,14 +65,14 @@ std::size_t BufferState::indexForTarget(Buffer::Target target) { case Buffer::Target::PixelUnpack: return 6; case Buffer::Target::TransformFeedback: return 7; case Buffer::Target::Uniform: return 8; - #endif - #ifndef MAGNUM_TARGET_GLES case Buffer::Target::AtomicCounter: return 9; case Buffer::Target::DispatchIndirect: return 10; case Buffer::Target::DrawIndirect: return 11; case Buffer::Target::ShaderStorage: return 12; + #ifndef MAGNUM_TARGET_GLES case Buffer::Target::Texture: return 13; #endif + #endif } CORRADE_ASSERT_UNREACHABLE(); @@ -83,9 +81,9 @@ std::size_t BufferState::indexForTarget(Buffer::Target target) { BufferState::BufferState(Context& context, std::vector& extensions): bindings() #ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES - , minMapAlignment(0), maxAtomicCounterBindings(0), maxShaderStorageBindings(0), shaderStorageOffsetAlignment(0) + , minMapAlignment(0) #endif - , maxUniformBindings(0) + , maxAtomicCounterBindings(0), maxShaderStorageBindings(0), shaderStorageOffsetAlignment(0), maxUniformBindings(0) #endif { #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Implementation/BufferState.h b/src/Magnum/Implementation/BufferState.h index 9c255c37a..48ccba415 100644 --- a/src/Magnum/Implementation/BufferState.h +++ b/src/Magnum/Implementation/BufferState.h @@ -32,13 +32,11 @@ namespace Magnum { namespace Implementation { struct BufferState { #ifndef MAGNUM_TARGET_GLES static const std::size_t TargetCount = 13+1; - #else - #ifndef MAGNUM_TARGET_GLES2 - static const std::size_t TargetCount = 8+1; + #elif !defined(MAGNUM_TARGET_GLES2) + static const std::size_t TargetCount = 12+1; #else static const std::size_t TargetCount = 2+1; #endif - #endif /* Target <-> index mapping */ static std::size_t indexForTarget(Buffer::Target target); @@ -72,10 +70,10 @@ struct BufferState { GLint #ifndef MAGNUM_TARGET_GLES minMapAlignment, + #endif maxAtomicCounterBindings, maxShaderStorageBindings, shaderStorageOffsetAlignment, - #endif maxUniformBindings; #endif }; diff --git a/src/Magnum/Implementation/ShaderProgramState.cpp b/src/Magnum/Implementation/ShaderProgramState.cpp index 680ad4bad..37fc7aa32 100644 --- a/src/Magnum/Implementation/ShaderProgramState.cpp +++ b/src/Magnum/Implementation/ShaderProgramState.cpp @@ -34,11 +34,11 @@ namespace Magnum { namespace Implementation { ShaderProgramState::ShaderProgramState(Context& context, std::vector& extensions): current(0), maxVertexAttributes(0) - #ifndef MAGNUM_TARGET_GLES - , maxAtomicCounterBufferSize(0), maxComputeSharedMemorySize(0), maxComputeWorkGroupInvocations(0), maxImageUnits(0), maxImageSamples(0), maxCombinedShaderOutputResources(0), maxUniformLocations(0), maxShaderStorageBlockSize(0) - #endif #ifndef MAGNUM_TARGET_GLES2 - , minTexelOffset(0), maxTexelOffset(0), maxUniformBlockSize(0) + , maxAtomicCounterBufferSize(0), maxComputeSharedMemorySize(0), maxComputeWorkGroupInvocations(0), maxImageUnits(0), maxCombinedShaderOutputResources(0), maxUniformLocations(0), minTexelOffset(0), maxTexelOffset(0), maxUniformBlockSize(0), maxShaderStorageBlockSize(0) + #endif + #ifndef MAGNUM_TARGET_GLES + , maxImageSamples(0) #endif { #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Implementation/ShaderProgramState.h b/src/Magnum/Implementation/ShaderProgramState.h index bf4416868..0ce583620 100644 --- a/src/Magnum/Implementation/ShaderProgramState.h +++ b/src/Magnum/Implementation/ShaderProgramState.h @@ -92,19 +92,21 @@ struct ShaderProgramState { GLuint current; GLint maxVertexAttributes; - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 GLint maxAtomicCounterBufferSize, maxComputeSharedMemorySize, maxComputeWorkGroupInvocations, maxImageUnits, - maxImageSamples, maxCombinedShaderOutputResources, - maxUniformLocations; + maxUniformLocations, + minTexelOffset, + maxTexelOffset, + maxUniformBlockSize; GLint64 maxShaderStorageBlockSize; #endif - #ifndef MAGNUM_TARGET_GLES2 - GLint minTexelOffset, maxTexelOffset, maxUniformBlockSize; + #ifndef MAGNUM_TARGET_GLES + GLint maxImageSamples; #endif }; diff --git a/src/Magnum/Implementation/ShaderState.h b/src/Magnum/Implementation/ShaderState.h index beba26ef6..a8f3a3cf3 100644 --- a/src/Magnum/Implementation/ShaderState.h +++ b/src/Magnum/Implementation/ShaderState.h @@ -35,7 +35,10 @@ struct ShaderState { explicit ShaderState(): maxVertexOutputComponents{}, maxFragmentInputComponents{}, #ifndef MAGNUM_TARGET_GLES - maxTessellationControlInputComponents{}, maxTessellationControlOutputComponents{}, maxTessellationControlTotalOutputComponents{}, maxTessellationEvaluationInputComponents{}, maxTessellationEvaluationOutputComponents{}, maxGeometryInputComponents{}, maxGeometryOutputComponents{}, maxGeometryTotalOutputComponents{}, maxAtomicCounterBuffers{}, maxCombinedAtomicCounterBuffers{}, maxAtomicCounters{}, maxCombinedAtomicCounters{}, maxImageUniforms{}, maxCombinedImageUniforms{}, maxShaderStorageBlocks{}, maxCombinedShaderStorageBlocks{}, + maxTessellationControlInputComponents{}, maxTessellationControlOutputComponents{}, maxTessellationControlTotalOutputComponents{}, maxTessellationEvaluationInputComponents{}, maxTessellationEvaluationOutputComponents{}, maxGeometryInputComponents{}, maxGeometryOutputComponents{}, maxGeometryTotalOutputComponents{}, + #endif + #ifndef MAGNUM_TARGET_GLES2 + maxAtomicCounterBuffers{}, maxCombinedAtomicCounterBuffers{}, maxAtomicCounters{}, maxCombinedAtomicCounters{}, maxImageUniforms{}, maxCombinedImageUniforms{}, maxShaderStorageBlocks{}, maxCombinedShaderStorageBlocks{}, #endif maxTextureImageUnits{}, maxTextureImageUnitsCombined{}, #ifndef MAGNUM_TARGET_GLES2 @@ -66,6 +69,8 @@ struct ShaderState { maxGeometryInputComponents, maxGeometryOutputComponents, maxGeometryTotalOutputComponents; + #endif + #ifndef MAGNUM_TARGET_GLES2 GLint maxAtomicCounterBuffers[StageCount]; GLint maxCombinedAtomicCounterBuffers; GLint maxAtomicCounters[StageCount]; diff --git a/src/Magnum/Implementation/TextureState.cpp b/src/Magnum/Implementation/TextureState.cpp index 4dc90673d..9badb9faa 100644 --- a/src/Magnum/Implementation/TextureState.cpp +++ b/src/Magnum/Implementation/TextureState.cpp @@ -50,8 +50,11 @@ TextureState::TextureState(Context& context, std::vector& extension maxLodBias{0.0f}, #endif maxMaxAnisotropy(0.0f), currentTextureUnit(0) + #ifndef MAGNUM_TARGET_GLES2 + , maxColorSamples(0), maxDepthSamples(0), maxIntegerSamples(0) + #endif #ifndef MAGNUM_TARGET_GLES - , maxColorSamples(0), maxDepthSamples(0), maxIntegerSamples(0), bufferOffsetAlignment(0) + , bufferOffsetAlignment(0) #endif { /* Bind implementation */ @@ -113,6 +116,8 @@ TextureState::TextureState(Context& context, std::vector& extension #ifndef MAGNUM_TARGET_GLES parameterIuivImplementation = &AbstractTexture::parameterIImplementationDefault; parameterIivImplementation = &AbstractTexture::parameterIImplementationDefault; + #endif + #ifndef MAGNUM_TARGET_GLES2 getLevelParameterivImplementation = &AbstractTexture::getLevelParameterImplementationDefault; #endif mipmapImplementation = &AbstractTexture::mipmapImplementationDefault; @@ -213,6 +218,8 @@ TextureState::TextureState(Context& context, std::vector& extension storage2DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationFallback; storage3DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationFallback; } + #elif !defined(MAGNUM_TARGET_GLES2) + storage2DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDefault; #endif /* Anisotropic filter implementation */ diff --git a/src/Magnum/Implementation/TextureState.h b/src/Magnum/Implementation/TextureState.h index 4fc60b07d..b51a2af9a 100644 --- a/src/Magnum/Implementation/TextureState.h +++ b/src/Magnum/Implementation/TextureState.h @@ -71,7 +71,7 @@ struct TextureState { void(AbstractTexture::*parameterIivImplementation)(GLenum, const GLint*); #endif void(AbstractTexture::*setMaxAnisotropyImplementation)(GLfloat); - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 void(AbstractTexture::*getLevelParameterivImplementation)(GLenum, GLint, GLenum, GLint*); #endif void(AbstractTexture::*mipmapImplementation)(); @@ -80,8 +80,10 @@ struct TextureState { #endif void(AbstractTexture::*storage2DImplementation)(GLenum, GLsizei, TextureFormat, const Vector2i&); void(AbstractTexture::*storage3DImplementation)(GLenum, GLsizei, TextureFormat, const Vector3i&); - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 void(AbstractTexture::*storage2DMultisampleImplementation)(GLenum, GLsizei, TextureFormat, const Vector2i&, GLboolean); + #endif + #ifndef MAGNUM_TARGET_GLES void(AbstractTexture::*storage3DMultisampleImplementation)(GLenum, GLsizei, TextureFormat, const Vector3i&, GLboolean); void(AbstractTexture::*getImageImplementation)(GLenum, GLint, ColorFormat, ColorType, std::size_t, GLvoid*); void(AbstractTexture::*image1DImplementation)(GLenum, GLint, TextureFormat, const Math::Vector<1, GLsizei>&, ColorFormat, ColorType, const GLvoid*); @@ -117,11 +119,13 @@ struct TextureState { #endif GLfloat maxMaxAnisotropy; GLint currentTextureUnit; - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 GLint maxColorSamples, maxDepthSamples, - maxIntegerSamples, - bufferOffsetAlignment; + maxIntegerSamples; + #endif + #ifndef MAGNUM_TARGET_GLES + GLint bufferOffsetAlignment; #endif std::vector> bindings; diff --git a/src/Magnum/Implementation/setupDriverWorkarounds.cpp b/src/Magnum/Implementation/setupDriverWorkarounds.cpp index ca7c0bb70..7c4c05049 100644 --- a/src/Magnum/Implementation/setupDriverWorkarounds.cpp +++ b/src/Magnum/Implementation/setupDriverWorkarounds.cpp @@ -48,13 +48,8 @@ void Context::setupDriverWorkarounds() { _setRequiredVersion(GL::ARB::shading_language_420pack, GL320); #endif - #ifdef MAGNUM_TARGET_GLES - /* Disable extensions for which we need extension loader, as they would - crash otherwise. */ - /** @todo Remove this when extension loader for ES is available */ - #ifndef CORRADE_TARGET_NACL - _setRequiredVersion(GL::CHROMIUM::map_sub, None); - #endif + /* Disable extensions not available on NaCl and Emscripten */ + #if defined(CORRADE_TARGET_NACL) || defined(CORRADE_TARGET_EMSCRIPTEN) _setRequiredVersion(GL::EXT::multi_draw_arrays, None); _setRequiredVersion(GL::EXT::debug_label, None); _setRequiredVersion(GL::EXT::debug_marker, None); @@ -65,16 +60,12 @@ void Context::setupDriverWorkarounds() { _setRequiredVersion(GL::KHR::debug, None); _setRequiredVersion(GL::NV::read_buffer_front, None); _setRequiredVersion(GL::OES::mapbuffer, None); - #ifdef MAGNUM_TARGET_GLES2 _setRequiredVersion(GL::ANGLE::framebuffer_blit, None); _setRequiredVersion(GL::ANGLE::framebuffer_multisample, None); _setRequiredVersion(GL::ANGLE::instanced_arrays, None); _setRequiredVersion(GL::APPLE::framebuffer_multisample, None); _setRequiredVersion(GL::EXT::discard_framebuffer, None); _setRequiredVersion(GL::EXT::blend_minmax, None); - #ifndef CORRADE_TARGET_NACL - _setRequiredVersion(GL::EXT::occlusion_query_boolean, None); - #endif _setRequiredVersion(GL::EXT::texture_storage, None); _setRequiredVersion(GL::EXT::map_buffer_range, None); _setRequiredVersion(GL::EXT::instanced_arrays, None); @@ -89,6 +80,11 @@ void Context::setupDriverWorkarounds() { _setRequiredVersion(GL::OES::texture_3D, None); _setRequiredVersion(GL::OES::vertex_array_object, None); #endif + + /* Disable extensions not available on Emscripten */ + #ifdef CORRADE_TARGET_EMSCRIPTEN + _setRequiredVersion(GL::CHROMIUM::map_sub, None); + _setRequiredVersion(GL::EXT::occlusion_query_boolean, None); #endif #undef _setRequiredVersion diff --git a/src/Magnum/Magnum.h b/src/Magnum/Magnum.h index 4d16d875c..f8ce5d5ff 100644 --- a/src/Magnum/Magnum.h +++ b/src/Magnum/Magnum.h @@ -603,12 +603,14 @@ enum class MeshPrimitive: GLenum; class Mesh; class MeshView; -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 /* MultisampleTextureSampleLocations enum used only in the function */ template class MultisampleTexture; typedef MultisampleTexture<2> MultisampleTexture2D; +#ifndef MAGNUM_TARGET_GLES typedef MultisampleTexture<3> MultisampleTexture2DArray; #endif +#endif /* AbstractQuery is not used directly */ class PrimitiveQuery; diff --git a/src/Magnum/Mesh.cpp b/src/Magnum/Mesh.cpp index c9ed84d0c..6789cef00 100644 --- a/src/Magnum/Mesh.cpp +++ b/src/Magnum/Mesh.cpp @@ -285,14 +285,14 @@ void Mesh::drawInternal(Int count, Int baseVertex, Int instanceCount, GLintptr i } void Mesh::bindVAO(GLuint vao) { - /** @todo Re-enable when extension loader is available for ES */ GLuint& current = Context::current()->state().mesh->currentVAO; if(current != vao) { #ifndef MAGNUM_TARGET_GLES2 glBindVertexArray(current = vao); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glBindVertexArrayOES(current = vao); #else - CORRADE_INTERNAL_ASSERT(false); - //glBindVertexArrayOES(current = vao); + CORRADE_ASSERT_UNREACHABLE(); #endif } } @@ -300,12 +300,12 @@ void Mesh::bindVAO(GLuint vao) { void Mesh::createImplementationDefault() { _id = 0; } void Mesh::createImplementationVAO() { - /** @todo Get some extension wrangler instead to avoid linker errors to glGenVertexArrays() on ES2 */ #ifndef MAGNUM_TARGET_GLES2 glGenVertexArrays(1, &_id); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glGenVertexArraysOES(1, &_id); #else - //glGenVertexArraysOES(1, &_id); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif CORRADE_INTERNAL_ASSERT(_id != Implementation::State::DisengagedBinding); } @@ -313,12 +313,12 @@ void Mesh::createImplementationVAO() { void Mesh::destroyImplementationDefault() {} void Mesh::destroyImplementationVAO() { - /** @todo Get some extension wrangler instead to avoid linker errors to glDeleteVertexArrays() on ES2 */ #ifndef MAGNUM_TARGET_GLES2 glDeleteVertexArrays(1, &_id); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDeleteVertexArraysOES(1, &_id); #else - //glDeleteVertexArraysOES(1, &_id); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -426,24 +426,33 @@ void Mesh::vertexAttribPointer(const LongAttribute& attribute) { #ifdef MAGNUM_TARGET_GLES2 void Mesh::vertexAttribDivisorImplementationANGLE(const GLuint index, const GLuint divisor) { - //glVertexAttribDivisorANGLE(index, divisor); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glVertexAttribDivisorANGLE(index, divisor); + #else static_cast(index); static_cast(divisor); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::vertexAttribDivisorImplementationEXT(const GLuint index, const GLuint divisor) { - //glVertexAttribDivisorEXT(index, divisor); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glVertexAttribDivisorEXT(index, divisor); + #else static_cast(index); static_cast(divisor); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::vertexAttribDivisorImplementationNV(const GLuint index, const GLuint divisor) { - //glVertexAttribDivisorNV(index, divisor); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glVertexAttribDivisorNV(index, divisor); + #else static_cast(index); static_cast(divisor); + CORRADE_ASSERT_UNREACHABLE(); + #endif } #endif @@ -501,51 +510,69 @@ void Mesh::unbindImplementationVAO() {} #ifdef MAGNUM_TARGET_GLES2 void Mesh::drawArraysInstancedImplementationANGLE(const GLint baseVertex, const GLsizei count, const GLsizei instanceCount) { - //glDrawArraysInstancedANGLE(GLenum(_primitive), baseVertex, count, instanceCount); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawArraysInstancedANGLE(GLenum(_primitive), baseVertex, count, instanceCount); + #else static_cast(baseVertex); static_cast(count); static_cast(instanceCount); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::drawArraysInstancedImplementationEXT(const GLint baseVertex, const GLsizei count, const GLsizei instanceCount) { - //glDrawArraysInstancedEXT(GLenum(_primitive), baseVertex, count, instanceCount); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawArraysInstancedEXT(GLenum(_primitive), baseVertex, count, instanceCount); + #else static_cast(baseVertex); static_cast(count); static_cast(instanceCount); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::drawArraysInstancedImplementationNV(const GLint baseVertex, const GLsizei count, const GLsizei instanceCount) { - //glDrawArraysInstancedNV(GLenum(_primitive), baseVertex, count, instanceCount); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawArraysInstancedNV(GLenum(_primitive), baseVertex, count, instanceCount); + #else static_cast(baseVertex); static_cast(count); static_cast(instanceCount); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::drawElementsInstancedImplementationANGLE(const GLsizei count, const GLintptr indexOffset, const GLsizei instanceCount) { - //glDrawElementsInstancedANGLE(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast(indexOffset), instanceCount); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawElementsInstancedANGLE(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast(indexOffset), instanceCount); + #else static_cast(count); static_cast(indexOffset); static_cast(instanceCount); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::drawElementsInstancedImplementationEXT(const GLsizei count, const GLintptr indexOffset, const GLsizei instanceCount) { - //glDrawElementsInstancedEXT(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast(indexOffset), instanceCount); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawElementsInstancedEXT(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast(indexOffset), instanceCount); + #else static_cast(count); static_cast(indexOffset); static_cast(instanceCount); + CORRADE_ASSERT_UNREACHABLE(); + #endif } void Mesh::drawElementsInstancedImplementationNV(const GLsizei count, const GLintptr indexOffset, const GLsizei instanceCount) { - //glDrawElementsInstancedNV(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast(indexOffset), instanceCount); - CORRADE_INTERNAL_ASSERT(false); + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glDrawElementsInstancedNV(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast(indexOffset), instanceCount); + #else static_cast(count); static_cast(indexOffset); static_cast(instanceCount); + CORRADE_ASSERT_UNREACHABLE(); + #endif } #endif diff --git a/src/Magnum/MeshView.cpp b/src/Magnum/MeshView.cpp index d6dc21bf0..10a071811 100644 --- a/src/Magnum/MeshView.cpp +++ b/src/Magnum/MeshView.cpp @@ -95,9 +95,10 @@ void MeshView::multiDrawImplementationDefault(std::initializer_list Vector2i MAGNUM_EXPORT maxMultisampleTextureSize<2>() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) - return {}; + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif + return Vector2i{0}; return Vector2i{Implementation::maxTextureSideSize()}; } +#ifndef MAGNUM_TARGET_GLES template<> Vector3i MAGNUM_EXPORT maxMultisampleTextureSize<3>() { if(!Context::current()->isExtensionSupported()) - return {}; + return Vector3i{0}; return {Vector2i{Implementation::maxTextureSideSize()}, Implementation::max3DTextureDepth()}; } +#endif }} #endif diff --git a/src/Magnum/MultisampleTexture.h b/src/Magnum/MultisampleTexture.h index 97794042a..7133a1447 100644 --- a/src/Magnum/MultisampleTexture.h +++ b/src/Magnum/MultisampleTexture.h @@ -25,7 +25,7 @@ DEALINGS IN THE SOFTWARE. */ -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 /** @file * @brief Class @ref Magnum::MultisampleTexture, typedef @ref Magnum::MultisampleTexture2D, @ref Magnum::MultisampleTexture2DArray */ @@ -35,17 +35,21 @@ #include "Magnum/DimensionTraits.h" #include "Magnum/Math/Vector3.h" -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 namespace Magnum { namespace Implementation { template constexpr GLenum multisampleTextureTarget(); template<> inline constexpr GLenum multisampleTextureTarget<2>() { return GL_TEXTURE_2D_MULTISAMPLE; } + #ifndef MAGNUM_TARGET_GLES template<> inline constexpr GLenum multisampleTextureTarget<3>() { return GL_TEXTURE_2D_MULTISAMPLE_ARRAY; } + #endif template typename DimensionTraits::VectorType maxMultisampleTextureSize(); template<> MAGNUM_EXPORT Vector2i maxMultisampleTextureSize<2>(); + #ifndef MAGNUM_TARGET_GLES template<> MAGNUM_EXPORT Vector3i maxMultisampleTextureSize<3>(); + #endif } /** @@ -83,7 +87,10 @@ shaders. @ref TextureArray, @ref CubeMapTexture, @ref CubeMapTextureArray, @ref RectangleTexture, @ref BufferTexture @requires_gl32 %Extension @extension{ARB,texture_multisample} -@requires_gl Multisample textures are not available in OpenGL ES. +@requires_gles31 Multisample textures are not available in OpenGL ES 3.0 and + older. +@requires_gl 2D array multisample textures are not available in OpenGL ES, only + 2D ones. */ template class MultisampleTexture: public AbstractTexture { public: @@ -93,8 +100,9 @@ template class MultisampleTexture: public AbstractTextur * @brief Max supported multisample texture size * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,texture_multisample} (part - * of OpenGL 3.2) is not available, returns zero vector. + * OpenGL calls. If neither extension @extension{ARB,texture_multisample} + * (part of OpenGL 3.2) nor OpenGL ES 3.1 is available, returns zero + * vector. * @see @fn_gl{Get} with @def_gl{MAX_TEXTURE_SIZE} and * @def_gl{MAX_3D_TEXTURE_SIZE} */ @@ -187,11 +195,25 @@ template class MultisampleTexture: public AbstractTextur #endif }; -/** @brief Two-dimensional multisample texture */ +/** +@brief Two-dimensional multisample texture + +@requires_gl32 %Extension @extension{ARB,texture_multisample} +@requires_gles31 Multisample textures are not available in OpenGL ES 3.0 and + older. +*/ typedef MultisampleTexture<2> MultisampleTexture2D; -/** @brief Two-dimensional multisample texture array */ +#ifndef MAGNUM_TARGET_GLES +/** +@brief Two-dimensional multisample texture array + +@requires_gl32 %Extension @extension{ARB,texture_multisample} +@requires_gl Only @ref Magnum::MultisampleTexture2D "MultisampleTexture2D" is + available in OpenGL ES. +*/ typedef MultisampleTexture<3> MultisampleTexture2DArray; +#endif } #else diff --git a/src/Magnum/OpenGL.h b/src/Magnum/OpenGL.h index fc7a69b54..aedede4cb 100644 --- a/src/Magnum/OpenGL.h +++ b/src/Magnum/OpenGL.h @@ -33,41 +33,29 @@ #include "Magnum/configure.h" -/** @todo Remove NaCl workaround when not needed */ - /* Desktop OpenGL */ #ifndef MAGNUM_TARGET_GLES #include "MagnumExternal/OpenGL/GL/flextGL.h" -/* NaCl has its own gl2.h, the official one causes linker issues. Additionaly - to NaCl's gl2ext.h we are including our own to prevent undeclared symbol - errors with some recent extensions. */ +/* Special case for NaCl */ #elif defined(CORRADE_TARGET_NACL) - /* Enable function prototypes (the supported ones shouldn't fail at link time) */ - #define GL_GLEXT_PROTOTYPES + /* No extension loading */ + #include "MagnumExternal/OpenGL/GLES2/flextGLNaCl.h" - #include + /* Needed for NaCl-specific extensions */ + #define GL_GLEXT_PROTOTYPES + #define GLES2_GET_FUN(name) GLES2##name #include - /* We need to define missing types for new extensions */ - #include - typedef struct __GLsync *GLsync; - typedef std::uint64_t GLuint64; - typedef std::int64_t GLint64; - #undef __gl2ext_h_ - #include "MagnumExternal/OpenGL/GLES2/gl2ext.h" +/* Special case for Emscripten (no extension loading) */ +#elif defined(CORRADE_TARGET_EMSCRIPTEN) + #include "MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h" /* Generic OpenGL ES */ +#elif defined(MAGNUM_TARGET_GLES2) + #include "MagnumExternal/OpenGL/GLES2/flextGL.h" #else - #include "MagnumExternal/OpenGL/KHR/khrplatform.h" - #ifndef MAGNUM_TARGET_GLES2 - #include "MagnumExternal/OpenGL/GLES3/gl3platform.h" - #include "MagnumExternal/OpenGL/GLES3/gl3.h" - #else - #include "MagnumExternal/OpenGL/GLES2/gl2platform.h" - #include "MagnumExternal/OpenGL/GLES2/gl2.h" - #endif - #include "MagnumExternal/OpenGL/GLES2/gl2ext.h" + #include "MagnumExternal/OpenGL/GLES3/flextGL.h" #endif #endif diff --git a/src/Magnum/Platform/CMakeLists.txt b/src/Magnum/Platform/CMakeLists.txt index 28b59013d..9180cf20c 100644 --- a/src/Magnum/Platform/CMakeLists.txt +++ b/src/Magnum/Platform/CMakeLists.txt @@ -37,16 +37,19 @@ set(MagnumPlatform_FILES ) install(FILES ${MagnumPlatform_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}/Platform) # Decide about platform-specific context for cross-platform toolkits -if((WITH_GLUTAPPLICATION OR WITH_SDL2APPLICATION) AND NOT MAGNUM_TARGET_GLES) - if(CORRADE_TARGET_APPLE) +if(WITH_GLUTAPPLICATION OR WITH_SDL2APPLICATION) + if(CORRADE_TARGET_APPLE AND NOT MAGNUM_TARGET_GLES) set(NEED_CGLCONTEXT 1) set(MagnumSomeContext_OBJECTS $) - elseif(CORRADE_TARGET_WINDOWS) + elseif(CORRADE_TARGET_WINDOWS AND NOT MAGNUM_TARGET_GLES) set(NEED_WGLCONTEXT 1) set(MagnumSomeContext_OBJECTS $) - elseif(CORRADE_TARGET_UNIX) + elseif(CORRADE_TARGET_UNIX AND (NOT MAGNUM_TARGET_GLES OR MAGNUM_TARGET_DESKTOP_GLES)) set(NEED_GLXCONTEXT 1) set(MagnumSomeContext_OBJECTS $) + elseif(MAGNUM_TARGET_GLES AND NOT CORRADE_TARGET_EMSCRIPTEN AND NOT CORRADE_TARGET_NACL) + set(NEED_EGLCONTEXT 1) + set(MagnumSomeContext_OBJECTS $) endif() endif() @@ -56,11 +59,14 @@ if(WITH_ANDROIDAPPLICATION) message(FATAL_ERROR "AndroidApplication is available only when targeting Android. Set WITH_ANDROIDAPPLICATION to OFF to skip building it.") endif() + set(NEED_EGLCONTEXT 1) + include_directories(${ANDROID_NATIVE_APP_GLUE_INCLUDE_DIR}) set(MagnumAndroidApplication_SRCS AndroidApplication.cpp - Implementation/Egl.cpp) + Implementation/Egl.cpp + $) set(MagnumAndroidApplication_HEADERS AndroidApplication.h) set(MagnumAndroidApplication_PRIVATE_HEADERS @@ -190,17 +196,13 @@ endif() if(WITH_GLXAPPLICATION) set(NEED_ABSTRACTXAPPLICATION 1) set(NEED_GLXCONTEXTHANDLER 1) - if(NOT MAGNUM_TARGET_GLES) - set(NEED_GLXCONTEXT 1) - endif() + set(NEED_GLXCONTEXT 1) set(MagnumGlxApplication_SRCS GlxApplication.cpp $ - $) - if(NOT MAGNUM_TARGET_GLES) - list(APPEND MagnumWindowlessGlxApplication_SRCS $) - endif() + $ + $) set(MagnumGlxApplication_HEADERS GlxApplication.h) add_library(MagnumGlxApplication STATIC @@ -218,11 +220,13 @@ endif() if(WITH_XEGLAPPLICATION) set(NEED_ABSTRACTXAPPLICATION 1) set(NEED_EGLCONTEXTHANDLER 1) + set(NEED_EGLCONTEXT 1) set(MagnumXEglApplication_SRCS XEglApplication.cpp $ - $) + $ + $) set(MagnumXEglApplication_HEADERS XEglApplication.h) add_library(MagnumXEglApplication STATIC @@ -245,14 +249,11 @@ endif() # Windowless GLX application if(WITH_WINDOWLESSGLXAPPLICATION) - if(NOT MAGNUM_TARGET_GLES) - set(NEED_GLXCONTEXT 1) - endif() + set(NEED_GLXCONTEXT 1) - set(MagnumWindowlessGlxApplication_SRCS WindowlessGlxApplication.cpp) - if(NOT MAGNUM_TARGET_GLES) - list(APPEND MagnumWindowlessGlxApplication_SRCS $) - endif() + set(MagnumWindowlessGlxApplication_SRCS + WindowlessGlxApplication.cpp + $) set(MagnumWindowlessGlxApplication_HEADERS WindowlessGlxApplication.h) add_library(MagnumWindowlessGlxApplication STATIC @@ -365,10 +366,13 @@ if(NEED_EGLCONTEXTHANDLER) endif() # Platform-specific sources for context library +set(MagnumContext_SRCS Implementation/OpenGLFunctionLoader.cpp) if(NOT MAGNUM_TARGET_GLES) - set(MagnumContext_SRCS - Implementation/OpenGLFunctionLoader.cpp - ../../MagnumExternal/OpenGL/GL/flextGLPlatform.cpp) + list(APPEND MagnumContext_SRCS ../../MagnumExternal/OpenGL/GL/flextGLPlatform.cpp) +elseif(MAGNUM_TARGET_GLES AND MAGNUM_TARGET_GLES2) + list(APPEND MagnumContext_SRCS ../../MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp) +elseif(MAGNUM_TARGET_GLES AND NOT MAGNUM_TARGET_GLES2) + list(APPEND MagnumContext_SRCS ../../MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp) endif() # CGL context @@ -389,6 +393,22 @@ if(NEED_CGLCONTEXT OR WITH_CGLCONTEXT) endif() endif() +# EGL context +if(NEED_EGLCONTEXT OR WITH_EGLCONTEXT) + add_library(MagnumEglContextObjects OBJECT ${MagnumContext_SRCS}) + set_target_properties(MagnumEglContextObjects PROPERTIES COMPILE_DEFINITIONS "MAGNUM_PLATFORM_USE_EGL") + + # Also create proper static library, if requested + if(WITH_EGLCONTEXT) + add_library(MagnumEglContext STATIC $) + set_target_properties(MagnumEglContext PROPERTIES DEBUG_POSTFIX "-d") + install(TARGETS MagnumEglContext + RUNTIME DESTINATION ${MAGNUM_BINARY_INSTALL_DIR} + LIBRARY DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR} + ARCHIVE DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR}) + endif() +endif() + # GLX context if(NEED_GLXCONTEXT OR WITH_GLXCONTEXT) add_library(MagnumGlxContextObjects OBJECT ${MagnumContext_SRCS}) diff --git a/src/Magnum/Platform/Context.h b/src/Magnum/Platform/Context.h index e08615409..f0503c9c9 100644 --- a/src/Magnum/Platform/Context.h +++ b/src/Magnum/Platform/Context.h @@ -52,7 +52,7 @@ class Context: public Magnum::Context { * @fn_gl{GetString} with @def_gl{EXTENSIONS} */ explicit Context(): - #ifndef MAGNUM_TARGET_GLES + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) Magnum::Context{flextGLInit} {} #else Magnum::Context{nullptr} {} diff --git a/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.cpp b/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.cpp index c86805634..239f7b545 100644 --- a/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.cpp +++ b/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.cpp @@ -42,6 +42,10 @@ #elif defined(CORRADE_TARGET_UNIX) && defined(MAGNUM_PLATFORM_USE_GLX) #include +/* EGL-specific includes */ +#elif defined(MAGNUM_PLATFORM_USE_EGL) +#include + /* Otherwise unsupported */ #else #error Unsupported platform @@ -92,6 +96,16 @@ auto OpenGLFunctionLoader::load(const char* const name) -> FunctionPointer { return glXGetProcAddressARB(reinterpret_cast(name)); } +/* EGL-specific implementation */ +#elif defined(MAGNUM_PLATFORM_USE_EGL) +OpenGLFunctionLoader::OpenGLFunctionLoader() = default; + +OpenGLFunctionLoader::~OpenGLFunctionLoader() = default; + +auto OpenGLFunctionLoader::load(const char* const name) -> FunctionPointer { + return eglGetProcAddress(name); +} + /* Otherwise unsupported */ #else #error Unsupported platform diff --git a/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.h b/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.h index 3772d8c2c..9521b033d 100644 --- a/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.h +++ b/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.h @@ -63,6 +63,9 @@ class OpenGLFunctionLoader { /* GLX-specific handles (nothing needed) */ #elif defined(CORRADE_TARGET_UNIX) && defined(MAGNUM_PLATFORM_USE_GLX) + /* EGL-specific handles (nothing needed) */ + #elif defined(MAGNUM_PLATFORM_USE_EGL) + /* Otherwise unsupported */ #else #error Unsupported platform diff --git a/src/Magnum/Platform/NaClApplication.h b/src/Magnum/Platform/NaClApplication.h index dc13c5bef..2d9341681 100644 --- a/src/Magnum/Platform/NaClApplication.h +++ b/src/Magnum/Platform/NaClApplication.h @@ -32,6 +32,10 @@ #include #include #include + +/* Needs to be first */ +#include "Magnum/OpenGL.h" + #include #include #include diff --git a/src/Magnum/Platform/WindowlessNaClApplication.h b/src/Magnum/Platform/WindowlessNaClApplication.h index 9fdbcef81..89123b501 100644 --- a/src/Magnum/Platform/WindowlessNaClApplication.h +++ b/src/Magnum/Platform/WindowlessNaClApplication.h @@ -32,6 +32,10 @@ #include #include #include + +/* Needs to be first */ +#include "Magnum/OpenGL.h" + #include #include #include diff --git a/src/Magnum/Platform/magnum-info.cpp b/src/Magnum/Platform/magnum-info.cpp index 69d18e660..6b046a693 100644 --- a/src/Magnum/Platform/magnum-info.cpp +++ b/src/Magnum/Platform/magnum-info.cpp @@ -40,8 +40,10 @@ #include "Magnum/Extensions.h" #include "Magnum/Framebuffer.h" #include "Magnum/Mesh.h" -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 #include "Magnum/MultisampleTexture.h" +#endif +#ifndef MAGNUM_TARGET_GLES #include "Magnum/RectangleTexture.h" #endif #include "Magnum/Renderbuffer.h" @@ -315,6 +317,8 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(Shader::maxTextureImageUnits(Shader::Type::TessellationControl)) _l(Shader::maxTextureImageUnits(Shader::Type::TessellationEvaluation)) _l(Shader::maxTextureImageUnits(Shader::Type::Geometry)) + #endif + #ifndef MAGNUM_TARGET_GLES2 _l(Shader::maxTextureImageUnits(Shader::Type::Compute)) #endif _l(Shader::maxTextureImageUnits(Shader::Type::Fragment)) @@ -324,18 +328,12 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(Shader::maxUniformComponents(Shader::Type::TessellationControl)) _l(Shader::maxUniformComponents(Shader::Type::TessellationEvaluation)) _l(Shader::maxUniformComponents(Shader::Type::Geometry)) + #endif + #ifndef MAGNUM_TARGET_GLES2 _l(Shader::maxUniformComponents(Shader::Type::Compute)) #endif _l(Shader::maxUniformComponents(Shader::Type::Fragment)) - #ifndef MAGNUM_TARGET_GLES - _l(AbstractShaderProgram::maxUniformLocations()) - #endif _l(AbstractShaderProgram::maxVertexAttributes()) - #ifndef MAGNUM_TARGET_GLES - _l(AbstractTexture::maxColorSamples()) - _l(AbstractTexture::maxDepthSamples()) - _l(AbstractTexture::maxIntegerSamples()) - #endif #ifndef MAGNUM_TARGET_GLES2 _l(AbstractTexture::maxLodBias()) #endif @@ -344,7 +342,7 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat #endif _lvec(Texture2D::maxSize()) #ifndef MAGNUM_TARGET_GLES2 - _lvec(Texture3D::maxSize()) + _lvec(Texture3D::maxSize()) /* Checked ES2 version below */ #endif #ifndef MAGNUM_TARGET_GLES @@ -353,14 +351,34 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(AbstractFramebuffer::maxDualSourceDrawBuffers()) } + #endif - if(c->isExtensionSupported()) { + #ifndef MAGNUM_TARGET_GLES2 + #ifndef MAGNUM_TARGET_GLES + if(c->isExtensionSupported()) + #endif + { + #ifndef MAGNUM_TARGET_GLES _h(ARB::compute_shader) + #endif _l(AbstractShaderProgram::maxComputeSharedMemorySize()) _l(AbstractShaderProgram::maxComputeWorkGroupInvocations()) } + #ifndef MAGNUM_TARGET_GLES + if(c->isExtensionSupported()) + #endif + { + #ifndef MAGNUM_TARGET_GLES + _h(ARB::explicit_uniform_location) + #endif + + _l(AbstractShaderProgram::maxUniformLocations()) + } + #endif + + #ifndef MAGNUM_TARGET_GLES if(c->isExtensionSupported()) { _h(ARB::geometry_shader4) @@ -368,57 +386,86 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(Shader::maxGeometryOutputComponents()) _l(Shader::maxGeometryTotalOutputComponents()) } + #endif - if(c->isExtensionSupported()) { + #ifndef MAGNUM_TARGET_GLES2 + #ifndef MAGNUM_TARGET_GLES + if(c->isExtensionSupported()) + #endif + { + #ifndef MAGNUM_TARGET_GLES _h(ARB::shader_atomic_counters) + #endif _l(Buffer::maxAtomicCounterBindings()) _l(Shader::maxAtomicCounterBuffers(Shader::Type::Vertex)) + #ifndef MAGNUM_TARGET_GLES _l(Shader::maxAtomicCounterBuffers(Shader::Type::TessellationControl)) _l(Shader::maxAtomicCounterBuffers(Shader::Type::TessellationEvaluation)) _l(Shader::maxAtomicCounterBuffers(Shader::Type::Geometry)) + #endif _l(Shader::maxAtomicCounterBuffers(Shader::Type::Compute)) _l(Shader::maxAtomicCounterBuffers(Shader::Type::Fragment)) _l(Shader::maxCombinedAtomicCounterBuffers()) _l(Shader::maxAtomicCounters(Shader::Type::Vertex)) + #ifndef MAGNUM_TARGET_GLES _l(Shader::maxAtomicCounters(Shader::Type::TessellationControl)) _l(Shader::maxAtomicCounters(Shader::Type::TessellationEvaluation)) _l(Shader::maxAtomicCounters(Shader::Type::Geometry)) + #endif _l(Shader::maxAtomicCounters(Shader::Type::Compute)) _l(Shader::maxAtomicCounters(Shader::Type::Fragment)) _l(Shader::maxCombinedAtomicCounters()) _l(AbstractShaderProgram::maxAtomicCounterBufferSize()) } - if(c->isExtensionSupported()) { + #ifndef MAGNUM_TARGET_GLES + if(c->isExtensionSupported()) + #endif + { + #ifndef MAGNUM_TARGET_GLES _h(ARB::shader_image_load_store) + #endif _l(Shader::maxImageUniforms(Shader::Type::Vertex)) + #ifndef MAGNUM_TARGET_GLES _l(Shader::maxImageUniforms(Shader::Type::TessellationControl)) _l(Shader::maxImageUniforms(Shader::Type::TessellationEvaluation)) _l(Shader::maxImageUniforms(Shader::Type::Geometry)) + #endif _l(Shader::maxImageUniforms(Shader::Type::Compute)) _l(Shader::maxImageUniforms(Shader::Type::Fragment)) _l(Shader::maxCombinedImageUniforms()) _l(AbstractShaderProgram::maxCombinedShaderOutputResources()) _l(AbstractShaderProgram::maxImageUnits()) + #ifndef MAGNUM_TARGET_GLES _l(AbstractShaderProgram::maxImageSamples()) + #endif } - if(c->isExtensionSupported()) { + #ifndef MAGNUM_TARGET_GLES + if(c->isExtensionSupported()) + #endif + { + #ifndef MAGNUM_TARGET_GLES _h(ARB::shader_storage_buffer_object) + #endif _l(Shader::maxShaderStorageBlocks(Shader::Type::Vertex)) + #ifndef MAGNUM_TARGET_GLES _l(Shader::maxShaderStorageBlocks(Shader::Type::TessellationControl)) _l(Shader::maxShaderStorageBlocks(Shader::Type::TessellationEvaluation)) _l(Shader::maxShaderStorageBlocks(Shader::Type::Geometry)) + #endif _l(Shader::maxShaderStorageBlocks(Shader::Type::Compute)) _l(Shader::maxShaderStorageBlocks(Shader::Type::Fragment)) _l(Shader::maxCombinedShaderStorageBlocks()) /* AbstractShaderProgram::maxCombinedShaderOutputResources() already in shader_image_load_store */ _l(AbstractShaderProgram::maxShaderStorageBlockSize()) } + #endif + #ifndef MAGNUM_TARGET_GLES if(c->isExtensionSupported()) { _h(ARB::tessellation_shader) @@ -442,14 +489,28 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(BufferTexture::offsetAlignment()) } + #endif - if(c->isExtensionSupported()) { + #ifndef MAGNUM_TARGET_GLES2 + #ifndef MAGNUM_TARGET_GLES + if(c->isExtensionSupported()) + #endif + { + #ifndef MAGNUM_TARGET_GLES _h(ARB::texture_multisample) + #endif + _l(AbstractTexture::maxColorSamples()) + _l(AbstractTexture::maxDepthSamples()) + _l(AbstractTexture::maxIntegerSamples()) _lvec(MultisampleTexture2D::maxSize()) + #ifndef MAGNUM_TARGET_GLES _lvec(MultisampleTexture2DArray::maxSize()) + #endif } + #endif + #ifndef MAGNUM_TARGET_GLES if(c->isExtensionSupported()) { _h(ARB::texture_rectangle) @@ -457,8 +518,6 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat } #endif - /** @todo Somehow sort the following into previous list for ES3 */ - #ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES if(c->isExtensionSupported()) @@ -473,8 +532,8 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(Shader::maxUniformBlocks(Shader::Type::TessellationControl)) _l(Shader::maxUniformBlocks(Shader::Type::TessellationEvaluation)) _l(Shader::maxUniformBlocks(Shader::Type::Geometry)) - _l(Shader::maxUniformBlocks(Shader::Type::Compute)) #endif + _l(Shader::maxUniformBlocks(Shader::Type::Compute)) _l(Shader::maxUniformBlocks(Shader::Type::Fragment)) _l(Shader::maxCombinedUniformBlocks()) _l(Shader::maxCombinedUniformComponents(Shader::Type::Vertex)) @@ -482,8 +541,8 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat _l(Shader::maxCombinedUniformComponents(Shader::Type::TessellationControl)) _l(Shader::maxCombinedUniformComponents(Shader::Type::TessellationEvaluation)) _l(Shader::maxCombinedUniformComponents(Shader::Type::Geometry)) - _l(Shader::maxCombinedUniformComponents(Shader::Type::Compute)) #endif + _l(Shader::maxCombinedUniformComponents(Shader::Type::Compute)) _l(Shader::maxCombinedUniformComponents(Shader::Type::Fragment)) _l(AbstractShaderProgram::maxUniformBlockSize()) } diff --git a/src/Magnum/Query.cpp b/src/Magnum/Query.cpp index 8fd4e7a15..3e01d4b8e 100644 --- a/src/Magnum/Query.cpp +++ b/src/Magnum/Query.cpp @@ -34,13 +34,12 @@ namespace Magnum { AbstractQuery::AbstractQuery(): target() { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glGenQueries(1, &_id); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glGenQueriesEXT(1, &_id); #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -48,13 +47,12 @@ AbstractQuery::~AbstractQuery() { /* Moved out, nothing to do */ if(!_id) return; - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glDeleteQueries(1, &_id); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glDeleteQueriesEXT(1, &_id); #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } @@ -78,14 +76,13 @@ AbstractQuery& AbstractQuery::setLabelInternal(const Containers::ArrayReference< bool AbstractQuery::resultAvailable() { CORRADE_ASSERT(!target, "AbstractQuery::resultAvailable(): the query is currently running", false); - /** @todo Re-enable when extension loader is available for ES */ GLuint result; #ifndef MAGNUM_TARGET_GLES2 glGetQueryObjectuiv(_id, GL_QUERY_RESULT_AVAILABLE, &result); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glGetQueryObjectuivEXT(_id, GL_QUERY_RESULT_AVAILABLE_EXT, &result); #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif return result == GL_TRUE; } @@ -94,14 +91,13 @@ bool AbstractQuery::resultAvailable() { template<> UnsignedInt AbstractQuery::result() { CORRADE_ASSERT(!target, "AbstractQuery::result(): the query is currently running", {}); - /** @todo Re-enable when extension loader is available for ES */ UnsignedInt result; #ifndef MAGNUM_TARGET_GLES2 glGetQueryObjectuiv(_id, GL_QUERY_RESULT, &result); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glGetQueryObjectuivEXT(_id, GL_QUERY_RESULT_EXT, &result); #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif return result; } @@ -111,14 +107,13 @@ template<> bool AbstractQuery::result() { return result() != template<> Int AbstractQuery::result() { CORRADE_ASSERT(!target, "AbstractQuery::result(): the query is currently running", {}); - /** @todo Re-enable when extension loader is available for ES */ Int result; #ifndef MAGNUM_TARGET_GLES glGetQueryObjectiv(_id, GL_QUERY_RESULT, &result); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glGetQueryObjectivEXT(_id, GL_QUERY_RESULT_EXT, &result); #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif return result; } @@ -127,13 +122,13 @@ template<> Int AbstractQuery::result() { template<> UnsignedLong AbstractQuery::result() { CORRADE_ASSERT(!target, "AbstractQuery::result(): the query is currently running", {}); - /** @todo Re-enable when extension loader is available for ES */ UnsignedLong result; #ifndef MAGNUM_TARGET_GLES glGetQueryObjectui64v(_id, GL_QUERY_RESULT, &result); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glGetQueryObjectui64vEXT(_id, GL_QUERY_RESULT_EXT, &result); #else - CORRADE_INTERNAL_ASSERT(false); - //glGetQueryObjectui64vEXT(_id, GL_QUERY_RESULT, &result); + CORRADE_ASSERT_UNREACHABLE(); #endif return result; } @@ -141,13 +136,13 @@ template<> UnsignedLong AbstractQuery::result() { template<> Long AbstractQuery::result() { CORRADE_ASSERT(!target, "AbstractQuery::result(): the query is currently running", {}); - /** @todo Re-enable when extension loader is available for ES */ Long result; #ifndef MAGNUM_TARGET_GLES glGetQueryObjecti64v(_id, GL_QUERY_RESULT, &result); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glGetQueryObjecti64vEXT(_id, GL_QUERY_RESULT_EXT, &result); #else - CORRADE_INTERNAL_ASSERT(false); - //glGetQueryObjecti64vEXT(_id, GL_QUERY_RESULT, &result); + CORRADE_ASSERT_UNREACHABLE(); #endif return result; } @@ -157,27 +152,25 @@ template<> Long AbstractQuery::result() { void AbstractQuery::begin(GLenum target) { CORRADE_ASSERT(!this->target, "AbstractQuery::begin(): the query is already running", ); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glBeginQuery(this->target = target, id()); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glBeginQueryEXT(this->target = target, id()); #else static_cast(target); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } void AbstractQuery::end() { CORRADE_ASSERT(target, "AbstractQuery::end(): the query is not running", ); - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES2 glEndQuery(target); - #elif defined(CORRADE_TARGET_NACL) + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) glEndQueryEXT(target); #else - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif target = {}; } diff --git a/src/Magnum/Query.h b/src/Magnum/Query.h index d1d9f9d23..ebb713926 100644 --- a/src/Magnum/Query.h +++ b/src/Magnum/Query.h @@ -477,12 +477,12 @@ class TimeQuery: public AbstractQuery { * @see @fn_gl{QueryCounter} with @def_gl{TIMESTAMP} */ void timestamp() { - /** @todo Enable when extension wrangler for ES is available */ #ifndef MAGNUM_TARGET_GLES glQueryCounter(id(), GL_TIMESTAMP); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + glQueryCounterEXT(id(), GL_TIMESTAMP_EXT); #else - //glQueryCounterEXT(id(), GL_TIMESTAMP); - CORRADE_INTERNAL_ASSERT(false); + CORRADE_ASSERT_UNREACHABLE(); #endif } diff --git a/src/Magnum/Renderbuffer.cpp b/src/Magnum/Renderbuffer.cpp index 120795ab6..ef5a978cb 100644 --- a/src/Magnum/Renderbuffer.cpp +++ b/src/Magnum/Renderbuffer.cpp @@ -114,24 +114,34 @@ void Renderbuffer::storageImplementationDSA(RenderbufferFormat internalFormat, c } #endif -/** @todo Re-enable when extension loader is available for ES */ - #ifndef MAGNUM_TARGET_GLES2 void Renderbuffer::storageMultisampleImplementationDefault(const GLsizei samples, const RenderbufferFormat internalFormat, const Vector2i& size) { bind(); glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GLenum(internalFormat), size.x(), size.y()); } #else -void Renderbuffer::storageMultisampleImplementationANGLE(GLsizei, RenderbufferFormat, const Vector2i&) { - CORRADE_INTERNAL_ASSERT(false); +void Renderbuffer::storageMultisampleImplementationANGLE(const GLsizei samples, const RenderbufferFormat internalFormat, const Vector2i& size) { + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) bind(); - //glRenderbufferStorageMultisampleANGLE(GL_RENDERBUFFER, samples, internalFormat, size.x(), size.y()); + glRenderbufferStorageMultisampleANGLE(GL_RENDERBUFFER, samples, GLenum(internalFormat), size.x(), size.y()); + #else + static_cast(samples); + static_cast(internalFormat); + static_cast(size); + CORRADE_ASSERT_UNREACHABLE(); + #endif } -void Renderbuffer::storageMultisampleImplementationNV(GLsizei, RenderbufferFormat, const Vector2i&) { - CORRADE_INTERNAL_ASSERT(false); +void Renderbuffer::storageMultisampleImplementationNV(const GLsizei samples, const RenderbufferFormat internalFormat, const Vector2i& size) { + #if !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) bind(); - //glRenderbufferStorageMultisampleNV(GL_RENDERBUFFER, samples, internalFormat, size.x(), size.y()); + glRenderbufferStorageMultisampleNV(GL_RENDERBUFFER, samples, GLenum(internalFormat), size.x(), size.y()); + #else + static_cast(samples); + static_cast(internalFormat); + static_cast(size); + CORRADE_ASSERT_UNREACHABLE(); + #endif } #endif diff --git a/src/Magnum/Renderer.cpp b/src/Magnum/Renderer.cpp index 9d68aab86..83d642589 100644 --- a/src/Magnum/Renderer.cpp +++ b/src/Magnum/Renderer.cpp @@ -212,12 +212,12 @@ Renderer::GraphicsResetStatus Renderer::graphicsResetStatusImplementationDefault } Renderer::GraphicsResetStatus Renderer::graphicsResetStatusImplementationRobustness() { - /** @todo Re-enable when extension loader is available for ES */ #ifndef MAGNUM_TARGET_GLES return GraphicsResetStatus(glGetGraphicsResetStatusARB()); + #elif !defined(CORRADE_TARGET_EMSCRIPTEN) && !defined(CORRADE_TARGET_NACL) + return GraphicsResetStatus(glGetGraphicsResetStatusEXT()); #else - CORRADE_INTERNAL_ASSERT(false); - //return GraphicsResetStatus(glGetGraphicsResetStatusEXT()); + CORRADE_ASSERT_UNREACHABLE(); #endif } diff --git a/src/Magnum/Sampler.h b/src/Magnum/Sampler.h index e65627462..94dd23b6e 100644 --- a/src/Magnum/Sampler.h +++ b/src/Magnum/Sampler.h @@ -206,13 +206,14 @@ class MAGNUM_EXPORT Sampler { Greater = GL_GREATER }; - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Depth/stencil texture mode * * @see @ref Texture::setDepthStencilMode() "*Texture::setDepthStencilMode()" * @requires_gl43 %Extension @extension{ARB,stencil_texturing} - * @requires_gl Stencil texturing is not available in OpenGL ES. + * @requires_gles31 Stencil texturing is not available in OpenGL ES 3.0 + * and older */ enum class DepthStencilMode: GLenum { /** Sample depth component */ diff --git a/src/Magnum/Shader.cpp b/src/Magnum/Shader.cpp index 2c0aee4b3..4d3e2d144 100644 --- a/src/Magnum/Shader.cpp +++ b/src/Magnum/Shader.cpp @@ -57,6 +57,8 @@ std::string shaderName(const Shader::Type type) { case Shader::Type::Geometry: return "geometry"; case Shader::Type::TessellationControl: return "tessellation control"; case Shader::Type::TessellationEvaluation: return "tessellation evaluation"; + #endif + #ifndef MAGNUM_TARGET_GLES2 case Shader::Type::Compute: return "compute"; #endif case Shader::Type::Fragment: return "fragment"; @@ -69,11 +71,13 @@ UnsignedInt typeToIndex(const Shader::Type type) { switch(type) { case Shader::Type::Vertex: return 0; case Shader::Type::Fragment: return 1; + #ifndef MAGNUM_TARGET_GLES2 + case Shader::Type::Compute: return 2; + #endif #ifndef MAGNUM_TARGET_GLES - case Shader::Type::Geometry: return 2; - case Shader::Type::TessellationControl: return 3; - case Shader::Type::TessellationEvaluation: return 4; - case Shader::Type::Compute: return 5; + case Shader::Type::Geometry: return 3; + case Shader::Type::TessellationControl: return 4; + case Shader::Type::TessellationEvaluation: return 5; #endif } @@ -249,10 +253,18 @@ Int Shader::maxFragmentInputComponents() { return value; } -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 Int Shader::maxAtomicCounterBuffers(const Type type) { - if(!Context::current()->isExtensionSupported() || !isTypeSupported(type)) + if( + #ifndef MAGNUM_TARGET_GLES + !Context::current()->isExtensionSupported() || + #else + !Context::current()->isVersionSupported(Version::GLES310) || + #endif + !isTypeSupported(type)) + { return 0; + } const UnsignedInt index = typeToIndex(type); GLint& value = Context::current()->state().shader->maxAtomicCounterBuffers[index]; @@ -261,10 +273,14 @@ Int Shader::maxAtomicCounterBuffers(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS, GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, + #endif + #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS, GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS, - GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS, - GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS + GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS + #endif }; if(value == 0) glGetIntegerv(what[index], &value); @@ -273,7 +289,11 @@ Int Shader::maxAtomicCounterBuffers(const Type type) { } Int Shader::maxCombinedAtomicCounterBuffers() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shader->maxCombinedAtomicCounterBuffers; @@ -286,8 +306,16 @@ Int Shader::maxCombinedAtomicCounterBuffers() { } Int Shader::maxAtomicCounters(const Type type) { - if(!Context::current()->isExtensionSupported() || !isTypeSupported(type)) + if( + #ifndef MAGNUM_TARGET_GLES + !Context::current()->isExtensionSupported() || + #else + !Context::current()->isVersionSupported(Version::GLES310) || + #endif + !isTypeSupported(type)) + { return 0; + } const UnsignedInt index = typeToIndex(type); GLint& value = Context::current()->state().shader->maxAtomicCounters[index]; @@ -296,10 +324,14 @@ Int Shader::maxAtomicCounters(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_ATOMIC_COUNTERS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMPUTE_ATOMIC_COUNTERS, + #endif + #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_ATOMIC_COUNTERS, GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS, GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS, - GL_MAX_COMPUTE_ATOMIC_COUNTERS + #endif }; if(value == 0) glGetIntegerv(what[index], &value); @@ -308,7 +340,11 @@ Int Shader::maxAtomicCounters(const Type type) { } Int Shader::maxCombinedAtomicCounters() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shader->maxCombinedAtomicCounters; @@ -321,8 +357,16 @@ Int Shader::maxCombinedAtomicCounters() { } Int Shader::maxImageUniforms(const Type type) { - if(!Context::current()->isExtensionSupported() || !isTypeSupported(type)) + if( + #ifndef MAGNUM_TARGET_GLES + !Context::current()->isExtensionSupported() || + #else + !Context::current()->isVersionSupported(Version::GLES310) || + #endif + !isTypeSupported(type)) + { return 0; + } const UnsignedInt index = typeToIndex(type); GLint& value = Context::current()->state().shader->maxImageUniforms[index]; @@ -331,10 +375,14 @@ Int Shader::maxImageUniforms(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_IMAGE_UNIFORMS, GL_MAX_FRAGMENT_IMAGE_UNIFORMS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMPUTE_IMAGE_UNIFORMS, + #endif + #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_IMAGE_UNIFORMS, GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS, - GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS, - GL_MAX_COMPUTE_IMAGE_UNIFORMS + GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS + #endif }; if(value == 0) glGetIntegerv(what[index], &value); @@ -343,7 +391,11 @@ Int Shader::maxImageUniforms(const Type type) { } Int Shader::maxCombinedImageUniforms() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shader->maxCombinedImageUniforms; @@ -356,8 +408,16 @@ Int Shader::maxCombinedImageUniforms() { } Int Shader::maxShaderStorageBlocks(const Type type) { - if(!Context::current()->isExtensionSupported() || !isTypeSupported(type)) + if( + #ifndef MAGNUM_TARGET_GLES + !Context::current()->isExtensionSupported() || + #else + !Context::current()->isVersionSupported(Version::GLES310) || + #endif + !isTypeSupported(type)) + { return 0; + } const UnsignedInt index = typeToIndex(type); GLint& value = Context::current()->state().shader->maxShaderStorageBlocks[index]; @@ -366,10 +426,14 @@ Int Shader::maxShaderStorageBlocks(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, + #endif + #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS, GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS, - GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS, - GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS + GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS + #endif }; if(value == 0) glGetIntegerv(what[index], &value); @@ -378,7 +442,11 @@ Int Shader::maxShaderStorageBlocks(const Type type) { } Int Shader::maxCombinedShaderStorageBlocks() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + #endif return 0; GLint& value = Context::current()->state().shader->maxCombinedShaderStorageBlocks; @@ -402,11 +470,13 @@ Int Shader::maxTextureImageUnits(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_IMAGE_UNITS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, + #endif #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS, GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS, - GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS, - GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS + GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS #endif }; if(value == 0) @@ -441,11 +511,13 @@ Int Shader::maxUniformBlocks(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMPUTE_UNIFORM_BLOCKS, + #endif #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_UNIFORM_BLOCKS, GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS, - GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS, - GL_MAX_COMPUTE_UNIFORM_BLOCKS + GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS #endif }; if(value == 0) @@ -482,11 +554,11 @@ Int Shader::maxUniformComponents(const Type type) { constexpr static GLenum what[] = { GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, + GL_MAX_COMPUTE_UNIFORM_COMPONENTS, #ifndef MAGNUM_TARGET_GLES GL_MAX_GEOMETRY_UNIFORM_COMPONENTS, GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS, - GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS, - GL_MAX_COMPUTE_UNIFORM_COMPONENTS + GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS #endif }; if(value == 0) @@ -523,11 +595,13 @@ Int Shader::maxCombinedUniformComponents(const Type type) { constexpr static GLenum what[] = { GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, + #ifndef MAGNUM_TARGET_GLES2 + GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, + #endif #ifndef MAGNUM_TARGET_GLES GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS, - GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS, - GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS + GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS #endif }; if(value == 0) @@ -555,6 +629,7 @@ Shader::Shader(const Version version, const Type type): _type(type), _id(0) { #else case Version::GLES200: _sources.push_back("#version 100\n"); return; case Version::GLES300: _sources.push_back("#version 300 es\n"); return; + case Version::GLES310: _sources.push_back("#version 310 es\n"); return; #endif /* The user is responsible for (not) adding #version directive */ @@ -736,6 +811,8 @@ Debug operator<<(Debug debug, const Shader::Type value) { _c(TessellationControl) _c(TessellationEvaluation) _c(Geometry) + #endif + #ifndef MAGNUM_TARGET_GLES2 _c(Compute) #endif _c(Fragment) diff --git a/src/Magnum/Shader.h b/src/Magnum/Shader.h index acc4c0aa0..749174434 100644 --- a/src/Magnum/Shader.h +++ b/src/Magnum/Shader.h @@ -92,11 +92,14 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @requires_gl Geometry shaders are not available in OpenGL ES. */ Geometry = GL_GEOMETRY_SHADER, + #endif + #ifndef MAGNUM_TARGET_GLES2 /** * Compute shader * @requires_gl43 %Extension @extension{ARB,compute_shader} - * @requires_gl Compute shaders are not available in OpenGL ES. + * @requires_gles31 Compute shaders are not available in OpenGL ES + * 3.0 and older */ Compute = GL_COMPUTE_SHADER, #endif @@ -123,8 +126,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of tessellation control shader input vertex * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,tessellation_shader} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,tessellation_shader} (part + * of OpenGL 4.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_TESS_CONTROL_INPUT_COMPONENTS} * @requires_gl Tessellation shaders are not available in OpenGL ES. */ @@ -134,8 +137,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of tessellation control shader output vertex * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,tessellation_shader} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,tessellation_shader} (part + * of OpenGL 4.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_TESS_CONTROL_OUTPUT_COMPONENTS} * @requires_gl Tessellation shaders are not available in OpenGL ES. */ @@ -145,8 +148,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of all tessellation control shader output vertices combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,tessellation_shader} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,tessellation_shader} (part + * of OpenGL 4.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS} * @requires_gl Tessellation shaders are not available in OpenGL ES. */ @@ -156,8 +159,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of tessellation evaluation shader input vertex * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,tessellation_shader} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,tessellation_shader} (part + * of OpenGL 4.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_TESS_EVALUATION_INPUT_COMPONENTS} * @requires_gl Tessellation shaders are not available in OpenGL ES. */ @@ -167,8 +170,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of tessellation evaluation shader output vertex * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,tessellation_shader} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,tessellation_shader} (part + * of OpenGL 4.0) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_TESS_EVALUATION_OUTPUT_COMPONENTS} * @requires_gl Tessellation shaders are not available in OpenGL ES. */ @@ -178,8 +181,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of geometry shader input vertex * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,geometry_shader4} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,geometry_shader4} (part of + * OpenGL 3.2) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_GEOMETRY_INPUT_COMPONENTS} * @requires_gl Geometry shaders are not available in OpenGL ES. */ @@ -189,8 +192,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of geometry shader output vertex * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,geometry_shader4} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,geometry_shader4} (part of + * OpenGL 3.2) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_GEOMETRY_OUTPUT_COMPONENTS} * @requires_gl Geometry shaders are not available in OpenGL ES. */ @@ -200,8 +203,8 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported component count of all geometry shader output vertices combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,geometry_shader4} - * is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,geometry_shader4} (part of + * OpenGL 3.2) is not available, returns `0`. * @see @fn_gl{Get} with @def_gl{MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS} * @requires_gl Geometry shaders are not available in OpenGL ES. */ @@ -239,13 +242,14 @@ class MAGNUM_EXPORT Shader: public AbstractObject { */ static Int maxUniformComponents(Type type); - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported atomic counter buffer count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_atomic_counters} or - * particular shader stage is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_atomic_counters} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available or if particular + * shader stage is not available, returns `0`. * @see @ref maxCombinedAtomicCounterBuffers(), @ref maxAtomicCounters(), * @fn_gl{Get} with @def_gl{MAX_VERTEX_ATOMIC_COUNTER_BUFFERS}, * @def_gl{MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS}, @@ -253,7 +257,7 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @def_gl{MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS}, * @def_gl{MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS} or * @def_gl{MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxAtomicCounterBuffers(Type type); @@ -261,11 +265,11 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported atomic counter buffer count for all stages combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_atomic_counters} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_atomic_counters} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @ref maxAtomicCounterBuffers(), @ref maxCombinedAtomicCounters(), * @fn_gl{Get} with @def_gl{MAX_COMBINED_ATOMIC_COUNTER_BUFFERS} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxCombinedAtomicCounterBuffers(); @@ -273,8 +277,9 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported atomic counter count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_atomic_counters} or - * particular shader stage is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_atomic_counters} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available or if particular + * shader stage is not available, returns `0`. * @see @ref maxCombinedAtomicCounters(), @ref maxAtomicCounterBuffers(), * @fn_gl{Get} with @def_gl{MAX_VERTEX_ATOMIC_COUNTERS}, * @def_gl{MAX_TESS_CONTROL_ATOMIC_COUNTERS}, @@ -282,7 +287,7 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @def_gl{MAX_GEOMETRY_ATOMIC_COUNTERS}, * @def_gl{MAX_COMPUTE_ATOMIC_COUNTERS} or * @def_gl{MAX_FRAGMENT_ATOMIC_COUNTERS} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxAtomicCounters(Type type); @@ -290,11 +295,11 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported atomic counter count for all stages combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_atomic_counters} is - * not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_atomic_counters} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @ref maxAtomicCounters(), @ref maxCombinedAtomicCounterBuffers(), * @fn_gl{Get} with @def_gl{MAX_COMBINED_ATOMIC_COUNTERS} - * @requires_gl Atomic counters are not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxCombinedAtomicCounters(); @@ -302,8 +307,9 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported image uniform count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_image_load_store} - * or particular shader stage is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_image_load_store} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available or if particular + * shader stage is not available, returns `0`. * @see @ref maxCombinedImageUniforms(), * @fn_gl{Get} with @def_gl{MAX_VERTEX_IMAGE_UNIFORMS}, * @def_gl{MAX_TESS_CONTROL_IMAGE_UNIFORMS}, @@ -311,7 +317,7 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @def_gl{MAX_GEOMETRY_IMAGE_UNIFORMS}, * @def_gl{MAX_COMPUTE_IMAGE_UNIFORMS} or * @def_gl{MAX_FRAGMENT_IMAGE_UNIFORMS} - * @requires_gl %Image load/store is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxImageUniforms(Type type); @@ -319,11 +325,11 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported image uniform count for all stages combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_image_load_store} - * is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_image_load_store} + * (part of OpenGL 4.2) nor OpenGL ES 3.1 is available, returns `0`. * @see @ref maxImageUniforms(), * @fn_gl{Get} with @def_gl{MAX_COMBINED_IMAGE_UNIFORMS} - * @requires_gl %Image load/store is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxCombinedImageUniforms(); @@ -331,8 +337,9 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported shader storage block count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_storage_buffer_object} - * or particular shader stage is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_storage_buffer_object} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available or if particular + * shader stage is not available, returns `0`. * @see @ref maxCombinedShaderStorageBlocks(), * @fn_gl{Get} with @def_gl{MAX_VERTEX_SHADER_STORAGE_BLOCKS}, * @def_gl{MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS}, @@ -340,7 +347,7 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @def_gl{MAX_GEOMETRY_SHADER_STORAGE_BLOCKS}, * @def_gl{MAX_COMPUTE_SHADER_STORAGE_BLOCKS} or * @def_gl{MAX_FRAGMENT_SHADER_STORAGE_BLOCKS} - * @requires_gl %Shader storage is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxShaderStorageBlocks(Type type); @@ -348,11 +355,11 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported shader storage block count for all stages combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,shader_storage_buffer_object} - * is not available, returns `0`. + * OpenGL calls. If neither extension @extension{ARB,shader_storage_buffer_object} + * (part of OpenGL 4.3) nor OpenGL ES 3.1 is available, returns `0`. * @see @ref maxShaderStorageBlocks(), * @fn_gl{Get} with @def_gl{MAX_COMBINED_SHADER_STORAGE_BLOCKS} - * @requires_gl %Shader storage is not available in OpenGL ES. + * @requires_gles30 Not defined in OpenGL ES 2.0 */ static Int maxCombinedShaderStorageBlocks(); #endif @@ -388,8 +395,9 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported uniform block count * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,uniform_buffer_objects} or - * particular shader stage is not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,uniform_buffer_objects} + * (part of OpenGL 3.1) or particular shader stage is not available, + * returns `0`. * @see @ref maxCombinedUniformBlocks(), @ref maxUniformComponents(), * @ref maxCombinedUniformComponents(), * @fn_gl{Get} with @def_gl{MAX_VERTEX_UNIFORM_BLOCKS}, @@ -406,23 +414,22 @@ class MAGNUM_EXPORT Shader: public AbstractObject { * @brief Max supported uniform block count for all stages combined * * The result is cached, repeated queries don't result in repeated - * OpenGL calls. If extension @extension{ARB,uniform_buffer_objects} is - * not available, returns `0`. + * OpenGL calls. If extension @extension{ARB,uniform_buffer_objects} + * (part of OpenGL 3.1) is not available, returns `0`. * @see @ref maxUniformBlocks(), @ref maxUniformComponents(), * @ref maxCombinedUniformComponents(), * @fn_gl{Get} with @def_gl{MAX_COMBINED_UNIFORM_BLOCKS} * @requires_gles30 Uniform blocks are not available in OpenGL ES 2.0. */ static Int maxCombinedUniformBlocks(); - #endif - #ifndef MAGNUM_TARGET_GLES2 /** * @brief Max supported uniform component count in all blocks combined * * The result is cached, repeated queries don't result in repeated * OpenGL calls. If extension @extension{ARB,uniform_buffer_objects} - * or particular shader stage is not available, returns `0`. + * (part of OpenGL 3.1) or particular shader stage is not available, + * returns `0`. * @see @ref maxUniformComponents(), @ref maxUniformBlocks(), * @fn_gl{Get} with @def_gl{MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS}, * @def_gl{MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS}, diff --git a/src/Magnum/Test/CMakeLists.txt b/src/Magnum/Test/CMakeLists.txt index eb8f51ff1..c04344f3b 100644 --- a/src/Magnum/Test/CMakeLists.txt +++ b/src/Magnum/Test/CMakeLists.txt @@ -78,14 +78,14 @@ if(BUILD_GL_TESTS) corrade_add_test(ShaderGLTest ShaderGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) if(NOT MAGNUM_TARGET_GLES2) - corrade_add_test(TextureArrayGLTest TextureArrayGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) corrade_add_test(BufferImageGLTest BufferImageGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) + corrade_add_test(TextureArrayGLTest TextureArrayGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) + corrade_add_test(MultisampleTextureGLTest MultisampleTextureGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) endif() if(NOT MAGNUM_TARGET_GLES) corrade_add_test(BufferTextureGLTest BufferTextureGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) corrade_add_test(CubeMapTextureArrayGLTest CubeMapTextureArrayGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) - corrade_add_test(MultisampleTextureGLTest MultisampleTextureGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) corrade_add_test(RectangleTextureGLTest RectangleTextureGLTest.cpp LIBRARIES ${GL_TEST_LIBRARIES}) endif() endif() diff --git a/src/Magnum/Test/CubeMapTextureGLTest.cpp b/src/Magnum/Test/CubeMapTextureGLTest.cpp index 0f77f2bc4..5a7a23805 100644 --- a/src/Magnum/Test/CubeMapTextureGLTest.cpp +++ b/src/Magnum/Test/CubeMapTextureGLTest.cpp @@ -55,6 +55,8 @@ class CubeMapTextureGLTest: public AbstractOpenGLTester { #endif #ifndef MAGNUM_TARGET_GLES void samplingBorderInteger(); + #endif + #ifndef MAGNUM_TARGET_GLES2 void samplingDepthStencilMode(); #endif @@ -90,6 +92,8 @@ CubeMapTextureGLTest::CubeMapTextureGLTest() { #endif #ifndef MAGNUM_TARGET_GLES &CubeMapTextureGLTest::samplingBorderInteger, + #endif + #ifndef MAGNUM_TARGET_GLES2 &CubeMapTextureGLTest::samplingDepthStencilMode, #endif @@ -235,10 +239,17 @@ void CubeMapTextureGLTest::samplingBorderInteger() { MAGNUM_VERIFY_NO_ERROR(); } +#endif +#ifndef MAGNUM_TARGET_GLES2 void CubeMapTextureGLTest::samplingDepthStencilMode() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::stencil_texturing::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 not supported."); + #endif CubeMapTexture texture; texture.setDepthStencilMode(Sampler::DepthStencilMode::StencilIndex); @@ -253,8 +264,12 @@ void CubeMapTextureGLTest::storage() { MAGNUM_VERIFY_NO_ERROR(); - /** @todo How to test this on ES? */ - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 + #ifdef MAGNUM_TARGET_GLES + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 not supported, skipping image size testing"); + #endif + CORRADE_COMPARE(texture.imageSize(CubeMapTexture::Coordinate::PositiveX, 0), Vector2i(32)); CORRADE_COMPARE(texture.imageSize(CubeMapTexture::Coordinate::NegativeX, 0), Vector2i(32)); CORRADE_COMPARE(texture.imageSize(CubeMapTexture::Coordinate::PositiveY, 0), Vector2i(32)); diff --git a/src/Magnum/Test/FramebufferGLTest.cpp b/src/Magnum/Test/FramebufferGLTest.cpp index dd0625072..9420fd14a 100644 --- a/src/Magnum/Test/FramebufferGLTest.cpp +++ b/src/Magnum/Test/FramebufferGLTest.cpp @@ -38,12 +38,12 @@ #ifndef MAGNUM_TARGET_GLES2 #include "Magnum/BufferImage.h" +#include "Magnum/MultisampleTexture.h" #include "Magnum/TextureArray.h" #endif #ifndef MAGNUM_TARGET_GLES #include "Magnum/CubeMapTextureArray.h" -#include "Magnum/MultisampleTexture.h" #include "Magnum/RectangleTexture.h" #endif @@ -72,9 +72,9 @@ class FramebufferGLTest: public AbstractOpenGLTester { #endif #ifndef MAGNUM_TARGET_GLES2 void attachTexture2DArray(); + void attachTexture2DMultisample(); #endif #ifndef MAGNUM_TARGET_GLES - void attachTexture2DMultisample(); void attachTexture2DMultisampleArray(); void attachRectangleTexture(); #endif @@ -120,9 +120,9 @@ FramebufferGLTest::FramebufferGLTest() { #endif #ifndef MAGNUM_TARGET_GLES2 &FramebufferGLTest::attachTexture2DArray, + &FramebufferGLTest::attachTexture2DMultisample, #endif #ifndef MAGNUM_TARGET_GLES - &FramebufferGLTest::attachTexture2DMultisample, &FramebufferGLTest::attachTexture2DMultisampleArray, &FramebufferGLTest::attachRectangleTexture, #endif @@ -472,12 +472,17 @@ void FramebufferGLTest::attachTexture2DArray() { } #endif -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 void FramebufferGLTest::attachTexture2DMultisample() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::framebuffer_object::string() + std::string(" is not available.")); if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not available.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif MultisampleTexture2D color; color.setStorage(4, TextureFormat::RGBA8, {128, 128}); @@ -492,7 +497,9 @@ void FramebufferGLTest::attachTexture2DMultisample() { MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(framebuffer.checkStatus(FramebufferTarget::ReadDraw), Framebuffer::Status::Complete); } +#endif +#ifndef MAGNUM_TARGET_GLES void FramebufferGLTest::attachTexture2DMultisampleArray() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::framebuffer_object::string() + std::string(" is not available.")); diff --git a/src/Magnum/Test/MultisampleTextureGLTest.cpp b/src/Magnum/Test/MultisampleTextureGLTest.cpp index e5b8115b4..e38fc50c3 100644 --- a/src/Magnum/Test/MultisampleTextureGLTest.cpp +++ b/src/Magnum/Test/MultisampleTextureGLTest.cpp @@ -37,41 +37,67 @@ class MultisampleTextureGLTest: public AbstractOpenGLTester { explicit MultisampleTextureGLTest(); void construct2D(); + #ifndef MAGNUM_TARGET_GLES void construct2DArray(); + #endif void bind2D(); + #ifndef MAGNUM_TARGET_GLES void bind2DArray(); + #endif void storage2D(); + #ifndef MAGNUM_TARGET_GLES void storage2DArray(); + #endif void invalidateImage2D(); + #ifndef MAGNUM_TARGET_GLES void invalidateImage2DArray(); + #endif void invalidateSubImage2D(); + #ifndef MAGNUM_TARGET_GLES void invalidateSubImage2DArray(); + #endif }; MultisampleTextureGLTest::MultisampleTextureGLTest() { addTests({&MultisampleTextureGLTest::construct2D, + #ifndef MAGNUM_TARGET_GLES &MultisampleTextureGLTest::construct2DArray, + #endif &MultisampleTextureGLTest::bind2D, + #ifndef MAGNUM_TARGET_GLES &MultisampleTextureGLTest::bind2DArray, + #endif &MultisampleTextureGLTest::storage2D, + #ifndef MAGNUM_TARGET_GLES &MultisampleTextureGLTest::storage2DArray, + #endif &MultisampleTextureGLTest::invalidateImage2D, + #ifndef MAGNUM_TARGET_GLES &MultisampleTextureGLTest::invalidateImage2DArray, + #endif &MultisampleTextureGLTest::invalidateSubImage2D, - &MultisampleTextureGLTest::invalidateSubImage2DArray}); + #ifndef MAGNUM_TARGET_GLES + &MultisampleTextureGLTest::invalidateSubImage2DArray + #endif + }); } void MultisampleTextureGLTest::construct2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif { MultisampleTexture2D texture; @@ -83,6 +109,7 @@ void MultisampleTextureGLTest::construct2D() { MAGNUM_VERIFY_NO_ERROR(); } +#ifndef MAGNUM_TARGET_GLES void MultisampleTextureGLTest::construct2DArray() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); @@ -96,18 +123,26 @@ void MultisampleTextureGLTest::construct2DArray() { MAGNUM_VERIFY_NO_ERROR(); } +#endif void MultisampleTextureGLTest::bind2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif MultisampleTexture2D texture; + #ifndef MAGNUM_TARGET_GLES if(Context::current()->isExtensionSupported()) { CORRADE_EXPECT_FAIL("With ARB_multi_bind the texture must be associated with given target at least once before binding it."); texture.setStorage(4, TextureFormat::RGBA8, {16, 16}); CORRADE_VERIFY(false); } + #endif texture.bind(15); @@ -122,6 +157,7 @@ void MultisampleTextureGLTest::bind2D() { MAGNUM_VERIFY_NO_ERROR(); } +#ifndef MAGNUM_TARGET_GLES void MultisampleTextureGLTest::bind2DArray() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); @@ -146,10 +182,16 @@ void MultisampleTextureGLTest::bind2DArray() { MAGNUM_VERIFY_NO_ERROR(); } +#endif void MultisampleTextureGLTest::storage2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif MultisampleTexture2D texture; texture.setStorage(4, TextureFormat::RGBA8, {16, 16}); @@ -161,6 +203,7 @@ void MultisampleTextureGLTest::storage2D() { MAGNUM_VERIFY_NO_ERROR(); } +#ifndef MAGNUM_TARGET_GLES void MultisampleTextureGLTest::storage2DArray() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); @@ -174,10 +217,16 @@ void MultisampleTextureGLTest::storage2DArray() { MAGNUM_VERIFY_NO_ERROR(); } +#endif void MultisampleTextureGLTest::invalidateImage2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif MultisampleTexture2D texture; texture.setStorage(4, TextureFormat::RGBA8, {16, 16}); @@ -186,6 +235,7 @@ void MultisampleTextureGLTest::invalidateImage2D() { MAGNUM_VERIFY_NO_ERROR(); } +#ifndef MAGNUM_TARGET_GLES void MultisampleTextureGLTest::invalidateImage2DArray() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); @@ -196,10 +246,16 @@ void MultisampleTextureGLTest::invalidateImage2DArray() { MAGNUM_VERIFY_NO_ERROR(); } +#endif void MultisampleTextureGLTest::invalidateSubImage2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif MultisampleTexture2D texture; texture.setStorage(4, TextureFormat::RGBA8, {16, 16}); @@ -208,6 +264,7 @@ void MultisampleTextureGLTest::invalidateSubImage2D() { MAGNUM_VERIFY_NO_ERROR(); } +#ifndef MAGNUM_TARGET_GLES void MultisampleTextureGLTest::invalidateSubImage2DArray() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::texture_multisample::string() + std::string(" is not supported.")); @@ -218,6 +275,7 @@ void MultisampleTextureGLTest::invalidateSubImage2DArray() { MAGNUM_VERIFY_NO_ERROR(); } +#endif }} diff --git a/src/Magnum/Test/TextureArrayGLTest.cpp b/src/Magnum/Test/TextureArrayGLTest.cpp index dc8fc08b9..3c0dec591 100644 --- a/src/Magnum/Test/TextureArrayGLTest.cpp +++ b/src/Magnum/Test/TextureArrayGLTest.cpp @@ -74,8 +74,11 @@ class TextureArrayGLTest: public AbstractOpenGLTester { void samplingBorderInteger1D(); void samplingBorderInteger2D(); void samplingDepthStencilMode1D(); + #endif + #ifndef MAGNUM_TARGET_GLES2 void samplingDepthStencilMode2D(); - #else + #endif + #ifdef MAGNUM_TARGET_GLES void samplingBorder2D(); #endif @@ -457,19 +460,28 @@ void TextureArrayGLTest::samplingBorderInteger2D() { MAGNUM_VERIFY_NO_ERROR(); } +#endif +#ifndef MAGNUM_TARGET_GLES2 void TextureArrayGLTest::samplingDepthStencilMode2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::EXT::texture_array::string() + std::string(" is not supported.")); if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::stencil_texturing::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif Texture2DArray texture; texture.setDepthStencilMode(Sampler::DepthStencilMode::StencilIndex); MAGNUM_VERIFY_NO_ERROR(); } -#else +#endif + +#ifdef MAGNUM_TARGET_GLES void TextureArrayGLTest::samplingBorder2D() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::NV::texture_border_clamp::string() + std::string(" is not supported.")); @@ -514,8 +526,12 @@ void TextureArrayGLTest::storage2D() { MAGNUM_VERIFY_NO_ERROR(); - /** @todo How to test this on ES? */ - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 + #ifdef MAGNUM_TARGET_GLES + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 not supported, skipping image size testing"); + #endif + CORRADE_COMPARE(texture.imageSize(0), Vector3i(32, 32, 32)); CORRADE_COMPARE(texture.imageSize(1), Vector3i(16, 16, 32)); CORRADE_COMPARE(texture.imageSize(2), Vector3i( 8, 8, 32)); diff --git a/src/Magnum/Test/TextureGLTest.cpp b/src/Magnum/Test/TextureGLTest.cpp index fcbe09c4f..04a786e11 100644 --- a/src/Magnum/Test/TextureGLTest.cpp +++ b/src/Magnum/Test/TextureGLTest.cpp @@ -82,9 +82,12 @@ class TextureGLTest: public AbstractOpenGLTester { void samplingBorderInteger2D(); void samplingBorderInteger3D(); void samplingDepthStencilMode1D(); + #endif + #ifndef MAGNUM_TARGET_GLES2 void samplingDepthStencilMode2D(); void samplingDepthStencilMode3D(); - #else + #endif + #ifdef MAGNUM_TARGET_GLES void samplingBorder2D(); void samplingBorder3D(); #endif @@ -184,9 +187,12 @@ TextureGLTest::TextureGLTest() { &TextureGLTest::samplingBorderInteger2D, &TextureGLTest::samplingBorderInteger3D, &TextureGLTest::samplingDepthStencilMode1D, + #endif + #ifndef MAGNUM_TARGET_GLES2 &TextureGLTest::samplingDepthStencilMode2D, &TextureGLTest::samplingDepthStencilMode3D, - #else + #endif + #ifdef MAGNUM_TARGET_GLES &TextureGLTest::samplingBorder2D, &TextureGLTest::samplingBorder3D, #endif @@ -499,17 +505,26 @@ void TextureGLTest::samplingBorderInteger2D() { MAGNUM_VERIFY_NO_ERROR(); } +#endif +#ifndef MAGNUM_TARGET_GLES2 void TextureGLTest::samplingDepthStencilMode2D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::stencil_texturing::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif Texture2D texture; texture.setDepthStencilMode(Sampler::DepthStencilMode::StencilIndex); MAGNUM_VERIFY_NO_ERROR(); } -#else +#endif + +#ifdef MAGNUM_TARGET_GLES void TextureGLTest::samplingBorder2D() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::NV::texture_border_clamp::string() + std::string(" is not supported.")); @@ -607,17 +622,26 @@ void TextureGLTest::samplingBorderInteger3D() { MAGNUM_VERIFY_NO_ERROR(); } +#endif +#ifndef MAGNUM_TARGET_GLES2 void TextureGLTest::samplingDepthStencilMode3D() { + #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::stencil_texturing::string() + std::string(" is not supported.")); + #else + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 is not supported."); + #endif Texture3D texture; texture.setDepthStencilMode(Sampler::DepthStencilMode::StencilIndex); MAGNUM_VERIFY_NO_ERROR(); } -#else +#endif + +#ifdef MAGNUM_TARGET_GLES void TextureGLTest::samplingBorder3D() { #ifdef MAGNUM_TARGET_GLES2 if(!Context::current()->isExtensionSupported()) @@ -659,8 +683,12 @@ void TextureGLTest::storage2D() { MAGNUM_VERIFY_NO_ERROR(); - /** @todo How to test this on ES? */ - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 + #ifdef MAGNUM_TARGET_GLES + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 not supported, skipping image size testing."); + #endif + CORRADE_COMPARE(texture.imageSize(0), Vector2i(32)); CORRADE_COMPARE(texture.imageSize(1), Vector2i(16)); CORRADE_COMPARE(texture.imageSize(2), Vector2i( 8)); @@ -683,8 +711,12 @@ void TextureGLTest::storage3D() { MAGNUM_VERIFY_NO_ERROR(); - /** @todo How to test this on ES? */ - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 + #ifdef MAGNUM_TARGET_GLES + if(!Context::current()->isVersionSupported(Version::GLES310)) + CORRADE_SKIP("OpenGL ES 3.1 not supported, skipping image size testing."); + #endif + CORRADE_COMPARE(texture.imageSize(0), Vector3i(32)); CORRADE_COMPARE(texture.imageSize(1), Vector3i(16)); CORRADE_COMPARE(texture.imageSize(2), Vector3i( 8)); diff --git a/src/Magnum/Texture.h b/src/Magnum/Texture.h index 211fd5361..eef20588b 100644 --- a/src/Magnum/Texture.h +++ b/src/Magnum/Texture.h @@ -195,7 +195,7 @@ template class Texture: public AbstractTexture { constexpr CORRADE_DEPRECATED("use dedicated Texture, TextureArray, MultisampleTexture, RectangleTexture classes instead") Target target() const { return static_cast(_target); } #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief %Image size in given mip level * @@ -206,7 +206,8 @@ template class Texture: public AbstractTexture { * @fn_gl{GetTexLevelParameter} or @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} * with @def_gl{TEXTURE_WIDTH}, @def_gl{TEXTURE_HEIGHT} or * @def_gl{TEXTURE_DEPTH} - * @requires_gl %Texture image queries are not available in OpenGL ES. + * @requires_gles31 %Texture image size queries are not available in + * OpenGL ES 3.0 and older. */ typename DimensionTraits::VectorType imageSize(Int level) { return DataHelper::imageSize(*this, _target, level); @@ -541,7 +542,7 @@ template class Texture: public AbstractTexture { return *this; } - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @brief Set depth/stencil texture mode * @return Reference to self (for method chaining) @@ -555,7 +556,8 @@ template class Texture: public AbstractTexture { * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} * with @def_gl{DEPTH_STENCIL_TEXTURE_MODE} * @requires_gl43 %Extension @extension{ARB,stencil_texturing} - * @requires_gl Stencil texturing is not available in OpenGL ES. + * @requires_gles31 Stencil texturing is not available in OpenGL ES 3.0 + * and older. */ Texture& setDepthStencilMode(Sampler::DepthStencilMode mode) { AbstractTexture::setDepthStencilMode(mode); diff --git a/src/Magnum/TextureArray.h b/src/Magnum/TextureArray.h index 52d2debc0..e92b63541 100644 --- a/src/Magnum/TextureArray.h +++ b/src/Magnum/TextureArray.h @@ -236,7 +236,7 @@ template class TextureArray: public AbstractTexture { return *this; } - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** * @copybrief Texture::setDepthStencilMode() * @return Reference to self (for method chaining) @@ -249,7 +249,7 @@ template class TextureArray: public AbstractTexture { } #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** @copydoc Texture::imageSize() */ typename DimensionTraits::VectorType imageSize(Int level) { return DataHelper::imageSize(*this, _target, level); diff --git a/src/Magnum/Version.cpp b/src/Magnum/Version.cpp index 81984df06..2ba4c3535 100644 --- a/src/Magnum/Version.cpp +++ b/src/Magnum/Version.cpp @@ -48,6 +48,7 @@ Debug operator<<(Debug debug, Version value) { #else _c(GLES200, "OpenGL ES 2.0") _c(GLES300, "OpenGL ES 3.0") + _c(GLES310, "OpenGL ES 3.1") #endif #undef _c } diff --git a/src/Magnum/Version.h b/src/Magnum/Version.h index 84c2f7462..1c3095cb1 100644 --- a/src/Magnum/Version.h +++ b/src/Magnum/Version.h @@ -77,9 +77,13 @@ enum class Version: Int { * equivalent to @ref Version::GL430. */ #ifndef MAGNUM_TARGET_GLES - GLES300 = 430 + GLES300 = 430, #else - GLES300 = 300 + GLES300 = 300, + #endif + + #ifdef MAGNUM_TARGET_GLES + GLES310 = 310 /**< @brief OpenGL ES 3.1, GLSL ES 3.10 */ #endif }; diff --git a/src/MagnumExternal/OpenGL/CMakeLists.txt b/src/MagnumExternal/OpenGL/CMakeLists.txt index 91e073082..db8d74939 100644 --- a/src/MagnumExternal/OpenGL/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/CMakeLists.txt @@ -27,8 +27,9 @@ if(NOT TARGET_GLES) add_subdirectory(GL) else() add_subdirectory(KHR) - add_subdirectory(GLES2) - if(NOT TARGET_GLES2) + if(TARGET_GLES2) + add_subdirectory(GLES2) + else() add_subdirectory(GLES3) endif() endif() diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h b/src/MagnumExternal/OpenGL/GL/flextGL.h index 941e89324..927f8322c 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.h +++ b/src/MagnumExternal/OpenGL/GL/flextGL.h @@ -13,7 +13,7 @@ #error Attempt to include auto-generated header after including glext.h #endif #if defined(__gltypes_h_) -#error Attempt to include auto-generated header after gltypes.h +#error Attempt to include auto-generated header after including gltypes.h #endif #if defined(__gl_ATI_h_) #error Attempt to include auto-generated header after including glATI.h diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h.template b/src/MagnumExternal/OpenGL/GL/flextGL.h.template index d7d546f08..0876bca4e 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.h.template +++ b/src/MagnumExternal/OpenGL/GL/flextGL.h.template @@ -14,7 +14,7 @@ #error Attempt to include auto-generated header after including glext.h #endif #if defined(__gltypes_h_) -#error Attempt to include auto-generated header after gltypes.h +#error Attempt to include auto-generated header after including gltypes.h #endif #if defined(__gl_ATI_h_) #error Attempt to include auto-generated header after including glATI.h diff --git a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt index 68f364ffe..11840c3b8 100644 --- a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt @@ -23,15 +23,25 @@ # DEALINGS IN THE SOFTWARE. # -set(MagnumOpenGL_HEADERS - gl2ext.h) +# NaCl and Emscripten don't have the ability to load function pointers manually +if(NOT CORRADE_TARGET_NACL AND NOT CORRADE_TARGET_EMSCRIPTEN) + # flextGLPlatform.cpp is compiled as part of Magnum*Context libraries in Platform + add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) -# We need gl2ext.h also for ES3 (but not the others). NaCl has its own gl2.h, -# this one causes linker issues -if(TARGET_GLES2 AND NOT CORRADE_TARGET_NACL) - set(MagnumOpenGL_HEADERS ${MagnumOpenGL_HEADERS} - gl2platform.h - gl2.h) + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -fvisibility=hidden -DFlextGL_EXPORTS") + else() + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -DFlextGL_EXPORTS") + endif() +endif() + +# NaCl and Emscripten are special, provide only some extensions for them +if(CORRADE_TARGET_NACL) + set(MagnumOpenGL_HEADERS flextGLNaCl.h) +elseif(CORRADE_TARGET_EMSCRIPTEN) + set(MagnumOpenGL_HEADERS flextGLEmscripten.h) +else() + set(MagnumOpenGL_HEADERS flextGL.h) endif() install(FILES ${MagnumOpenGL_HEADERS} DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GLES2) diff --git a/src/MagnumExternal/OpenGL/GLES2/Emscripten/flextGLEmscripten.h.template b/src/MagnumExternal/OpenGL/GLES2/Emscripten/flextGLEmscripten.h.template new file mode 100644 index 000000000..ef6af8275 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/Emscripten/flextGLEmscripten.h.template @@ -0,0 +1,56 @@ +@require(passthru, functions, enums, options, version, extensions) +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl2_h_) +#error Attempt to include auto-generated header after including gl2.h +#endif +#if defined(__gl2ext_h_) +#error Attempt to include auto-generated header after including gl2ext.h +#endif +#if defined(__gl2platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl2_h_ +#define __gl2ext_h_ +#define __gl2platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ +#define APIENTRY +#ifndef GLAPI +#define GLAPI extern +#endif + +/* Data types */ + +@passthru + +/* Enums */ + +@enums + +/* Function prototypes */ +@for cat,funcs in functions: + +/* GL_@cat */ + +@for f in funcs: +GLAPI @f.returntype gl@f.name\ +(@f.param_type_list_string()); +@end +@end + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/NaCl/flextGLNaCl.h.template b/src/MagnumExternal/OpenGL/GLES2/NaCl/flextGLNaCl.h.template new file mode 100644 index 000000000..45fef8008 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/NaCl/flextGLNaCl.h.template @@ -0,0 +1,60 @@ +@require(passthru, functions, enums, options, version, extensions) +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl2_h_) +#error Attempt to include auto-generated header after including gl2.h +#endif +#if defined(__gl2platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl2_h_ +#define __gl2platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ +#define FLEXTGL_EXPORT __attribute__ ((visibility ("default"))) + +#define APIENTRY +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +/* Data types */ + +@passthru + +/* Enums */ + +@enums + +/* Function prototypes */ +@for cat,funcs in functions: + +/* GL_@cat */ +#ifndef GL_@cat +#define GL_@cat 1 + @for f in funcs: +GL_APICALL @f.returntype GL_APIENTRY GLES2@f.name\ +(@f.param_type_list_string()); +#define gl@f.name GLES2@f.name + @end +#endif +@end + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/README.md b/src/MagnumExternal/OpenGL/GLES2/README.md new file mode 100644 index 000000000..edabc8827 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/README.md @@ -0,0 +1,22 @@ +OpenGL header and extension loader is generated using flextGL, get it at +[](https://github.com/ginkgo/flextGL). + +See [](extensions.txt) for requested version and a list of non-core extensions. +Call `flextGLgen.py` in this directory with the following arguments to generate +files for generic GLES2 implementations: + + .../flextGLgen.py -D . -t . extensions.txt + +It will generate `flextGL.h` and `flextGL.cpp` files. + +NaCl and Emscripten don't have the ability to manually load extension pointers, +thus they have only header files: + + .../flextGLgen.py -D . -t NaCl/ extensions.txt + .../flextGLgen.py -D . -t Emscripten/ extensions.txt + +This will generate stripped-down `flextGLNaCl.h` and `flextGLEmscripten.h` +files. + +As usual, be sure to check the diff for suspicious changes and +whitespace-at-EOL (although there shouldn't be any). diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt new file mode 100644 index 000000000..b94c65355 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -0,0 +1,71 @@ +# The following output is taken from `magnum-info` with removed `GL_` prefixes. + +version 2.0 es + +extension ANGLE_framebuffer_blit optional +extension ANGLE_framebuffer_multisample optional +extension ANGLE_instanced_arrays optional +extension ANGLE_depth_texture optional +extension APPLE_framebuffer_multisample optional +extension APPLE_texture_max_level optional +extension ARM_rgba8 optional +extension EXT_texture_type_2_10_10_10_REV optional +extension EXT_discard_framebuffer optional +extension EXT_blend_minmax optional +extension EXT_shader_texture_lod optional +extension EXT_occlusion_query_boolean optional +extension EXT_shadow_samplers optional +extension EXT_texture_rg optional +extension EXT_texture_storage optional +extension EXT_map_buffer_range optional +extension EXT_instanced_arrays optional +extension EXT_draw_instanced optional +extension NV_draw_buffers optional +extension NV_fbo_color_attachments optional +extension NV_read_buffer optional +extension NV_draw_instanced optional +extension NV_framebuffer_blit optional +extension NV_framebuffer_multisample optional +extension NV_instanced_arrays optional +extension NV_shadow_samplers_array optional +extension NV_shadow_samplers_cube optional +extension OES_depth24 optional +extension OES_element_index_uint optional +extension OES_rgb8_rgba8 optional +extension OES_texture_3D optional +extension OES_texture_half_float_linear optional +extension OES_texture_float_linear optional +extension OES_texture_half_float optional +extension OES_texture_float optional +extension OES_vertex_half_float optional +extension OES_packed_depth_stencil optional +extension OES_depth_texture optional +extension OES_standard_derivatives optional +extension OES_vertex_array_object optional +extension OES_required_internalformat optional +extension OES_surfaceless_context optional + +extension APPLE_texture_format_BGRA8888 optional +extension CHROMIUM_map_sub optional +extension EXT_texture_filter_anisotropic optional +extension EXT_texture_format_BGRA8888 optional +extension EXT_read_format_bgra optional +extension EXT_multi_draw_arrays optional +extension EXT_debug_label optional +extension EXT_debug_marker optional +extension EXT_disjoint_timer_query optional +extension EXT_texture_sRGB_decode optional +extension EXT_separate_shader_objects optional +extension EXT_sRGB optional +extension EXT_multisampled_render_to_texture optional +extension EXT_robustness optional +extension KHR_debug optional +extension NV_read_buffer_front optional +extension NV_read_depth optional +extension NV_read_stencil optional +extension NV_read_depth_stencil optional +extension NV_texture_border_clamp optional +extension OES_depth32 optional +extension OES_mapbuffer optional +extension OES_stencil1 optional +extension OES_stencil4 optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp new file mode 100644 index 000000000..5e05d9df1 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp @@ -0,0 +1,196 @@ +#include "flextGL.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GL_ANGLE_framebuffer_blit */ +FLEXTGL_EXPORT void(APIENTRY *flextglBlitFramebufferANGLE)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = nullptr; + +/* GL_ANGLE_framebuffer_multisample */ +FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleANGLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; + +/* GL_ANGLE_instanced_arrays */ +FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysInstancedANGLE)(GLenum, GLint, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsInstancedANGLE)(GLenum, GLsizei, GLenum, const void *, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribDivisorANGLE)(GLuint, GLuint) = nullptr; + +/* GL_APPLE_framebuffer_multisample */ +FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglResolveMultisampleFramebufferAPPLE)(void) = nullptr; + +/* GL_EXT_discard_framebuffer */ +FLEXTGL_EXPORT void(APIENTRY *flextglDiscardFramebufferEXT)(GLenum, GLsizei, const GLenum *) = nullptr; + +/* GL_EXT_blend_minmax */ +FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationEXT)(GLenum) = nullptr; + +/* GL_EXT_occlusion_query_boolean */ +FLEXTGL_EXPORT void(APIENTRY *flextglGenQueriesEXT)(GLsizei, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDeleteQueriesEXT)(GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsQueryEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBeginQueryEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglEndQueryEXT)(GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryivEXT)(GLenum, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectuivEXT)(GLuint, GLenum, GLuint *) = nullptr; + +/* GL_EXT_texture_storage */ +FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage1DEXT)(GLenum, GLsizei, GLenum, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage2DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage3DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage1DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage2DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage3DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = nullptr; + +/* GL_EXT_map_buffer_range */ +FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferRangeEXT)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglFlushMappedBufferRangeEXT)(GLenum, GLintptr, GLsizeiptr) = nullptr; + +/* GL_EXT_instanced_arrays */ +FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysInstancedEXT)(GLenum, GLint, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsInstancedEXT)(GLenum, GLsizei, GLenum, const void *, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribDivisorEXT)(GLuint, GLuint) = nullptr; + +/* GL_NV_draw_buffers */ +FLEXTGL_EXPORT void(APIENTRY *flextglDrawBuffersNV)(GLsizei, const GLenum *) = nullptr; + +/* GL_NV_read_buffer */ +FLEXTGL_EXPORT void(APIENTRY *flextglReadBufferNV)(GLenum) = nullptr; + +/* GL_NV_draw_instanced */ +FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysInstancedNV)(GLenum, GLint, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsInstancedNV)(GLenum, GLsizei, GLenum, const void *, GLsizei) = nullptr; + +/* GL_NV_framebuffer_blit */ +FLEXTGL_EXPORT void(APIENTRY *flextglBlitFramebufferNV)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = nullptr; + +/* GL_NV_framebuffer_multisample */ +FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleNV)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; + +/* GL_NV_instanced_arrays */ +FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribDivisorNV)(GLuint, GLuint) = nullptr; + +/* GL_OES_texture_3D */ +FLEXTGL_EXPORT void(APIENTRY *flextglTexImage3DOES)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexSubImage3DOES)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglCopyTexSubImage3DOES)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTexImage3DOES)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTexSubImage3DOES)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTexture3DOES)(GLenum, GLenum, GLenum, GLuint, GLint, GLint) = nullptr; + +/* GL_OES_vertex_array_object */ +FLEXTGL_EXPORT void(APIENTRY *flextglBindVertexArrayOES)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDeleteVertexArraysOES)(GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGenVertexArraysOES)(GLsizei, GLuint *) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsVertexArrayOES)(GLuint) = nullptr; + +/* GL_EXT_multi_draw_arrays */ +FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei) = nullptr; + +/* GL_EXT_debug_label */ +FLEXTGL_EXPORT void(APIENTRY *flextglLabelObjectEXT)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelEXT)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; + +/* GL_EXT_debug_marker */ +FLEXTGL_EXPORT void(APIENTRY *flextglInsertEventMarkerEXT)(GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPushGroupMarkerEXT)(GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void) = nullptr; + +/* GL_EXT_disjoint_timer_query */ +FLEXTGL_EXPORT void(APIENTRY *flextglQueryCounterEXT)(GLuint, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectivEXT)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjecti64vEXT)(GLuint, GLenum, GLint64 *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenum, GLuint64 *) = nullptr; + +/* GL_EXT_separate_shader_objects */ +FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglActiveProgramEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramEXT)(GLenum, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglActiveShaderProgramEXT)(GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBindProgramPipelineEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramvEXT)(GLenum, GLsizei, const GLchar **) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDeleteProgramPipelinesEXT)(GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGenProgramPipelinesEXT)(GLsizei, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineInfoLogEXT)(GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineivEXT)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsProgramPipelineEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramParameteriEXT)(GLuint, GLenum, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fEXT)(GLuint, GLint, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iEXT)(GLuint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fEXT)(GLuint, GLint, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iEXT)(GLuint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iEXT)(GLuint, GLint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iEXT)(GLuint, GLint, GLint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglUseProgramStagesEXT)(GLuint, GLbitfield, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglValidateProgramPipelineEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiEXT)(GLuint, GLint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiEXT)(GLuint, GLint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; + +/* GL_EXT_multisampled_render_to_texture */ +FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei) = nullptr; + +/* GL_EXT_robustness */ +FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatusEXT)(void) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformfvEXT)(GLuint, GLint, GLsizei, GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *) = nullptr; + +/* GL_KHR_debug */ +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControl)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsert)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallback)(GLDEBUGPROC, const void *) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLog)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroup)(void) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabel)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabel)(const void *, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabel)(const void *, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetPointerv)(GLenum, void **) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControlKHR)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsertKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallbackKHR)(GLDEBUGPROCKHR, const void *) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLogKHR)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroupKHR)(void) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabelKHR)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelKHR)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabelKHR)(const void *, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **) = nullptr; + +/* GL_OES_mapbuffer */ +FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferOES)(GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapBufferOES)(GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, void **) = nullptr; + +#ifdef __cplusplus +} +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp.template b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp.template new file mode 100644 index 000000000..953aae2fd --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp.template @@ -0,0 +1,20 @@ +@require(passthru, functions, enums, options, version, extensions) +#include "flextGL.h" + +#ifdef __cplusplus +extern "C" { +#endif +@for category,funcs in functions: +@if len(funcs) > 0 and category not in ['ES_VERSION_2_0']: + +/* GL_@category */ +@for f in funcs: +FLEXTGL_EXPORT @f.returntype\ +(APIENTRY *flextgl@f.name)(@f.param_type_list_string()) = nullptr; +@end +@end +@end + +#ifdef __cplusplus +} +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h new file mode 100644 index 000000000..3c7c11b2c --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -0,0 +1,1468 @@ +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl_h_) || defined(__gl2_h_) +#error Attempt to include auto-generated header after including gl2.h +#endif +#if defined(__gl2ext_h_) +#error Attempt to include auto-generated header after including gl2ext.h +#endif +#if defined(__gl2platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl_h_ +#define __gl2_h_ +#define __gl2ext_h_ +#define __gl2platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ + +#ifdef _WIN32 + #ifdef FlextGL_EXPORTS + #define FLEXTGL_EXPORT __declspec(dllexport) + #else + #define FLEXTGL_EXPORT __declspec(dllimport) + #endif +#else + #define FLEXTGL_EXPORT __attribute__ ((visibility ("default"))) +#endif + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#ifndef WINAPI +#define WINAPI __stdcall +#endif +#define APIENTRY WINAPI +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/* Data types */ + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef short GLshort; +typedef int GLint; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef int GLsizei; +typedef char GLchar; +typedef struct __GLsync *GLsync; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* Enums */ + +/* GL_ES_VERSION_2_0 */ + +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/* GL_ANGLE_framebuffer_blit */ + +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA + +/* GL_ANGLE_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 + +/* GL_ANGLE_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE + +/* GL_ANGLE_depth_texture */ + +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 + +/* GL_APPLE_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA + +/* GL_APPLE_texture_max_level */ + +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D + +/* GL_EXT_texture_type_2_10_10_10_REV */ + +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 + +/* GL_EXT_discard_framebuffer */ + +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 + +/* GL_EXT_blend_minmax */ + +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 + +/* GL_EXT_occlusion_query_boolean */ + +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 + +/* GL_EXT_shadow_samplers */ + +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 + +/* GL_EXT_texture_rg */ + +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B + +/* GL_EXT_texture_storage */ + +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F + +/* GL_EXT_map_buffer_range */ + +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 + +/* GL_EXT_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE + +/* GL_NV_draw_buffers */ + +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF + +/* GL_NV_fbo_color_attachments */ + +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF + +/* GL_NV_read_buffer */ + +#define GL_READ_BUFFER_NV 0x0C02 + +/* GL_NV_framebuffer_blit */ + +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA + +/* GL_NV_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 + +/* GL_NV_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE + +/* GL_NV_shadow_samplers_array */ + +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 + +/* GL_NV_shadow_samplers_cube */ + +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 + +/* GL_OES_depth24 */ + +#define GL_DEPTH_COMPONENT24_OES 0x81A6 + +/* GL_OES_element_index_uint */ + +#define GL_UNSIGNED_INT 0x1405 + +/* GL_OES_rgb8_rgba8 */ + +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 + +/* GL_OES_texture_3D */ + +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 + +/* GL_OES_texture_half_float */ + +#define GL_HALF_FLOAT_OES 0x8D61 + +/* GL_OES_texture_float */ + +#define GL_FLOAT 0x1406 + +/* GL_OES_vertex_half_float */ + +#define GL_HALF_FLOAT_OES 0x8D61 + +/* GL_OES_packed_depth_stencil */ + +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 + +/* GL_OES_depth_texture */ + +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 + +/* GL_OES_standard_derivatives */ + +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B + +/* GL_OES_vertex_array_object */ + +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 + +/* GL_OES_required_internalformat */ + +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 + +/* GL_OES_surfaceless_context */ + +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 + +/* GL_APPLE_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 + +/* GL_EXT_texture_filter_anisotropic */ + +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF + +/* GL_EXT_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 + +/* GL_EXT_read_format_bgra */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 + +/* GL_EXT_debug_label */ + +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_SAMPLER 0x82E6 +#define GL_TRANSFORM_FEEDBACK 0x8E22 + +/* GL_EXT_disjoint_timer_query */ + +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB + +/* GL_EXT_texture_sRGB_decode */ + +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A + +/* GL_EXT_separate_shader_objects */ + +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A + +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + +/* GL_EXT_multisampled_render_to_texture */ + +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 + +/* GL_EXT_robustness */ + +#define GL_NO_ERROR 0 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 + +/* GL_KHR_debug */ + +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_QUERY 0x82E3 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_DISPLAY_LIST 0x82E7 + +/* GL_NV_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D + +/* GL_OES_depth32 */ + +#define GL_DEPTH_COMPONENT32_OES 0x81A7 + +/* GL_OES_mapbuffer */ + +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD + +/* GL_OES_stencil1 */ + +#define GL_STENCIL_INDEX1_OES 0x8D46 + +/* GL_OES_stencil4 */ + +#define GL_STENCIL_INDEX4_OES 0x8D47 + +/* Function prototypes */ + +/* GL_ES_VERSION_2_0 */ + +GLAPI FLEXTGL_EXPORT void APIENTRY glActiveTexture(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glAttachShader(GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindAttribLocation(GLuint, GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindBuffer(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindFramebuffer(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindRenderbuffer(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindTexture(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendColor(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendEquation(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendEquationSeparate(GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendFunc(GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendFuncSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBufferData(GLenum, GLsizeiptr, const void *, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBufferSubData(GLenum, GLintptr, GLsizeiptr, const void *); +GLAPI FLEXTGL_EXPORT GLenum APIENTRY glCheckFramebufferStatus(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glClear(GLbitfield); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearColor(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearDepthf(GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearStencil(GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glColorMask(GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompileShader(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompressedTexImage2D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompressedTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glCopyTexImage2D(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glCopyTexSubImage2D(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT GLuint APIENTRY glCreateProgram(void); +GLAPI FLEXTGL_EXPORT GLuint APIENTRY glCreateShader(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glCullFace(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteBuffers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteFramebuffers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteRenderbuffers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteShader(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteTextures(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDepthFunc(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDepthMask(GLboolean); +GLAPI FLEXTGL_EXPORT void APIENTRY glDepthRangef(GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glDetachShader(GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDisable(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDisableVertexAttribArray(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawArrays(GLenum, GLint, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawElements(GLenum, GLsizei, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glEnable(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glEnableVertexAttribArray(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glFinish(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glFlush(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glFramebufferRenderbuffer(GLenum, GLenum, GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glFramebufferTexture2D(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glFrontFace(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenBuffers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenerateMipmap(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenFramebuffers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenRenderbuffers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenTextures(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveAttrib(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetAttachedShaders(GLuint, GLsizei, GLsizei *, GLuint *); +GLAPI FLEXTGL_EXPORT GLint APIENTRY glGetAttribLocation(GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetBooleanv(GLenum, GLboolean *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetBufferParameteriv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT GLenum APIENTRY glGetError(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetFloatv(GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetFramebufferAttachmentParameteriv(GLenum, GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetIntegerv(GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetProgramiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetProgramInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetRenderbufferParameteriv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderPrecisionFormat(GLenum, GLenum, GLint *, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderSource(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT const GLubyte * APIENTRY glGetString(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetTexParameterfv(GLenum, GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetTexParameteriv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetUniformfv(GLuint, GLint, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetUniformiv(GLuint, GLint, GLint *); +GLAPI FLEXTGL_EXPORT GLint APIENTRY glGetUniformLocation(GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribfv(GLuint, GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribPointerv(GLuint, GLenum, void **); +GLAPI FLEXTGL_EXPORT void APIENTRY glHint(GLenum, GLenum); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsBuffer(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsEnabled(GLenum); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsFramebuffer(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsProgram(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsRenderbuffer(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsShader(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsTexture(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glLineWidth(GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glLinkProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glPixelStorei(GLenum, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glPolygonOffset(GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glReadPixels(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glReleaseShaderCompiler(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glRenderbufferStorage(GLenum, GLenum, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glSampleCoverage(GLfloat, GLboolean); +GLAPI FLEXTGL_EXPORT void APIENTRY glScissor(GLint, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glShaderBinary(GLsizei, const GLuint *, GLenum, const void *, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glShaderSource(GLuint, GLsizei, const GLchar *const*, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilFunc(GLenum, GLint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilFuncSeparate(GLenum, GLenum, GLint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilMask(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilMaskSeparate(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilOp(GLenum, GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilOpSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexImage2D(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameterf(GLenum, GLenum, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameterfv(GLenum, GLenum, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameteri(GLenum, GLenum, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameteriv(GLenum, GLenum, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1f(GLint, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1i(GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2f(GLint, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2i(GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3f(GLint, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3i(GLint, GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4i(GLint, GLint, GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUseProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glValidateProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib1f(GLuint, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib1fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib2f(GLuint, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib2fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib3f(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib3fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib4f(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib4fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribPointer(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glViewport(GLint, GLint, GLsizei, GLsizei); + +/* GL_ANGLE_framebuffer_blit */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlitFramebufferANGLE)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +#define glBlitFramebufferANGLE flextglBlitFramebufferANGLE + +/* GL_ANGLE_framebuffer_multisample */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleANGLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleANGLE flextglRenderbufferStorageMultisampleANGLE + +/* GL_ANGLE_instanced_arrays */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysInstancedANGLE)(GLenum, GLint, GLsizei, GLsizei); +#define glDrawArraysInstancedANGLE flextglDrawArraysInstancedANGLE +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsInstancedANGLE)(GLenum, GLsizei, GLenum, const void *, GLsizei); +#define glDrawElementsInstancedANGLE flextglDrawElementsInstancedANGLE +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribDivisorANGLE)(GLuint, GLuint); +#define glVertexAttribDivisorANGLE flextglVertexAttribDivisorANGLE + +/* GL_ANGLE_depth_texture */ + + +/* GL_APPLE_framebuffer_multisample */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleAPPLE flextglRenderbufferStorageMultisampleAPPLE +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglResolveMultisampleFramebufferAPPLE)(void); +#define glResolveMultisampleFramebufferAPPLE flextglResolveMultisampleFramebufferAPPLE + +/* GL_APPLE_texture_max_level */ + + +/* GL_ARM_rgba8 */ + + +/* GL_EXT_texture_type_2_10_10_10_REV */ + + +/* GL_EXT_discard_framebuffer */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDiscardFramebufferEXT)(GLenum, GLsizei, const GLenum *); +#define glDiscardFramebufferEXT flextglDiscardFramebufferEXT + +/* GL_EXT_blend_minmax */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationEXT)(GLenum); +#define glBlendEquationEXT flextglBlendEquationEXT + +/* GL_EXT_shader_texture_lod */ + + +/* GL_EXT_occlusion_query_boolean */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenQueriesEXT)(GLsizei, GLuint *); +#define glGenQueriesEXT flextglGenQueriesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDeleteQueriesEXT)(GLsizei, const GLuint *); +#define glDeleteQueriesEXT flextglDeleteQueriesEXT +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsQueryEXT)(GLuint); +#define glIsQueryEXT flextglIsQueryEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBeginQueryEXT)(GLenum, GLuint); +#define glBeginQueryEXT flextglBeginQueryEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEndQueryEXT)(GLenum); +#define glEndQueryEXT flextglEndQueryEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryivEXT)(GLenum, GLenum, GLint *); +#define glGetQueryivEXT flextglGetQueryivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectuivEXT)(GLuint, GLenum, GLuint *); +#define glGetQueryObjectuivEXT flextglGetQueryObjectuivEXT + +/* GL_EXT_shadow_samplers */ + + +/* GL_EXT_texture_rg */ + + +/* GL_EXT_texture_storage */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage1DEXT)(GLenum, GLsizei, GLenum, GLsizei); +#define glTexStorage1DEXT flextglTexStorage1DEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage2DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glTexStorage2DEXT flextglTexStorage2DEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage3DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +#define glTexStorage3DEXT flextglTexStorage3DEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage1DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei); +#define glTextureStorage1DEXT flextglTextureStorage1DEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage2DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glTextureStorage2DEXT flextglTextureStorage2DEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage3DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +#define glTextureStorage3DEXT flextglTextureStorage3DEXT + +/* GL_EXT_map_buffer_range */ + +GLAPI FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferRangeEXT)(GLenum, GLintptr, GLsizeiptr, GLbitfield); +#define glMapBufferRangeEXT flextglMapBufferRangeEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFlushMappedBufferRangeEXT)(GLenum, GLintptr, GLsizeiptr); +#define glFlushMappedBufferRangeEXT flextglFlushMappedBufferRangeEXT + +/* GL_EXT_instanced_arrays */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysInstancedEXT)(GLenum, GLint, GLsizei, GLsizei); +#define glDrawArraysInstancedEXT flextglDrawArraysInstancedEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsInstancedEXT)(GLenum, GLsizei, GLenum, const void *, GLsizei); +#define glDrawElementsInstancedEXT flextglDrawElementsInstancedEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribDivisorEXT)(GLuint, GLuint); +#define glVertexAttribDivisorEXT flextglVertexAttribDivisorEXT + +/* GL_EXT_draw_instanced */ + + +/* GL_NV_draw_buffers */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawBuffersNV)(GLsizei, const GLenum *); +#define glDrawBuffersNV flextglDrawBuffersNV + +/* GL_NV_fbo_color_attachments */ + + +/* GL_NV_read_buffer */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglReadBufferNV)(GLenum); +#define glReadBufferNV flextglReadBufferNV + +/* GL_NV_draw_instanced */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysInstancedNV)(GLenum, GLint, GLsizei, GLsizei); +#define glDrawArraysInstancedNV flextglDrawArraysInstancedNV +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsInstancedNV)(GLenum, GLsizei, GLenum, const void *, GLsizei); +#define glDrawElementsInstancedNV flextglDrawElementsInstancedNV + +/* GL_NV_framebuffer_blit */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlitFramebufferNV)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +#define glBlitFramebufferNV flextglBlitFramebufferNV + +/* GL_NV_framebuffer_multisample */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleNV)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleNV flextglRenderbufferStorageMultisampleNV + +/* GL_NV_instanced_arrays */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribDivisorNV)(GLuint, GLuint); +#define glVertexAttribDivisorNV flextglVertexAttribDivisorNV + +/* GL_NV_shadow_samplers_array */ + + +/* GL_NV_shadow_samplers_cube */ + + +/* GL_OES_depth24 */ + + +/* GL_OES_element_index_uint */ + + +/* GL_OES_rgb8_rgba8 */ + + +/* GL_OES_texture_3D */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexImage3DOES)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +#define glTexImage3DOES flextglTexImage3DOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexSubImage3DOES)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *); +#define glTexSubImage3DOES flextglTexSubImage3DOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyTexSubImage3DOES)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#define glCopyTexSubImage3DOES flextglCopyTexSubImage3DOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTexImage3DOES)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *); +#define glCompressedTexImage3DOES flextglCompressedTexImage3DOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTexSubImage3DOES)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *); +#define glCompressedTexSubImage3DOES flextglCompressedTexSubImage3DOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTexture3DOES)(GLenum, GLenum, GLenum, GLuint, GLint, GLint); +#define glFramebufferTexture3DOES flextglFramebufferTexture3DOES + +/* GL_OES_texture_half_float_linear */ + + +/* GL_OES_texture_float_linear */ + + +/* GL_OES_texture_half_float */ + + +/* GL_OES_texture_float */ + + +/* GL_OES_vertex_half_float */ + + +/* GL_OES_packed_depth_stencil */ + + +/* GL_OES_depth_texture */ + + +/* GL_OES_standard_derivatives */ + + +/* GL_OES_vertex_array_object */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindVertexArrayOES)(GLuint); +#define glBindVertexArrayOES flextglBindVertexArrayOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDeleteVertexArraysOES)(GLsizei, const GLuint *); +#define glDeleteVertexArraysOES flextglDeleteVertexArraysOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenVertexArraysOES)(GLsizei, GLuint *); +#define glGenVertexArraysOES flextglGenVertexArraysOES +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsVertexArrayOES)(GLuint); +#define glIsVertexArrayOES flextglIsVertexArrayOES + +/* GL_OES_required_internalformat */ + + +/* GL_OES_surfaceless_context */ + + +/* GL_APPLE_texture_format_BGRA8888 */ + + +/* GL_EXT_texture_filter_anisotropic */ + + +/* GL_EXT_texture_format_BGRA8888 */ + + +/* GL_EXT_read_format_bgra */ + + +/* GL_EXT_multi_draw_arrays */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei); +#define glMultiDrawArraysEXT flextglMultiDrawArraysEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); +#define glMultiDrawElementsEXT flextglMultiDrawElementsEXT + +/* GL_EXT_debug_label */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglLabelObjectEXT)(GLenum, GLuint, GLsizei, const GLchar *); +#define glLabelObjectEXT flextglLabelObjectEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelEXT)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabelEXT flextglGetObjectLabelEXT + +/* GL_EXT_debug_marker */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglInsertEventMarkerEXT)(GLsizei, const GLchar *); +#define glInsertEventMarkerEXT flextglInsertEventMarkerEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushGroupMarkerEXT)(GLsizei, const GLchar *); +#define glPushGroupMarkerEXT flextglPushGroupMarkerEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void); +#define glPopGroupMarkerEXT flextglPopGroupMarkerEXT + +/* GL_EXT_disjoint_timer_query */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglQueryCounterEXT)(GLuint, GLenum); +#define glQueryCounterEXT flextglQueryCounterEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectivEXT)(GLuint, GLenum, GLint *); +#define glGetQueryObjectivEXT flextglGetQueryObjectivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjecti64vEXT)(GLuint, GLenum, GLint64 *); +#define glGetQueryObjecti64vEXT flextglGetQueryObjecti64vEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenum, GLuint64 *); +#define glGetQueryObjectui64vEXT flextglGetQueryObjectui64vEXT + +/* GL_EXT_texture_sRGB_decode */ + + +/* GL_EXT_separate_shader_objects */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint); +#define glUseShaderProgramEXT flextglUseShaderProgramEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglActiveProgramEXT)(GLuint); +#define glActiveProgramEXT flextglActiveProgramEXT +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramEXT)(GLenum, const GLchar *); +#define glCreateShaderProgramEXT flextglCreateShaderProgramEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglActiveShaderProgramEXT)(GLuint, GLuint); +#define glActiveShaderProgramEXT flextglActiveShaderProgramEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindProgramPipelineEXT)(GLuint); +#define glBindProgramPipelineEXT flextglBindProgramPipelineEXT +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramvEXT)(GLenum, GLsizei, const GLchar **); +#define glCreateShaderProgramvEXT flextglCreateShaderProgramvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDeleteProgramPipelinesEXT)(GLsizei, const GLuint *); +#define glDeleteProgramPipelinesEXT flextglDeleteProgramPipelinesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenProgramPipelinesEXT)(GLsizei, GLuint *); +#define glGenProgramPipelinesEXT flextglGenProgramPipelinesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineInfoLogEXT)(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetProgramPipelineInfoLogEXT flextglGetProgramPipelineInfoLogEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineivEXT)(GLuint, GLenum, GLint *); +#define glGetProgramPipelineivEXT flextglGetProgramPipelineivEXT +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsProgramPipelineEXT)(GLuint); +#define glIsProgramPipelineEXT flextglIsProgramPipelineEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramParameteriEXT)(GLuint, GLenum, GLint); +#define glProgramParameteriEXT flextglProgramParameteriEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fEXT)(GLuint, GLint, GLfloat); +#define glProgramUniform1fEXT flextglProgramUniform1fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform1fvEXT flextglProgramUniform1fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iEXT)(GLuint, GLint, GLint); +#define glProgramUniform1iEXT flextglProgramUniform1iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform1ivEXT flextglProgramUniform1ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fEXT)(GLuint, GLint, GLfloat, GLfloat); +#define glProgramUniform2fEXT flextglProgramUniform2fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform2fvEXT flextglProgramUniform2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iEXT)(GLuint, GLint, GLint, GLint); +#define glProgramUniform2iEXT flextglProgramUniform2iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform2ivEXT flextglProgramUniform2ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat); +#define glProgramUniform3fEXT flextglProgramUniform3fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform3fvEXT flextglProgramUniform3fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iEXT)(GLuint, GLint, GLint, GLint, GLint); +#define glProgramUniform3iEXT flextglProgramUniform3iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform3ivEXT flextglProgramUniform3ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +#define glProgramUniform4fEXT flextglProgramUniform4fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform4fvEXT flextglProgramUniform4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iEXT)(GLuint, GLint, GLint, GLint, GLint, GLint); +#define glProgramUniform4iEXT flextglProgramUniform4iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform4ivEXT flextglProgramUniform4ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2fvEXT flextglProgramUniformMatrix2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3fvEXT flextglProgramUniformMatrix3fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4fvEXT flextglProgramUniformMatrix4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseProgramStagesEXT)(GLuint, GLbitfield, GLuint); +#define glUseProgramStagesEXT flextglUseProgramStagesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglValidateProgramPipelineEXT)(GLuint); +#define glValidateProgramPipelineEXT flextglValidateProgramPipelineEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiEXT)(GLuint, GLint, GLuint); +#define glProgramUniform1uiEXT flextglProgramUniform1uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiEXT)(GLuint, GLint, GLuint, GLuint); +#define glProgramUniform2uiEXT flextglProgramUniform2uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint); +#define glProgramUniform3uiEXT flextglProgramUniform3uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +#define glProgramUniform4uiEXT flextglProgramUniform4uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform1uivEXT flextglProgramUniform1uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform2uivEXT flextglProgramUniform2uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform3uivEXT flextglProgramUniform3uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform4uivEXT flextglProgramUniform4uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x3fvEXT flextglProgramUniformMatrix2x3fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x2fvEXT flextglProgramUniformMatrix3x2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x4fvEXT flextglProgramUniformMatrix2x4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x2fvEXT flextglProgramUniformMatrix4x2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x4fvEXT flextglProgramUniformMatrix3x4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x3fvEXT flextglProgramUniformMatrix4x3fvEXT + +/* GL_EXT_sRGB */ + + +/* GL_EXT_multisampled_render_to_texture */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleEXT flextglRenderbufferStorageMultisampleEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#define glFramebufferTexture2DMultisampleEXT flextglFramebufferTexture2DMultisampleEXT + +/* GL_EXT_robustness */ + +GLAPI FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatusEXT)(void); +#define glGetGraphicsResetStatusEXT flextglGetGraphicsResetStatusEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *); +#define glReadnPixelsEXT flextglReadnPixelsEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformfvEXT)(GLuint, GLint, GLsizei, GLfloat *); +#define glGetnUniformfvEXT flextglGetnUniformfvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *); +#define glGetnUniformivEXT flextglGetnUniformivEXT + +/* GL_KHR_debug */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControl)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +#define glDebugMessageControl flextglDebugMessageControl +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsert)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +#define glDebugMessageInsert flextglDebugMessageInsert +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallback)(GLDEBUGPROC, const void *); +#define glDebugMessageCallback flextglDebugMessageCallback +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLog)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +#define glGetDebugMessageLog flextglGetDebugMessageLog +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar *); +#define glPushDebugGroup flextglPushDebugGroup +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroup)(void); +#define glPopDebugGroup flextglPopDebugGroup +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabel)(GLenum, GLuint, GLsizei, const GLchar *); +#define glObjectLabel flextglObjectLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabel flextglGetObjectLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabel)(const void *, GLsizei, const GLchar *); +#define glObjectPtrLabel flextglObjectPtrLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabel)(const void *, GLsizei, GLsizei *, GLchar *); +#define glGetObjectPtrLabel flextglGetObjectPtrLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointerv)(GLenum, void **); +#define glGetPointerv flextglGetPointerv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControlKHR)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +#define glDebugMessageControlKHR flextglDebugMessageControlKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsertKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +#define glDebugMessageInsertKHR flextglDebugMessageInsertKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallbackKHR)(GLDEBUGPROCKHR, const void *); +#define glDebugMessageCallbackKHR flextglDebugMessageCallbackKHR +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLogKHR)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +#define glGetDebugMessageLogKHR flextglGetDebugMessageLogKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *); +#define glPushDebugGroupKHR flextglPushDebugGroupKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroupKHR)(void); +#define glPopDebugGroupKHR flextglPopDebugGroupKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabelKHR)(GLenum, GLuint, GLsizei, const GLchar *); +#define glObjectLabelKHR flextglObjectLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelKHR)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabelKHR flextglGetObjectLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabelKHR)(const void *, GLsizei, const GLchar *); +#define glObjectPtrLabelKHR flextglObjectPtrLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, GLsizei, GLsizei *, GLchar *); +#define glGetObjectPtrLabelKHR flextglGetObjectPtrLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **); +#define glGetPointervKHR flextglGetPointervKHR + +/* GL_NV_read_buffer_front */ + + +/* GL_NV_read_depth */ + + +/* GL_NV_read_stencil */ + + +/* GL_NV_read_depth_stencil */ + + +/* GL_NV_texture_border_clamp */ + + +/* GL_OES_depth32 */ + + +/* GL_OES_mapbuffer */ + +GLAPI FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferOES)(GLenum, GLenum); +#define glMapBufferOES flextglMapBufferOES +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapBufferOES)(GLenum); +#define glUnmapBufferOES flextglUnmapBufferOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, void **); +#define glGetBufferPointervOES flextglGetBufferPointervOES + +/* GL_OES_stencil1 */ + + +/* GL_OES_stencil4 */ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h.template b/src/MagnumExternal/OpenGL/GLES2/flextGL.h.template new file mode 100644 index 000000000..c7632591b --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h.template @@ -0,0 +1,86 @@ +@require(passthru, functions, enums, options, version, extensions) +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl_h_) || defined(__gl2_h_) +#error Attempt to include auto-generated header after including gl2.h +#endif +#if defined(__gl2ext_h_) +#error Attempt to include auto-generated header after including gl2ext.h +#endif +#if defined(__gl2platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl_h_ +#define __gl2_h_ +#define __gl2ext_h_ +#define __gl2platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ + +#ifdef _WIN32 + #ifdef FlextGL_EXPORTS + #define FLEXTGL_EXPORT __declspec(dllexport) + #else + #define FLEXTGL_EXPORT __declspec(dllimport) + #endif +#else + #define FLEXTGL_EXPORT __attribute__ ((visibility ("default"))) +#endif + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#ifndef WINAPI +#define WINAPI __stdcall +#endif +#define APIENTRY WINAPI +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/* Data types */ + +@passthru + +/* Enums */ + +@enums + +/* Function prototypes */ +@for cat,funcs in functions: + +/* GL_@cat */ + + @if cat in ['ES_VERSION_2_0']: + @for f in funcs: +GLAPI FLEXTGL_EXPORT @f.returntype APIENTRY gl@f.name\ +(@f.param_type_list_string()); + @end + @else: + @for f in funcs: +GLAPI FLEXTGL_EXPORT @f.returntype\ +(APIENTRY *flextgl@f.name)(@f.param_type_list_string()); +#define gl@f.name flextgl@f.name + @end + @end +@end + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h new file mode 100644 index 000000000..e09c45137 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h @@ -0,0 +1,1313 @@ +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl2_h_) +#error Attempt to include auto-generated header after including gl2.h +#endif +#if defined(__gl2ext_h_) +#error Attempt to include auto-generated header after including gl2ext.h +#endif +#if defined(__gl2platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl2_h_ +#define __gl2ext_h_ +#define __gl2platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ +#define APIENTRY +#ifndef GLAPI +#define GLAPI extern +#endif + +/* Data types */ + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef short GLshort; +typedef int GLint; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef int GLsizei; +typedef char GLchar; +typedef struct __GLsync *GLsync; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* Enums */ + +/* GL_ES_VERSION_2_0 */ + +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/* GL_ANGLE_framebuffer_blit */ + +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA + +/* GL_ANGLE_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 + +/* GL_ANGLE_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE + +/* GL_ANGLE_depth_texture */ + +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 + +/* GL_APPLE_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA + +/* GL_APPLE_texture_max_level */ + +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D + +/* GL_EXT_texture_type_2_10_10_10_REV */ + +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 + +/* GL_EXT_discard_framebuffer */ + +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 + +/* GL_EXT_blend_minmax */ + +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 + +/* GL_EXT_occlusion_query_boolean */ + +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 + +/* GL_EXT_shadow_samplers */ + +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 + +/* GL_EXT_texture_rg */ + +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B + +/* GL_EXT_texture_storage */ + +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F + +/* GL_EXT_map_buffer_range */ + +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 + +/* GL_EXT_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE + +/* GL_NV_draw_buffers */ + +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF + +/* GL_NV_fbo_color_attachments */ + +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF + +/* GL_NV_read_buffer */ + +#define GL_READ_BUFFER_NV 0x0C02 + +/* GL_NV_framebuffer_blit */ + +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA + +/* GL_NV_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 + +/* GL_NV_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE + +/* GL_NV_shadow_samplers_array */ + +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 + +/* GL_NV_shadow_samplers_cube */ + +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 + +/* GL_OES_depth24 */ + +#define GL_DEPTH_COMPONENT24_OES 0x81A6 + +/* GL_OES_element_index_uint */ + +#define GL_UNSIGNED_INT 0x1405 + +/* GL_OES_rgb8_rgba8 */ + +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 + +/* GL_OES_texture_3D */ + +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 + +/* GL_OES_texture_half_float */ + +#define GL_HALF_FLOAT_OES 0x8D61 + +/* GL_OES_texture_float */ + +#define GL_FLOAT 0x1406 + +/* GL_OES_vertex_half_float */ + +#define GL_HALF_FLOAT_OES 0x8D61 + +/* GL_OES_packed_depth_stencil */ + +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 + +/* GL_OES_depth_texture */ + +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 + +/* GL_OES_standard_derivatives */ + +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B + +/* GL_OES_vertex_array_object */ + +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 + +/* GL_OES_required_internalformat */ + +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 + +/* GL_OES_surfaceless_context */ + +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 + +/* GL_APPLE_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 + +/* GL_EXT_texture_filter_anisotropic */ + +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF + +/* GL_EXT_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 + +/* GL_EXT_read_format_bgra */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 + +/* GL_EXT_debug_label */ + +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_SAMPLER 0x82E6 +#define GL_TRANSFORM_FEEDBACK 0x8E22 + +/* GL_EXT_disjoint_timer_query */ + +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB + +/* GL_EXT_texture_sRGB_decode */ + +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A + +/* GL_EXT_separate_shader_objects */ + +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A + +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + +/* GL_EXT_multisampled_render_to_texture */ + +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 + +/* GL_EXT_robustness */ + +#define GL_NO_ERROR 0 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 + +/* GL_KHR_debug */ + +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_QUERY 0x82E3 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_DISPLAY_LIST 0x82E7 + +/* GL_NV_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D + +/* GL_OES_depth32 */ + +#define GL_DEPTH_COMPONENT32_OES 0x81A7 + +/* GL_OES_mapbuffer */ + +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD + +/* GL_OES_stencil1 */ + +#define GL_STENCIL_INDEX1_OES 0x8D46 + +/* GL_OES_stencil4 */ + +#define GL_STENCIL_INDEX4_OES 0x8D47 + +/* Function prototypes */ + +/* GL_ES_VERSION_2_0 */ + +GLAPI void glActiveTexture(GLenum); +GLAPI void glAttachShader(GLuint, GLuint); +GLAPI void glBindAttribLocation(GLuint, GLuint, const GLchar *); +GLAPI void glBindBuffer(GLenum, GLuint); +GLAPI void glBindFramebuffer(GLenum, GLuint); +GLAPI void glBindRenderbuffer(GLenum, GLuint); +GLAPI void glBindTexture(GLenum, GLuint); +GLAPI void glBlendColor(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void glBlendEquation(GLenum); +GLAPI void glBlendEquationSeparate(GLenum, GLenum); +GLAPI void glBlendFunc(GLenum, GLenum); +GLAPI void glBlendFuncSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI void glBufferData(GLenum, GLsizeiptr, const void *, GLenum); +GLAPI void glBufferSubData(GLenum, GLintptr, GLsizeiptr, const void *); +GLAPI GLenum glCheckFramebufferStatus(GLenum); +GLAPI void glClear(GLbitfield); +GLAPI void glClearColor(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void glClearDepthf(GLfloat); +GLAPI void glClearStencil(GLint); +GLAPI void glColorMask(GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI void glCompileShader(GLuint); +GLAPI void glCompressedTexImage2D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *); +GLAPI void glCompressedTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *); +GLAPI void glCopyTexImage2D(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI void glCopyTexSubImage2D(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI GLuint glCreateProgram(void); +GLAPI GLuint glCreateShader(GLenum); +GLAPI void glCullFace(GLenum); +GLAPI void glDeleteBuffers(GLsizei, const GLuint *); +GLAPI void glDeleteFramebuffers(GLsizei, const GLuint *); +GLAPI void glDeleteProgram(GLuint); +GLAPI void glDeleteRenderbuffers(GLsizei, const GLuint *); +GLAPI void glDeleteShader(GLuint); +GLAPI void glDeleteTextures(GLsizei, const GLuint *); +GLAPI void glDepthFunc(GLenum); +GLAPI void glDepthMask(GLboolean); +GLAPI void glDepthRangef(GLfloat, GLfloat); +GLAPI void glDetachShader(GLuint, GLuint); +GLAPI void glDisable(GLenum); +GLAPI void glDisableVertexAttribArray(GLuint); +GLAPI void glDrawArrays(GLenum, GLint, GLsizei); +GLAPI void glDrawElements(GLenum, GLsizei, GLenum, const void *); +GLAPI void glEnable(GLenum); +GLAPI void glEnableVertexAttribArray(GLuint); +GLAPI void glFinish(void); +GLAPI void glFlush(void); +GLAPI void glFramebufferRenderbuffer(GLenum, GLenum, GLenum, GLuint); +GLAPI void glFramebufferTexture2D(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void glFrontFace(GLenum); +GLAPI void glGenBuffers(GLsizei, GLuint *); +GLAPI void glGenerateMipmap(GLenum); +GLAPI void glGenFramebuffers(GLsizei, GLuint *); +GLAPI void glGenRenderbuffers(GLsizei, GLuint *); +GLAPI void glGenTextures(GLsizei, GLuint *); +GLAPI void glGetActiveAttrib(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI void glGetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI void glGetAttachedShaders(GLuint, GLsizei, GLsizei *, GLuint *); +GLAPI GLint glGetAttribLocation(GLuint, const GLchar *); +GLAPI void glGetBooleanv(GLenum, GLboolean *); +GLAPI void glGetBufferParameteriv(GLenum, GLenum, GLint *); +GLAPI GLenum glGetError(void); +GLAPI void glGetFloatv(GLenum, GLfloat *); +GLAPI void glGetFramebufferAttachmentParameteriv(GLenum, GLenum, GLenum, GLint *); +GLAPI void glGetIntegerv(GLenum, GLint *); +GLAPI void glGetProgramiv(GLuint, GLenum, GLint *); +GLAPI void glGetProgramInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void glGetRenderbufferParameteriv(GLenum, GLenum, GLint *); +GLAPI void glGetShaderiv(GLuint, GLenum, GLint *); +GLAPI void glGetShaderInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void glGetShaderPrecisionFormat(GLenum, GLenum, GLint *, GLint *); +GLAPI void glGetShaderSource(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI const GLubyte * glGetString(GLenum); +GLAPI void glGetTexParameterfv(GLenum, GLenum, GLfloat *); +GLAPI void glGetTexParameteriv(GLenum, GLenum, GLint *); +GLAPI void glGetUniformfv(GLuint, GLint, GLfloat *); +GLAPI void glGetUniformiv(GLuint, GLint, GLint *); +GLAPI GLint glGetUniformLocation(GLuint, const GLchar *); +GLAPI void glGetVertexAttribfv(GLuint, GLenum, GLfloat *); +GLAPI void glGetVertexAttribiv(GLuint, GLenum, GLint *); +GLAPI void glGetVertexAttribPointerv(GLuint, GLenum, void **); +GLAPI void glHint(GLenum, GLenum); +GLAPI GLboolean glIsBuffer(GLuint); +GLAPI GLboolean glIsEnabled(GLenum); +GLAPI GLboolean glIsFramebuffer(GLuint); +GLAPI GLboolean glIsProgram(GLuint); +GLAPI GLboolean glIsRenderbuffer(GLuint); +GLAPI GLboolean glIsShader(GLuint); +GLAPI GLboolean glIsTexture(GLuint); +GLAPI void glLineWidth(GLfloat); +GLAPI void glLinkProgram(GLuint); +GLAPI void glPixelStorei(GLenum, GLint); +GLAPI void glPolygonOffset(GLfloat, GLfloat); +GLAPI void glReadPixels(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *); +GLAPI void glReleaseShaderCompiler(void); +GLAPI void glRenderbufferStorage(GLenum, GLenum, GLsizei, GLsizei); +GLAPI void glSampleCoverage(GLfloat, GLboolean); +GLAPI void glScissor(GLint, GLint, GLsizei, GLsizei); +GLAPI void glShaderBinary(GLsizei, const GLuint *, GLenum, const void *, GLsizei); +GLAPI void glShaderSource(GLuint, GLsizei, const GLchar *const*, const GLint *); +GLAPI void glStencilFunc(GLenum, GLint, GLuint); +GLAPI void glStencilFuncSeparate(GLenum, GLenum, GLint, GLuint); +GLAPI void glStencilMask(GLuint); +GLAPI void glStencilMaskSeparate(GLenum, GLuint); +GLAPI void glStencilOp(GLenum, GLenum, GLenum); +GLAPI void glStencilOpSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI void glTexImage2D(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +GLAPI void glTexParameterf(GLenum, GLenum, GLfloat); +GLAPI void glTexParameterfv(GLenum, GLenum, const GLfloat *); +GLAPI void glTexParameteri(GLenum, GLenum, GLint); +GLAPI void glTexParameteriv(GLenum, GLenum, const GLint *); +GLAPI void glTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *); +GLAPI void glUniform1f(GLint, GLfloat); +GLAPI void glUniform1fv(GLint, GLsizei, const GLfloat *); +GLAPI void glUniform1i(GLint, GLint); +GLAPI void glUniform1iv(GLint, GLsizei, const GLint *); +GLAPI void glUniform2f(GLint, GLfloat, GLfloat); +GLAPI void glUniform2fv(GLint, GLsizei, const GLfloat *); +GLAPI void glUniform2i(GLint, GLint, GLint); +GLAPI void glUniform2iv(GLint, GLsizei, const GLint *); +GLAPI void glUniform3f(GLint, GLfloat, GLfloat, GLfloat); +GLAPI void glUniform3fv(GLint, GLsizei, const GLfloat *); +GLAPI void glUniform3i(GLint, GLint, GLint, GLint); +GLAPI void glUniform3iv(GLint, GLsizei, const GLint *); +GLAPI void glUniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void glUniform4fv(GLint, GLsizei, const GLfloat *); +GLAPI void glUniform4i(GLint, GLint, GLint, GLint, GLint); +GLAPI void glUniform4iv(GLint, GLsizei, const GLint *); +GLAPI void glUniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glUniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glUniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glUseProgram(GLuint); +GLAPI void glValidateProgram(GLuint); +GLAPI void glVertexAttrib1f(GLuint, GLfloat); +GLAPI void glVertexAttrib1fv(GLuint, const GLfloat *); +GLAPI void glVertexAttrib2f(GLuint, GLfloat, GLfloat); +GLAPI void glVertexAttrib2fv(GLuint, const GLfloat *); +GLAPI void glVertexAttrib3f(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void glVertexAttrib3fv(GLuint, const GLfloat *); +GLAPI void glVertexAttrib4f(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void glVertexAttrib4fv(GLuint, const GLfloat *); +GLAPI void glVertexAttribPointer(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *); +GLAPI void glViewport(GLint, GLint, GLsizei, GLsizei); + +/* GL_ANGLE_framebuffer_blit */ + +GLAPI void glBlitFramebufferANGLE(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); + +/* GL_ANGLE_framebuffer_multisample */ + +GLAPI void glRenderbufferStorageMultisampleANGLE(GLenum, GLsizei, GLenum, GLsizei, GLsizei); + +/* GL_ANGLE_instanced_arrays */ + +GLAPI void glDrawArraysInstancedANGLE(GLenum, GLint, GLsizei, GLsizei); +GLAPI void glDrawElementsInstancedANGLE(GLenum, GLsizei, GLenum, const void *, GLsizei); +GLAPI void glVertexAttribDivisorANGLE(GLuint, GLuint); + +/* GL_ANGLE_depth_texture */ + + +/* GL_APPLE_framebuffer_multisample */ + +GLAPI void glRenderbufferStorageMultisampleAPPLE(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void glResolveMultisampleFramebufferAPPLE(void); + +/* GL_APPLE_texture_max_level */ + + +/* GL_ARM_rgba8 */ + + +/* GL_EXT_texture_type_2_10_10_10_REV */ + + +/* GL_EXT_discard_framebuffer */ + +GLAPI void glDiscardFramebufferEXT(GLenum, GLsizei, const GLenum *); + +/* GL_EXT_blend_minmax */ + +GLAPI void glBlendEquationEXT(GLenum); + +/* GL_EXT_shader_texture_lod */ + + +/* GL_EXT_occlusion_query_boolean */ + +GLAPI void glGenQueriesEXT(GLsizei, GLuint *); +GLAPI void glDeleteQueriesEXT(GLsizei, const GLuint *); +GLAPI GLboolean glIsQueryEXT(GLuint); +GLAPI void glBeginQueryEXT(GLenum, GLuint); +GLAPI void glEndQueryEXT(GLenum); +GLAPI void glGetQueryivEXT(GLenum, GLenum, GLint *); +GLAPI void glGetQueryObjectuivEXT(GLuint, GLenum, GLuint *); + +/* GL_EXT_shadow_samplers */ + + +/* GL_EXT_texture_rg */ + + +/* GL_EXT_texture_storage */ + +GLAPI void glTexStorage1DEXT(GLenum, GLsizei, GLenum, GLsizei); +GLAPI void glTexStorage2DEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void glTexStorage3DEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +GLAPI void glTextureStorage1DEXT(GLuint, GLenum, GLsizei, GLenum, GLsizei); +GLAPI void glTextureStorage2DEXT(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void glTextureStorage3DEXT(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); + +/* GL_EXT_map_buffer_range */ + +GLAPI void * glMapBufferRangeEXT(GLenum, GLintptr, GLsizeiptr, GLbitfield); +GLAPI void glFlushMappedBufferRangeEXT(GLenum, GLintptr, GLsizeiptr); + +/* GL_EXT_instanced_arrays */ + +GLAPI void glDrawArraysInstancedEXT(GLenum, GLint, GLsizei, GLsizei); +GLAPI void glDrawElementsInstancedEXT(GLenum, GLsizei, GLenum, const void *, GLsizei); +GLAPI void glVertexAttribDivisorEXT(GLuint, GLuint); + +/* GL_EXT_draw_instanced */ + + +/* GL_NV_draw_buffers */ + +GLAPI void glDrawBuffersNV(GLsizei, const GLenum *); + +/* GL_NV_fbo_color_attachments */ + + +/* GL_NV_read_buffer */ + +GLAPI void glReadBufferNV(GLenum); + +/* GL_NV_draw_instanced */ + +GLAPI void glDrawArraysInstancedNV(GLenum, GLint, GLsizei, GLsizei); +GLAPI void glDrawElementsInstancedNV(GLenum, GLsizei, GLenum, const void *, GLsizei); + +/* GL_NV_framebuffer_blit */ + +GLAPI void glBlitFramebufferNV(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); + +/* GL_NV_framebuffer_multisample */ + +GLAPI void glRenderbufferStorageMultisampleNV(GLenum, GLsizei, GLenum, GLsizei, GLsizei); + +/* GL_NV_instanced_arrays */ + +GLAPI void glVertexAttribDivisorNV(GLuint, GLuint); + +/* GL_NV_shadow_samplers_array */ + + +/* GL_NV_shadow_samplers_cube */ + + +/* GL_OES_depth24 */ + + +/* GL_OES_element_index_uint */ + + +/* GL_OES_rgb8_rgba8 */ + + +/* GL_OES_texture_3D */ + +GLAPI void glTexImage3DOES(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +GLAPI void glTexSubImage3DOES(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *); +GLAPI void glCopyTexSubImage3DOES(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI void glCompressedTexImage3DOES(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *); +GLAPI void glCompressedTexSubImage3DOES(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *); +GLAPI void glFramebufferTexture3DOES(GLenum, GLenum, GLenum, GLuint, GLint, GLint); + +/* GL_OES_texture_half_float_linear */ + + +/* GL_OES_texture_float_linear */ + + +/* GL_OES_texture_half_float */ + + +/* GL_OES_texture_float */ + + +/* GL_OES_vertex_half_float */ + + +/* GL_OES_packed_depth_stencil */ + + +/* GL_OES_depth_texture */ + + +/* GL_OES_standard_derivatives */ + + +/* GL_OES_vertex_array_object */ + +GLAPI void glBindVertexArrayOES(GLuint); +GLAPI void glDeleteVertexArraysOES(GLsizei, const GLuint *); +GLAPI void glGenVertexArraysOES(GLsizei, GLuint *); +GLAPI GLboolean glIsVertexArrayOES(GLuint); + +/* GL_OES_required_internalformat */ + + +/* GL_OES_surfaceless_context */ + + +/* GL_APPLE_texture_format_BGRA8888 */ + + +/* GL_EXT_texture_filter_anisotropic */ + + +/* GL_EXT_texture_format_BGRA8888 */ + + +/* GL_EXT_read_format_bgra */ + + +/* GL_EXT_multi_draw_arrays */ + +GLAPI void glMultiDrawArraysEXT(GLenum, const GLint *, const GLsizei *, GLsizei); +GLAPI void glMultiDrawElementsEXT(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); + +/* GL_EXT_debug_label */ + +GLAPI void glLabelObjectEXT(GLenum, GLuint, GLsizei, const GLchar *); +GLAPI void glGetObjectLabelEXT(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); + +/* GL_EXT_debug_marker */ + +GLAPI void glInsertEventMarkerEXT(GLsizei, const GLchar *); +GLAPI void glPushGroupMarkerEXT(GLsizei, const GLchar *); +GLAPI void glPopGroupMarkerEXT(void); + +/* GL_EXT_disjoint_timer_query */ + +GLAPI void glQueryCounterEXT(GLuint, GLenum); +GLAPI void glGetQueryObjectivEXT(GLuint, GLenum, GLint *); +GLAPI void glGetQueryObjecti64vEXT(GLuint, GLenum, GLint64 *); +GLAPI void glGetQueryObjectui64vEXT(GLuint, GLenum, GLuint64 *); + +/* GL_EXT_texture_sRGB_decode */ + + +/* GL_EXT_separate_shader_objects */ + +GLAPI void glUseShaderProgramEXT(GLenum, GLuint); +GLAPI void glActiveProgramEXT(GLuint); +GLAPI GLuint glCreateShaderProgramEXT(GLenum, const GLchar *); +GLAPI void glActiveShaderProgramEXT(GLuint, GLuint); +GLAPI void glBindProgramPipelineEXT(GLuint); +GLAPI GLuint glCreateShaderProgramvEXT(GLenum, GLsizei, const GLchar **); +GLAPI void glDeleteProgramPipelinesEXT(GLsizei, const GLuint *); +GLAPI void glGenProgramPipelinesEXT(GLsizei, GLuint *); +GLAPI void glGetProgramPipelineInfoLogEXT(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void glGetProgramPipelineivEXT(GLuint, GLenum, GLint *); +GLAPI GLboolean glIsProgramPipelineEXT(GLuint); +GLAPI void glProgramParameteriEXT(GLuint, GLenum, GLint); +GLAPI void glProgramUniform1fEXT(GLuint, GLint, GLfloat); +GLAPI void glProgramUniform1fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +GLAPI void glProgramUniform1iEXT(GLuint, GLint, GLint); +GLAPI void glProgramUniform1ivEXT(GLuint, GLint, GLsizei, const GLint *); +GLAPI void glProgramUniform2fEXT(GLuint, GLint, GLfloat, GLfloat); +GLAPI void glProgramUniform2fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +GLAPI void glProgramUniform2iEXT(GLuint, GLint, GLint, GLint); +GLAPI void glProgramUniform2ivEXT(GLuint, GLint, GLsizei, const GLint *); +GLAPI void glProgramUniform3fEXT(GLuint, GLint, GLfloat, GLfloat, GLfloat); +GLAPI void glProgramUniform3fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +GLAPI void glProgramUniform3iEXT(GLuint, GLint, GLint, GLint, GLint); +GLAPI void glProgramUniform3ivEXT(GLuint, GLint, GLsizei, const GLint *); +GLAPI void glProgramUniform4fEXT(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void glProgramUniform4fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +GLAPI void glProgramUniform4iEXT(GLuint, GLint, GLint, GLint, GLint, GLint); +GLAPI void glProgramUniform4ivEXT(GLuint, GLint, GLsizei, const GLint *); +GLAPI void glProgramUniformMatrix2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glUseProgramStagesEXT(GLuint, GLbitfield, GLuint); +GLAPI void glValidateProgramPipelineEXT(GLuint); +GLAPI void glProgramUniform1uiEXT(GLuint, GLint, GLuint); +GLAPI void glProgramUniform2uiEXT(GLuint, GLint, GLuint, GLuint); +GLAPI void glProgramUniform3uiEXT(GLuint, GLint, GLuint, GLuint, GLuint); +GLAPI void glProgramUniform4uiEXT(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI void glProgramUniform1uivEXT(GLuint, GLint, GLsizei, const GLuint *); +GLAPI void glProgramUniform2uivEXT(GLuint, GLint, GLsizei, const GLuint *); +GLAPI void glProgramUniform3uivEXT(GLuint, GLint, GLsizei, const GLuint *); +GLAPI void glProgramUniform4uivEXT(GLuint, GLint, GLsizei, const GLuint *); +GLAPI void glProgramUniformMatrix2x3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix3x2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix2x4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix4x2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix3x4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void glProgramUniformMatrix4x3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); + +/* GL_EXT_sRGB */ + + +/* GL_EXT_multisampled_render_to_texture */ + +GLAPI void glRenderbufferStorageMultisampleEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void glFramebufferTexture2DMultisampleEXT(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); + +/* GL_EXT_robustness */ + +GLAPI GLenum glGetGraphicsResetStatusEXT(void); +GLAPI void glReadnPixelsEXT(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *); +GLAPI void glGetnUniformfvEXT(GLuint, GLint, GLsizei, GLfloat *); +GLAPI void glGetnUniformivEXT(GLuint, GLint, GLsizei, GLint *); + +/* GL_KHR_debug */ + +GLAPI void glDebugMessageControl(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +GLAPI void glDebugMessageInsert(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +GLAPI void glDebugMessageCallback(GLDEBUGPROC, const void *); +GLAPI GLuint glGetDebugMessageLog(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +GLAPI void glPushDebugGroup(GLenum, GLuint, GLsizei, const GLchar *); +GLAPI void glPopDebugGroup(void); +GLAPI void glObjectLabel(GLenum, GLuint, GLsizei, const GLchar *); +GLAPI void glGetObjectLabel(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void glObjectPtrLabel(const void *, GLsizei, const GLchar *); +GLAPI void glGetObjectPtrLabel(const void *, GLsizei, GLsizei *, GLchar *); +GLAPI void glGetPointerv(GLenum, void **); +GLAPI void glDebugMessageControlKHR(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +GLAPI void glDebugMessageInsertKHR(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +GLAPI void glDebugMessageCallbackKHR(GLDEBUGPROCKHR, const void *); +GLAPI GLuint glGetDebugMessageLogKHR(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +GLAPI void glPushDebugGroupKHR(GLenum, GLuint, GLsizei, const GLchar *); +GLAPI void glPopDebugGroupKHR(void); +GLAPI void glObjectLabelKHR(GLenum, GLuint, GLsizei, const GLchar *); +GLAPI void glGetObjectLabelKHR(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI void glObjectPtrLabelKHR(const void *, GLsizei, const GLchar *); +GLAPI void glGetObjectPtrLabelKHR(const void *, GLsizei, GLsizei *, GLchar *); +GLAPI void glGetPointervKHR(GLenum, void **); + +/* GL_NV_read_buffer_front */ + + +/* GL_NV_read_depth */ + + +/* GL_NV_read_stencil */ + + +/* GL_NV_read_depth_stencil */ + + +/* GL_NV_texture_border_clamp */ + + +/* GL_OES_depth32 */ + + +/* GL_OES_mapbuffer */ + +GLAPI void * glMapBufferOES(GLenum, GLenum); +GLAPI GLboolean glUnmapBufferOES(GLenum); +GLAPI void glGetBufferPointervOES(GLenum, GLenum, void **); + +/* GL_OES_stencil1 */ + + +/* GL_OES_stencil4 */ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h new file mode 100644 index 000000000..51f6a21ba --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h @@ -0,0 +1,1721 @@ +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl2_h_) +#error Attempt to include auto-generated header after including gl2.h +#endif +#if defined(__gl2platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl2_h_ +#define __gl2platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ +#define FLEXTGL_EXPORT __attribute__ ((visibility ("default"))) + +#define APIENTRY +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +/* Data types */ + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef short GLshort; +typedef int GLint; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef int GLsizei; +typedef char GLchar; +typedef struct __GLsync *GLsync; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* Enums */ + +/* GL_ES_VERSION_2_0 */ + +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/* GL_ANGLE_framebuffer_blit */ + +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA + +/* GL_ANGLE_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 + +/* GL_ANGLE_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE + +/* GL_ANGLE_depth_texture */ + +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 + +/* GL_APPLE_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA + +/* GL_APPLE_texture_max_level */ + +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D + +/* GL_EXT_texture_type_2_10_10_10_REV */ + +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 + +/* GL_EXT_discard_framebuffer */ + +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 + +/* GL_EXT_blend_minmax */ + +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 + +/* GL_EXT_occlusion_query_boolean */ + +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 + +/* GL_EXT_shadow_samplers */ + +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 + +/* GL_EXT_texture_rg */ + +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B + +/* GL_EXT_texture_storage */ + +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F + +/* GL_EXT_map_buffer_range */ + +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 + +/* GL_EXT_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE + +/* GL_NV_draw_buffers */ + +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF + +/* GL_NV_fbo_color_attachments */ + +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF + +/* GL_NV_read_buffer */ + +#define GL_READ_BUFFER_NV 0x0C02 + +/* GL_NV_framebuffer_blit */ + +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA + +/* GL_NV_framebuffer_multisample */ + +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 + +/* GL_NV_instanced_arrays */ + +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE + +/* GL_NV_shadow_samplers_array */ + +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 + +/* GL_NV_shadow_samplers_cube */ + +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 + +/* GL_OES_depth24 */ + +#define GL_DEPTH_COMPONENT24_OES 0x81A6 + +/* GL_OES_element_index_uint */ + +#define GL_UNSIGNED_INT 0x1405 + +/* GL_OES_rgb8_rgba8 */ + +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 + +/* GL_OES_texture_3D */ + +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 + +/* GL_OES_texture_half_float */ + +#define GL_HALF_FLOAT_OES 0x8D61 + +/* GL_OES_texture_float */ + +#define GL_FLOAT 0x1406 + +/* GL_OES_vertex_half_float */ + +#define GL_HALF_FLOAT_OES 0x8D61 + +/* GL_OES_packed_depth_stencil */ + +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 + +/* GL_OES_depth_texture */ + +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 + +/* GL_OES_standard_derivatives */ + +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B + +/* GL_OES_vertex_array_object */ + +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 + +/* GL_OES_required_internalformat */ + +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 + +/* GL_OES_surfaceless_context */ + +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 + +/* GL_APPLE_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 + +/* GL_EXT_texture_filter_anisotropic */ + +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF + +/* GL_EXT_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 + +/* GL_EXT_read_format_bgra */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 + +/* GL_EXT_debug_label */ + +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_SAMPLER 0x82E6 +#define GL_TRANSFORM_FEEDBACK 0x8E22 + +/* GL_EXT_disjoint_timer_query */ + +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB + +/* GL_EXT_texture_sRGB_decode */ + +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A + +/* GL_EXT_separate_shader_objects */ + +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A + +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + +/* GL_EXT_multisampled_render_to_texture */ + +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 + +/* GL_EXT_robustness */ + +#define GL_NO_ERROR 0 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 + +/* GL_KHR_debug */ + +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_QUERY 0x82E3 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_DISPLAY_LIST 0x82E7 + +/* GL_NV_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D + +/* GL_OES_depth32 */ + +#define GL_DEPTH_COMPONENT32_OES 0x81A7 + +/* GL_OES_mapbuffer */ + +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD + +/* GL_OES_stencil1 */ + +#define GL_STENCIL_INDEX1_OES 0x8D46 + +/* GL_OES_stencil4 */ + +#define GL_STENCIL_INDEX4_OES 0x8D47 + +/* Function prototypes */ + +/* GL_ES_VERSION_2_0 */ +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +GL_APICALL void GL_APIENTRY GLES2ActiveTexture(GLenum); +#define glActiveTexture GLES2ActiveTexture +GL_APICALL void GL_APIENTRY GLES2AttachShader(GLuint, GLuint); +#define glAttachShader GLES2AttachShader +GL_APICALL void GL_APIENTRY GLES2BindAttribLocation(GLuint, GLuint, const GLchar *); +#define glBindAttribLocation GLES2BindAttribLocation +GL_APICALL void GL_APIENTRY GLES2BindBuffer(GLenum, GLuint); +#define glBindBuffer GLES2BindBuffer +GL_APICALL void GL_APIENTRY GLES2BindFramebuffer(GLenum, GLuint); +#define glBindFramebuffer GLES2BindFramebuffer +GL_APICALL void GL_APIENTRY GLES2BindRenderbuffer(GLenum, GLuint); +#define glBindRenderbuffer GLES2BindRenderbuffer +GL_APICALL void GL_APIENTRY GLES2BindTexture(GLenum, GLuint); +#define glBindTexture GLES2BindTexture +GL_APICALL void GL_APIENTRY GLES2BlendColor(GLfloat, GLfloat, GLfloat, GLfloat); +#define glBlendColor GLES2BlendColor +GL_APICALL void GL_APIENTRY GLES2BlendEquation(GLenum); +#define glBlendEquation GLES2BlendEquation +GL_APICALL void GL_APIENTRY GLES2BlendEquationSeparate(GLenum, GLenum); +#define glBlendEquationSeparate GLES2BlendEquationSeparate +GL_APICALL void GL_APIENTRY GLES2BlendFunc(GLenum, GLenum); +#define glBlendFunc GLES2BlendFunc +GL_APICALL void GL_APIENTRY GLES2BlendFuncSeparate(GLenum, GLenum, GLenum, GLenum); +#define glBlendFuncSeparate GLES2BlendFuncSeparate +GL_APICALL void GL_APIENTRY GLES2BufferData(GLenum, GLsizeiptr, const void *, GLenum); +#define glBufferData GLES2BufferData +GL_APICALL void GL_APIENTRY GLES2BufferSubData(GLenum, GLintptr, GLsizeiptr, const void *); +#define glBufferSubData GLES2BufferSubData +GL_APICALL GLenum GL_APIENTRY GLES2CheckFramebufferStatus(GLenum); +#define glCheckFramebufferStatus GLES2CheckFramebufferStatus +GL_APICALL void GL_APIENTRY GLES2Clear(GLbitfield); +#define glClear GLES2Clear +GL_APICALL void GL_APIENTRY GLES2ClearColor(GLfloat, GLfloat, GLfloat, GLfloat); +#define glClearColor GLES2ClearColor +GL_APICALL void GL_APIENTRY GLES2ClearDepthf(GLfloat); +#define glClearDepthf GLES2ClearDepthf +GL_APICALL void GL_APIENTRY GLES2ClearStencil(GLint); +#define glClearStencil GLES2ClearStencil +GL_APICALL void GL_APIENTRY GLES2ColorMask(GLboolean, GLboolean, GLboolean, GLboolean); +#define glColorMask GLES2ColorMask +GL_APICALL void GL_APIENTRY GLES2CompileShader(GLuint); +#define glCompileShader GLES2CompileShader +GL_APICALL void GL_APIENTRY GLES2CompressedTexImage2D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *); +#define glCompressedTexImage2D GLES2CompressedTexImage2D +GL_APICALL void GL_APIENTRY GLES2CompressedTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *); +#define glCompressedTexSubImage2D GLES2CompressedTexSubImage2D +GL_APICALL void GL_APIENTRY GLES2CopyTexImage2D(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +#define glCopyTexImage2D GLES2CopyTexImage2D +GL_APICALL void GL_APIENTRY GLES2CopyTexSubImage2D(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#define glCopyTexSubImage2D GLES2CopyTexSubImage2D +GL_APICALL GLuint GL_APIENTRY GLES2CreateProgram(void); +#define glCreateProgram GLES2CreateProgram +GL_APICALL GLuint GL_APIENTRY GLES2CreateShader(GLenum); +#define glCreateShader GLES2CreateShader +GL_APICALL void GL_APIENTRY GLES2CullFace(GLenum); +#define glCullFace GLES2CullFace +GL_APICALL void GL_APIENTRY GLES2DeleteBuffers(GLsizei, const GLuint *); +#define glDeleteBuffers GLES2DeleteBuffers +GL_APICALL void GL_APIENTRY GLES2DeleteFramebuffers(GLsizei, const GLuint *); +#define glDeleteFramebuffers GLES2DeleteFramebuffers +GL_APICALL void GL_APIENTRY GLES2DeleteProgram(GLuint); +#define glDeleteProgram GLES2DeleteProgram +GL_APICALL void GL_APIENTRY GLES2DeleteRenderbuffers(GLsizei, const GLuint *); +#define glDeleteRenderbuffers GLES2DeleteRenderbuffers +GL_APICALL void GL_APIENTRY GLES2DeleteShader(GLuint); +#define glDeleteShader GLES2DeleteShader +GL_APICALL void GL_APIENTRY GLES2DeleteTextures(GLsizei, const GLuint *); +#define glDeleteTextures GLES2DeleteTextures +GL_APICALL void GL_APIENTRY GLES2DepthFunc(GLenum); +#define glDepthFunc GLES2DepthFunc +GL_APICALL void GL_APIENTRY GLES2DepthMask(GLboolean); +#define glDepthMask GLES2DepthMask +GL_APICALL void GL_APIENTRY GLES2DepthRangef(GLfloat, GLfloat); +#define glDepthRangef GLES2DepthRangef +GL_APICALL void GL_APIENTRY GLES2DetachShader(GLuint, GLuint); +#define glDetachShader GLES2DetachShader +GL_APICALL void GL_APIENTRY GLES2Disable(GLenum); +#define glDisable GLES2Disable +GL_APICALL void GL_APIENTRY GLES2DisableVertexAttribArray(GLuint); +#define glDisableVertexAttribArray GLES2DisableVertexAttribArray +GL_APICALL void GL_APIENTRY GLES2DrawArrays(GLenum, GLint, GLsizei); +#define glDrawArrays GLES2DrawArrays +GL_APICALL void GL_APIENTRY GLES2DrawElements(GLenum, GLsizei, GLenum, const void *); +#define glDrawElements GLES2DrawElements +GL_APICALL void GL_APIENTRY GLES2Enable(GLenum); +#define glEnable GLES2Enable +GL_APICALL void GL_APIENTRY GLES2EnableVertexAttribArray(GLuint); +#define glEnableVertexAttribArray GLES2EnableVertexAttribArray +GL_APICALL void GL_APIENTRY GLES2Finish(void); +#define glFinish GLES2Finish +GL_APICALL void GL_APIENTRY GLES2Flush(void); +#define glFlush GLES2Flush +GL_APICALL void GL_APIENTRY GLES2FramebufferRenderbuffer(GLenum, GLenum, GLenum, GLuint); +#define glFramebufferRenderbuffer GLES2FramebufferRenderbuffer +GL_APICALL void GL_APIENTRY GLES2FramebufferTexture2D(GLenum, GLenum, GLenum, GLuint, GLint); +#define glFramebufferTexture2D GLES2FramebufferTexture2D +GL_APICALL void GL_APIENTRY GLES2FrontFace(GLenum); +#define glFrontFace GLES2FrontFace +GL_APICALL void GL_APIENTRY GLES2GenBuffers(GLsizei, GLuint *); +#define glGenBuffers GLES2GenBuffers +GL_APICALL void GL_APIENTRY GLES2GenerateMipmap(GLenum); +#define glGenerateMipmap GLES2GenerateMipmap +GL_APICALL void GL_APIENTRY GLES2GenFramebuffers(GLsizei, GLuint *); +#define glGenFramebuffers GLES2GenFramebuffers +GL_APICALL void GL_APIENTRY GLES2GenRenderbuffers(GLsizei, GLuint *); +#define glGenRenderbuffers GLES2GenRenderbuffers +GL_APICALL void GL_APIENTRY GLES2GenTextures(GLsizei, GLuint *); +#define glGenTextures GLES2GenTextures +GL_APICALL void GL_APIENTRY GLES2GetActiveAttrib(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +#define glGetActiveAttrib GLES2GetActiveAttrib +GL_APICALL void GL_APIENTRY GLES2GetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +#define glGetActiveUniform GLES2GetActiveUniform +GL_APICALL void GL_APIENTRY GLES2GetAttachedShaders(GLuint, GLsizei, GLsizei *, GLuint *); +#define glGetAttachedShaders GLES2GetAttachedShaders +GL_APICALL GLint GL_APIENTRY GLES2GetAttribLocation(GLuint, const GLchar *); +#define glGetAttribLocation GLES2GetAttribLocation +GL_APICALL void GL_APIENTRY GLES2GetBooleanv(GLenum, GLboolean *); +#define glGetBooleanv GLES2GetBooleanv +GL_APICALL void GL_APIENTRY GLES2GetBufferParameteriv(GLenum, GLenum, GLint *); +#define glGetBufferParameteriv GLES2GetBufferParameteriv +GL_APICALL GLenum GL_APIENTRY GLES2GetError(void); +#define glGetError GLES2GetError +GL_APICALL void GL_APIENTRY GLES2GetFloatv(GLenum, GLfloat *); +#define glGetFloatv GLES2GetFloatv +GL_APICALL void GL_APIENTRY GLES2GetFramebufferAttachmentParameteriv(GLenum, GLenum, GLenum, GLint *); +#define glGetFramebufferAttachmentParameteriv GLES2GetFramebufferAttachmentParameteriv +GL_APICALL void GL_APIENTRY GLES2GetIntegerv(GLenum, GLint *); +#define glGetIntegerv GLES2GetIntegerv +GL_APICALL void GL_APIENTRY GLES2GetProgramiv(GLuint, GLenum, GLint *); +#define glGetProgramiv GLES2GetProgramiv +GL_APICALL void GL_APIENTRY GLES2GetProgramInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetProgramInfoLog GLES2GetProgramInfoLog +GL_APICALL void GL_APIENTRY GLES2GetRenderbufferParameteriv(GLenum, GLenum, GLint *); +#define glGetRenderbufferParameteriv GLES2GetRenderbufferParameteriv +GL_APICALL void GL_APIENTRY GLES2GetShaderiv(GLuint, GLenum, GLint *); +#define glGetShaderiv GLES2GetShaderiv +GL_APICALL void GL_APIENTRY GLES2GetShaderInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetShaderInfoLog GLES2GetShaderInfoLog +GL_APICALL void GL_APIENTRY GLES2GetShaderPrecisionFormat(GLenum, GLenum, GLint *, GLint *); +#define glGetShaderPrecisionFormat GLES2GetShaderPrecisionFormat +GL_APICALL void GL_APIENTRY GLES2GetShaderSource(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetShaderSource GLES2GetShaderSource +GL_APICALL const GLubyte * GL_APIENTRY GLES2GetString(GLenum); +#define glGetString GLES2GetString +GL_APICALL void GL_APIENTRY GLES2GetTexParameterfv(GLenum, GLenum, GLfloat *); +#define glGetTexParameterfv GLES2GetTexParameterfv +GL_APICALL void GL_APIENTRY GLES2GetTexParameteriv(GLenum, GLenum, GLint *); +#define glGetTexParameteriv GLES2GetTexParameteriv +GL_APICALL void GL_APIENTRY GLES2GetUniformfv(GLuint, GLint, GLfloat *); +#define glGetUniformfv GLES2GetUniformfv +GL_APICALL void GL_APIENTRY GLES2GetUniformiv(GLuint, GLint, GLint *); +#define glGetUniformiv GLES2GetUniformiv +GL_APICALL GLint GL_APIENTRY GLES2GetUniformLocation(GLuint, const GLchar *); +#define glGetUniformLocation GLES2GetUniformLocation +GL_APICALL void GL_APIENTRY GLES2GetVertexAttribfv(GLuint, GLenum, GLfloat *); +#define glGetVertexAttribfv GLES2GetVertexAttribfv +GL_APICALL void GL_APIENTRY GLES2GetVertexAttribiv(GLuint, GLenum, GLint *); +#define glGetVertexAttribiv GLES2GetVertexAttribiv +GL_APICALL void GL_APIENTRY GLES2GetVertexAttribPointerv(GLuint, GLenum, void **); +#define glGetVertexAttribPointerv GLES2GetVertexAttribPointerv +GL_APICALL void GL_APIENTRY GLES2Hint(GLenum, GLenum); +#define glHint GLES2Hint +GL_APICALL GLboolean GL_APIENTRY GLES2IsBuffer(GLuint); +#define glIsBuffer GLES2IsBuffer +GL_APICALL GLboolean GL_APIENTRY GLES2IsEnabled(GLenum); +#define glIsEnabled GLES2IsEnabled +GL_APICALL GLboolean GL_APIENTRY GLES2IsFramebuffer(GLuint); +#define glIsFramebuffer GLES2IsFramebuffer +GL_APICALL GLboolean GL_APIENTRY GLES2IsProgram(GLuint); +#define glIsProgram GLES2IsProgram +GL_APICALL GLboolean GL_APIENTRY GLES2IsRenderbuffer(GLuint); +#define glIsRenderbuffer GLES2IsRenderbuffer +GL_APICALL GLboolean GL_APIENTRY GLES2IsShader(GLuint); +#define glIsShader GLES2IsShader +GL_APICALL GLboolean GL_APIENTRY GLES2IsTexture(GLuint); +#define glIsTexture GLES2IsTexture +GL_APICALL void GL_APIENTRY GLES2LineWidth(GLfloat); +#define glLineWidth GLES2LineWidth +GL_APICALL void GL_APIENTRY GLES2LinkProgram(GLuint); +#define glLinkProgram GLES2LinkProgram +GL_APICALL void GL_APIENTRY GLES2PixelStorei(GLenum, GLint); +#define glPixelStorei GLES2PixelStorei +GL_APICALL void GL_APIENTRY GLES2PolygonOffset(GLfloat, GLfloat); +#define glPolygonOffset GLES2PolygonOffset +GL_APICALL void GL_APIENTRY GLES2ReadPixels(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *); +#define glReadPixels GLES2ReadPixels +GL_APICALL void GL_APIENTRY GLES2ReleaseShaderCompiler(void); +#define glReleaseShaderCompiler GLES2ReleaseShaderCompiler +GL_APICALL void GL_APIENTRY GLES2RenderbufferStorage(GLenum, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorage GLES2RenderbufferStorage +GL_APICALL void GL_APIENTRY GLES2SampleCoverage(GLfloat, GLboolean); +#define glSampleCoverage GLES2SampleCoverage +GL_APICALL void GL_APIENTRY GLES2Scissor(GLint, GLint, GLsizei, GLsizei); +#define glScissor GLES2Scissor +GL_APICALL void GL_APIENTRY GLES2ShaderBinary(GLsizei, const GLuint *, GLenum, const void *, GLsizei); +#define glShaderBinary GLES2ShaderBinary +GL_APICALL void GL_APIENTRY GLES2ShaderSource(GLuint, GLsizei, const GLchar *const*, const GLint *); +#define glShaderSource GLES2ShaderSource +GL_APICALL void GL_APIENTRY GLES2StencilFunc(GLenum, GLint, GLuint); +#define glStencilFunc GLES2StencilFunc +GL_APICALL void GL_APIENTRY GLES2StencilFuncSeparate(GLenum, GLenum, GLint, GLuint); +#define glStencilFuncSeparate GLES2StencilFuncSeparate +GL_APICALL void GL_APIENTRY GLES2StencilMask(GLuint); +#define glStencilMask GLES2StencilMask +GL_APICALL void GL_APIENTRY GLES2StencilMaskSeparate(GLenum, GLuint); +#define glStencilMaskSeparate GLES2StencilMaskSeparate +GL_APICALL void GL_APIENTRY GLES2StencilOp(GLenum, GLenum, GLenum); +#define glStencilOp GLES2StencilOp +GL_APICALL void GL_APIENTRY GLES2StencilOpSeparate(GLenum, GLenum, GLenum, GLenum); +#define glStencilOpSeparate GLES2StencilOpSeparate +GL_APICALL void GL_APIENTRY GLES2TexImage2D(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +#define glTexImage2D GLES2TexImage2D +GL_APICALL void GL_APIENTRY GLES2TexParameterf(GLenum, GLenum, GLfloat); +#define glTexParameterf GLES2TexParameterf +GL_APICALL void GL_APIENTRY GLES2TexParameterfv(GLenum, GLenum, const GLfloat *); +#define glTexParameterfv GLES2TexParameterfv +GL_APICALL void GL_APIENTRY GLES2TexParameteri(GLenum, GLenum, GLint); +#define glTexParameteri GLES2TexParameteri +GL_APICALL void GL_APIENTRY GLES2TexParameteriv(GLenum, GLenum, const GLint *); +#define glTexParameteriv GLES2TexParameteriv +GL_APICALL void GL_APIENTRY GLES2TexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *); +#define glTexSubImage2D GLES2TexSubImage2D +GL_APICALL void GL_APIENTRY GLES2Uniform1f(GLint, GLfloat); +#define glUniform1f GLES2Uniform1f +GL_APICALL void GL_APIENTRY GLES2Uniform1fv(GLint, GLsizei, const GLfloat *); +#define glUniform1fv GLES2Uniform1fv +GL_APICALL void GL_APIENTRY GLES2Uniform1i(GLint, GLint); +#define glUniform1i GLES2Uniform1i +GL_APICALL void GL_APIENTRY GLES2Uniform1iv(GLint, GLsizei, const GLint *); +#define glUniform1iv GLES2Uniform1iv +GL_APICALL void GL_APIENTRY GLES2Uniform2f(GLint, GLfloat, GLfloat); +#define glUniform2f GLES2Uniform2f +GL_APICALL void GL_APIENTRY GLES2Uniform2fv(GLint, GLsizei, const GLfloat *); +#define glUniform2fv GLES2Uniform2fv +GL_APICALL void GL_APIENTRY GLES2Uniform2i(GLint, GLint, GLint); +#define glUniform2i GLES2Uniform2i +GL_APICALL void GL_APIENTRY GLES2Uniform2iv(GLint, GLsizei, const GLint *); +#define glUniform2iv GLES2Uniform2iv +GL_APICALL void GL_APIENTRY GLES2Uniform3f(GLint, GLfloat, GLfloat, GLfloat); +#define glUniform3f GLES2Uniform3f +GL_APICALL void GL_APIENTRY GLES2Uniform3fv(GLint, GLsizei, const GLfloat *); +#define glUniform3fv GLES2Uniform3fv +GL_APICALL void GL_APIENTRY GLES2Uniform3i(GLint, GLint, GLint, GLint); +#define glUniform3i GLES2Uniform3i +GL_APICALL void GL_APIENTRY GLES2Uniform3iv(GLint, GLsizei, const GLint *); +#define glUniform3iv GLES2Uniform3iv +GL_APICALL void GL_APIENTRY GLES2Uniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +#define glUniform4f GLES2Uniform4f +GL_APICALL void GL_APIENTRY GLES2Uniform4fv(GLint, GLsizei, const GLfloat *); +#define glUniform4fv GLES2Uniform4fv +GL_APICALL void GL_APIENTRY GLES2Uniform4i(GLint, GLint, GLint, GLint, GLint); +#define glUniform4i GLES2Uniform4i +GL_APICALL void GL_APIENTRY GLES2Uniform4iv(GLint, GLsizei, const GLint *); +#define glUniform4iv GLES2Uniform4iv +GL_APICALL void GL_APIENTRY GLES2UniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *); +#define glUniformMatrix2fv GLES2UniformMatrix2fv +GL_APICALL void GL_APIENTRY GLES2UniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *); +#define glUniformMatrix3fv GLES2UniformMatrix3fv +GL_APICALL void GL_APIENTRY GLES2UniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *); +#define glUniformMatrix4fv GLES2UniformMatrix4fv +GL_APICALL void GL_APIENTRY GLES2UseProgram(GLuint); +#define glUseProgram GLES2UseProgram +GL_APICALL void GL_APIENTRY GLES2ValidateProgram(GLuint); +#define glValidateProgram GLES2ValidateProgram +GL_APICALL void GL_APIENTRY GLES2VertexAttrib1f(GLuint, GLfloat); +#define glVertexAttrib1f GLES2VertexAttrib1f +GL_APICALL void GL_APIENTRY GLES2VertexAttrib1fv(GLuint, const GLfloat *); +#define glVertexAttrib1fv GLES2VertexAttrib1fv +GL_APICALL void GL_APIENTRY GLES2VertexAttrib2f(GLuint, GLfloat, GLfloat); +#define glVertexAttrib2f GLES2VertexAttrib2f +GL_APICALL void GL_APIENTRY GLES2VertexAttrib2fv(GLuint, const GLfloat *); +#define glVertexAttrib2fv GLES2VertexAttrib2fv +GL_APICALL void GL_APIENTRY GLES2VertexAttrib3f(GLuint, GLfloat, GLfloat, GLfloat); +#define glVertexAttrib3f GLES2VertexAttrib3f +GL_APICALL void GL_APIENTRY GLES2VertexAttrib3fv(GLuint, const GLfloat *); +#define glVertexAttrib3fv GLES2VertexAttrib3fv +GL_APICALL void GL_APIENTRY GLES2VertexAttrib4f(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +#define glVertexAttrib4f GLES2VertexAttrib4f +GL_APICALL void GL_APIENTRY GLES2VertexAttrib4fv(GLuint, const GLfloat *); +#define glVertexAttrib4fv GLES2VertexAttrib4fv +GL_APICALL void GL_APIENTRY GLES2VertexAttribPointer(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *); +#define glVertexAttribPointer GLES2VertexAttribPointer +GL_APICALL void GL_APIENTRY GLES2Viewport(GLint, GLint, GLsizei, GLsizei); +#define glViewport GLES2Viewport +#endif + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +GL_APICALL void GL_APIENTRY GLES2BlitFramebufferANGLE(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +#define glBlitFramebufferANGLE GLES2BlitFramebufferANGLE +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +GL_APICALL void GL_APIENTRY GLES2RenderbufferStorageMultisampleANGLE(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleANGLE GLES2RenderbufferStorageMultisampleANGLE +#endif + +/* GL_ANGLE_instanced_arrays */ +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +GL_APICALL void GL_APIENTRY GLES2DrawArraysInstancedANGLE(GLenum, GLint, GLsizei, GLsizei); +#define glDrawArraysInstancedANGLE GLES2DrawArraysInstancedANGLE +GL_APICALL void GL_APIENTRY GLES2DrawElementsInstancedANGLE(GLenum, GLsizei, GLenum, const void *, GLsizei); +#define glDrawElementsInstancedANGLE GLES2DrawElementsInstancedANGLE +GL_APICALL void GL_APIENTRY GLES2VertexAttribDivisorANGLE(GLuint, GLuint); +#define glVertexAttribDivisorANGLE GLES2VertexAttribDivisorANGLE +#endif + +/* GL_ANGLE_depth_texture */ +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +GL_APICALL void GL_APIENTRY GLES2RenderbufferStorageMultisampleAPPLE(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleAPPLE GLES2RenderbufferStorageMultisampleAPPLE +GL_APICALL void GL_APIENTRY GLES2ResolveMultisampleFramebufferAPPLE(void); +#define glResolveMultisampleFramebufferAPPLE GLES2ResolveMultisampleFramebufferAPPLE +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +GL_APICALL void GL_APIENTRY GLES2DiscardFramebufferEXT(GLenum, GLsizei, const GLenum *); +#define glDiscardFramebufferEXT GLES2DiscardFramebufferEXT +#endif + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +GL_APICALL void GL_APIENTRY GLES2BlendEquationEXT(GLenum); +#define glBlendEquationEXT GLES2BlendEquationEXT +#endif + +/* GL_EXT_shader_texture_lod */ +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +GL_APICALL void GL_APIENTRY GLES2GenQueriesEXT(GLsizei, GLuint *); +#define glGenQueriesEXT GLES2GenQueriesEXT +GL_APICALL void GL_APIENTRY GLES2DeleteQueriesEXT(GLsizei, const GLuint *); +#define glDeleteQueriesEXT GLES2DeleteQueriesEXT +GL_APICALL GLboolean GL_APIENTRY GLES2IsQueryEXT(GLuint); +#define glIsQueryEXT GLES2IsQueryEXT +GL_APICALL void GL_APIENTRY GLES2BeginQueryEXT(GLenum, GLuint); +#define glBeginQueryEXT GLES2BeginQueryEXT +GL_APICALL void GL_APIENTRY GLES2EndQueryEXT(GLenum); +#define glEndQueryEXT GLES2EndQueryEXT +GL_APICALL void GL_APIENTRY GLES2GetQueryivEXT(GLenum, GLenum, GLint *); +#define glGetQueryivEXT GLES2GetQueryivEXT +GL_APICALL void GL_APIENTRY GLES2GetQueryObjectuivEXT(GLuint, GLenum, GLuint *); +#define glGetQueryObjectuivEXT GLES2GetQueryObjectuivEXT +#endif + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +GL_APICALL void GL_APIENTRY GLES2TexStorage1DEXT(GLenum, GLsizei, GLenum, GLsizei); +#define glTexStorage1DEXT GLES2TexStorage1DEXT +GL_APICALL void GL_APIENTRY GLES2TexStorage2DEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glTexStorage2DEXT GLES2TexStorage2DEXT +GL_APICALL void GL_APIENTRY GLES2TexStorage3DEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +#define glTexStorage3DEXT GLES2TexStorage3DEXT +GL_APICALL void GL_APIENTRY GLES2TextureStorage1DEXT(GLuint, GLenum, GLsizei, GLenum, GLsizei); +#define glTextureStorage1DEXT GLES2TextureStorage1DEXT +GL_APICALL void GL_APIENTRY GLES2TextureStorage2DEXT(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glTextureStorage2DEXT GLES2TextureStorage2DEXT +GL_APICALL void GL_APIENTRY GLES2TextureStorage3DEXT(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +#define glTextureStorage3DEXT GLES2TextureStorage3DEXT +#endif + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +GL_APICALL void * GL_APIENTRY GLES2MapBufferRangeEXT(GLenum, GLintptr, GLsizeiptr, GLbitfield); +#define glMapBufferRangeEXT GLES2MapBufferRangeEXT +GL_APICALL void GL_APIENTRY GLES2FlushMappedBufferRangeEXT(GLenum, GLintptr, GLsizeiptr); +#define glFlushMappedBufferRangeEXT GLES2FlushMappedBufferRangeEXT +#endif + +/* GL_EXT_instanced_arrays */ +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +GL_APICALL void GL_APIENTRY GLES2DrawArraysInstancedEXT(GLenum, GLint, GLsizei, GLsizei); +#define glDrawArraysInstancedEXT GLES2DrawArraysInstancedEXT +GL_APICALL void GL_APIENTRY GLES2DrawElementsInstancedEXT(GLenum, GLsizei, GLenum, const void *, GLsizei); +#define glDrawElementsInstancedEXT GLES2DrawElementsInstancedEXT +GL_APICALL void GL_APIENTRY GLES2VertexAttribDivisorEXT(GLuint, GLuint); +#define glVertexAttribDivisorEXT GLES2VertexAttribDivisorEXT +#endif + +/* GL_EXT_draw_instanced */ +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +GL_APICALL void GL_APIENTRY GLES2DrawBuffersNV(GLsizei, const GLenum *); +#define glDrawBuffersNV GLES2DrawBuffersNV +#endif + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_NV_read_buffer 1 +GL_APICALL void GL_APIENTRY GLES2ReadBufferNV(GLenum); +#define glReadBufferNV GLES2ReadBufferNV +#endif + +/* GL_NV_draw_instanced */ +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +GL_APICALL void GL_APIENTRY GLES2DrawArraysInstancedNV(GLenum, GLint, GLsizei, GLsizei); +#define glDrawArraysInstancedNV GLES2DrawArraysInstancedNV +GL_APICALL void GL_APIENTRY GLES2DrawElementsInstancedNV(GLenum, GLsizei, GLenum, const void *, GLsizei); +#define glDrawElementsInstancedNV GLES2DrawElementsInstancedNV +#endif + +/* GL_NV_framebuffer_blit */ +#ifndef GL_NV_framebuffer_blit +#define GL_NV_framebuffer_blit 1 +GL_APICALL void GL_APIENTRY GLES2BlitFramebufferNV(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +#define glBlitFramebufferNV GLES2BlitFramebufferNV +#endif + +/* GL_NV_framebuffer_multisample */ +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +GL_APICALL void GL_APIENTRY GLES2RenderbufferStorageMultisampleNV(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleNV GLES2RenderbufferStorageMultisampleNV +#endif + +/* GL_NV_instanced_arrays */ +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +GL_APICALL void GL_APIENTRY GLES2VertexAttribDivisorNV(GLuint, GLuint); +#define glVertexAttribDivisorNV GLES2VertexAttribDivisorNV +#endif + +/* GL_NV_shadow_samplers_array */ +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#endif + +/* GL_NV_shadow_samplers_cube */ +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +GL_APICALL void GL_APIENTRY GLES2TexImage3DOES(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +#define glTexImage3DOES GLES2TexImage3DOES +GL_APICALL void GL_APIENTRY GLES2TexSubImage3DOES(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *); +#define glTexSubImage3DOES GLES2TexSubImage3DOES +GL_APICALL void GL_APIENTRY GLES2CopyTexSubImage3DOES(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#define glCopyTexSubImage3DOES GLES2CopyTexSubImage3DOES +GL_APICALL void GL_APIENTRY GLES2CompressedTexImage3DOES(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *); +#define glCompressedTexImage3DOES GLES2CompressedTexImage3DOES +GL_APICALL void GL_APIENTRY GLES2CompressedTexSubImage3DOES(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *); +#define glCompressedTexSubImage3DOES GLES2CompressedTexSubImage3DOES +GL_APICALL void GL_APIENTRY GLES2FramebufferTexture3DOES(GLenum, GLenum, GLenum, GLuint, GLint, GLint); +#define glFramebufferTexture3DOES GLES2FramebufferTexture3DOES +#endif + +/* GL_OES_texture_half_float_linear */ +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif + +/* GL_OES_texture_float_linear */ +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#endif + +/* GL_OES_texture_float */ +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif + +/* GL_OES_vertex_half_float */ +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_depth_texture */ +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +GL_APICALL void GL_APIENTRY GLES2BindVertexArrayOES(GLuint); +#define glBindVertexArrayOES GLES2BindVertexArrayOES +GL_APICALL void GL_APIENTRY GLES2DeleteVertexArraysOES(GLsizei, const GLuint *); +#define glDeleteVertexArraysOES GLES2DeleteVertexArraysOES +GL_APICALL void GL_APIENTRY GLES2GenVertexArraysOES(GLsizei, GLuint *); +#define glGenVertexArraysOES GLES2GenVertexArraysOES +GL_APICALL GLboolean GL_APIENTRY GLES2IsVertexArrayOES(GLuint); +#define glIsVertexArrayOES GLES2IsVertexArrayOES +#endif + +/* GL_OES_required_internalformat */ +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#endif + +/* GL_OES_surfaceless_context */ +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_multi_draw_arrays */ +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +GL_APICALL void GL_APIENTRY GLES2MultiDrawArraysEXT(GLenum, const GLint *, const GLsizei *, GLsizei); +#define glMultiDrawArraysEXT GLES2MultiDrawArraysEXT +GL_APICALL void GL_APIENTRY GLES2MultiDrawElementsEXT(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); +#define glMultiDrawElementsEXT GLES2MultiDrawElementsEXT +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +GL_APICALL void GL_APIENTRY GLES2LabelObjectEXT(GLenum, GLuint, GLsizei, const GLchar *); +#define glLabelObjectEXT GLES2LabelObjectEXT +GL_APICALL void GL_APIENTRY GLES2GetObjectLabelEXT(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabelEXT GLES2GetObjectLabelEXT +#endif + +/* GL_EXT_debug_marker */ +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +GL_APICALL void GL_APIENTRY GLES2InsertEventMarkerEXT(GLsizei, const GLchar *); +#define glInsertEventMarkerEXT GLES2InsertEventMarkerEXT +GL_APICALL void GL_APIENTRY GLES2PushGroupMarkerEXT(GLsizei, const GLchar *); +#define glPushGroupMarkerEXT GLES2PushGroupMarkerEXT +GL_APICALL void GL_APIENTRY GLES2PopGroupMarkerEXT(void); +#define glPopGroupMarkerEXT GLES2PopGroupMarkerEXT +#endif + +/* GL_EXT_disjoint_timer_query */ +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +GL_APICALL void GL_APIENTRY GLES2QueryCounterEXT(GLuint, GLenum); +#define glQueryCounterEXT GLES2QueryCounterEXT +GL_APICALL void GL_APIENTRY GLES2GetQueryObjectivEXT(GLuint, GLenum, GLint *); +#define glGetQueryObjectivEXT GLES2GetQueryObjectivEXT +GL_APICALL void GL_APIENTRY GLES2GetQueryObjecti64vEXT(GLuint, GLenum, GLint64 *); +#define glGetQueryObjecti64vEXT GLES2GetQueryObjecti64vEXT +GL_APICALL void GL_APIENTRY GLES2GetQueryObjectui64vEXT(GLuint, GLenum, GLuint64 *); +#define glGetQueryObjectui64vEXT GLES2GetQueryObjectui64vEXT +#endif + +/* GL_EXT_texture_sRGB_decode */ +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +GL_APICALL void GL_APIENTRY GLES2UseShaderProgramEXT(GLenum, GLuint); +#define glUseShaderProgramEXT GLES2UseShaderProgramEXT +GL_APICALL void GL_APIENTRY GLES2ActiveProgramEXT(GLuint); +#define glActiveProgramEXT GLES2ActiveProgramEXT +GL_APICALL GLuint GL_APIENTRY GLES2CreateShaderProgramEXT(GLenum, const GLchar *); +#define glCreateShaderProgramEXT GLES2CreateShaderProgramEXT +GL_APICALL void GL_APIENTRY GLES2ActiveShaderProgramEXT(GLuint, GLuint); +#define glActiveShaderProgramEXT GLES2ActiveShaderProgramEXT +GL_APICALL void GL_APIENTRY GLES2BindProgramPipelineEXT(GLuint); +#define glBindProgramPipelineEXT GLES2BindProgramPipelineEXT +GL_APICALL GLuint GL_APIENTRY GLES2CreateShaderProgramvEXT(GLenum, GLsizei, const GLchar **); +#define glCreateShaderProgramvEXT GLES2CreateShaderProgramvEXT +GL_APICALL void GL_APIENTRY GLES2DeleteProgramPipelinesEXT(GLsizei, const GLuint *); +#define glDeleteProgramPipelinesEXT GLES2DeleteProgramPipelinesEXT +GL_APICALL void GL_APIENTRY GLES2GenProgramPipelinesEXT(GLsizei, GLuint *); +#define glGenProgramPipelinesEXT GLES2GenProgramPipelinesEXT +GL_APICALL void GL_APIENTRY GLES2GetProgramPipelineInfoLogEXT(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetProgramPipelineInfoLogEXT GLES2GetProgramPipelineInfoLogEXT +GL_APICALL void GL_APIENTRY GLES2GetProgramPipelineivEXT(GLuint, GLenum, GLint *); +#define glGetProgramPipelineivEXT GLES2GetProgramPipelineivEXT +GL_APICALL GLboolean GL_APIENTRY GLES2IsProgramPipelineEXT(GLuint); +#define glIsProgramPipelineEXT GLES2IsProgramPipelineEXT +GL_APICALL void GL_APIENTRY GLES2ProgramParameteriEXT(GLuint, GLenum, GLint); +#define glProgramParameteriEXT GLES2ProgramParameteriEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform1fEXT(GLuint, GLint, GLfloat); +#define glProgramUniform1fEXT GLES2ProgramUniform1fEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform1fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform1fvEXT GLES2ProgramUniform1fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform1iEXT(GLuint, GLint, GLint); +#define glProgramUniform1iEXT GLES2ProgramUniform1iEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform1ivEXT(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform1ivEXT GLES2ProgramUniform1ivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform2fEXT(GLuint, GLint, GLfloat, GLfloat); +#define glProgramUniform2fEXT GLES2ProgramUniform2fEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform2fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform2fvEXT GLES2ProgramUniform2fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform2iEXT(GLuint, GLint, GLint, GLint); +#define glProgramUniform2iEXT GLES2ProgramUniform2iEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform2ivEXT(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform2ivEXT GLES2ProgramUniform2ivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform3fEXT(GLuint, GLint, GLfloat, GLfloat, GLfloat); +#define glProgramUniform3fEXT GLES2ProgramUniform3fEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform3fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform3fvEXT GLES2ProgramUniform3fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform3iEXT(GLuint, GLint, GLint, GLint, GLint); +#define glProgramUniform3iEXT GLES2ProgramUniform3iEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform3ivEXT(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform3ivEXT GLES2ProgramUniform3ivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform4fEXT(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +#define glProgramUniform4fEXT GLES2ProgramUniform4fEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform4fvEXT(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform4fvEXT GLES2ProgramUniform4fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform4iEXT(GLuint, GLint, GLint, GLint, GLint, GLint); +#define glProgramUniform4iEXT GLES2ProgramUniform4iEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform4ivEXT(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform4ivEXT GLES2ProgramUniform4ivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2fvEXT GLES2ProgramUniformMatrix2fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3fvEXT GLES2ProgramUniformMatrix3fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4fvEXT GLES2ProgramUniformMatrix4fvEXT +GL_APICALL void GL_APIENTRY GLES2UseProgramStagesEXT(GLuint, GLbitfield, GLuint); +#define glUseProgramStagesEXT GLES2UseProgramStagesEXT +GL_APICALL void GL_APIENTRY GLES2ValidateProgramPipelineEXT(GLuint); +#define glValidateProgramPipelineEXT GLES2ValidateProgramPipelineEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform1uiEXT(GLuint, GLint, GLuint); +#define glProgramUniform1uiEXT GLES2ProgramUniform1uiEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform2uiEXT(GLuint, GLint, GLuint, GLuint); +#define glProgramUniform2uiEXT GLES2ProgramUniform2uiEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform3uiEXT(GLuint, GLint, GLuint, GLuint, GLuint); +#define glProgramUniform3uiEXT GLES2ProgramUniform3uiEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform4uiEXT(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +#define glProgramUniform4uiEXT GLES2ProgramUniform4uiEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform1uivEXT(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform1uivEXT GLES2ProgramUniform1uivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform2uivEXT(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform2uivEXT GLES2ProgramUniform2uivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform3uivEXT(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform3uivEXT GLES2ProgramUniform3uivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniform4uivEXT(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform4uivEXT GLES2ProgramUniform4uivEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix2x3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x3fvEXT GLES2ProgramUniformMatrix2x3fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix3x2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x2fvEXT GLES2ProgramUniformMatrix3x2fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix2x4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x4fvEXT GLES2ProgramUniformMatrix2x4fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix4x2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x2fvEXT GLES2ProgramUniformMatrix4x2fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix3x4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x4fvEXT GLES2ProgramUniformMatrix3x4fvEXT +GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix4x3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x3fvEXT GLES2ProgramUniformMatrix4x3fvEXT +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +GL_APICALL void GL_APIENTRY GLES2RenderbufferStorageMultisampleEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleEXT GLES2RenderbufferStorageMultisampleEXT +GL_APICALL void GL_APIENTRY GLES2FramebufferTexture2DMultisampleEXT(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#define glFramebufferTexture2DMultisampleEXT GLES2FramebufferTexture2DMultisampleEXT +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +GL_APICALL GLenum GL_APIENTRY GLES2GetGraphicsResetStatusEXT(void); +#define glGetGraphicsResetStatusEXT GLES2GetGraphicsResetStatusEXT +GL_APICALL void GL_APIENTRY GLES2ReadnPixelsEXT(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *); +#define glReadnPixelsEXT GLES2ReadnPixelsEXT +GL_APICALL void GL_APIENTRY GLES2GetnUniformfvEXT(GLuint, GLint, GLsizei, GLfloat *); +#define glGetnUniformfvEXT GLES2GetnUniformfvEXT +GL_APICALL void GL_APIENTRY GLES2GetnUniformivEXT(GLuint, GLint, GLsizei, GLint *); +#define glGetnUniformivEXT GLES2GetnUniformivEXT +#endif + +/* GL_KHR_debug */ +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +GL_APICALL void GL_APIENTRY GLES2DebugMessageControl(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +#define glDebugMessageControl GLES2DebugMessageControl +GL_APICALL void GL_APIENTRY GLES2DebugMessageInsert(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +#define glDebugMessageInsert GLES2DebugMessageInsert +GL_APICALL void GL_APIENTRY GLES2DebugMessageCallback(GLDEBUGPROC, const void *); +#define glDebugMessageCallback GLES2DebugMessageCallback +GL_APICALL GLuint GL_APIENTRY GLES2GetDebugMessageLog(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +#define glGetDebugMessageLog GLES2GetDebugMessageLog +GL_APICALL void GL_APIENTRY GLES2PushDebugGroup(GLenum, GLuint, GLsizei, const GLchar *); +#define glPushDebugGroup GLES2PushDebugGroup +GL_APICALL void GL_APIENTRY GLES2PopDebugGroup(void); +#define glPopDebugGroup GLES2PopDebugGroup +GL_APICALL void GL_APIENTRY GLES2ObjectLabel(GLenum, GLuint, GLsizei, const GLchar *); +#define glObjectLabel GLES2ObjectLabel +GL_APICALL void GL_APIENTRY GLES2GetObjectLabel(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabel GLES2GetObjectLabel +GL_APICALL void GL_APIENTRY GLES2ObjectPtrLabel(const void *, GLsizei, const GLchar *); +#define glObjectPtrLabel GLES2ObjectPtrLabel +GL_APICALL void GL_APIENTRY GLES2GetObjectPtrLabel(const void *, GLsizei, GLsizei *, GLchar *); +#define glGetObjectPtrLabel GLES2GetObjectPtrLabel +GL_APICALL void GL_APIENTRY GLES2GetPointerv(GLenum, void **); +#define glGetPointerv GLES2GetPointerv +GL_APICALL void GL_APIENTRY GLES2DebugMessageControlKHR(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +#define glDebugMessageControlKHR GLES2DebugMessageControlKHR +GL_APICALL void GL_APIENTRY GLES2DebugMessageInsertKHR(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +#define glDebugMessageInsertKHR GLES2DebugMessageInsertKHR +GL_APICALL void GL_APIENTRY GLES2DebugMessageCallbackKHR(GLDEBUGPROCKHR, const void *); +#define glDebugMessageCallbackKHR GLES2DebugMessageCallbackKHR +GL_APICALL GLuint GL_APIENTRY GLES2GetDebugMessageLogKHR(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +#define glGetDebugMessageLogKHR GLES2GetDebugMessageLogKHR +GL_APICALL void GL_APIENTRY GLES2PushDebugGroupKHR(GLenum, GLuint, GLsizei, const GLchar *); +#define glPushDebugGroupKHR GLES2PushDebugGroupKHR +GL_APICALL void GL_APIENTRY GLES2PopDebugGroupKHR(void); +#define glPopDebugGroupKHR GLES2PopDebugGroupKHR +GL_APICALL void GL_APIENTRY GLES2ObjectLabelKHR(GLenum, GLuint, GLsizei, const GLchar *); +#define glObjectLabelKHR GLES2ObjectLabelKHR +GL_APICALL void GL_APIENTRY GLES2GetObjectLabelKHR(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabelKHR GLES2GetObjectLabelKHR +GL_APICALL void GL_APIENTRY GLES2ObjectPtrLabelKHR(const void *, GLsizei, const GLchar *); +#define glObjectPtrLabelKHR GLES2ObjectPtrLabelKHR +GL_APICALL void GL_APIENTRY GLES2GetObjectPtrLabelKHR(const void *, GLsizei, GLsizei *, GLchar *); +#define glGetObjectPtrLabelKHR GLES2GetObjectPtrLabelKHR +GL_APICALL void GL_APIENTRY GLES2GetPointervKHR(GLenum, void **); +#define glGetPointervKHR GLES2GetPointervKHR +#endif + +/* GL_NV_read_buffer_front */ +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif + +/* GL_NV_read_depth */ +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif + +/* GL_NV_read_stencil */ +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif + +/* GL_NV_read_depth_stencil */ +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif + +/* GL_NV_texture_border_clamp */ +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +GL_APICALL void * GL_APIENTRY GLES2MapBufferOES(GLenum, GLenum); +#define glMapBufferOES GLES2MapBufferOES +GL_APICALL GLboolean GL_APIENTRY GLES2UnmapBufferOES(GLenum); +#define glUnmapBufferOES GLES2UnmapBufferOES +GL_APICALL void GL_APIENTRY GLES2GetBufferPointervOES(GLenum, GLenum, void **); +#define glGetBufferPointervOES GLES2GetBufferPointervOES +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp new file mode 100644 index 000000000..f4d1d7caa --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp @@ -0,0 +1,273 @@ +#include "flextGL.h" + +#include +#include + +#include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" + +void flextGLInit() { + Magnum::Platform::Implementation::OpenGLFunctionLoader loader; + + /* GL_ANGLE_framebuffer_blit */ + flextglBlitFramebufferANGLE = reinterpret_cast(loader.load("glBlitFramebufferANGLE")); + + /* GL_ANGLE_framebuffer_multisample */ + flextglRenderbufferStorageMultisampleANGLE = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleANGLE")); + + /* GL_ANGLE_instanced_arrays */ + flextglDrawArraysInstancedANGLE = reinterpret_cast(loader.load("glDrawArraysInstancedANGLE")); + flextglDrawElementsInstancedANGLE = reinterpret_cast(loader.load("glDrawElementsInstancedANGLE")); + flextglVertexAttribDivisorANGLE = reinterpret_cast(loader.load("glVertexAttribDivisorANGLE")); + + /* GL_ANGLE_depth_texture */ + + /* GL_APPLE_framebuffer_multisample */ + flextglRenderbufferStorageMultisampleAPPLE = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleAPPLE")); + flextglResolveMultisampleFramebufferAPPLE = reinterpret_cast(loader.load("glResolveMultisampleFramebufferAPPLE")); + + /* GL_APPLE_texture_max_level */ + + /* GL_ARM_rgba8 */ + + /* GL_EXT_texture_type_2_10_10_10_REV */ + + /* GL_EXT_discard_framebuffer */ + flextglDiscardFramebufferEXT = reinterpret_cast(loader.load("glDiscardFramebufferEXT")); + + /* GL_EXT_blend_minmax */ + flextglBlendEquationEXT = reinterpret_cast(loader.load("glBlendEquationEXT")); + + /* GL_EXT_shader_texture_lod */ + + /* GL_EXT_occlusion_query_boolean */ + flextglGenQueriesEXT = reinterpret_cast(loader.load("glGenQueriesEXT")); + flextglDeleteQueriesEXT = reinterpret_cast(loader.load("glDeleteQueriesEXT")); + flextglIsQueryEXT = reinterpret_cast(loader.load("glIsQueryEXT")); + flextglBeginQueryEXT = reinterpret_cast(loader.load("glBeginQueryEXT")); + flextglEndQueryEXT = reinterpret_cast(loader.load("glEndQueryEXT")); + flextglGetQueryivEXT = reinterpret_cast(loader.load("glGetQueryivEXT")); + flextglGetQueryObjectuivEXT = reinterpret_cast(loader.load("glGetQueryObjectuivEXT")); + + /* GL_EXT_shadow_samplers */ + + /* GL_EXT_texture_rg */ + + /* GL_EXT_texture_storage */ + flextglTexStorage1DEXT = reinterpret_cast(loader.load("glTexStorage1DEXT")); + flextglTexStorage2DEXT = reinterpret_cast(loader.load("glTexStorage2DEXT")); + flextglTexStorage3DEXT = reinterpret_cast(loader.load("glTexStorage3DEXT")); + flextglTextureStorage1DEXT = reinterpret_cast(loader.load("glTextureStorage1DEXT")); + flextglTextureStorage2DEXT = reinterpret_cast(loader.load("glTextureStorage2DEXT")); + flextglTextureStorage3DEXT = reinterpret_cast(loader.load("glTextureStorage3DEXT")); + + /* GL_EXT_map_buffer_range */ + flextglMapBufferRangeEXT = reinterpret_cast(loader.load("glMapBufferRangeEXT")); + flextglFlushMappedBufferRangeEXT = reinterpret_cast(loader.load("glFlushMappedBufferRangeEXT")); + + /* GL_EXT_instanced_arrays */ + flextglDrawArraysInstancedEXT = reinterpret_cast(loader.load("glDrawArraysInstancedEXT")); + flextglDrawElementsInstancedEXT = reinterpret_cast(loader.load("glDrawElementsInstancedEXT")); + flextglVertexAttribDivisorEXT = reinterpret_cast(loader.load("glVertexAttribDivisorEXT")); + + /* GL_EXT_draw_instanced */ + + /* GL_NV_draw_buffers */ + flextglDrawBuffersNV = reinterpret_cast(loader.load("glDrawBuffersNV")); + + /* GL_NV_fbo_color_attachments */ + + /* GL_NV_read_buffer */ + flextglReadBufferNV = reinterpret_cast(loader.load("glReadBufferNV")); + + /* GL_NV_draw_instanced */ + flextglDrawArraysInstancedNV = reinterpret_cast(loader.load("glDrawArraysInstancedNV")); + flextglDrawElementsInstancedNV = reinterpret_cast(loader.load("glDrawElementsInstancedNV")); + + /* GL_NV_framebuffer_blit */ + flextglBlitFramebufferNV = reinterpret_cast(loader.load("glBlitFramebufferNV")); + + /* GL_NV_framebuffer_multisample */ + flextglRenderbufferStorageMultisampleNV = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleNV")); + + /* GL_NV_instanced_arrays */ + flextglVertexAttribDivisorNV = reinterpret_cast(loader.load("glVertexAttribDivisorNV")); + + /* GL_NV_shadow_samplers_array */ + + /* GL_NV_shadow_samplers_cube */ + + /* GL_OES_depth24 */ + + /* GL_OES_element_index_uint */ + + /* GL_OES_rgb8_rgba8 */ + + /* GL_OES_texture_3D */ + flextglTexImage3DOES = reinterpret_cast(loader.load("glTexImage3DOES")); + flextglTexSubImage3DOES = reinterpret_cast(loader.load("glTexSubImage3DOES")); + flextglCopyTexSubImage3DOES = reinterpret_cast(loader.load("glCopyTexSubImage3DOES")); + flextglCompressedTexImage3DOES = reinterpret_cast(loader.load("glCompressedTexImage3DOES")); + flextglCompressedTexSubImage3DOES = reinterpret_cast(loader.load("glCompressedTexSubImage3DOES")); + flextglFramebufferTexture3DOES = reinterpret_cast(loader.load("glFramebufferTexture3DOES")); + + /* GL_OES_texture_half_float_linear */ + + /* GL_OES_texture_float_linear */ + + /* GL_OES_texture_half_float */ + + /* GL_OES_texture_float */ + + /* GL_OES_vertex_half_float */ + + /* GL_OES_packed_depth_stencil */ + + /* GL_OES_depth_texture */ + + /* GL_OES_standard_derivatives */ + + /* GL_OES_vertex_array_object */ + flextglBindVertexArrayOES = reinterpret_cast(loader.load("glBindVertexArrayOES")); + flextglDeleteVertexArraysOES = reinterpret_cast(loader.load("glDeleteVertexArraysOES")); + flextglGenVertexArraysOES = reinterpret_cast(loader.load("glGenVertexArraysOES")); + flextglIsVertexArrayOES = reinterpret_cast(loader.load("glIsVertexArrayOES")); + + /* GL_OES_required_internalformat */ + + /* GL_OES_surfaceless_context */ + + /* GL_APPLE_texture_format_BGRA8888 */ + + /* GL_EXT_texture_filter_anisotropic */ + + /* GL_EXT_texture_format_BGRA8888 */ + + /* GL_EXT_read_format_bgra */ + + /* GL_EXT_multi_draw_arrays */ + flextglMultiDrawArraysEXT = reinterpret_cast(loader.load("glMultiDrawArraysEXT")); + flextglMultiDrawElementsEXT = reinterpret_cast(loader.load("glMultiDrawElementsEXT")); + + /* GL_EXT_debug_label */ + flextglLabelObjectEXT = reinterpret_cast(loader.load("glLabelObjectEXT")); + flextglGetObjectLabelEXT = reinterpret_cast(loader.load("glGetObjectLabelEXT")); + + /* GL_EXT_debug_marker */ + flextglInsertEventMarkerEXT = reinterpret_cast(loader.load("glInsertEventMarkerEXT")); + flextglPushGroupMarkerEXT = reinterpret_cast(loader.load("glPushGroupMarkerEXT")); + flextglPopGroupMarkerEXT = reinterpret_cast(loader.load("glPopGroupMarkerEXT")); + + /* GL_EXT_disjoint_timer_query */ + flextglQueryCounterEXT = reinterpret_cast(loader.load("glQueryCounterEXT")); + flextglGetQueryObjectivEXT = reinterpret_cast(loader.load("glGetQueryObjectivEXT")); + flextglGetQueryObjecti64vEXT = reinterpret_cast(loader.load("glGetQueryObjecti64vEXT")); + flextglGetQueryObjectui64vEXT = reinterpret_cast(loader.load("glGetQueryObjectui64vEXT")); + + /* GL_EXT_texture_sRGB_decode */ + + /* GL_EXT_separate_shader_objects */ + flextglUseShaderProgramEXT = reinterpret_cast(loader.load("glUseShaderProgramEXT")); + flextglActiveProgramEXT = reinterpret_cast(loader.load("glActiveProgramEXT")); + flextglCreateShaderProgramEXT = reinterpret_cast(loader.load("glCreateShaderProgramEXT")); + flextglActiveShaderProgramEXT = reinterpret_cast(loader.load("glActiveShaderProgramEXT")); + flextglBindProgramPipelineEXT = reinterpret_cast(loader.load("glBindProgramPipelineEXT")); + flextglCreateShaderProgramvEXT = reinterpret_cast(loader.load("glCreateShaderProgramvEXT")); + flextglDeleteProgramPipelinesEXT = reinterpret_cast(loader.load("glDeleteProgramPipelinesEXT")); + flextglGenProgramPipelinesEXT = reinterpret_cast(loader.load("glGenProgramPipelinesEXT")); + flextglGetProgramPipelineInfoLogEXT = reinterpret_cast(loader.load("glGetProgramPipelineInfoLogEXT")); + flextglGetProgramPipelineivEXT = reinterpret_cast(loader.load("glGetProgramPipelineivEXT")); + flextglIsProgramPipelineEXT = reinterpret_cast(loader.load("glIsProgramPipelineEXT")); + flextglProgramParameteriEXT = reinterpret_cast(loader.load("glProgramParameteriEXT")); + flextglProgramUniform1fEXT = reinterpret_cast(loader.load("glProgramUniform1fEXT")); + flextglProgramUniform1fvEXT = reinterpret_cast(loader.load("glProgramUniform1fvEXT")); + flextglProgramUniform1iEXT = reinterpret_cast(loader.load("glProgramUniform1iEXT")); + flextglProgramUniform1ivEXT = reinterpret_cast(loader.load("glProgramUniform1ivEXT")); + flextglProgramUniform2fEXT = reinterpret_cast(loader.load("glProgramUniform2fEXT")); + flextglProgramUniform2fvEXT = reinterpret_cast(loader.load("glProgramUniform2fvEXT")); + flextglProgramUniform2iEXT = reinterpret_cast(loader.load("glProgramUniform2iEXT")); + flextglProgramUniform2ivEXT = reinterpret_cast(loader.load("glProgramUniform2ivEXT")); + flextglProgramUniform3fEXT = reinterpret_cast(loader.load("glProgramUniform3fEXT")); + flextglProgramUniform3fvEXT = reinterpret_cast(loader.load("glProgramUniform3fvEXT")); + flextglProgramUniform3iEXT = reinterpret_cast(loader.load("glProgramUniform3iEXT")); + flextglProgramUniform3ivEXT = reinterpret_cast(loader.load("glProgramUniform3ivEXT")); + flextglProgramUniform4fEXT = reinterpret_cast(loader.load("glProgramUniform4fEXT")); + flextglProgramUniform4fvEXT = reinterpret_cast(loader.load("glProgramUniform4fvEXT")); + flextglProgramUniform4iEXT = reinterpret_cast(loader.load("glProgramUniform4iEXT")); + flextglProgramUniform4ivEXT = reinterpret_cast(loader.load("glProgramUniform4ivEXT")); + flextglProgramUniformMatrix2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2fvEXT")); + flextglProgramUniformMatrix3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3fvEXT")); + flextglProgramUniformMatrix4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4fvEXT")); + flextglUseProgramStagesEXT = reinterpret_cast(loader.load("glUseProgramStagesEXT")); + flextglValidateProgramPipelineEXT = reinterpret_cast(loader.load("glValidateProgramPipelineEXT")); + flextglProgramUniform1uiEXT = reinterpret_cast(loader.load("glProgramUniform1uiEXT")); + flextglProgramUniform2uiEXT = reinterpret_cast(loader.load("glProgramUniform2uiEXT")); + flextglProgramUniform3uiEXT = reinterpret_cast(loader.load("glProgramUniform3uiEXT")); + flextglProgramUniform4uiEXT = reinterpret_cast(loader.load("glProgramUniform4uiEXT")); + flextglProgramUniform1uivEXT = reinterpret_cast(loader.load("glProgramUniform1uivEXT")); + flextglProgramUniform2uivEXT = reinterpret_cast(loader.load("glProgramUniform2uivEXT")); + flextglProgramUniform3uivEXT = reinterpret_cast(loader.load("glProgramUniform3uivEXT")); + flextglProgramUniform4uivEXT = reinterpret_cast(loader.load("glProgramUniform4uivEXT")); + flextglProgramUniformMatrix2x3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2x3fvEXT")); + flextglProgramUniformMatrix3x2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3x2fvEXT")); + flextglProgramUniformMatrix2x4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2x4fvEXT")); + flextglProgramUniformMatrix4x2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4x2fvEXT")); + flextglProgramUniformMatrix3x4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3x4fvEXT")); + flextglProgramUniformMatrix4x3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4x3fvEXT")); + + /* GL_EXT_sRGB */ + + /* GL_EXT_multisampled_render_to_texture */ + flextglRenderbufferStorageMultisampleEXT = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleEXT")); + flextglFramebufferTexture2DMultisampleEXT = reinterpret_cast(loader.load("glFramebufferTexture2DMultisampleEXT")); + + /* GL_EXT_robustness */ + flextglGetGraphicsResetStatusEXT = reinterpret_cast(loader.load("glGetGraphicsResetStatusEXT")); + flextglReadnPixelsEXT = reinterpret_cast(loader.load("glReadnPixelsEXT")); + flextglGetnUniformfvEXT = reinterpret_cast(loader.load("glGetnUniformfvEXT")); + flextglGetnUniformivEXT = reinterpret_cast(loader.load("glGetnUniformivEXT")); + + /* GL_KHR_debug */ + flextglDebugMessageControl = reinterpret_cast(loader.load("glDebugMessageControl")); + flextglDebugMessageInsert = reinterpret_cast(loader.load("glDebugMessageInsert")); + flextglDebugMessageCallback = reinterpret_cast(loader.load("glDebugMessageCallback")); + flextglGetDebugMessageLog = reinterpret_cast(loader.load("glGetDebugMessageLog")); + flextglPushDebugGroup = reinterpret_cast(loader.load("glPushDebugGroup")); + flextglPopDebugGroup = reinterpret_cast(loader.load("glPopDebugGroup")); + flextglObjectLabel = reinterpret_cast(loader.load("glObjectLabel")); + flextglGetObjectLabel = reinterpret_cast(loader.load("glGetObjectLabel")); + flextglObjectPtrLabel = reinterpret_cast(loader.load("glObjectPtrLabel")); + flextglGetObjectPtrLabel = reinterpret_cast(loader.load("glGetObjectPtrLabel")); + flextglGetPointerv = reinterpret_cast(loader.load("glGetPointerv")); + flextglDebugMessageControlKHR = reinterpret_cast(loader.load("glDebugMessageControlKHR")); + flextglDebugMessageInsertKHR = reinterpret_cast(loader.load("glDebugMessageInsertKHR")); + flextglDebugMessageCallbackKHR = reinterpret_cast(loader.load("glDebugMessageCallbackKHR")); + flextglGetDebugMessageLogKHR = reinterpret_cast(loader.load("glGetDebugMessageLogKHR")); + flextglPushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); + flextglPopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); + flextglObjectLabelKHR = reinterpret_cast(loader.load("glObjectLabelKHR")); + flextglGetObjectLabelKHR = reinterpret_cast(loader.load("glGetObjectLabelKHR")); + flextglObjectPtrLabelKHR = reinterpret_cast(loader.load("glObjectPtrLabelKHR")); + flextglGetObjectPtrLabelKHR = reinterpret_cast(loader.load("glGetObjectPtrLabelKHR")); + flextglGetPointervKHR = reinterpret_cast(loader.load("glGetPointervKHR")); + + /* GL_NV_read_buffer_front */ + + /* GL_NV_read_depth */ + + /* GL_NV_read_stencil */ + + /* GL_NV_read_depth_stencil */ + + /* GL_NV_texture_border_clamp */ + + /* GL_OES_depth32 */ + + /* GL_OES_mapbuffer */ + flextglMapBufferOES = reinterpret_cast(loader.load("glMapBufferOES")); + flextglUnmapBufferOES = reinterpret_cast(loader.load("glUnmapBufferOES")); + flextglGetBufferPointervOES = reinterpret_cast(loader.load("glGetBufferPointervOES")); + + /* GL_OES_stencil1 */ + + /* GL_OES_stencil4 */ +} diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp.template b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp.template new file mode 100644 index 000000000..37e72476a --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp.template @@ -0,0 +1,21 @@ +@require(passthru, functions, enums, options, version, extensions) +#include "flextGL.h" + +#include +#include + +#include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" + +void flextGLInit() { + Magnum::Platform::Implementation::OpenGLFunctionLoader loader; + @for category,funcs in functions: + @if category not in ['ES_VERSION_2_0']: + + /* GL_@category */ + @for f in funcs: + flextgl@f.name = reinterpret_cast<@f.returntype\ +(APIENTRY*)(@f.param_type_list_string())>(loader.load("gl@f.name")); + @end + @end + @end +} diff --git a/src/MagnumExternal/OpenGL/GLES2/gl2.h b/src/MagnumExternal/OpenGL/GLES2/gl2.h deleted file mode 100644 index f6bed7d1b..000000000 --- a/src/MagnumExternal/OpenGL/GLES2/gl2.h +++ /dev/null @@ -1,523 +0,0 @@ -#ifndef __gl2_h_ -#define __gl2_h_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2013 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* -** This header is generated from the Khronos OpenGL / OpenGL ES XML -** API Registry. The current version of the Registry, generator scripts -** used to make the header, and the header can be found at -** http://www.opengl.org/registry/ -** -** Khronos $Revision$ on $Date$ -*/ - -#include - -/* Generated C header for: - * API: gles2 - * Profile: common - * Versions considered: 2\.[0-9] - * Versions emitted: .* - * Default extensions included: None - * Additional extensions included: _nomatch_^ - * Extensions removed: _nomatch_^ - */ - -#ifndef GL_ES_VERSION_2_0 -#define GL_ES_VERSION_2_0 1 -#include -typedef khronos_int8_t GLbyte; -typedef khronos_float_t GLclampf; -typedef khronos_int32_t GLfixed; -typedef short GLshort; -typedef unsigned short GLushort; -typedef void GLvoid; -typedef struct __GLsync *GLsync; -typedef khronos_int64_t GLint64; -typedef khronos_uint64_t GLuint64; -typedef unsigned int GLenum; -typedef unsigned int GLuint; -typedef char GLchar; -typedef khronos_float_t GLfloat; -typedef khronos_ssize_t GLsizeiptr; -typedef khronos_intptr_t GLintptr; -typedef unsigned int GLbitfield; -typedef int GLint; -typedef unsigned char GLboolean; -typedef int GLsizei; -typedef khronos_uint8_t GLubyte; -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_FALSE 0 -#define GL_TRUE 1 -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_FUNC_ADD 0x8006 -#define GL_BLEND_EQUATION 0x8009 -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_STREAM_DRAW 0x88E0 -#define GL_STATIC_DRAW 0x88E4 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_CULL_FACE 0x0B44 -#define GL_BLEND 0x0BE2 -#define GL_DITHER 0x0BD0 -#define GL_STENCIL_TEST 0x0B90 -#define GL_DEPTH_TEST 0x0B71 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_LINE_WIDTH 0x0B21 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_FIXED 0x140C -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_SHADER_TYPE 0x8B4F -#define GL_DELETE_STATUS 0x8B80 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_INVERT 0x150A -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TEXTURE 0x1702 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_REPEAT 0x2901 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_COMPILE_STATUS 0x8B81 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGB565 0x8D62 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_NONE 0 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); -GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); -GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); -GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); -GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); -GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); -GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); -GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); -GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); -GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); -GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); -GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); -GL_APICALL void GL_APIENTRY glClearStencil (GLint s); -GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); -GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); -GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); -GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); -GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); -GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); -GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); -GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); -GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); -GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); -GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); -GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); -GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); -GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glDisable (GLenum cap); -GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); -GL_APICALL void GL_APIENTRY glEnable (GLenum cap); -GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glFinish (void); -GL_APICALL void GL_APIENTRY glFlush (void); -GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); -GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); -GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); -GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); -GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); -GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); -GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); -GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params); -GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); -GL_APICALL GLenum GL_APIENTRY glGetError (void); -GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); -GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); -GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); -GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); -GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); -GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); -GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); -GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); -GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); -GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); -GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); -GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); -GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); -GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); -GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); -GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); -GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); -GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); -GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); -GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); -GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); -GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); -GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); -GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); -GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); -GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); -GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); -GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); -#endif /* GL_ES_VERSION_2_0 */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/gl2ext.h b/src/MagnumExternal/OpenGL/GLES2/gl2ext.h deleted file mode 100644 index 790fd3a31..000000000 --- a/src/MagnumExternal/OpenGL/GLES2/gl2ext.h +++ /dev/null @@ -1,1558 +0,0 @@ -#ifndef __gl2ext_h_ -#define __gl2ext_h_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2013 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* -** This header is generated from the Khronos OpenGL / OpenGL ES XML -** API Registry. The current version of the Registry, generator scripts -** used to make the header, and the header can be found at -** http://www.opengl.org/registry/ -** -** Khronos $Revision$ on $Date$ -*/ - -#ifndef GL_APIENTRYP -#define GL_APIENTRYP GL_APIENTRY* -#endif - -/* Generated C header for: - * API: gles2 - * Profile: common - * Versions considered: 2\.[0-9] - * Versions emitted: _nomatch_^ - * Default extensions included: gles2 - * Additional extensions included: _nomatch_^ - * Extensions removed: _nomatch_^ - */ - -#ifndef GL_KHR_debug -#define GL_KHR_debug 1 -typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -#define GL_SAMPLER 0x82E6 -#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 -#define GL_DEBUG_SOURCE_API_KHR 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A -#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B -#define GL_DEBUG_TYPE_ERROR_KHR 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E -#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 -#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 -#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 -#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 -#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A -#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B -#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C -#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D -#define GL_BUFFER_KHR 0x82E0 -#define GL_SHADER_KHR 0x82E1 -#define GL_PROGRAM_KHR 0x82E2 -#define GL_VERTEX_ARRAY_KHR 0x8074 -#define GL_QUERY_KHR 0x82E3 -#define GL_SAMPLER_KHR 0x82E6 -#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 -#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 -#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 -#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 -#define GL_DEBUG_OUTPUT_KHR 0x92E0 -#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 -#define GL_STACK_OVERFLOW_KHR 0x0503 -#define GL_STACK_UNDERFLOW_KHR 0x0504 -typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); -typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); -typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); -typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); -GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); -GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); -GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); -GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); -#endif -#endif /* GL_KHR_debug */ - -#ifndef GL_KHR_texture_compression_astc_hdr -#define GL_KHR_texture_compression_astc_hdr 1 -#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 -#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 -#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 -#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 -#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 -#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 -#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 -#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 -#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 -#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 -#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA -#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB -#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC -#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD -#endif /* GL_KHR_texture_compression_astc_hdr */ - -#ifndef GL_KHR_texture_compression_astc_ldr -#define GL_KHR_texture_compression_astc_ldr 1 -#endif /* GL_KHR_texture_compression_astc_ldr */ - -#ifndef GL_OES_EGL_image -#define GL_OES_EGL_image 1 -typedef void *GLeglImageOES; -typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); -typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); -GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); -#endif -#endif /* GL_OES_EGL_image */ - -#ifndef GL_OES_EGL_image_external -#define GL_OES_EGL_image_external 1 -#define GL_TEXTURE_EXTERNAL_OES 0x8D65 -#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 -#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 -#define GL_SAMPLER_EXTERNAL_OES 0x8D66 -#endif /* GL_OES_EGL_image_external */ - -#ifndef GL_OES_compressed_ETC1_RGB8_texture -#define GL_OES_compressed_ETC1_RGB8_texture 1 -#define GL_ETC1_RGB8_OES 0x8D64 -#endif /* GL_OES_compressed_ETC1_RGB8_texture */ - -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 -#endif /* GL_OES_compressed_paletted_texture */ - -#ifndef GL_OES_depth24 -#define GL_OES_depth24 1 -#define GL_DEPTH_COMPONENT24_OES 0x81A6 -#endif /* GL_OES_depth24 */ - -#ifndef GL_OES_depth32 -#define GL_OES_depth32 1 -#define GL_DEPTH_COMPONENT32_OES 0x81A7 -#endif /* GL_OES_depth32 */ - -#ifndef GL_OES_depth_texture -#define GL_OES_depth_texture 1 -#endif /* GL_OES_depth_texture */ - -#ifndef GL_OES_element_index_uint -#define GL_OES_element_index_uint 1 -#endif /* GL_OES_element_index_uint */ - -#ifndef GL_OES_fbo_render_mipmap -#define GL_OES_fbo_render_mipmap 1 -#endif /* GL_OES_fbo_render_mipmap */ - -#ifndef GL_OES_fragment_precision_high -#define GL_OES_fragment_precision_high 1 -#endif /* GL_OES_fragment_precision_high */ - -#ifndef GL_OES_get_program_binary -#define GL_OES_get_program_binary 1 -#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE -#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF -typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); -typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); -GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); -#endif -#endif /* GL_OES_get_program_binary */ - -#ifndef GL_OES_mapbuffer -#define GL_OES_mapbuffer 1 -#define GL_WRITE_ONLY_OES 0x88B9 -#define GL_BUFFER_ACCESS_OES 0x88BB -#define GL_BUFFER_MAPPED_OES 0x88BC -#define GL_BUFFER_MAP_POINTER_OES 0x88BD -typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); -typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); -typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); -GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); -GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); -#endif -#endif /* GL_OES_mapbuffer */ - -#ifndef GL_OES_packed_depth_stencil -#define GL_OES_packed_depth_stencil 1 -#define GL_DEPTH_STENCIL_OES 0x84F9 -#define GL_UNSIGNED_INT_24_8_OES 0x84FA -#define GL_DEPTH24_STENCIL8_OES 0x88F0 -#endif /* GL_OES_packed_depth_stencil */ - -#ifndef GL_OES_required_internalformat -#define GL_OES_required_internalformat 1 -#define GL_ALPHA8_OES 0x803C -#define GL_DEPTH_COMPONENT16_OES 0x81A5 -#define GL_LUMINANCE4_ALPHA4_OES 0x8043 -#define GL_LUMINANCE8_ALPHA8_OES 0x8045 -#define GL_LUMINANCE8_OES 0x8040 -#define GL_RGBA4_OES 0x8056 -#define GL_RGB5_A1_OES 0x8057 -#define GL_RGB565_OES 0x8D62 -#define GL_RGB8_OES 0x8051 -#define GL_RGBA8_OES 0x8058 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB10_A2_EXT 0x8059 -#endif /* GL_OES_required_internalformat */ - -#ifndef GL_OES_rgb8_rgba8 -#define GL_OES_rgb8_rgba8 1 -#endif /* GL_OES_rgb8_rgba8 */ - -#ifndef GL_OES_standard_derivatives -#define GL_OES_standard_derivatives 1 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B -#endif /* GL_OES_standard_derivatives */ - -#ifndef GL_OES_stencil1 -#define GL_OES_stencil1 1 -#define GL_STENCIL_INDEX1_OES 0x8D46 -#endif /* GL_OES_stencil1 */ - -#ifndef GL_OES_stencil4 -#define GL_OES_stencil4 1 -#define GL_STENCIL_INDEX4_OES 0x8D47 -#endif /* GL_OES_stencil4 */ - -#ifndef GL_OES_surfaceless_context -#define GL_OES_surfaceless_context 1 -#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 -#endif /* GL_OES_surfaceless_context */ - -#ifndef GL_OES_texture_3D -#define GL_OES_texture_3D 1 -#define GL_TEXTURE_WRAP_R_OES 0x8072 -#define GL_TEXTURE_3D_OES 0x806F -#define GL_TEXTURE_BINDING_3D_OES 0x806A -#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 -#define GL_SAMPLER_3D_OES 0x8B5F -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 -typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); -typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); -typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); -typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -#endif -#endif /* GL_OES_texture_3D */ - -#ifndef GL_OES_texture_compression_astc -#define GL_OES_texture_compression_astc 1 -#endif /* GL_OES_texture_compression_astc */ - -#ifndef GL_OES_texture_float -#define GL_OES_texture_float 1 -#endif /* GL_OES_texture_float */ - -#ifndef GL_OES_texture_float_linear -#define GL_OES_texture_float_linear 1 -#endif /* GL_OES_texture_float_linear */ - -#ifndef GL_OES_texture_half_float -#define GL_OES_texture_half_float 1 -#define GL_HALF_FLOAT_OES 0x8D61 -#endif /* GL_OES_texture_half_float */ - -#ifndef GL_OES_texture_half_float_linear -#define GL_OES_texture_half_float_linear 1 -#endif /* GL_OES_texture_half_float_linear */ - -#ifndef GL_OES_texture_npot -#define GL_OES_texture_npot 1 -#endif /* GL_OES_texture_npot */ - -#ifndef GL_OES_vertex_array_object -#define GL_OES_vertex_array_object 1 -#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 -typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); -typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); -typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); -GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); -GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); -GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); -#endif -#endif /* GL_OES_vertex_array_object */ - -#ifndef GL_OES_vertex_half_float -#define GL_OES_vertex_half_float 1 -#endif /* GL_OES_vertex_half_float */ - -#ifndef GL_OES_vertex_type_10_10_10_2 -#define GL_OES_vertex_type_10_10_10_2 1 -#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 -#define GL_INT_10_10_10_2_OES 0x8DF7 -#endif /* GL_OES_vertex_type_10_10_10_2 */ - -#ifndef GL_AMD_compressed_3DC_texture -#define GL_AMD_compressed_3DC_texture 1 -#define GL_3DC_X_AMD 0x87F9 -#define GL_3DC_XY_AMD 0x87FA -#endif /* GL_AMD_compressed_3DC_texture */ - -#ifndef GL_AMD_compressed_ATC_texture -#define GL_AMD_compressed_ATC_texture 1 -#define GL_ATC_RGB_AMD 0x8C92 -#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 -#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE -#endif /* GL_AMD_compressed_ATC_texture */ - -#ifndef GL_AMD_performance_monitor -#define GL_AMD_performance_monitor 1 -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); -typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); -typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); -GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); -GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); -GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); -GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); -GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); -#endif -#endif /* GL_AMD_performance_monitor */ - -#ifndef GL_AMD_program_binary_Z400 -#define GL_AMD_program_binary_Z400 1 -#define GL_Z400_BINARY_AMD 0x8740 -#endif /* GL_AMD_program_binary_Z400 */ - -#ifndef GL_ANGLE_depth_texture -#define GL_ANGLE_depth_texture 1 -#endif /* GL_ANGLE_depth_texture */ - -#ifndef GL_ANGLE_framebuffer_blit -#define GL_ANGLE_framebuffer_blit 1 -#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA -typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif -#endif /* GL_ANGLE_framebuffer_blit */ - -#ifndef GL_ANGLE_framebuffer_multisample -#define GL_ANGLE_framebuffer_multisample 1 -#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 -#define GL_MAX_SAMPLES_ANGLE 0x8D57 -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif -#endif /* GL_ANGLE_framebuffer_multisample */ - -#ifndef GL_ANGLE_instanced_arrays -#define GL_ANGLE_instanced_arrays 1 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE -typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); -#endif -#endif /* GL_ANGLE_instanced_arrays */ - -#ifndef GL_ANGLE_pack_reverse_row_order -#define GL_ANGLE_pack_reverse_row_order 1 -#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 -#endif /* GL_ANGLE_pack_reverse_row_order */ - -#ifndef GL_ANGLE_program_binary -#define GL_ANGLE_program_binary 1 -#define GL_PROGRAM_BINARY_ANGLE 0x93A6 -#endif /* GL_ANGLE_program_binary */ - -#ifndef GL_ANGLE_texture_compression_dxt3 -#define GL_ANGLE_texture_compression_dxt3 1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 -#endif /* GL_ANGLE_texture_compression_dxt3 */ - -#ifndef GL_ANGLE_texture_compression_dxt5 -#define GL_ANGLE_texture_compression_dxt5 1 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 -#endif /* GL_ANGLE_texture_compression_dxt5 */ - -#ifndef GL_ANGLE_texture_usage -#define GL_ANGLE_texture_usage 1 -#define GL_TEXTURE_USAGE_ANGLE 0x93A2 -#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 -#endif /* GL_ANGLE_texture_usage */ - -#ifndef GL_ANGLE_translated_shader_source -#define GL_ANGLE_translated_shader_source 1 -#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 -typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); -#endif -#endif /* GL_ANGLE_translated_shader_source */ - -#ifndef GL_APPLE_copy_texture_levels -#define GL_APPLE_copy_texture_levels 1 -typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); -#endif -#endif /* GL_APPLE_copy_texture_levels */ - -#ifndef GL_APPLE_framebuffer_multisample -#define GL_APPLE_framebuffer_multisample 1 -#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 -#define GL_MAX_SAMPLES_APPLE 0x8D57 -#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); -#endif -#endif /* GL_APPLE_framebuffer_multisample */ - -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 -#define GL_RGB_422_APPLE 0x8A1F -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#define GL_RGB_RAW_422_APPLE 0x8A51 -#endif /* GL_APPLE_rgb_422 */ - -#ifndef GL_APPLE_sync -#define GL_APPLE_sync 1 -#define GL_SYNC_OBJECT_APPLE 0x8A53 -#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 -#define GL_OBJECT_TYPE_APPLE 0x9112 -#define GL_SYNC_CONDITION_APPLE 0x9113 -#define GL_SYNC_STATUS_APPLE 0x9114 -#define GL_SYNC_FLAGS_APPLE 0x9115 -#define GL_SYNC_FENCE_APPLE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 -#define GL_UNSIGNALED_APPLE 0x9118 -#define GL_SIGNALED_APPLE 0x9119 -#define GL_ALREADY_SIGNALED_APPLE 0x911A -#define GL_TIMEOUT_EXPIRED_APPLE 0x911B -#define GL_CONDITION_SATISFIED_APPLE 0x911C -#define GL_WAIT_FAILED_APPLE 0x911D -#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 -#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull -typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); -typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); -typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); -typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); -typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); -GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); -GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); -GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); -GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -#endif -#endif /* GL_APPLE_sync */ - -#ifndef GL_APPLE_texture_format_BGRA8888 -#define GL_APPLE_texture_format_BGRA8888 1 -#define GL_BGRA_EXT 0x80E1 -#define GL_BGRA8_EXT 0x93A1 -#endif /* GL_APPLE_texture_format_BGRA8888 */ - -#ifndef GL_APPLE_texture_max_level -#define GL_APPLE_texture_max_level 1 -#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D -#endif /* GL_APPLE_texture_max_level */ - -#ifndef GL_ARM_mali_program_binary -#define GL_ARM_mali_program_binary 1 -#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 -#endif /* GL_ARM_mali_program_binary */ - -#ifndef GL_ARM_mali_shader_binary -#define GL_ARM_mali_shader_binary 1 -#define GL_MALI_SHADER_BINARY_ARM 0x8F60 -#endif /* GL_ARM_mali_shader_binary */ - -#ifndef GL_ARM_rgba8 -#define GL_ARM_rgba8 1 -#endif /* GL_ARM_rgba8 */ - -#ifndef GL_DMP_shader_binary -#define GL_DMP_shader_binary 1 -#define GL_SHADER_BINARY_DMP 0x9250 -#endif /* GL_DMP_shader_binary */ - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#endif /* GL_EXT_blend_minmax */ - -#ifndef GL_EXT_color_buffer_half_float -#define GL_EXT_color_buffer_half_float 1 -#define GL_RGBA16F_EXT 0x881A -#define GL_RGB16F_EXT 0x881B -#define GL_RG16F_EXT 0x822F -#define GL_R16F_EXT 0x822D -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 -#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 -#endif /* GL_EXT_color_buffer_half_float */ - -#ifndef GL_EXT_debug_label -#define GL_EXT_debug_label 1 -#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F -#define GL_PROGRAM_OBJECT_EXT 0x8B40 -#define GL_SHADER_OBJECT_EXT 0x8B48 -#define GL_BUFFER_OBJECT_EXT 0x9151 -#define GL_QUERY_OBJECT_EXT 0x9153 -#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 -#define GL_TRANSFORM_FEEDBACK 0x8E22 -typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); -GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); -#endif -#endif /* GL_EXT_debug_label */ - -#ifndef GL_EXT_debug_marker -#define GL_EXT_debug_marker 1 -typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); -typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); -typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); -GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); -GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); -#endif -#endif /* GL_EXT_debug_marker */ - -#ifndef GL_EXT_discard_framebuffer -#define GL_EXT_discard_framebuffer 1 -#define GL_COLOR_EXT 0x1800 -#define GL_DEPTH_EXT 0x1801 -#define GL_STENCIL_EXT 0x1802 -typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); -#endif -#endif /* GL_EXT_discard_framebuffer */ - -#ifndef GL_EXT_disjoint_timer_query -#define GL_EXT_disjoint_timer_query 1 -#define GL_QUERY_COUNTER_BITS_EXT 0x8864 -#define GL_CURRENT_QUERY_EXT 0x8865 -#define GL_QUERY_RESULT_EXT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 -#define GL_TIME_ELAPSED_EXT 0x88BF -#define GL_TIMESTAMP_EXT 0x8E28 -#define GL_GPU_DISJOINT_EXT 0x8FBB -typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); -typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); -typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); -typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); -typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); -typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); -typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); -typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); -GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); -GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); -GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); -GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); -GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); -GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); -GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); -GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); -#endif -#endif /* GL_EXT_disjoint_timer_query */ - -#ifndef GL_EXT_draw_buffers -#define GL_EXT_draw_buffers 1 -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 -#define GL_DRAW_BUFFER0_EXT 0x8825 -#define GL_DRAW_BUFFER1_EXT 0x8826 -#define GL_DRAW_BUFFER2_EXT 0x8827 -#define GL_DRAW_BUFFER3_EXT 0x8828 -#define GL_DRAW_BUFFER4_EXT 0x8829 -#define GL_DRAW_BUFFER5_EXT 0x882A -#define GL_DRAW_BUFFER6_EXT 0x882B -#define GL_DRAW_BUFFER7_EXT 0x882C -#define GL_DRAW_BUFFER8_EXT 0x882D -#define GL_DRAW_BUFFER9_EXT 0x882E -#define GL_DRAW_BUFFER10_EXT 0x882F -#define GL_DRAW_BUFFER11_EXT 0x8830 -#define GL_DRAW_BUFFER12_EXT 0x8831 -#define GL_DRAW_BUFFER13_EXT 0x8832 -#define GL_DRAW_BUFFER14_EXT 0x8833 -#define GL_DRAW_BUFFER15_EXT 0x8834 -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); -#endif -#endif /* GL_EXT_draw_buffers */ - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 -typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -#endif -#endif /* GL_EXT_draw_instanced */ - -#ifndef GL_EXT_instanced_arrays -#define GL_EXT_instanced_arrays 1 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE -typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); -#endif -#endif /* GL_EXT_instanced_arrays */ - -#ifndef GL_EXT_map_buffer_range -#define GL_EXT_map_buffer_range 1 -#define GL_MAP_READ_BIT_EXT 0x0001 -#define GL_MAP_WRITE_BIT_EXT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 -typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); -#endif -#endif /* GL_EXT_map_buffer_range */ - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 -typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); -#endif -#endif /* GL_EXT_multi_draw_arrays */ - -#ifndef GL_EXT_multisampled_render_to_texture -#define GL_EXT_multisampled_render_to_texture 1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); -#endif -#endif /* GL_EXT_multisampled_render_to_texture */ - -#ifndef GL_EXT_multiview_draw_buffers -#define GL_EXT_multiview_draw_buffers 1 -#define GL_COLOR_ATTACHMENT_EXT 0x90F0 -#define GL_MULTIVIEW_EXT 0x90F1 -#define GL_DRAW_BUFFER_EXT 0x0C01 -#define GL_READ_BUFFER_EXT 0x0C02 -#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 -typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); -typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); -typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); -GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); -GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); -#endif -#endif /* GL_EXT_multiview_draw_buffers */ - -#ifndef GL_EXT_occlusion_query_boolean -#define GL_EXT_occlusion_query_boolean 1 -#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A -#endif /* GL_EXT_occlusion_query_boolean */ - -#ifndef GL_EXT_pvrtc_sRGB -#define GL_EXT_pvrtc_sRGB 1 -#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 -#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 -#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 -#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 -#endif /* GL_EXT_pvrtc_sRGB */ - -#ifndef GL_EXT_read_format_bgra -#define GL_EXT_read_format_bgra 1 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 -#endif /* GL_EXT_read_format_bgra */ - -#ifndef GL_EXT_robustness -#define GL_EXT_robustness 1 -#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 -#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 -#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 -#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 -#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 -#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 -#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 -typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); -typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); -typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); -typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); -GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); -GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); -#endif -#endif /* GL_EXT_robustness */ - -#ifndef GL_EXT_sRGB -#define GL_EXT_sRGB 1 -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 -#endif /* GL_EXT_sRGB */ - -#ifndef GL_EXT_sRGB_write_control -#define GL_EXT_sRGB_write_control 1 -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#endif /* GL_EXT_sRGB_write_control */ - -#ifndef GL_EXT_separate_shader_objects -#define GL_EXT_separate_shader_objects 1 -#define GL_ACTIVE_PROGRAM_EXT 0x8259 -#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 -#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF -#define GL_PROGRAM_SEPARABLE_EXT 0x8258 -#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A -typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); -typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); -typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); -typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); -typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); -typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); -typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); -typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); -GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); -GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); -GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); -GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); -GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); -GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); -GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); -GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); -GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); -GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); -GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); -GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); -GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); -GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); -GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); -GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#endif -#endif /* GL_EXT_separate_shader_objects */ - -#ifndef GL_EXT_shader_framebuffer_fetch -#define GL_EXT_shader_framebuffer_fetch 1 -#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 -#endif /* GL_EXT_shader_framebuffer_fetch */ - -#ifndef GL_EXT_shader_integer_mix -#define GL_EXT_shader_integer_mix 1 -#endif /* GL_EXT_shader_integer_mix */ - -#ifndef GL_EXT_shader_texture_lod -#define GL_EXT_shader_texture_lod 1 -#endif /* GL_EXT_shader_texture_lod */ - -#ifndef GL_EXT_shadow_samplers -#define GL_EXT_shadow_samplers 1 -#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C -#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D -#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E -#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 -#endif /* GL_EXT_shadow_samplers */ - -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_EXT_texture_compression_dxt1 1 -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#endif /* GL_EXT_texture_compression_dxt1 */ - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 -#endif /* GL_EXT_texture_compression_s3tc */ - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#endif /* GL_EXT_texture_filter_anisotropic */ - -#ifndef GL_EXT_texture_format_BGRA8888 -#define GL_EXT_texture_format_BGRA8888 1 -#endif /* GL_EXT_texture_format_BGRA8888 */ - -#ifndef GL_EXT_texture_rg -#define GL_EXT_texture_rg 1 -#define GL_RED_EXT 0x1903 -#define GL_RG_EXT 0x8227 -#define GL_R8_EXT 0x8229 -#define GL_RG8_EXT 0x822B -#endif /* GL_EXT_texture_rg */ - -#ifndef GL_EXT_texture_sRGB_decode -#define GL_EXT_texture_sRGB_decode 1 -#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 -#define GL_DECODE_EXT 0x8A49 -#define GL_SKIP_DECODE_EXT 0x8A4A -#endif /* GL_EXT_texture_sRGB_decode */ - -#ifndef GL_EXT_texture_storage -#define GL_EXT_texture_storage 1 -#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F -#define GL_ALPHA8_EXT 0x803C -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_RGBA32F_EXT 0x8814 -#define GL_RGB32F_EXT 0x8815 -#define GL_ALPHA32F_EXT 0x8816 -#define GL_LUMINANCE32F_EXT 0x8818 -#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 -#define GL_ALPHA16F_EXT 0x881C -#define GL_LUMINANCE16F_EXT 0x881E -#define GL_LUMINANCE_ALPHA16F_EXT 0x881F -#define GL_R32F_EXT 0x822E -#define GL_RG32F_EXT 0x8230 -typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#endif -#endif /* GL_EXT_texture_storage */ - -#ifndef GL_EXT_texture_type_2_10_10_10_REV -#define GL_EXT_texture_type_2_10_10_10_REV 1 -#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 -#endif /* GL_EXT_texture_type_2_10_10_10_REV */ - -#ifndef GL_EXT_unpack_subimage -#define GL_EXT_unpack_subimage 1 -#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 -#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 -#endif /* GL_EXT_unpack_subimage */ - -#ifndef GL_FJ_shader_binary_GCCSO -#define GL_FJ_shader_binary_GCCSO 1 -#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 -#endif /* GL_FJ_shader_binary_GCCSO */ - -#ifndef GL_IMG_multisampled_render_to_texture -#define GL_IMG_multisampled_render_to_texture 1 -#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 -#define GL_MAX_SAMPLES_IMG 0x9135 -#define GL_TEXTURE_SAMPLES_IMG 0x9136 -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); -#endif -#endif /* GL_IMG_multisampled_render_to_texture */ - -#ifndef GL_IMG_program_binary -#define GL_IMG_program_binary 1 -#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 -#endif /* GL_IMG_program_binary */ - -#ifndef GL_IMG_read_format -#define GL_IMG_read_format 1 -#define GL_BGRA_IMG 0x80E1 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 -#endif /* GL_IMG_read_format */ - -#ifndef GL_IMG_shader_binary -#define GL_IMG_shader_binary 1 -#define GL_SGX_BINARY_IMG 0x8C0A -#endif /* GL_IMG_shader_binary */ - -#ifndef GL_IMG_texture_compression_pvrtc -#define GL_IMG_texture_compression_pvrtc 1 -#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 -#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 -#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 -#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 -#endif /* GL_IMG_texture_compression_pvrtc */ - -#ifndef GL_IMG_texture_compression_pvrtc2 -#define GL_IMG_texture_compression_pvrtc2 1 -#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 -#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 -#endif /* GL_IMG_texture_compression_pvrtc2 */ - -#ifndef GL_NV_blend_equation_advanced -#define GL_NV_blend_equation_advanced 1 -#define GL_BLEND_OVERLAP_NV 0x9281 -#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 -#define GL_BLUE_NV 0x1905 -#define GL_COLORBURN_NV 0x929A -#define GL_COLORDODGE_NV 0x9299 -#define GL_CONJOINT_NV 0x9284 -#define GL_CONTRAST_NV 0x92A1 -#define GL_DARKEN_NV 0x9297 -#define GL_DIFFERENCE_NV 0x929E -#define GL_DISJOINT_NV 0x9283 -#define GL_DST_ATOP_NV 0x928F -#define GL_DST_IN_NV 0x928B -#define GL_DST_NV 0x9287 -#define GL_DST_OUT_NV 0x928D -#define GL_DST_OVER_NV 0x9289 -#define GL_EXCLUSION_NV 0x92A0 -#define GL_GREEN_NV 0x1904 -#define GL_HARDLIGHT_NV 0x929B -#define GL_HARDMIX_NV 0x92A9 -#define GL_HSL_COLOR_NV 0x92AF -#define GL_HSL_HUE_NV 0x92AD -#define GL_HSL_LUMINOSITY_NV 0x92B0 -#define GL_HSL_SATURATION_NV 0x92AE -#define GL_INVERT_OVG_NV 0x92B4 -#define GL_INVERT_RGB_NV 0x92A3 -#define GL_LIGHTEN_NV 0x9298 -#define GL_LINEARBURN_NV 0x92A5 -#define GL_LINEARDODGE_NV 0x92A4 -#define GL_LINEARLIGHT_NV 0x92A7 -#define GL_MINUS_CLAMPED_NV 0x92B3 -#define GL_MINUS_NV 0x929F -#define GL_MULTIPLY_NV 0x9294 -#define GL_OVERLAY_NV 0x9296 -#define GL_PINLIGHT_NV 0x92A8 -#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 -#define GL_PLUS_CLAMPED_NV 0x92B1 -#define GL_PLUS_DARKER_NV 0x9292 -#define GL_PLUS_NV 0x9291 -#define GL_RED_NV 0x1903 -#define GL_SCREEN_NV 0x9295 -#define GL_SOFTLIGHT_NV 0x929C -#define GL_SRC_ATOP_NV 0x928E -#define GL_SRC_IN_NV 0x928A -#define GL_SRC_NV 0x9286 -#define GL_SRC_OUT_NV 0x928C -#define GL_SRC_OVER_NV 0x9288 -#define GL_UNCORRELATED_NV 0x9282 -#define GL_VIVIDLIGHT_NV 0x92A6 -#define GL_XOR_NV 0x1506 -typedef void (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); -typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); -GL_APICALL void GL_APIENTRY glBlendBarrierNV (void); -#endif -#endif /* GL_NV_blend_equation_advanced */ - -#ifndef GL_NV_blend_equation_advanced_coherent -#define GL_NV_blend_equation_advanced_coherent 1 -#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 -#endif /* GL_NV_blend_equation_advanced_coherent */ - -#ifndef GL_NV_copy_buffer -#define GL_NV_copy_buffer 1 -#define GL_COPY_READ_BUFFER_NV 0x8F36 -#define GL_COPY_WRITE_BUFFER_NV 0x8F37 -typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -#endif -#endif /* GL_NV_copy_buffer */ - -#ifndef GL_NV_coverage_sample -#define GL_NV_coverage_sample 1 -#define GL_COVERAGE_COMPONENT_NV 0x8ED0 -#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 -#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 -#define GL_COVERAGE_BUFFERS_NV 0x8ED3 -#define GL_COVERAGE_SAMPLES_NV 0x8ED4 -#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 -#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 -#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 -#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 -typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); -typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); -GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); -#endif -#endif /* GL_NV_coverage_sample */ - -#ifndef GL_NV_depth_nonlinear -#define GL_NV_depth_nonlinear 1 -#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C -#endif /* GL_NV_depth_nonlinear */ - -#ifndef GL_NV_draw_buffers -#define GL_NV_draw_buffers 1 -#define GL_MAX_DRAW_BUFFERS_NV 0x8824 -#define GL_DRAW_BUFFER0_NV 0x8825 -#define GL_DRAW_BUFFER1_NV 0x8826 -#define GL_DRAW_BUFFER2_NV 0x8827 -#define GL_DRAW_BUFFER3_NV 0x8828 -#define GL_DRAW_BUFFER4_NV 0x8829 -#define GL_DRAW_BUFFER5_NV 0x882A -#define GL_DRAW_BUFFER6_NV 0x882B -#define GL_DRAW_BUFFER7_NV 0x882C -#define GL_DRAW_BUFFER8_NV 0x882D -#define GL_DRAW_BUFFER9_NV 0x882E -#define GL_DRAW_BUFFER10_NV 0x882F -#define GL_DRAW_BUFFER11_NV 0x8830 -#define GL_DRAW_BUFFER12_NV 0x8831 -#define GL_DRAW_BUFFER13_NV 0x8832 -#define GL_DRAW_BUFFER14_NV 0x8833 -#define GL_DRAW_BUFFER15_NV 0x8834 -#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 -#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 -#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 -#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 -#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 -#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 -#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 -#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 -#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 -#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 -#define GL_COLOR_ATTACHMENT10_NV 0x8CEA -#define GL_COLOR_ATTACHMENT11_NV 0x8CEB -#define GL_COLOR_ATTACHMENT12_NV 0x8CEC -#define GL_COLOR_ATTACHMENT13_NV 0x8CED -#define GL_COLOR_ATTACHMENT14_NV 0x8CEE -#define GL_COLOR_ATTACHMENT15_NV 0x8CEF -typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); -#endif -#endif /* GL_NV_draw_buffers */ - -#ifndef GL_NV_draw_instanced -#define GL_NV_draw_instanced 1 -typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -#endif -#endif /* GL_NV_draw_instanced */ - -#ifndef GL_NV_explicit_attrib_location -#define GL_NV_explicit_attrib_location 1 -#endif /* GL_NV_explicit_attrib_location */ - -#ifndef GL_NV_fbo_color_attachments -#define GL_NV_fbo_color_attachments 1 -#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF -#endif /* GL_NV_fbo_color_attachments */ - -#ifndef GL_NV_fence -#define GL_NV_fence 1 -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 -typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); -typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); -typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); -typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); -typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); -GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); -GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); -GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); -GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); -GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition); -#endif -#endif /* GL_NV_fence */ - -#ifndef GL_NV_framebuffer_blit -#define GL_NV_framebuffer_blit 1 -#define GL_READ_FRAMEBUFFER_NV 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA -typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif -#endif /* GL_NV_framebuffer_blit */ - -#ifndef GL_NV_framebuffer_multisample -#define GL_NV_framebuffer_multisample 1 -#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 -#define GL_MAX_SAMPLES_NV 0x8D57 -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif -#endif /* GL_NV_framebuffer_multisample */ - -#ifndef GL_NV_generate_mipmap_sRGB -#define GL_NV_generate_mipmap_sRGB 1 -#endif /* GL_NV_generate_mipmap_sRGB */ - -#ifndef GL_NV_instanced_arrays -#define GL_NV_instanced_arrays 1 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE -typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); -#endif -#endif /* GL_NV_instanced_arrays */ - -#ifndef GL_NV_non_square_matrices -#define GL_NV_non_square_matrices 1 -#define GL_FLOAT_MAT2x3_NV 0x8B65 -#define GL_FLOAT_MAT2x4_NV 0x8B66 -#define GL_FLOAT_MAT3x2_NV 0x8B67 -#define GL_FLOAT_MAT3x4_NV 0x8B68 -#define GL_FLOAT_MAT4x2_NV 0x8B69 -#define GL_FLOAT_MAT4x3_NV 0x8B6A -typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#endif -#endif /* GL_NV_non_square_matrices */ - -#ifndef GL_NV_read_buffer -#define GL_NV_read_buffer 1 -#define GL_READ_BUFFER_NV 0x0C02 -typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); -#endif -#endif /* GL_NV_read_buffer */ - -#ifndef GL_NV_read_buffer_front -#define GL_NV_read_buffer_front 1 -#endif /* GL_NV_read_buffer_front */ - -#ifndef GL_NV_read_depth -#define GL_NV_read_depth 1 -#endif /* GL_NV_read_depth */ - -#ifndef GL_NV_read_depth_stencil -#define GL_NV_read_depth_stencil 1 -#endif /* GL_NV_read_depth_stencil */ - -#ifndef GL_NV_read_stencil -#define GL_NV_read_stencil 1 -#endif /* GL_NV_read_stencil */ - -#ifndef GL_NV_sRGB_formats -#define GL_NV_sRGB_formats 1 -#define GL_SLUMINANCE_NV 0x8C46 -#define GL_SLUMINANCE_ALPHA_NV 0x8C44 -#define GL_SRGB8_NV 0x8C41 -#define GL_SLUMINANCE8_NV 0x8C47 -#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 -#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F -#define GL_ETC1_SRGB8_NV 0x88EE -#endif /* GL_NV_sRGB_formats */ - -#ifndef GL_NV_shadow_samplers_array -#define GL_NV_shadow_samplers_array 1 -#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 -#endif /* GL_NV_shadow_samplers_array */ - -#ifndef GL_NV_shadow_samplers_cube -#define GL_NV_shadow_samplers_cube 1 -#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 -#endif /* GL_NV_shadow_samplers_cube */ - -#ifndef GL_NV_texture_border_clamp -#define GL_NV_texture_border_clamp 1 -#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 -#define GL_CLAMP_TO_BORDER_NV 0x812D -#endif /* GL_NV_texture_border_clamp */ - -#ifndef GL_NV_texture_compression_s3tc_update -#define GL_NV_texture_compression_s3tc_update 1 -#endif /* GL_NV_texture_compression_s3tc_update */ - -#ifndef GL_NV_texture_npot_2D_mipmap -#define GL_NV_texture_npot_2D_mipmap 1 -#endif /* GL_NV_texture_npot_2D_mipmap */ - -#ifndef GL_QCOM_alpha_test -#define GL_QCOM_alpha_test 1 -#define GL_ALPHA_TEST_QCOM 0x0BC0 -#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 -#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 -typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); -#endif -#endif /* GL_QCOM_alpha_test */ - -#ifndef GL_QCOM_binning_control -#define GL_QCOM_binning_control 1 -#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 -#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 -#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 -#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 -#endif /* GL_QCOM_binning_control */ - -#ifndef GL_QCOM_driver_control -#define GL_QCOM_driver_control 1 -typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); -typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); -typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); -typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); -GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); -GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); -GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); -#endif -#endif /* GL_QCOM_driver_control */ - -#ifndef GL_QCOM_extended_get -#define GL_QCOM_extended_get 1 -#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 -#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 -#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 -#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 -#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 -#define GL_TEXTURE_TYPE_QCOM 0x8BD7 -#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 -#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 -#define GL_TEXTURE_TARGET_QCOM 0x8BDA -#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB -#define GL_STATE_RESTORE 0x8BDC -typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); -typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); -typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); -typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); -typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); -typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); -GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); -GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); -GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); -GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); -GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); -#endif -#endif /* GL_QCOM_extended_get */ - -#ifndef GL_QCOM_extended_get2 -#define GL_QCOM_extended_get2 1 -typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); -typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); -typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); -typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); -GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); -GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); -GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); -#endif -#endif /* GL_QCOM_extended_get2 */ - -#ifndef GL_QCOM_perfmon_global_mode -#define GL_QCOM_perfmon_global_mode 1 -#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 -#endif /* GL_QCOM_perfmon_global_mode */ - -#ifndef GL_QCOM_tiled_rendering -#define GL_QCOM_tiled_rendering 1 -#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 -#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 -#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 -#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 -#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 -#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 -#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 -#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 -#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 -#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 -#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 -#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 -#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 -#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 -#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 -#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 -#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 -#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 -#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 -#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 -#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 -#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 -#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 -#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 -#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 -#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 -#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 -#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 -#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 -#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 -#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 -#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 -typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); -typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); -GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); -#endif -#endif /* GL_QCOM_tiled_rendering */ - -#ifndef GL_QCOM_writeonly_rendering -#define GL_QCOM_writeonly_rendering 1 -#define GL_WRITEONLY_RENDERING_QCOM 0x8823 -#endif /* GL_QCOM_writeonly_rendering */ - -#ifndef GL_VIV_shader_binary -#define GL_VIV_shader_binary 1 -#define GL_SHADER_BINARY_VIV 0x8FC4 -#endif /* GL_VIV_shader_binary */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/MagnumExternal/OpenGL/GLES2/gl2platform.h b/src/MagnumExternal/OpenGL/GLES2/gl2platform.h deleted file mode 100644 index 89d4d44dc..000000000 --- a/src/MagnumExternal/OpenGL/GLES2/gl2platform.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __gl2platform_h_ -#define __gl2platform_h_ - -/* $Revision: 23328 $ on $Date:: 2013-10-02 02:28:28 -0700 #$ */ - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "OpenGL-ES" component "Registry". - */ - -#include - -#ifndef GL_APICALL -#define GL_APICALL KHRONOS_APICALL -#endif - -#ifndef GL_APIENTRY -#define GL_APIENTRY KHRONOS_APIENTRY -#endif - -#endif /* __gl2platform_h_ */ diff --git a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt index 932ab453e..31dec6995 100644 --- a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt @@ -23,4 +23,13 @@ # DEALINGS IN THE SOFTWARE. # -install(FILES gl3.h gl3platform.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GLES3) +# flextGLPlatform.cpp is compiled as part of Magnum*Context libraries in Platform +add_library(MagnumFlextGLObjects OBJECT flextGL.cpp) + +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -fvisibility=hidden -DFlextGL_EXPORTS") +else() + set_target_properties(MagnumFlextGLObjects PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -DFlextGL_EXPORTS") +endif() + +install(FILES flextGL.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GLES3) diff --git a/src/MagnumExternal/OpenGL/GLES3/README.md b/src/MagnumExternal/OpenGL/GLES3/README.md new file mode 100644 index 000000000..58942045c --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/README.md @@ -0,0 +1,11 @@ +OpenGL header and extension loader is generated using flextGL, get it at +[](https://github.com/ginkgo/flextGL). + +See [](extensions.txt) for requested version and a list of non-core extensions. +Call `flextGLgen.py` in this directory with the following arguments: + + .../flextGLgen.py -D . -t . extensions.txt + +It will generate `flextGL.h` and `flextGL.cpp` files. As usual, be sure to +check the diff for suspicious changes and whitespace-at-EOL (although there +shouldn't be any). diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt new file mode 100644 index 000000000..3b99ac740 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -0,0 +1,28 @@ +# The following output is taken from `magnum-info` with removed `GL_` prefixes. + +version 3.1 es + +extension APPLE_texture_format_BGRA8888 optional +extension CHROMIUM_map_sub optional +extension EXT_texture_filter_anisotropic optional +extension EXT_texture_format_BGRA8888 optional +extension EXT_read_format_bgra optional +extension EXT_multi_draw_arrays optional +extension EXT_debug_label optional +extension EXT_debug_marker optional +extension EXT_disjoint_timer_query optional +extension EXT_texture_sRGB_decode optional +extension EXT_separate_shader_objects optional +extension EXT_sRGB optional +extension EXT_multisampled_render_to_texture optional +extension EXT_robustness optional +extension KHR_debug optional +extension NV_read_buffer_front optional +extension NV_read_depth optional +extension NV_read_stencil optional +extension NV_read_depth_stencil optional +extension NV_texture_border_clamp optional +extension OES_depth32 optional +extension OES_mapbuffer optional +extension OES_stencil1 optional +extension OES_stencil4 optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp new file mode 100644 index 000000000..7b922e19d --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp @@ -0,0 +1,193 @@ +#include "flextGL.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GL_ES_VERSION_3_1 */ +FLEXTGL_EXPORT void(APIENTRY *flextglDispatchCompute)(GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDispatchComputeIndirect)(GLintptr) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysIndirect)(GLenum, const void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsIndirect)(GLenum, GLenum, const void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferParameteri)(GLenum, GLenum, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetFramebufferParameteriv)(GLenum, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramInterfaceiv)(GLuint, GLenum, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetProgramResourceIndex)(GLuint, GLenum, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramResourceName)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramResourceiv)(GLuint, GLenum, GLuint, GLsizei, const GLenum *, GLsizei, GLsizei *, GLint *) = nullptr; +FLEXTGL_EXPORT GLint(APIENTRY *flextglGetProgramResourceLocation)(GLuint, GLenum, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglUseProgramStages)(GLuint, GLbitfield, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglActiveShaderProgram)(GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramv)(GLenum, GLsizei, const GLchar *const*) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBindProgramPipeline)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDeleteProgramPipelines)(GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGenProgramPipelines)(GLsizei, GLuint *) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsProgramPipeline)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineiv)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1i)(GLuint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2i)(GLuint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3i)(GLuint, GLint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4i)(GLuint, GLint, GLint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ui)(GLuint, GLint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ui)(GLuint, GLint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ui)(GLuint, GLint, GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ui)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1f)(GLuint, GLint, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2f)(GLuint, GLint, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3f)(GLuint, GLint, GLfloat, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4f)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iv)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iv)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iv)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iv)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiv)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiv)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiv)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiv)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fv)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fv)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fv)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fv)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglValidateProgramPipeline)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBindImageTexture)(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetBooleani_v)(GLenum, GLuint, GLboolean *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglMemoryBarrier)(GLbitfield) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglMemoryBarrierByRegion)(GLbitfield) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage2DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetMultisamplefv)(GLenum, GLuint, GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglSampleMaski)(GLuint, GLbitfield) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetTexLevelParameterfv)(GLenum, GLint, GLenum, GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBindVertexBuffer)(GLuint, GLuint, GLintptr, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribFormat)(GLuint, GLint, GLenum, GLboolean, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribIFormat)(GLuint, GLint, GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribBinding)(GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglVertexBindingDivisor)(GLuint, GLuint) = nullptr; + +/* GL_EXT_multi_draw_arrays */ +FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei) = nullptr; + +/* GL_EXT_debug_label */ +FLEXTGL_EXPORT void(APIENTRY *flextglLabelObjectEXT)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelEXT)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; + +/* GL_EXT_debug_marker */ +FLEXTGL_EXPORT void(APIENTRY *flextglInsertEventMarkerEXT)(GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPushGroupMarkerEXT)(GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void) = nullptr; + +/* GL_EXT_disjoint_timer_query */ +FLEXTGL_EXPORT void(APIENTRY *flextglGenQueriesEXT)(GLsizei, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDeleteQueriesEXT)(GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsQueryEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBeginQueryEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglEndQueryEXT)(GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglQueryCounterEXT)(GLuint, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryivEXT)(GLenum, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectivEXT)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectuivEXT)(GLuint, GLenum, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjecti64vEXT)(GLuint, GLenum, GLint64 *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenum, GLuint64 *) = nullptr; + +/* GL_EXT_separate_shader_objects */ +FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglActiveProgramEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramEXT)(GLenum, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglActiveShaderProgramEXT)(GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBindProgramPipelineEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramvEXT)(GLenum, GLsizei, const GLchar **) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDeleteProgramPipelinesEXT)(GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGenProgramPipelinesEXT)(GLsizei, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineInfoLogEXT)(GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineivEXT)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsProgramPipelineEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramParameteriEXT)(GLuint, GLenum, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fEXT)(GLuint, GLint, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iEXT)(GLuint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fEXT)(GLuint, GLint, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iEXT)(GLuint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iEXT)(GLuint, GLint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iEXT)(GLuint, GLint, GLint, GLint, GLint, GLint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglUseProgramStagesEXT)(GLuint, GLbitfield, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglValidateProgramPipelineEXT)(GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiEXT)(GLuint, GLint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiEXT)(GLuint, GLint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr; + +/* GL_EXT_multisampled_render_to_texture */ +FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei) = nullptr; + +/* GL_EXT_robustness */ +FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatusEXT)(void) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformfvEXT)(GLuint, GLint, GLsizei, GLfloat *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *) = nullptr; + +/* GL_KHR_debug */ +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControl)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsert)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallback)(GLDEBUGPROC, const void *) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLog)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroup)(void) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabel)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabel)(const void *, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabel)(const void *, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetPointerv)(GLenum, void **) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControlKHR)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsertKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallbackKHR)(GLDEBUGPROCKHR, const void *) = nullptr; +FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLogKHR)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroupKHR)(void) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabelKHR)(GLenum, GLuint, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelKHR)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabelKHR)(const void *, GLsizei, const GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, GLsizei, GLsizei *, GLchar *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **) = nullptr; + +/* GL_OES_mapbuffer */ +FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferOES)(GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapBufferOES)(GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, void **) = nullptr; + +#ifdef __cplusplus +} +#endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp.template b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp.template new file mode 100644 index 000000000..43f61ce3e --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp.template @@ -0,0 +1,20 @@ +@require(passthru, functions, enums, options, version, extensions) +#include "flextGL.h" + +#ifdef __cplusplus +extern "C" { +#endif +@for category,funcs in functions: +@if len(funcs) > 0 and category not in ['ES_VERSION_2_0', 'ES_VERSION_3_0']: + +/* GL_@category */ +@for f in funcs: +FLEXTGL_EXPORT @f.returntype\ +(APIENTRY *flextgl@f.name)(@f.param_type_list_string()) = nullptr; +@end +@end +@end + +#ifdef __cplusplus +} +#endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h new file mode 100644 index 000000000..a14c4a911 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -0,0 +1,1726 @@ +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl_h_) || defined(__gl2_h_) || defined(__gl3_h_) || defined(__gl31_h_) +#error Attempt to include auto-generated header after including gl3.h +#endif +#if defined(__gl2ext_h_) || defined(__gl3ext_h_) +#error Attempt to include auto-generated header after including gl3ext.h +#endif +#if defined(__gl2platform_h_) || defined(__gl3platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl_h_ +#define __gl2_h_ +#define __gl3_h_ +#define __gl31_h_ +#define __gl2ext_h_ +#define __gl3ext_h_ +#define __gl2platform_h_ +#define __gl3platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ + +#ifdef _WIN32 + #ifdef FlextGL_EXPORTS + #define FLEXTGL_EXPORT __declspec(dllexport) + #else + #define FLEXTGL_EXPORT __declspec(dllimport) + #endif +#else + #define FLEXTGL_EXPORT __attribute__ ((visibility ("default"))) +#endif + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#ifndef WINAPI +#define WINAPI __stdcall +#endif +#define APIENTRY WINAPI +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/* Data types */ + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef short GLshort; +typedef int GLint; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef int GLsizei; +typedef char GLchar; +typedef unsigned short GLhalf; +typedef struct __GLsync *GLsync; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* Enums */ + +/* GL_ES_VERSION_2_0 */ + +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/* GL_ES_VERSION_3_0 */ + +#define GL_READ_BUFFER 0x0C02 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_RED 0x1903 +#define GL_RGB8 0x8051 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_RG8 0x822B +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF + +/* GL_ES_VERSION_3_1 */ + +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_STENCIL_INDEX 0x1901 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 + +/* GL_APPLE_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 + +/* GL_EXT_texture_filter_anisotropic */ + +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF + +/* GL_EXT_texture_format_BGRA8888 */ + +#define GL_BGRA_EXT 0x80E1 + +/* GL_EXT_read_format_bgra */ + +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 + +/* GL_EXT_debug_label */ + +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_SAMPLER 0x82E6 +#define GL_TRANSFORM_FEEDBACK 0x8E22 + +/* GL_EXT_disjoint_timer_query */ + +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB + +/* GL_EXT_texture_sRGB_decode */ + +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A + +/* GL_EXT_separate_shader_objects */ + +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A + +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + +/* GL_EXT_multisampled_render_to_texture */ + +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 + +/* GL_EXT_robustness */ + +#define GL_NO_ERROR 0 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 + +/* GL_KHR_debug */ + +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_QUERY 0x82E3 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_DISPLAY_LIST 0x82E7 + +/* GL_NV_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D + +/* GL_OES_depth32 */ + +#define GL_DEPTH_COMPONENT32_OES 0x81A7 + +/* GL_OES_mapbuffer */ + +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD + +/* GL_OES_stencil1 */ + +#define GL_STENCIL_INDEX1_OES 0x8D46 + +/* GL_OES_stencil4 */ + +#define GL_STENCIL_INDEX4_OES 0x8D47 + +/* Function prototypes */ + +/* GL_ES_VERSION_2_0 */ + +GLAPI FLEXTGL_EXPORT void APIENTRY glActiveTexture(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glAttachShader(GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindAttribLocation(GLuint, GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindBuffer(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindFramebuffer(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindRenderbuffer(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindTexture(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendColor(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendEquation(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendEquationSeparate(GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendFunc(GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlendFuncSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBufferData(GLenum, GLsizeiptr, const void *, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glBufferSubData(GLenum, GLintptr, GLsizeiptr, const void *); +GLAPI FLEXTGL_EXPORT GLenum APIENTRY glCheckFramebufferStatus(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glClear(GLbitfield); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearColor(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearDepthf(GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearStencil(GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glColorMask(GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompileShader(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompressedTexImage2D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompressedTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glCopyTexImage2D(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glCopyTexSubImage2D(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT GLuint APIENTRY glCreateProgram(void); +GLAPI FLEXTGL_EXPORT GLuint APIENTRY glCreateShader(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glCullFace(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteBuffers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteFramebuffers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteRenderbuffers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteShader(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteTextures(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDepthFunc(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDepthMask(GLboolean); +GLAPI FLEXTGL_EXPORT void APIENTRY glDepthRangef(GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glDetachShader(GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDisable(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDisableVertexAttribArray(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawArrays(GLenum, GLint, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawElements(GLenum, GLsizei, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glEnable(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glEnableVertexAttribArray(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glFinish(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glFlush(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glFramebufferRenderbuffer(GLenum, GLenum, GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glFramebufferTexture2D(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glFrontFace(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenBuffers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenerateMipmap(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenFramebuffers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenRenderbuffers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenTextures(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveAttrib(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveUniform(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetAttachedShaders(GLuint, GLsizei, GLsizei *, GLuint *); +GLAPI FLEXTGL_EXPORT GLint APIENTRY glGetAttribLocation(GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetBooleanv(GLenum, GLboolean *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetBufferParameteriv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT GLenum APIENTRY glGetError(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetFloatv(GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetFramebufferAttachmentParameteriv(GLenum, GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetIntegerv(GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetProgramiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetProgramInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetRenderbufferParameteriv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderInfoLog(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderPrecisionFormat(GLenum, GLenum, GLint *, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetShaderSource(GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT const GLubyte * APIENTRY glGetString(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetTexParameterfv(GLenum, GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetTexParameteriv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetUniformfv(GLuint, GLint, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetUniformiv(GLuint, GLint, GLint *); +GLAPI FLEXTGL_EXPORT GLint APIENTRY glGetUniformLocation(GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribfv(GLuint, GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribPointerv(GLuint, GLenum, void **); +GLAPI FLEXTGL_EXPORT void APIENTRY glHint(GLenum, GLenum); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsBuffer(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsEnabled(GLenum); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsFramebuffer(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsProgram(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsRenderbuffer(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsShader(GLuint); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsTexture(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glLineWidth(GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glLinkProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glPixelStorei(GLenum, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glPolygonOffset(GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glReadPixels(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glReleaseShaderCompiler(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glRenderbufferStorage(GLenum, GLenum, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glSampleCoverage(GLfloat, GLboolean); +GLAPI FLEXTGL_EXPORT void APIENTRY glScissor(GLint, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glShaderBinary(GLsizei, const GLuint *, GLenum, const void *, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glShaderSource(GLuint, GLsizei, const GLchar *const*, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilFunc(GLenum, GLint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilFuncSeparate(GLenum, GLenum, GLint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilMask(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilMaskSeparate(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilOp(GLenum, GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glStencilOpSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexImage2D(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameterf(GLenum, GLenum, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameterfv(GLenum, GLenum, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameteri(GLenum, GLenum, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexParameteriv(GLenum, GLenum, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1f(GLint, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1i(GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2f(GLint, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2i(GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3f(GLint, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3i(GLint, GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4fv(GLint, GLsizei, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4i(GLint, GLint, GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4iv(GLint, GLsizei, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUseProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glValidateProgram(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib1f(GLuint, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib1fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib2f(GLuint, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib2fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib3f(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib3fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib4f(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttrib4fv(GLuint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribPointer(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glViewport(GLint, GLint, GLsizei, GLsizei); + +/* GL_ES_VERSION_3_0 */ + +GLAPI FLEXTGL_EXPORT void APIENTRY glReadBuffer(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawRangeElements(GLenum, GLuint, GLuint, GLsizei, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexImage3D(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glCopyTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompressedTexImage3D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glCompressedTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenQueries(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteQueries(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsQuery(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBeginQuery(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glEndQuery(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetQueryiv(GLenum, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetQueryObjectuiv(GLuint, GLenum, GLuint *); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glUnmapBuffer(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetBufferPointerv(GLenum, GLenum, void **); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawBuffers(GLsizei, const GLenum *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix2x3fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix3x2fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix2x4fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix4x2fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix3x4fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformMatrix4x3fv(GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glBlitFramebuffer(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glRenderbufferStorageMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glFramebufferTextureLayer(GLenum, GLenum, GLuint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void * APIENTRY glMapBufferRange(GLenum, GLintptr, GLsizeiptr, GLbitfield); +GLAPI FLEXTGL_EXPORT void APIENTRY glFlushMappedBufferRange(GLenum, GLintptr, GLsizeiptr); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindVertexArray(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteVertexArrays(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenVertexArrays(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsVertexArray(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetIntegeri_v(GLenum, GLuint, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glBeginTransformFeedback(GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glEndTransformFeedback(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindBufferRange(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindBufferBase(GLenum, GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glTransformFeedbackVaryings(GLuint, GLsizei, const GLchar *const*, GLenum); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetTransformFeedbackVarying(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribIPointer(GLuint, GLint, GLenum, GLsizei, const void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribIiv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetVertexAttribIuiv(GLuint, GLenum, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribI4i(GLuint, GLint, GLint, GLint, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribI4ui(GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribI4iv(GLuint, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribI4uiv(GLuint, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetUniformuiv(GLuint, GLint, GLuint *); +GLAPI FLEXTGL_EXPORT GLint APIENTRY glGetFragDataLocation(GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1ui(GLint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2ui(GLint, GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3ui(GLint, GLuint, GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4ui(GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform1uiv(GLint, GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform2uiv(GLint, GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform3uiv(GLint, GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniform4uiv(GLint, GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearBufferiv(GLenum, GLint, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearBufferuiv(GLenum, GLint, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearBufferfv(GLenum, GLint, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glClearBufferfi(GLenum, GLint, GLfloat, GLint); +GLAPI FLEXTGL_EXPORT const GLubyte * APIENTRY glGetStringi(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glCopyBufferSubData(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetUniformIndices(GLuint, GLsizei, const GLchar *const*, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveUniformsiv(GLuint, GLsizei, const GLuint *, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT GLuint APIENTRY glGetUniformBlockIndex(GLuint, const GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveUniformBlockiv(GLuint, GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetActiveUniformBlockName(GLuint, GLuint, GLsizei, GLsizei *, GLchar *); +GLAPI FLEXTGL_EXPORT void APIENTRY glUniformBlockBinding(GLuint, GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawArraysInstanced(GLenum, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glDrawElementsInstanced(GLenum, GLsizei, GLenum, const void *, GLsizei); +GLAPI FLEXTGL_EXPORT GLsync APIENTRY glFenceSync(GLenum, GLbitfield); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsSync(GLsync); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteSync(GLsync); +GLAPI FLEXTGL_EXPORT GLenum APIENTRY glClientWaitSync(GLsync, GLbitfield, GLuint64); +GLAPI FLEXTGL_EXPORT void APIENTRY glWaitSync(GLsync, GLbitfield, GLuint64); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetInteger64v(GLenum, GLint64 *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetSynciv(GLsync, GLenum, GLsizei, GLsizei *, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetInteger64i_v(GLenum, GLuint, GLint64 *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetBufferParameteri64v(GLenum, GLenum, GLint64 *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenSamplers(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteSamplers(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsSampler(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindSampler(GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glSamplerParameteri(GLuint, GLenum, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glSamplerParameteriv(GLuint, GLenum, const GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glSamplerParameterf(GLuint, GLenum, GLfloat); +GLAPI FLEXTGL_EXPORT void APIENTRY glSamplerParameterfv(GLuint, GLenum, const GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetSamplerParameteriv(GLuint, GLenum, GLint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetSamplerParameterfv(GLuint, GLenum, GLfloat *); +GLAPI FLEXTGL_EXPORT void APIENTRY glVertexAttribDivisor(GLuint, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glBindTransformFeedback(GLenum, GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glDeleteTransformFeedbacks(GLsizei, const GLuint *); +GLAPI FLEXTGL_EXPORT void APIENTRY glGenTransformFeedbacks(GLsizei, GLuint *); +GLAPI FLEXTGL_EXPORT GLboolean APIENTRY glIsTransformFeedback(GLuint); +GLAPI FLEXTGL_EXPORT void APIENTRY glPauseTransformFeedback(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glResumeTransformFeedback(void); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetProgramBinary(GLuint, GLsizei, GLsizei *, GLenum *, void *); +GLAPI FLEXTGL_EXPORT void APIENTRY glProgramBinary(GLuint, GLenum, const void *, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glProgramParameteri(GLuint, GLenum, GLint); +GLAPI FLEXTGL_EXPORT void APIENTRY glInvalidateFramebuffer(GLenum, GLsizei, const GLenum *); +GLAPI FLEXTGL_EXPORT void APIENTRY glInvalidateSubFramebuffer(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexStorage2D(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glTexStorage3D(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +GLAPI FLEXTGL_EXPORT void APIENTRY glGetInternalformativ(GLenum, GLenum, GLenum, GLsizei, GLint *); + +/* GL_ES_VERSION_3_1 */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDispatchCompute)(GLuint, GLuint, GLuint); +#define glDispatchCompute flextglDispatchCompute +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDispatchComputeIndirect)(GLintptr); +#define glDispatchComputeIndirect flextglDispatchComputeIndirect +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawArraysIndirect)(GLenum, const void *); +#define glDrawArraysIndirect flextglDrawArraysIndirect +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDrawElementsIndirect)(GLenum, GLenum, const void *); +#define glDrawElementsIndirect flextglDrawElementsIndirect +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferParameteri)(GLenum, GLenum, GLint); +#define glFramebufferParameteri flextglFramebufferParameteri +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetFramebufferParameteriv)(GLenum, GLenum, GLint *); +#define glGetFramebufferParameteriv flextglGetFramebufferParameteriv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramInterfaceiv)(GLuint, GLenum, GLenum, GLint *); +#define glGetProgramInterfaceiv flextglGetProgramInterfaceiv +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetProgramResourceIndex)(GLuint, GLenum, const GLchar *); +#define glGetProgramResourceIndex flextglGetProgramResourceIndex +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramResourceName)(GLuint, GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetProgramResourceName flextglGetProgramResourceName +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramResourceiv)(GLuint, GLenum, GLuint, GLsizei, const GLenum *, GLsizei, GLsizei *, GLint *); +#define glGetProgramResourceiv flextglGetProgramResourceiv +GLAPI FLEXTGL_EXPORT GLint(APIENTRY *flextglGetProgramResourceLocation)(GLuint, GLenum, const GLchar *); +#define glGetProgramResourceLocation flextglGetProgramResourceLocation +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseProgramStages)(GLuint, GLbitfield, GLuint); +#define glUseProgramStages flextglUseProgramStages +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglActiveShaderProgram)(GLuint, GLuint); +#define glActiveShaderProgram flextglActiveShaderProgram +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramv)(GLenum, GLsizei, const GLchar *const*); +#define glCreateShaderProgramv flextglCreateShaderProgramv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindProgramPipeline)(GLuint); +#define glBindProgramPipeline flextglBindProgramPipeline +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDeleteProgramPipelines)(GLsizei, const GLuint *); +#define glDeleteProgramPipelines flextglDeleteProgramPipelines +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenProgramPipelines)(GLsizei, GLuint *); +#define glGenProgramPipelines flextglGenProgramPipelines +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsProgramPipeline)(GLuint); +#define glIsProgramPipeline flextglIsProgramPipeline +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineiv)(GLuint, GLenum, GLint *); +#define glGetProgramPipelineiv flextglGetProgramPipelineiv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1i)(GLuint, GLint, GLint); +#define glProgramUniform1i flextglProgramUniform1i +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2i)(GLuint, GLint, GLint, GLint); +#define glProgramUniform2i flextglProgramUniform2i +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3i)(GLuint, GLint, GLint, GLint, GLint); +#define glProgramUniform3i flextglProgramUniform3i +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4i)(GLuint, GLint, GLint, GLint, GLint, GLint); +#define glProgramUniform4i flextglProgramUniform4i +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ui)(GLuint, GLint, GLuint); +#define glProgramUniform1ui flextglProgramUniform1ui +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ui)(GLuint, GLint, GLuint, GLuint); +#define glProgramUniform2ui flextglProgramUniform2ui +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ui)(GLuint, GLint, GLuint, GLuint, GLuint); +#define glProgramUniform3ui flextglProgramUniform3ui +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ui)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +#define glProgramUniform4ui flextglProgramUniform4ui +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1f)(GLuint, GLint, GLfloat); +#define glProgramUniform1f flextglProgramUniform1f +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2f)(GLuint, GLint, GLfloat, GLfloat); +#define glProgramUniform2f flextglProgramUniform2f +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3f)(GLuint, GLint, GLfloat, GLfloat, GLfloat); +#define glProgramUniform3f flextglProgramUniform3f +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4f)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +#define glProgramUniform4f flextglProgramUniform4f +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iv)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform1iv flextglProgramUniform1iv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iv)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform2iv flextglProgramUniform2iv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iv)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform3iv flextglProgramUniform3iv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iv)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform4iv flextglProgramUniform4iv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform1uiv flextglProgramUniform1uiv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform2uiv flextglProgramUniform2uiv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform3uiv flextglProgramUniform3uiv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform4uiv flextglProgramUniform4uiv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform1fv flextglProgramUniform1fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform2fv flextglProgramUniform2fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform3fv flextglProgramUniform3fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform4fv flextglProgramUniform4fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2fv flextglProgramUniformMatrix2fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3fv flextglProgramUniformMatrix3fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4fv flextglProgramUniformMatrix4fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x3fv flextglProgramUniformMatrix2x3fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x2fv flextglProgramUniformMatrix3x2fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x4fv flextglProgramUniformMatrix2x4fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x2fv flextglProgramUniformMatrix4x2fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x4fv flextglProgramUniformMatrix3x4fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x3fv flextglProgramUniformMatrix4x3fv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglValidateProgramPipeline)(GLuint); +#define glValidateProgramPipeline flextglValidateProgramPipeline +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetProgramPipelineInfoLog flextglGetProgramPipelineInfoLog +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindImageTexture)(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum); +#define glBindImageTexture flextglBindImageTexture +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetBooleani_v)(GLenum, GLuint, GLboolean *); +#define glGetBooleani_v flextglGetBooleani_v +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMemoryBarrier)(GLbitfield); +#define glMemoryBarrier flextglMemoryBarrier +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMemoryBarrierByRegion)(GLbitfield); +#define glMemoryBarrierByRegion flextglMemoryBarrierByRegion +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage2DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean); +#define glTexStorage2DMultisample flextglTexStorage2DMultisample +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultisamplefv)(GLenum, GLuint, GLfloat *); +#define glGetMultisamplefv flextglGetMultisamplefv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglSampleMaski)(GLuint, GLbitfield); +#define glSampleMaski flextglSampleMaski +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint *); +#define glGetTexLevelParameteriv flextglGetTexLevelParameteriv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTexLevelParameterfv)(GLenum, GLint, GLenum, GLfloat *); +#define glGetTexLevelParameterfv flextglGetTexLevelParameterfv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindVertexBuffer)(GLuint, GLuint, GLintptr, GLsizei); +#define glBindVertexBuffer flextglBindVertexBuffer +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribFormat)(GLuint, GLint, GLenum, GLboolean, GLuint); +#define glVertexAttribFormat flextglVertexAttribFormat +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribIFormat)(GLuint, GLint, GLenum, GLuint); +#define glVertexAttribIFormat flextglVertexAttribIFormat +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribBinding)(GLuint, GLuint); +#define glVertexAttribBinding flextglVertexAttribBinding +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexBindingDivisor)(GLuint, GLuint); +#define glVertexBindingDivisor flextglVertexBindingDivisor + +/* GL_APPLE_texture_format_BGRA8888 */ + + +/* GL_EXT_texture_filter_anisotropic */ + + +/* GL_EXT_texture_format_BGRA8888 */ + + +/* GL_EXT_read_format_bgra */ + + +/* GL_EXT_multi_draw_arrays */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei); +#define glMultiDrawArraysEXT flextglMultiDrawArraysEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); +#define glMultiDrawElementsEXT flextglMultiDrawElementsEXT + +/* GL_EXT_debug_label */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglLabelObjectEXT)(GLenum, GLuint, GLsizei, const GLchar *); +#define glLabelObjectEXT flextglLabelObjectEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelEXT)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabelEXT flextglGetObjectLabelEXT + +/* GL_EXT_debug_marker */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglInsertEventMarkerEXT)(GLsizei, const GLchar *); +#define glInsertEventMarkerEXT flextglInsertEventMarkerEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushGroupMarkerEXT)(GLsizei, const GLchar *); +#define glPushGroupMarkerEXT flextglPushGroupMarkerEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void); +#define glPopGroupMarkerEXT flextglPopGroupMarkerEXT + +/* GL_EXT_disjoint_timer_query */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenQueriesEXT)(GLsizei, GLuint *); +#define glGenQueriesEXT flextglGenQueriesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDeleteQueriesEXT)(GLsizei, const GLuint *); +#define glDeleteQueriesEXT flextglDeleteQueriesEXT +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsQueryEXT)(GLuint); +#define glIsQueryEXT flextglIsQueryEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBeginQueryEXT)(GLenum, GLuint); +#define glBeginQueryEXT flextglBeginQueryEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEndQueryEXT)(GLenum); +#define glEndQueryEXT flextglEndQueryEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglQueryCounterEXT)(GLuint, GLenum); +#define glQueryCounterEXT flextglQueryCounterEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryivEXT)(GLenum, GLenum, GLint *); +#define glGetQueryivEXT flextglGetQueryivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectivEXT)(GLuint, GLenum, GLint *); +#define glGetQueryObjectivEXT flextglGetQueryObjectivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectuivEXT)(GLuint, GLenum, GLuint *); +#define glGetQueryObjectuivEXT flextglGetQueryObjectuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjecti64vEXT)(GLuint, GLenum, GLint64 *); +#define glGetQueryObjecti64vEXT flextglGetQueryObjecti64vEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenum, GLuint64 *); +#define glGetQueryObjectui64vEXT flextglGetQueryObjectui64vEXT + +/* GL_EXT_texture_sRGB_decode */ + + +/* GL_EXT_separate_shader_objects */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint); +#define glUseShaderProgramEXT flextglUseShaderProgramEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglActiveProgramEXT)(GLuint); +#define glActiveProgramEXT flextglActiveProgramEXT +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramEXT)(GLenum, const GLchar *); +#define glCreateShaderProgramEXT flextglCreateShaderProgramEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglActiveShaderProgramEXT)(GLuint, GLuint); +#define glActiveShaderProgramEXT flextglActiveShaderProgramEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindProgramPipelineEXT)(GLuint); +#define glBindProgramPipelineEXT flextglBindProgramPipelineEXT +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglCreateShaderProgramvEXT)(GLenum, GLsizei, const GLchar **); +#define glCreateShaderProgramvEXT flextglCreateShaderProgramvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDeleteProgramPipelinesEXT)(GLsizei, const GLuint *); +#define glDeleteProgramPipelinesEXT flextglDeleteProgramPipelinesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenProgramPipelinesEXT)(GLsizei, GLuint *); +#define glGenProgramPipelinesEXT flextglGenProgramPipelinesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineInfoLogEXT)(GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetProgramPipelineInfoLogEXT flextglGetProgramPipelineInfoLogEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetProgramPipelineivEXT)(GLuint, GLenum, GLint *); +#define glGetProgramPipelineivEXT flextglGetProgramPipelineivEXT +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsProgramPipelineEXT)(GLuint); +#define glIsProgramPipelineEXT flextglIsProgramPipelineEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramParameteriEXT)(GLuint, GLenum, GLint); +#define glProgramParameteriEXT flextglProgramParameteriEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fEXT)(GLuint, GLint, GLfloat); +#define glProgramUniform1fEXT flextglProgramUniform1fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform1fvEXT flextglProgramUniform1fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iEXT)(GLuint, GLint, GLint); +#define glProgramUniform1iEXT flextglProgramUniform1iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform1ivEXT flextglProgramUniform1ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fEXT)(GLuint, GLint, GLfloat, GLfloat); +#define glProgramUniform2fEXT flextglProgramUniform2fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform2fvEXT flextglProgramUniform2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iEXT)(GLuint, GLint, GLint, GLint); +#define glProgramUniform2iEXT flextglProgramUniform2iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform2ivEXT flextglProgramUniform2ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat); +#define glProgramUniform3fEXT flextglProgramUniform3fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform3fvEXT flextglProgramUniform3fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iEXT)(GLuint, GLint, GLint, GLint, GLint); +#define glProgramUniform3iEXT flextglProgramUniform3iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform3ivEXT flextglProgramUniform3ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +#define glProgramUniform4fEXT flextglProgramUniform4fEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fvEXT)(GLuint, GLint, GLsizei, const GLfloat *); +#define glProgramUniform4fvEXT flextglProgramUniform4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iEXT)(GLuint, GLint, GLint, GLint, GLint, GLint); +#define glProgramUniform4iEXT flextglProgramUniform4iEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ivEXT)(GLuint, GLint, GLsizei, const GLint *); +#define glProgramUniform4ivEXT flextglProgramUniform4ivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2fvEXT flextglProgramUniformMatrix2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3fvEXT flextglProgramUniformMatrix3fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4fvEXT flextglProgramUniformMatrix4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseProgramStagesEXT)(GLuint, GLbitfield, GLuint); +#define glUseProgramStagesEXT flextglUseProgramStagesEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglValidateProgramPipelineEXT)(GLuint); +#define glValidateProgramPipelineEXT flextglValidateProgramPipelineEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiEXT)(GLuint, GLint, GLuint); +#define glProgramUniform1uiEXT flextglProgramUniform1uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiEXT)(GLuint, GLint, GLuint, GLuint); +#define glProgramUniform2uiEXT flextglProgramUniform2uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint); +#define glProgramUniform3uiEXT flextglProgramUniform3uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +#define glProgramUniform4uiEXT flextglProgramUniform4uiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform1uivEXT flextglProgramUniform1uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform2uivEXT flextglProgramUniform2uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform3uivEXT flextglProgramUniform3uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uivEXT)(GLuint, GLint, GLsizei, const GLuint *); +#define glProgramUniform4uivEXT flextglProgramUniform4uivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x3fvEXT flextglProgramUniformMatrix2x3fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x2fvEXT flextglProgramUniformMatrix3x2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix2x4fvEXT flextglProgramUniformMatrix2x4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x2fvEXT flextglProgramUniformMatrix4x2fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix3x4fvEXT flextglProgramUniformMatrix3x4fvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define glProgramUniformMatrix4x3fvEXT flextglProgramUniformMatrix4x3fvEXT + +/* GL_EXT_sRGB */ + + +/* GL_EXT_multisampled_render_to_texture */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +#define glRenderbufferStorageMultisampleEXT flextglRenderbufferStorageMultisampleEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#define glFramebufferTexture2DMultisampleEXT flextglFramebufferTexture2DMultisampleEXT + +/* GL_EXT_robustness */ + +GLAPI FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatusEXT)(void); +#define glGetGraphicsResetStatusEXT flextglGetGraphicsResetStatusEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *); +#define glReadnPixelsEXT flextglReadnPixelsEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformfvEXT)(GLuint, GLint, GLsizei, GLfloat *); +#define glGetnUniformfvEXT flextglGetnUniformfvEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *); +#define glGetnUniformivEXT flextglGetnUniformivEXT + +/* GL_KHR_debug */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControl)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +#define glDebugMessageControl flextglDebugMessageControl +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsert)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +#define glDebugMessageInsert flextglDebugMessageInsert +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallback)(GLDEBUGPROC, const void *); +#define glDebugMessageCallback flextglDebugMessageCallback +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLog)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +#define glGetDebugMessageLog flextglGetDebugMessageLog +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar *); +#define glPushDebugGroup flextglPushDebugGroup +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroup)(void); +#define glPopDebugGroup flextglPopDebugGroup +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabel)(GLenum, GLuint, GLsizei, const GLchar *); +#define glObjectLabel flextglObjectLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabel flextglGetObjectLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabel)(const void *, GLsizei, const GLchar *); +#define glObjectPtrLabel flextglObjectPtrLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabel)(const void *, GLsizei, GLsizei *, GLchar *); +#define glGetObjectPtrLabel flextglGetObjectPtrLabel +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointerv)(GLenum, void **); +#define glGetPointerv flextglGetPointerv +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageControlKHR)(GLenum, GLenum, GLenum, GLsizei, const GLuint *, GLboolean); +#define glDebugMessageControlKHR flextglDebugMessageControlKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageInsertKHR)(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar *); +#define glDebugMessageInsertKHR flextglDebugMessageInsertKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDebugMessageCallbackKHR)(GLDEBUGPROCKHR, const void *); +#define glDebugMessageCallbackKHR flextglDebugMessageCallbackKHR +GLAPI FLEXTGL_EXPORT GLuint(APIENTRY *flextglGetDebugMessageLogKHR)(GLuint, GLsizei, GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *); +#define glGetDebugMessageLogKHR flextglGetDebugMessageLogKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushDebugGroupKHR)(GLenum, GLuint, GLsizei, const GLchar *); +#define glPushDebugGroupKHR flextglPushDebugGroupKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopDebugGroupKHR)(void); +#define glPopDebugGroupKHR flextglPopDebugGroupKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectLabelKHR)(GLenum, GLuint, GLsizei, const GLchar *); +#define glObjectLabelKHR flextglObjectLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectLabelKHR)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *); +#define glGetObjectLabelKHR flextglGetObjectLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabelKHR)(const void *, GLsizei, const GLchar *); +#define glObjectPtrLabelKHR flextglObjectPtrLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, GLsizei, GLsizei *, GLchar *); +#define glGetObjectPtrLabelKHR flextglGetObjectPtrLabelKHR +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **); +#define glGetPointervKHR flextglGetPointervKHR + +/* GL_NV_read_buffer_front */ + + +/* GL_NV_read_depth */ + + +/* GL_NV_read_stencil */ + + +/* GL_NV_read_depth_stencil */ + + +/* GL_NV_texture_border_clamp */ + + +/* GL_OES_depth32 */ + + +/* GL_OES_mapbuffer */ + +GLAPI FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferOES)(GLenum, GLenum); +#define glMapBufferOES flextglMapBufferOES +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapBufferOES)(GLenum); +#define glUnmapBufferOES flextglUnmapBufferOES +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, void **); +#define glGetBufferPointervOES flextglGetBufferPointervOES + +/* GL_OES_stencil1 */ + + +/* GL_OES_stencil4 */ + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h.template b/src/MagnumExternal/OpenGL/GLES3/flextGL.h.template new file mode 100644 index 000000000..42bafb2e8 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h.template @@ -0,0 +1,90 @@ +@require(passthru, functions, enums, options, version, extensions) +#ifndef _flextgl_h_ +#define _flextgl_h_ + +/* Defensive include guards */ + +#if defined(__gl_h_) || defined(__gl2_h_) || defined(__gl3_h_) || defined(__gl31_h_) +#error Attempt to include auto-generated header after including gl3.h +#endif +#if defined(__gl2ext_h_) || defined(__gl3ext_h_) +#error Attempt to include auto-generated header after including gl3ext.h +#endif +#if defined(__gl2platform_h_) || defined(__gl3platform_h_) +#error Attempt to include auto-generated header after including gl2platform.h +#endif + +#define __gl_h_ +#define __gl2_h_ +#define __gl3_h_ +#define __gl31_h_ +#define __gl2ext_h_ +#define __gl3ext_h_ +#define __gl2platform_h_ +#define __gl3platform_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +void flextGLInit(); + +/* Function declaration macros */ + +#ifdef _WIN32 + #ifdef FlextGL_EXPORTS + #define FLEXTGL_EXPORT __declspec(dllexport) + #else + #define FLEXTGL_EXPORT __declspec(dllimport) + #endif +#else + #define FLEXTGL_EXPORT __attribute__ ((visibility ("default"))) +#endif + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define WIN32_LEAN_AND_MEAN 1 +#ifndef WINAPI +#define WINAPI __stdcall +#endif +#define APIENTRY WINAPI +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/* Data types */ + +@passthru + +/* Enums */ + +@enums + +/* Function prototypes */ +@for cat,funcs in functions: + +/* GL_@cat */ + + @if cat in ['ES_VERSION_2_0', 'ES_VERSION_3_0']: + @for f in funcs: +GLAPI FLEXTGL_EXPORT @f.returntype APIENTRY gl@f.name\ +(@f.param_type_list_string()); + @end + @else: + @for f in funcs: +GLAPI FLEXTGL_EXPORT @f.returntype\ +(APIENTRY *flextgl@f.name)(@f.param_type_list_string()); +#define gl@f.name flextgl@f.name + @end + @end +@end + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp new file mode 100644 index 000000000..eb13711c8 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -0,0 +1,222 @@ +#include "flextGL.h" + +#include +#include + +#include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" + +void flextGLInit() { + Magnum::Platform::Implementation::OpenGLFunctionLoader loader; + + /* GL_ES_VERSION_3_1 */ + flextglDispatchCompute = reinterpret_cast(loader.load("glDispatchCompute")); + flextglDispatchComputeIndirect = reinterpret_cast(loader.load("glDispatchComputeIndirect")); + flextglDrawArraysIndirect = reinterpret_cast(loader.load("glDrawArraysIndirect")); + flextglDrawElementsIndirect = reinterpret_cast(loader.load("glDrawElementsIndirect")); + flextglFramebufferParameteri = reinterpret_cast(loader.load("glFramebufferParameteri")); + flextglGetFramebufferParameteriv = reinterpret_cast(loader.load("glGetFramebufferParameteriv")); + flextglGetProgramInterfaceiv = reinterpret_cast(loader.load("glGetProgramInterfaceiv")); + flextglGetProgramResourceIndex = reinterpret_cast(loader.load("glGetProgramResourceIndex")); + flextglGetProgramResourceName = reinterpret_cast(loader.load("glGetProgramResourceName")); + flextglGetProgramResourceiv = reinterpret_cast(loader.load("glGetProgramResourceiv")); + flextglGetProgramResourceLocation = reinterpret_cast(loader.load("glGetProgramResourceLocation")); + flextglUseProgramStages = reinterpret_cast(loader.load("glUseProgramStages")); + flextglActiveShaderProgram = reinterpret_cast(loader.load("glActiveShaderProgram")); + flextglCreateShaderProgramv = reinterpret_cast(loader.load("glCreateShaderProgramv")); + flextglBindProgramPipeline = reinterpret_cast(loader.load("glBindProgramPipeline")); + flextglDeleteProgramPipelines = reinterpret_cast(loader.load("glDeleteProgramPipelines")); + flextglGenProgramPipelines = reinterpret_cast(loader.load("glGenProgramPipelines")); + flextglIsProgramPipeline = reinterpret_cast(loader.load("glIsProgramPipeline")); + flextglGetProgramPipelineiv = reinterpret_cast(loader.load("glGetProgramPipelineiv")); + flextglProgramUniform1i = reinterpret_cast(loader.load("glProgramUniform1i")); + flextglProgramUniform2i = reinterpret_cast(loader.load("glProgramUniform2i")); + flextglProgramUniform3i = reinterpret_cast(loader.load("glProgramUniform3i")); + flextglProgramUniform4i = reinterpret_cast(loader.load("glProgramUniform4i")); + flextglProgramUniform1ui = reinterpret_cast(loader.load("glProgramUniform1ui")); + flextglProgramUniform2ui = reinterpret_cast(loader.load("glProgramUniform2ui")); + flextglProgramUniform3ui = reinterpret_cast(loader.load("glProgramUniform3ui")); + flextglProgramUniform4ui = reinterpret_cast(loader.load("glProgramUniform4ui")); + flextglProgramUniform1f = reinterpret_cast(loader.load("glProgramUniform1f")); + flextglProgramUniform2f = reinterpret_cast(loader.load("glProgramUniform2f")); + flextglProgramUniform3f = reinterpret_cast(loader.load("glProgramUniform3f")); + flextglProgramUniform4f = reinterpret_cast(loader.load("glProgramUniform4f")); + flextglProgramUniform1iv = reinterpret_cast(loader.load("glProgramUniform1iv")); + flextglProgramUniform2iv = reinterpret_cast(loader.load("glProgramUniform2iv")); + flextglProgramUniform3iv = reinterpret_cast(loader.load("glProgramUniform3iv")); + flextglProgramUniform4iv = reinterpret_cast(loader.load("glProgramUniform4iv")); + flextglProgramUniform1uiv = reinterpret_cast(loader.load("glProgramUniform1uiv")); + flextglProgramUniform2uiv = reinterpret_cast(loader.load("glProgramUniform2uiv")); + flextglProgramUniform3uiv = reinterpret_cast(loader.load("glProgramUniform3uiv")); + flextglProgramUniform4uiv = reinterpret_cast(loader.load("glProgramUniform4uiv")); + flextglProgramUniform1fv = reinterpret_cast(loader.load("glProgramUniform1fv")); + flextglProgramUniform2fv = reinterpret_cast(loader.load("glProgramUniform2fv")); + flextglProgramUniform3fv = reinterpret_cast(loader.load("glProgramUniform3fv")); + flextglProgramUniform4fv = reinterpret_cast(loader.load("glProgramUniform4fv")); + flextglProgramUniformMatrix2fv = reinterpret_cast(loader.load("glProgramUniformMatrix2fv")); + flextglProgramUniformMatrix3fv = reinterpret_cast(loader.load("glProgramUniformMatrix3fv")); + flextglProgramUniformMatrix4fv = reinterpret_cast(loader.load("glProgramUniformMatrix4fv")); + flextglProgramUniformMatrix2x3fv = reinterpret_cast(loader.load("glProgramUniformMatrix2x3fv")); + flextglProgramUniformMatrix3x2fv = reinterpret_cast(loader.load("glProgramUniformMatrix3x2fv")); + flextglProgramUniformMatrix2x4fv = reinterpret_cast(loader.load("glProgramUniformMatrix2x4fv")); + flextglProgramUniformMatrix4x2fv = reinterpret_cast(loader.load("glProgramUniformMatrix4x2fv")); + flextglProgramUniformMatrix3x4fv = reinterpret_cast(loader.load("glProgramUniformMatrix3x4fv")); + flextglProgramUniformMatrix4x3fv = reinterpret_cast(loader.load("glProgramUniformMatrix4x3fv")); + flextglValidateProgramPipeline = reinterpret_cast(loader.load("glValidateProgramPipeline")); + flextglGetProgramPipelineInfoLog = reinterpret_cast(loader.load("glGetProgramPipelineInfoLog")); + flextglBindImageTexture = reinterpret_cast(loader.load("glBindImageTexture")); + flextglGetBooleani_v = reinterpret_cast(loader.load("glGetBooleani_v")); + flextglMemoryBarrier = reinterpret_cast(loader.load("glMemoryBarrier")); + flextglMemoryBarrierByRegion = reinterpret_cast(loader.load("glMemoryBarrierByRegion")); + flextglTexStorage2DMultisample = reinterpret_cast(loader.load("glTexStorage2DMultisample")); + flextglGetMultisamplefv = reinterpret_cast(loader.load("glGetMultisamplefv")); + flextglSampleMaski = reinterpret_cast(loader.load("glSampleMaski")); + flextglGetTexLevelParameteriv = reinterpret_cast(loader.load("glGetTexLevelParameteriv")); + flextglGetTexLevelParameterfv = reinterpret_cast(loader.load("glGetTexLevelParameterfv")); + flextglBindVertexBuffer = reinterpret_cast(loader.load("glBindVertexBuffer")); + flextglVertexAttribFormat = reinterpret_cast(loader.load("glVertexAttribFormat")); + flextglVertexAttribIFormat = reinterpret_cast(loader.load("glVertexAttribIFormat")); + flextglVertexAttribBinding = reinterpret_cast(loader.load("glVertexAttribBinding")); + flextglVertexBindingDivisor = reinterpret_cast(loader.load("glVertexBindingDivisor")); + + /* GL_APPLE_texture_format_BGRA8888 */ + + /* GL_EXT_texture_filter_anisotropic */ + + /* GL_EXT_texture_format_BGRA8888 */ + + /* GL_EXT_read_format_bgra */ + + /* GL_EXT_multi_draw_arrays */ + flextglMultiDrawArraysEXT = reinterpret_cast(loader.load("glMultiDrawArraysEXT")); + flextglMultiDrawElementsEXT = reinterpret_cast(loader.load("glMultiDrawElementsEXT")); + + /* GL_EXT_debug_label */ + flextglLabelObjectEXT = reinterpret_cast(loader.load("glLabelObjectEXT")); + flextglGetObjectLabelEXT = reinterpret_cast(loader.load("glGetObjectLabelEXT")); + + /* GL_EXT_debug_marker */ + flextglInsertEventMarkerEXT = reinterpret_cast(loader.load("glInsertEventMarkerEXT")); + flextglPushGroupMarkerEXT = reinterpret_cast(loader.load("glPushGroupMarkerEXT")); + flextglPopGroupMarkerEXT = reinterpret_cast(loader.load("glPopGroupMarkerEXT")); + + /* GL_EXT_disjoint_timer_query */ + flextglGenQueriesEXT = reinterpret_cast(loader.load("glGenQueriesEXT")); + flextglDeleteQueriesEXT = reinterpret_cast(loader.load("glDeleteQueriesEXT")); + flextglIsQueryEXT = reinterpret_cast(loader.load("glIsQueryEXT")); + flextglBeginQueryEXT = reinterpret_cast(loader.load("glBeginQueryEXT")); + flextglEndQueryEXT = reinterpret_cast(loader.load("glEndQueryEXT")); + flextglQueryCounterEXT = reinterpret_cast(loader.load("glQueryCounterEXT")); + flextglGetQueryivEXT = reinterpret_cast(loader.load("glGetQueryivEXT")); + flextglGetQueryObjectivEXT = reinterpret_cast(loader.load("glGetQueryObjectivEXT")); + flextglGetQueryObjectuivEXT = reinterpret_cast(loader.load("glGetQueryObjectuivEXT")); + flextglGetQueryObjecti64vEXT = reinterpret_cast(loader.load("glGetQueryObjecti64vEXT")); + flextglGetQueryObjectui64vEXT = reinterpret_cast(loader.load("glGetQueryObjectui64vEXT")); + + /* GL_EXT_texture_sRGB_decode */ + + /* GL_EXT_separate_shader_objects */ + flextglUseShaderProgramEXT = reinterpret_cast(loader.load("glUseShaderProgramEXT")); + flextglActiveProgramEXT = reinterpret_cast(loader.load("glActiveProgramEXT")); + flextglCreateShaderProgramEXT = reinterpret_cast(loader.load("glCreateShaderProgramEXT")); + flextglActiveShaderProgramEXT = reinterpret_cast(loader.load("glActiveShaderProgramEXT")); + flextglBindProgramPipelineEXT = reinterpret_cast(loader.load("glBindProgramPipelineEXT")); + flextglCreateShaderProgramvEXT = reinterpret_cast(loader.load("glCreateShaderProgramvEXT")); + flextglDeleteProgramPipelinesEXT = reinterpret_cast(loader.load("glDeleteProgramPipelinesEXT")); + flextglGenProgramPipelinesEXT = reinterpret_cast(loader.load("glGenProgramPipelinesEXT")); + flextglGetProgramPipelineInfoLogEXT = reinterpret_cast(loader.load("glGetProgramPipelineInfoLogEXT")); + flextglGetProgramPipelineivEXT = reinterpret_cast(loader.load("glGetProgramPipelineivEXT")); + flextglIsProgramPipelineEXT = reinterpret_cast(loader.load("glIsProgramPipelineEXT")); + flextglProgramParameteriEXT = reinterpret_cast(loader.load("glProgramParameteriEXT")); + flextglProgramUniform1fEXT = reinterpret_cast(loader.load("glProgramUniform1fEXT")); + flextglProgramUniform1fvEXT = reinterpret_cast(loader.load("glProgramUniform1fvEXT")); + flextglProgramUniform1iEXT = reinterpret_cast(loader.load("glProgramUniform1iEXT")); + flextglProgramUniform1ivEXT = reinterpret_cast(loader.load("glProgramUniform1ivEXT")); + flextglProgramUniform2fEXT = reinterpret_cast(loader.load("glProgramUniform2fEXT")); + flextglProgramUniform2fvEXT = reinterpret_cast(loader.load("glProgramUniform2fvEXT")); + flextglProgramUniform2iEXT = reinterpret_cast(loader.load("glProgramUniform2iEXT")); + flextglProgramUniform2ivEXT = reinterpret_cast(loader.load("glProgramUniform2ivEXT")); + flextglProgramUniform3fEXT = reinterpret_cast(loader.load("glProgramUniform3fEXT")); + flextglProgramUniform3fvEXT = reinterpret_cast(loader.load("glProgramUniform3fvEXT")); + flextglProgramUniform3iEXT = reinterpret_cast(loader.load("glProgramUniform3iEXT")); + flextglProgramUniform3ivEXT = reinterpret_cast(loader.load("glProgramUniform3ivEXT")); + flextglProgramUniform4fEXT = reinterpret_cast(loader.load("glProgramUniform4fEXT")); + flextglProgramUniform4fvEXT = reinterpret_cast(loader.load("glProgramUniform4fvEXT")); + flextglProgramUniform4iEXT = reinterpret_cast(loader.load("glProgramUniform4iEXT")); + flextglProgramUniform4ivEXT = reinterpret_cast(loader.load("glProgramUniform4ivEXT")); + flextglProgramUniformMatrix2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2fvEXT")); + flextglProgramUniformMatrix3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3fvEXT")); + flextglProgramUniformMatrix4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4fvEXT")); + flextglUseProgramStagesEXT = reinterpret_cast(loader.load("glUseProgramStagesEXT")); + flextglValidateProgramPipelineEXT = reinterpret_cast(loader.load("glValidateProgramPipelineEXT")); + flextglProgramUniform1uiEXT = reinterpret_cast(loader.load("glProgramUniform1uiEXT")); + flextglProgramUniform2uiEXT = reinterpret_cast(loader.load("glProgramUniform2uiEXT")); + flextglProgramUniform3uiEXT = reinterpret_cast(loader.load("glProgramUniform3uiEXT")); + flextglProgramUniform4uiEXT = reinterpret_cast(loader.load("glProgramUniform4uiEXT")); + flextglProgramUniform1uivEXT = reinterpret_cast(loader.load("glProgramUniform1uivEXT")); + flextglProgramUniform2uivEXT = reinterpret_cast(loader.load("glProgramUniform2uivEXT")); + flextglProgramUniform3uivEXT = reinterpret_cast(loader.load("glProgramUniform3uivEXT")); + flextglProgramUniform4uivEXT = reinterpret_cast(loader.load("glProgramUniform4uivEXT")); + flextglProgramUniformMatrix2x3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2x3fvEXT")); + flextglProgramUniformMatrix3x2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3x2fvEXT")); + flextglProgramUniformMatrix2x4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2x4fvEXT")); + flextglProgramUniformMatrix4x2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4x2fvEXT")); + flextglProgramUniformMatrix3x4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3x4fvEXT")); + flextglProgramUniformMatrix4x3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4x3fvEXT")); + + /* GL_EXT_sRGB */ + + /* GL_EXT_multisampled_render_to_texture */ + flextglRenderbufferStorageMultisampleEXT = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleEXT")); + flextglFramebufferTexture2DMultisampleEXT = reinterpret_cast(loader.load("glFramebufferTexture2DMultisampleEXT")); + + /* GL_EXT_robustness */ + flextglGetGraphicsResetStatusEXT = reinterpret_cast(loader.load("glGetGraphicsResetStatusEXT")); + flextglReadnPixelsEXT = reinterpret_cast(loader.load("glReadnPixelsEXT")); + flextglGetnUniformfvEXT = reinterpret_cast(loader.load("glGetnUniformfvEXT")); + flextglGetnUniformivEXT = reinterpret_cast(loader.load("glGetnUniformivEXT")); + + /* GL_KHR_debug */ + flextglDebugMessageControl = reinterpret_cast(loader.load("glDebugMessageControl")); + flextglDebugMessageInsert = reinterpret_cast(loader.load("glDebugMessageInsert")); + flextglDebugMessageCallback = reinterpret_cast(loader.load("glDebugMessageCallback")); + flextglGetDebugMessageLog = reinterpret_cast(loader.load("glGetDebugMessageLog")); + flextglPushDebugGroup = reinterpret_cast(loader.load("glPushDebugGroup")); + flextglPopDebugGroup = reinterpret_cast(loader.load("glPopDebugGroup")); + flextglObjectLabel = reinterpret_cast(loader.load("glObjectLabel")); + flextglGetObjectLabel = reinterpret_cast(loader.load("glGetObjectLabel")); + flextglObjectPtrLabel = reinterpret_cast(loader.load("glObjectPtrLabel")); + flextglGetObjectPtrLabel = reinterpret_cast(loader.load("glGetObjectPtrLabel")); + flextglGetPointerv = reinterpret_cast(loader.load("glGetPointerv")); + flextglDebugMessageControlKHR = reinterpret_cast(loader.load("glDebugMessageControlKHR")); + flextglDebugMessageInsertKHR = reinterpret_cast(loader.load("glDebugMessageInsertKHR")); + flextglDebugMessageCallbackKHR = reinterpret_cast(loader.load("glDebugMessageCallbackKHR")); + flextglGetDebugMessageLogKHR = reinterpret_cast(loader.load("glGetDebugMessageLogKHR")); + flextglPushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); + flextglPopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); + flextglObjectLabelKHR = reinterpret_cast(loader.load("glObjectLabelKHR")); + flextglGetObjectLabelKHR = reinterpret_cast(loader.load("glGetObjectLabelKHR")); + flextglObjectPtrLabelKHR = reinterpret_cast(loader.load("glObjectPtrLabelKHR")); + flextglGetObjectPtrLabelKHR = reinterpret_cast(loader.load("glGetObjectPtrLabelKHR")); + flextglGetPointervKHR = reinterpret_cast(loader.load("glGetPointervKHR")); + + /* GL_NV_read_buffer_front */ + + /* GL_NV_read_depth */ + + /* GL_NV_read_stencil */ + + /* GL_NV_read_depth_stencil */ + + /* GL_NV_texture_border_clamp */ + + /* GL_OES_depth32 */ + + /* GL_OES_mapbuffer */ + flextglMapBufferOES = reinterpret_cast(loader.load("glMapBufferOES")); + flextglUnmapBufferOES = reinterpret_cast(loader.load("glUnmapBufferOES")); + flextglGetBufferPointervOES = reinterpret_cast(loader.load("glGetBufferPointervOES")); + + /* GL_OES_stencil1 */ + + /* GL_OES_stencil4 */ +} diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp.template b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp.template new file mode 100644 index 000000000..756588a3a --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp.template @@ -0,0 +1,21 @@ +@require(passthru, functions, enums, options, version, extensions) +#include "flextGL.h" + +#include +#include + +#include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" + +void flextGLInit() { + Magnum::Platform::Implementation::OpenGLFunctionLoader loader; + @for category,funcs in functions: + @if category not in ['ES_VERSION_2_0', 'ES_VERSION_3_0']: + + /* GL_@category */ + @for f in funcs: + flextgl@f.name = reinterpret_cast<@f.returntype\ +(APIENTRY*)(@f.param_type_list_string())>(loader.load("gl@f.name")); + @end + @end + @end +} diff --git a/src/MagnumExternal/OpenGL/GLES3/gl3.h b/src/MagnumExternal/OpenGL/GLES3/gl3.h deleted file mode 100644 index 81b63bd03..000000000 --- a/src/MagnumExternal/OpenGL/GLES3/gl3.h +++ /dev/null @@ -1,937 +0,0 @@ -#ifndef __gl3_h_ -#define __gl3_h_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2013 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* -** This header is generated from the Khronos OpenGL / OpenGL ES XML -** API Registry. The current version of the Registry, generator scripts -** used to make the header, and the header can be found at -** http://www.opengl.org/registry/ -** -** Khronos $Revision$ on $Date$ -*/ - -#include - -/* Generated C header for: - * API: gles2 - * Profile: common - * Versions considered: [23]\.[0-9] - * Versions emitted: .* - * Default extensions included: None - * Additional extensions included: _nomatch_^ - * Extensions removed: _nomatch_^ - */ - -#ifndef GL_ES_VERSION_2_0 -#define GL_ES_VERSION_2_0 1 -#include -typedef khronos_int8_t GLbyte; -typedef khronos_float_t GLclampf; -typedef khronos_int32_t GLfixed; -typedef short GLshort; -typedef unsigned short GLushort; -typedef void GLvoid; -typedef struct __GLsync *GLsync; -typedef khronos_int64_t GLint64; -typedef khronos_uint64_t GLuint64; -typedef unsigned int GLenum; -typedef unsigned int GLuint; -typedef char GLchar; -typedef khronos_float_t GLfloat; -typedef khronos_ssize_t GLsizeiptr; -typedef khronos_intptr_t GLintptr; -typedef unsigned int GLbitfield; -typedef int GLint; -typedef unsigned char GLboolean; -typedef int GLsizei; -typedef khronos_uint8_t GLubyte; -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_FALSE 0 -#define GL_TRUE 1 -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_FUNC_ADD 0x8006 -#define GL_BLEND_EQUATION 0x8009 -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_STREAM_DRAW 0x88E0 -#define GL_STATIC_DRAW 0x88E4 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_CULL_FACE 0x0B44 -#define GL_BLEND 0x0BE2 -#define GL_DITHER 0x0BD0 -#define GL_STENCIL_TEST 0x0B90 -#define GL_DEPTH_TEST 0x0B71 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_LINE_WIDTH 0x0B21 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_FIXED 0x140C -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_SHADER_TYPE 0x8B4F -#define GL_DELETE_STATUS 0x8B80 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_INVERT 0x150A -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TEXTURE 0x1702 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_REPEAT 0x2901 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_COMPILE_STATUS 0x8B81 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGB565 0x8D62 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_NONE 0 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); -GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); -GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); -GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); -GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); -GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); -GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); -GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); -GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); -GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); -GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); -GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); -GL_APICALL void GL_APIENTRY glClearStencil (GLint s); -GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); -GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); -GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); -GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); -GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); -GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); -GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); -GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); -GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); -GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); -GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); -GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); -GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); -GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glDisable (GLenum cap); -GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); -GL_APICALL void GL_APIENTRY glEnable (GLenum cap); -GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glFinish (void); -GL_APICALL void GL_APIENTRY glFlush (void); -GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); -GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); -GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); -GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); -GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); -GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); -GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); -GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params); -GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); -GL_APICALL GLenum GL_APIENTRY glGetError (void); -GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); -GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); -GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); -GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); -GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); -GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); -GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); -GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); -GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); -GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); -GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); -GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); -GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); -GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); -GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); -GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); -GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); -GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); -GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); -GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); -GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); -GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); -GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); -GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); -GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); -GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); -GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); -GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); -GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); -#endif /* GL_ES_VERSION_2_0 */ - -#ifndef GL_ES_VERSION_3_0 -#define GL_ES_VERSION_3_0 1 -typedef unsigned short GLhalf; -#define GL_READ_BUFFER 0x0C02 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_RED 0x1903 -#define GL_RGB8 0x8051 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 -#define GL_HALF_FLOAT 0x140B -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_RG8 0x822B -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C -#define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_COPY_READ_BUFFER_BINDING 0x8F36 -#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFFu -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A -#define GL_SAMPLER_BINDING 0x8919 -#define GL_RGB10_A2UI 0x906F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_INT_2_10_10_10_REV 0x8D9F -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF -#define GL_COMPRESSED_R11_EAC 0x9270 -#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 -#define GL_COMPRESSED_RG11_EAC 0x9272 -#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 -#define GL_COMPRESSED_RGB8_ETC2 0x9274 -#define GL_COMPRESSED_SRGB8_ETC2 0x9275 -#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 -#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 -#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 -#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 -#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F -#define GL_MAX_ELEMENT_INDEX 0x8D6B -#define GL_NUM_SAMPLE_COUNTS 0x9380 -#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF -GL_APICALL void GL_APIENTRY glReadBuffer (GLenum mode); -GL_APICALL void GL_APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); -GL_APICALL void GL_APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); -GL_APICALL void GL_APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -GL_APICALL void GL_APIENTRY glGenQueries (GLsizei n, GLuint *ids); -GL_APICALL void GL_APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids); -GL_APICALL GLboolean GL_APIENTRY glIsQuery (GLuint id); -GL_APICALL void GL_APIENTRY glBeginQuery (GLenum target, GLuint id); -GL_APICALL void GL_APIENTRY glEndQuery (GLenum target); -GL_APICALL void GL_APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params); -GL_APICALL GLboolean GL_APIENTRY glUnmapBuffer (GLenum target); -GL_APICALL void GL_APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params); -GL_APICALL void GL_APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs); -GL_APICALL void GL_APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GL_APICALL void *GL_APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GL_APICALL void GL_APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); -GL_APICALL void GL_APIENTRY glBindVertexArray (GLuint array); -GL_APICALL void GL_APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays); -GL_APICALL void GL_APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays); -GL_APICALL GLboolean GL_APIENTRY glIsVertexArray (GLuint array); -GL_APICALL void GL_APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data); -GL_APICALL void GL_APIENTRY glBeginTransformFeedback (GLenum primitiveMode); -GL_APICALL void GL_APIENTRY glEndTransformFeedback (void); -GL_APICALL void GL_APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GL_APICALL void GL_APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer); -GL_APICALL void GL_APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -GL_APICALL void GL_APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -GL_APICALL void GL_APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -GL_APICALL void GL_APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params); -GL_APICALL void GL_APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w); -GL_APICALL void GL_APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GL_APICALL void GL_APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v); -GL_APICALL void GL_APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v); -GL_APICALL void GL_APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params); -GL_APICALL GLint GL_APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name); -GL_APICALL void GL_APIENTRY glUniform1ui (GLint location, GLuint v0); -GL_APICALL void GL_APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1); -GL_APICALL void GL_APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2); -GL_APICALL void GL_APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GL_APICALL void GL_APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value); -GL_APICALL void GL_APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value); -GL_APICALL void GL_APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value); -GL_APICALL void GL_APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value); -GL_APICALL void GL_APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GL_APICALL const GLubyte *GL_APIENTRY glGetStringi (GLenum name, GLuint index); -GL_APICALL void GL_APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GL_APICALL void GL_APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); -GL_APICALL void GL_APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -GL_APICALL GLuint GL_APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName); -GL_APICALL void GL_APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -GL_APICALL void GL_APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -GL_APICALL void GL_APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -GL_APICALL void GL_APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); -GL_APICALL GLsync GL_APIENTRY glFenceSync (GLenum condition, GLbitfield flags); -GL_APICALL GLboolean GL_APIENTRY glIsSync (GLsync sync); -GL_APICALL void GL_APIENTRY glDeleteSync (GLsync sync); -GL_APICALL GLenum GL_APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glGetInteger64v (GLenum pname, GLint64 *params); -GL_APICALL void GL_APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -GL_APICALL void GL_APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data); -GL_APICALL void GL_APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params); -GL_APICALL void GL_APIENTRY glGenSamplers (GLsizei count, GLuint *samplers); -GL_APICALL void GL_APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers); -GL_APICALL GLboolean GL_APIENTRY glIsSampler (GLuint sampler); -GL_APICALL void GL_APIENTRY glBindSampler (GLuint unit, GLuint sampler); -GL_APICALL void GL_APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param); -GL_APICALL void GL_APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param); -GL_APICALL void GL_APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param); -GL_APICALL void GL_APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params); -GL_APICALL void GL_APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); -GL_APICALL void GL_APIENTRY glBindTransformFeedback (GLenum target, GLuint id); -GL_APICALL void GL_APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids); -GL_APICALL void GL_APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids); -GL_APICALL GLboolean GL_APIENTRY glIsTransformFeedback (GLuint id); -GL_APICALL void GL_APIENTRY glPauseTransformFeedback (void); -GL_APICALL void GL_APIENTRY glResumeTransformFeedback (void); -GL_APICALL void GL_APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); -GL_APICALL void GL_APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); -GL_APICALL void GL_APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); -GL_APICALL void GL_APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments); -GL_APICALL void GL_APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GL_APICALL void GL_APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); -#endif /* GL_ES_VERSION_3_0 */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/MagnumExternal/OpenGL/GLES3/gl3platform.h b/src/MagnumExternal/OpenGL/GLES3/gl3platform.h deleted file mode 100644 index b1e869dd1..000000000 --- a/src/MagnumExternal/OpenGL/GLES3/gl3platform.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __gl3platform_h_ -#define __gl3platform_h_ - -/* $Revision: 23328 $ on $Date:: 2013-10-02 02:28:28 -0700 #$ */ - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -/* Platform-specific types and definitions for OpenGL ES 3.X gl3.h - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "OpenGL-ES" component "Registry". - */ - -#include - -#ifndef GL_APICALL -#define GL_APICALL KHRONOS_APICALL -#endif - -#ifndef GL_APIENTRY -#define GL_APIENTRY KHRONOS_APIENTRY -#endif - -#endif /* __gl3platform_h_ */