From 420c43fc7a48e20781c28eff981eb36ad1addb22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 16:44:45 +0200 Subject: [PATCH 01/17] Minor cleanup of generated GL header. --- src/MagnumExternal/OpenGL/GL/flextGL.h | 2 +- src/MagnumExternal/OpenGL/GL/flextGL.h.template | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 From 5a8e165014924032fa6a8722f39a23afce6fbbf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 11 Aug 2014 23:18:06 +0200 Subject: [PATCH 02/17] Use flextGL also for OpenGL ES. Currently just regenerated the stock headers using flextGL, reducing line count a bit. No dynamic extension loading or function pointers yet, trying to make as little changes as possible. --- src/Magnum/OpenGL.h | 36 +- src/Magnum/Platform/NaClApplication.h | 4 + .../Platform/WindowlessNaClApplication.h | 4 + src/MagnumExternal/OpenGL/CMakeLists.txt | 5 +- .../OpenGL/GLES2/CMakeLists.txt | 16 +- .../Emscripten/flextGLEmscripten.h.template | 56 + .../OpenGL/GLES2/NaCl/flextGLNaCl.h.template | 60 + src/MagnumExternal/OpenGL/GLES2/README.md | 22 + .../OpenGL/GLES2/extensions.txt | 71 + src/MagnumExternal/OpenGL/GLES2/flextGL.h | 1468 ++++++++++++++ .../OpenGL/GLES2/flextGL.h.template | 86 + .../OpenGL/GLES2/flextGLEmscripten.h | 1313 +++++++++++++ src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h | 1721 +++++++++++++++++ src/MagnumExternal/OpenGL/GLES2/gl2.h | 523 ----- src/MagnumExternal/OpenGL/GLES2/gl2ext.h | 1558 --------------- src/MagnumExternal/OpenGL/GLES2/gl2platform.h | 30 - .../OpenGL/GLES3/CMakeLists.txt | 2 +- src/MagnumExternal/OpenGL/GLES3/README.md | 10 + .../OpenGL/GLES3/extensions.txt | 28 + src/MagnumExternal/OpenGL/GLES3/flextGL.h | 1407 ++++++++++++++ .../OpenGL/GLES3/flextGL.h.template | 90 + src/MagnumExternal/OpenGL/GLES3/gl3.h | 937 --------- src/MagnumExternal/OpenGL/GLES3/gl3platform.h | 30 - 23 files changed, 6363 insertions(+), 3114 deletions(-) create mode 100644 src/MagnumExternal/OpenGL/GLES2/Emscripten/flextGLEmscripten.h.template create mode 100644 src/MagnumExternal/OpenGL/GLES2/NaCl/flextGLNaCl.h.template create mode 100644 src/MagnumExternal/OpenGL/GLES2/README.md create mode 100644 src/MagnumExternal/OpenGL/GLES2/extensions.txt create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGL.h create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGL.h.template create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h delete mode 100644 src/MagnumExternal/OpenGL/GLES2/gl2.h delete mode 100644 src/MagnumExternal/OpenGL/GLES2/gl2ext.h delete mode 100644 src/MagnumExternal/OpenGL/GLES2/gl2platform.h create mode 100644 src/MagnumExternal/OpenGL/GLES3/README.md create mode 100644 src/MagnumExternal/OpenGL/GLES3/extensions.txt create mode 100644 src/MagnumExternal/OpenGL/GLES3/flextGL.h create mode 100644 src/MagnumExternal/OpenGL/GLES3/flextGL.h.template delete mode 100644 src/MagnumExternal/OpenGL/GLES3/gl3.h delete mode 100644 src/MagnumExternal/OpenGL/GLES3/gl3platform.h 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/NaClApplication.h b/src/Magnum/Platform/NaClApplication.h index 247b7cf7c..fd554540f 100644 --- a/src/Magnum/Platform/NaClApplication.h +++ b/src/Magnum/Platform/NaClApplication.h @@ -31,6 +31,10 @@ #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 5efebd0f4..099e1f55b 100644 --- a/src/Magnum/Platform/WindowlessNaClApplication.h +++ b/src/Magnum/Platform/WindowlessNaClApplication.h @@ -31,6 +31,10 @@ #include #include + +/* Needs to be first */ +#include "Magnum/OpenGL.h" + #include #include #include 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/GLES2/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt index 68f364ffe..e0106eebd 100644 --- a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt @@ -23,15 +23,13 @@ # DEALINGS IN THE SOFTWARE. # -set(MagnumOpenGL_HEADERS - gl2ext.h) - -# 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) +# 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..c4edf1671 --- /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` file. + +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.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/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..38046aa11 100644 --- a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt @@ -23,4 +23,4 @@ # DEALINGS IN THE SOFTWARE. # -install(FILES gl3.h gl3platform.h DESTINATION ${MAGNUM_EXTERNAL_INCLUDE_INSTALL_DIR}/OpenGL/GLES3) +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..35405e48c --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/README.md @@ -0,0 +1,10 @@ +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` file. 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..34347b493 --- /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.0 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.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h new file mode 100644 index 000000000..5dadc2b41 --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -0,0 +1,1407 @@ +#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_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_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/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_ */ From b0cbb4066c3ea9e9fdb4e40a46f3b331c7a46e25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 11 Aug 2014 23:23:19 +0200 Subject: [PATCH 03/17] Added definitions for OpenGL ES function pointers. Using GLES extension functions in the code won't cause linker failures anymore, but their addresses aren't being loaded yet. As said before, NaCl and Emscripten is still a special case. --- src/Magnum/CMakeLists.txt | 8 +- .../OpenGL/GLES2/CMakeLists.txt | 11 + src/MagnumExternal/OpenGL/GLES2/README.md | 2 +- src/MagnumExternal/OpenGL/GLES2/flextGL.cpp | 196 ++++++++++++++++++ .../OpenGL/GLES2/flextGL.cpp.template | 20 ++ .../OpenGL/GLES3/CMakeLists.txt | 8 + src/MagnumExternal/OpenGL/GLES3/README.md | 5 +- src/MagnumExternal/OpenGL/GLES3/flextGL.cpp | 123 +++++++++++ .../OpenGL/GLES3/flextGL.cpp.template | 20 ++ 9 files changed, 388 insertions(+), 5 deletions(-) create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGL.cpp create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGL.cpp.template create mode 100644 src/MagnumExternal/OpenGL/GLES3/flextGL.cpp create mode 100644 src/MagnumExternal/OpenGL/GLES3/flextGL.cpp.template diff --git a/src/Magnum/CMakeLists.txt b/src/Magnum/CMakeLists.txt index 38b7a1242..291762503 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -149,8 +149,7 @@ if(NOT TARGET_GLES) BufferTexture.cpp CubeMapTextureArray.cpp MultisampleTexture.cpp - RectangleTexture.cpp - $) + RectangleTexture.cpp) endif() # Non-ES2 stuff @@ -163,6 +162,11 @@ if(NOT TARGET_GLES2) 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/MagnumExternal/OpenGL/GLES2/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt index e0106eebd..4c0924774 100644 --- a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt @@ -23,6 +23,17 @@ # DEALINGS IN THE SOFTWARE. # +# NaCl and Emscripten don't have the ability to load function pointers manually +if(NOT CORRADE_TARGET_NACL AND NOT CORRADE_TARGET_EMSCRIPTEN) + 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() +endif() + # NaCl and Emscripten are special, provide only some extensions for them if(CORRADE_TARGET_NACL) set(MagnumOpenGL_HEADERS flextGLNaCl.h) diff --git a/src/MagnumExternal/OpenGL/GLES2/README.md b/src/MagnumExternal/OpenGL/GLES2/README.md index c4edf1671..edabc8827 100644 --- a/src/MagnumExternal/OpenGL/GLES2/README.md +++ b/src/MagnumExternal/OpenGL/GLES2/README.md @@ -7,7 +7,7 @@ files for generic GLES2 implementations: .../flextGLgen.py -D . -t . extensions.txt -It will generate `flextGL.h` file. +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: 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/GLES3/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt index 38046aa11..e38d9c5a4 100644 --- a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt @@ -23,4 +23,12 @@ # DEALINGS IN THE SOFTWARE. # +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 index 35405e48c..58942045c 100644 --- a/src/MagnumExternal/OpenGL/GLES3/README.md +++ b/src/MagnumExternal/OpenGL/GLES3/README.md @@ -6,5 +6,6 @@ Call `flextGLgen.py` in this directory with the following arguments: .../flextGLgen.py -D . -t . extensions.txt -It will generate `flextGL.h` file. As usual, be sure to check the diff for -suspicious changes and whitespace-at-EOL (although there shouldn't be any). +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/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp new file mode 100644 index 000000000..224a3ca6a --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp @@ -0,0 +1,123 @@ +#include "flextGL.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* 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 From c09a929b0d1e15183b123a8662c50a75661ca93b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 11 Aug 2014 23:25:53 +0200 Subject: [PATCH 04/17] Extension loading for OpenGL ES. Added EglContext, wired flextGLInit() to be called on all GLES platforms except for Emscripten and NaCl. --- CMakeLists.txt | 11 +- doc/building.dox | 1 + doc/cmake.dox | 1 + doc/platform.dox | 1 + modules/FindMagnum.cmake | 11 + src/Magnum/Platform/CMakeLists.txt | 66 +++-- src/Magnum/Platform/Context.h | 2 +- .../Implementation/OpenGLFunctionLoader.cpp | 14 + .../Implementation/OpenGLFunctionLoader.h | 3 + .../OpenGL/GLES2/CMakeLists.txt | 1 + .../OpenGL/GLES2/flextGLPlatform.cpp | 273 ++++++++++++++++++ .../OpenGL/GLES2/flextGLPlatform.cpp.template | 21 ++ .../OpenGL/GLES3/CMakeLists.txt | 1 + .../OpenGL/GLES3/flextGLPlatform.cpp | 152 ++++++++++ .../OpenGL/GLES3/flextGLPlatform.cpp.template | 21 ++ 15 files changed, 552 insertions(+), 27 deletions(-) create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp create mode 100644 src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp.template create mode 100644 src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp create mode 100644 src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp.template diff --git a/CMakeLists.txt b/CMakeLists.txt index ba907f8c1..017035253 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/doc/building.dox b/doc/building.dox index 2713c8614..423d52eb9 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/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/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 986f99117..a15c33220 100644 --- a/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.h +++ b/src/Magnum/Platform/Implementation/OpenGLFunctionLoader.h @@ -59,6 +59,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/MagnumExternal/OpenGL/GLES2/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt index 4c0924774..11840c3b8 100644 --- a/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES2/CMakeLists.txt @@ -25,6 +25,7 @@ # 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) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") 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/GLES3/CMakeLists.txt b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt index e38d9c5a4..31dec6995 100644 --- a/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt +++ b/src/MagnumExternal/OpenGL/GLES3/CMakeLists.txt @@ -23,6 +23,7 @@ # DEALINGS IN THE SOFTWARE. # +# 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") diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp new file mode 100644 index 000000000..eab5d438f --- /dev/null +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -0,0 +1,152 @@ +#include "flextGL.h" + +#include +#include + +#include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" + +void flextGLInit() { + Magnum::Platform::Implementation::OpenGLFunctionLoader loader; + + /* 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 +} From e201b5a480c6630eda68c4f7d93d61094cd49d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 12 Aug 2014 20:59:51 +0200 Subject: [PATCH 05/17] package: enable EglContext everywhere possible. --- package/archlinux/PKGBUILD | 1 + package/archlinux/PKGBUILD-android-arm | 3 ++- package/archlinux/PKGBUILD-android-x86 | 3 ++- package/archlinux/PKGBUILD-clang | 1 + package/archlinux/PKGBUILD-clang-libc++ | 1 + package/archlinux/PKGBUILD-es2 | 1 + package/archlinux/PKGBUILD-es2desktop | 1 + package/archlinux/PKGBUILD-es3 | 1 + package/archlinux/PKGBUILD-es3desktop | 1 + package/archlinux/PKGBUILD-gcc47 | 1 + package/archlinux/PKGBUILD-release | 1 + package/ci/jenkins-android.xml | 1 + package/ci/jenkins.xml | 1 + package/debian/rules | 1 + 14 files changed, 16 insertions(+), 2 deletions(-) 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 f69caba81..7b5407cfd 100644 --- a/package/ci/jenkins.xml +++ b/package/ci/jenkins.xml @@ -140,6 +140,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 \ From 7468887e994263e26f4063d7e5d8e346d2228052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 3 Aug 2014 17:22:10 +0200 Subject: [PATCH 06/17] Re-enable extension calls on OpenGL ES except for NaCl and Emscripten. --- src/Magnum/AbstractFramebuffer.cpp | 75 +++++++++------- src/Magnum/AbstractObject.cpp | 42 ++++----- src/Magnum/AbstractShaderProgram.cpp | 126 +++++++++++++-------------- src/Magnum/AbstractTexture.cpp | 24 ++--- src/Magnum/Buffer.cpp | 30 +++---- src/Magnum/DebugMessage.cpp | 32 ++++--- src/Magnum/Framebuffer.cpp | 6 +- src/Magnum/Mesh.cpp | 81 +++++++++++------ src/Magnum/MeshView.cpp | 10 ++- src/Magnum/Query.cpp | 47 +++++----- src/Magnum/Query.h | 6 +- src/Magnum/Renderbuffer.cpp | 26 ++++-- src/Magnum/Renderer.cpp | 6 +- 13 files changed, 278 insertions(+), 233 deletions(-) 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 954dfbdd4..aed41aa27 100644 --- a/src/Magnum/AbstractShaderProgram.cpp +++ b/src/Magnum/AbstractShaderProgram.cpp @@ -363,15 +363,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 } @@ -391,15 +391,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 } @@ -419,15 +419,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 } @@ -447,15 +447,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 } @@ -475,15 +475,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 } @@ -503,15 +503,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 } @@ -531,15 +531,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 } @@ -559,15 +559,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 } @@ -588,15 +588,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 } @@ -616,15 +616,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 } @@ -644,15 +644,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 } @@ -672,15 +672,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 } @@ -771,15 +771,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 } @@ -799,15 +799,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 } @@ -827,15 +827,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 } @@ -856,15 +856,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 } @@ -884,15 +884,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 } @@ -912,15 +912,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 } @@ -940,15 +940,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 } @@ -968,15 +968,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 } @@ -996,15 +996,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/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index 76b53eb78..ae381d210 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -891,16 +891,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 } @@ -945,16 +945,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 } @@ -1034,9 +1034,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); @@ -1045,8 +1046,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 } @@ -1080,9 +1080,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); @@ -1091,8 +1092,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 } diff --git a/src/Magnum/Buffer.cpp b/src/Magnum/Buffer.cpp index 75411ae09..ff6d31e44 100644 --- a/src/Magnum/Buffer.cpp +++ b/src/Magnum/Buffer.cpp @@ -212,15 +212,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 +237,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 +322,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 +339,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 +358,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 +376,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 } 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 3ae6ba369..840e1ad62 100644 --- a/src/Magnum/Framebuffer.cpp +++ b/src/Magnum/Framebuffer.cpp @@ -276,16 +276,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/Mesh.cpp b/src/Magnum/Mesh.cpp index 54ab76406..5028a0e45 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 bc5274030..165edd4a3 100644 --- a/src/Magnum/MeshView.cpp +++ b/src/Magnum/MeshView.cpp @@ -94,9 +94,10 @@ void MeshView::multiDrawImplementationDefault(std::initializer_list 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 43242babf..50b917fdc 100644 --- a/src/Magnum/Query.h +++ b/src/Magnum/Query.h @@ -447,12 +447,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 } From d3fd195849d11dbffeb134c01cc742809f22eb7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 00:44:10 +0200 Subject: [PATCH 07/17] Re-enable ES extensions everywhere except NaCl and Emscripten. --- .../Implementation/setupDriverWorkarounds.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) 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 From f39e62b885f55e7af73673138725f76fa0776daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 01:35:28 +0200 Subject: [PATCH 08/17] Updated GL headers for OpenGL ES 3.1. --- .../OpenGL/GLES3/extensions.txt | 2 +- src/MagnumExternal/OpenGL/GLES3/flextGL.cpp | 70 ++++ src/MagnumExternal/OpenGL/GLES3/flextGL.h | 319 ++++++++++++++++++ .../OpenGL/GLES3/flextGLPlatform.cpp | 70 ++++ 4 files changed, 460 insertions(+), 1 deletion(-) diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index 34347b493..3b99ac740 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -1,6 +1,6 @@ # The following output is taken from `magnum-info` with removed `GL_` prefixes. -version 3.0 es +version 3.1 es extension APPLE_texture_format_BGRA8888 optional extension CHROMIUM_map_sub optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp index 224a3ca6a..7b922e19d 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp @@ -4,6 +4,76 @@ 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; diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index 5dadc2b41..a14c4a911 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -696,6 +696,186 @@ typedef khronos_ssize_t GLsizeiptr; #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 @@ -1139,6 +1319,145 @@ GLAPI FLEXTGL_EXPORT void APIENTRY glTexStorage2D(GLenum, GLsizei, GLenum, GLsiz 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 */ diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp index eab5d438f..eb13711c8 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -8,6 +8,76 @@ 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 */ From 8e79d1877ea11418de900a7f533ed2d4751fe05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 2 Aug 2014 23:09:12 +0200 Subject: [PATCH 09/17] Initial support for OpenGL ES 3.1. --- Doxyfile | 1 + README.md | 3 ++- doc/mainpage.dox | 3 ++- doc/opengl-support.dox | 5 +++++ doc/opengl.dox | 8 +++++++- src/Magnum/Context.cpp | 2 ++ src/Magnum/Shader.cpp | 1 + src/Magnum/Version.cpp | 1 + src/Magnum/Version.h | 8 ++++++-- 9 files changed, 27 insertions(+), 5 deletions(-) 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 c8ab38890..e561f3a32 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/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/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index 5f4c25dc2..23c9e5dab 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/Shader.cpp b/src/Magnum/Shader.cpp index f426fb88a..164661c74 100644 --- a/src/Magnum/Shader.cpp +++ b/src/Magnum/Shader.cpp @@ -554,6 +554,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 */ 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 c30246af0..24a5efc01 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 }; From 4bc4a40c70ef410e643b2c3c4d2167aaf53c4a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 11:30:30 +0200 Subject: [PATCH 10/17] Enabled new shader functionality in ES 3.1. --- src/Magnum/AbstractShaderProgram.cpp | 36 ++++- src/Magnum/AbstractShaderProgram.h | 83 ++++++------ .../Implementation/ShaderProgramState.cpp | 8 +- .../Implementation/ShaderProgramState.h | 12 +- src/Magnum/Implementation/ShaderState.h | 7 +- src/Magnum/Shader.cpp | 124 ++++++++++++++---- src/Magnum/Shader.h | 105 ++++++++------- 7 files changed, 248 insertions(+), 127 deletions(-) diff --git a/src/Magnum/AbstractShaderProgram.cpp b/src/Magnum/AbstractShaderProgram.cpp index aed41aa27..43d636f75 100644 --- a/src/Magnum/AbstractShaderProgram.cpp +++ b/src/Magnum/AbstractShaderProgram.cpp @@ -50,9 +50,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; @@ -64,7 +68,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; @@ -76,7 +84,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; @@ -88,7 +100,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; @@ -98,7 +114,9 @@ Int AbstractShaderProgram::maxImageUnits() { return value; } +#endif +#ifndef MAGNUM_TARGET_GLES Int AbstractShaderProgram::maxImageSamples() { if(!Context::current()->isExtensionSupported()) return 0; @@ -110,9 +128,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; @@ -124,7 +148,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; @@ -152,9 +180,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; diff --git a/src/Magnum/AbstractShaderProgram.h b/src/Magnum/AbstractShaderProgram.h index e89e85523..2279646ac 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/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 f229fecf2..d23c9caea 100644 --- a/src/Magnum/Implementation/ShaderProgramState.h +++ b/src/Magnum/Implementation/ShaderProgramState.h @@ -86,19 +86,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/Shader.cpp b/src/Magnum/Shader.cpp index 164661c74..c646296d7 100644 --- a/src/Magnum/Shader.cpp +++ b/src/Magnum/Shader.cpp @@ -56,6 +56,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"; @@ -68,11 +70,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 } @@ -248,10 +252,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]; @@ -260,10 +272,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); @@ -272,7 +288,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; @@ -285,8 +305,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]; @@ -295,10 +323,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); @@ -307,7 +339,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; @@ -320,8 +356,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]; @@ -330,10 +374,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); @@ -342,7 +390,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; @@ -355,8 +407,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]; @@ -365,10 +425,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); @@ -377,7 +441,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; @@ -401,11 +469,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) @@ -440,11 +510,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) @@ -481,11 +553,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) @@ -522,11 +594,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) @@ -719,6 +793,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 adab40a4b..2a9660788 100644 --- a/src/Magnum/Shader.h +++ b/src/Magnum/Shader.h @@ -88,11 +88,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 @@ -119,8 +122,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. */ @@ -130,8 +133,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. */ @@ -141,8 +144,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. */ @@ -152,8 +155,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. */ @@ -163,8 +166,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. */ @@ -174,8 +177,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. */ @@ -185,8 +188,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. */ @@ -196,8 +199,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. */ @@ -235,13 +238,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}, @@ -249,7 +253,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); @@ -257,11 +261,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(); @@ -269,8 +273,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}, @@ -278,7 +283,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); @@ -286,11 +291,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(); @@ -298,8 +303,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}, @@ -307,7 +313,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); @@ -315,11 +321,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(); @@ -327,8 +333,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}, @@ -336,7 +343,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); @@ -344,11 +351,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 @@ -384,8 +391,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}, @@ -402,23 +410,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}, From 01053ec504eaa297586109b686f5568de6a8b2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:38:47 +0200 Subject: [PATCH 11/17] Enabled stencil texturing in ES 3.1. --- src/Magnum/AbstractTexture.cpp | 2 +- src/Magnum/AbstractTexture.h | 2 +- src/Magnum/CubeMapTexture.h | 2 +- src/Magnum/Sampler.h | 5 ++-- src/Magnum/Test/CubeMapTextureGLTest.cpp | 11 ++++++++ src/Magnum/Test/TextureArrayGLTest.cpp | 16 ++++++++++-- src/Magnum/Test/TextureGLTest.cpp | 32 +++++++++++++++++++++--- src/Magnum/Texture.h | 5 ++-- src/Magnum/TextureArray.h | 2 +- 9 files changed, 63 insertions(+), 14 deletions(-) diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index ae381d210..f5518f4d7 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -326,7 +326,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)); } diff --git a/src/Magnum/AbstractTexture.h b/src/Magnum/AbstractTexture.h index 6d713509a..f7f478423 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -335,7 +335,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); diff --git a/src/Magnum/CubeMapTexture.h b/src/Magnum/CubeMapTexture.h index 67319620b..8209be45c 100644 --- a/src/Magnum/CubeMapTexture.h +++ b/src/Magnum/CubeMapTexture.h @@ -228,7 +228,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); 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/Test/CubeMapTextureGLTest.cpp b/src/Magnum/Test/CubeMapTextureGLTest.cpp index 0f77f2bc4..8cd00eba4 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); diff --git a/src/Magnum/Test/TextureArrayGLTest.cpp b/src/Magnum/Test/TextureArrayGLTest.cpp index dc8fc08b9..a93011b9c 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.")); diff --git a/src/Magnum/Test/TextureGLTest.cpp b/src/Magnum/Test/TextureGLTest.cpp index fcbe09c4f..4f699cb4e 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()) diff --git a/src/Magnum/Texture.h b/src/Magnum/Texture.h index 25a142b99..cbda5f7e9 100644 --- a/src/Magnum/Texture.h +++ b/src/Magnum/Texture.h @@ -531,7 +531,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) @@ -545,7 +545,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 f4865b588..3ca9fdcf2 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) From 10faa49363066a5986e4db780e2bd8e8b30e1cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:43:35 +0200 Subject: [PATCH 12/17] Enabled texture image size queries in ES 3.1. --- src/Magnum/AbstractTexture.cpp | 6 +++++- src/Magnum/AbstractTexture.h | 8 +++++--- src/Magnum/CubeMapTexture.h | 5 +++-- src/Magnum/Implementation/TextureState.cpp | 2 ++ src/Magnum/Implementation/TextureState.h | 2 +- src/Magnum/Test/CubeMapTextureGLTest.cpp | 8 ++++++-- src/Magnum/Test/TextureArrayGLTest.cpp | 8 ++++++-- src/Magnum/Test/TextureGLTest.cpp | 16 ++++++++++++---- src/Magnum/Texture.h | 5 +++-- src/Magnum/TextureArray.h | 2 +- 10 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index f5518f4d7..b4eba3edc 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -817,16 +817,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) { @@ -1155,7 +1157,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; diff --git a/src/Magnum/AbstractTexture.h b/src/Magnum/AbstractTexture.h index f7f478423..11de23750 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -388,10 +388,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 @@ -514,7 +516,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 @@ -551,7 +553,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 diff --git a/src/Magnum/CubeMapTexture.h b/src/Magnum/CubeMapTexture.h index 8209be45c..61a34cff8 100644 --- a/src/Magnum/CubeMapTexture.h +++ b/src/Magnum/CubeMapTexture.h @@ -236,14 +236,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/Implementation/TextureState.cpp b/src/Magnum/Implementation/TextureState.cpp index 60c031784..cf2df73eb 100644 --- a/src/Magnum/Implementation/TextureState.cpp +++ b/src/Magnum/Implementation/TextureState.cpp @@ -113,6 +113,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; diff --git a/src/Magnum/Implementation/TextureState.h b/src/Magnum/Implementation/TextureState.h index c4acf3e5d..6fb7d3087 100644 --- a/src/Magnum/Implementation/TextureState.h +++ b/src/Magnum/Implementation/TextureState.h @@ -53,7 +53,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)(); diff --git a/src/Magnum/Test/CubeMapTextureGLTest.cpp b/src/Magnum/Test/CubeMapTextureGLTest.cpp index 8cd00eba4..5a7a23805 100644 --- a/src/Magnum/Test/CubeMapTextureGLTest.cpp +++ b/src/Magnum/Test/CubeMapTextureGLTest.cpp @@ -264,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/TextureArrayGLTest.cpp b/src/Magnum/Test/TextureArrayGLTest.cpp index a93011b9c..3c0dec591 100644 --- a/src/Magnum/Test/TextureArrayGLTest.cpp +++ b/src/Magnum/Test/TextureArrayGLTest.cpp @@ -526,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 4f699cb4e..04a786e11 100644 --- a/src/Magnum/Test/TextureGLTest.cpp +++ b/src/Magnum/Test/TextureGLTest.cpp @@ -683,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)); @@ -707,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 cbda5f7e9..5df42e37c 100644 --- a/src/Magnum/Texture.h +++ b/src/Magnum/Texture.h @@ -185,7 +185,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 * @@ -196,7 +196,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. */ VectorTypeFor imageSize(Int level) { return DataHelper::imageSize(*this, _target, level); diff --git a/src/Magnum/TextureArray.h b/src/Magnum/TextureArray.h index 3ca9fdcf2..b4f6b1582 100644 --- a/src/Magnum/TextureArray.h +++ b/src/Magnum/TextureArray.h @@ -249,7 +249,7 @@ template class TextureArray: public AbstractTexture { } #endif - #ifndef MAGNUM_TARGET_GLES + #ifndef MAGNUM_TARGET_GLES2 /** @copydoc Texture::imageSize() */ VectorTypeFor imageSize(Int level) { return DataHelper::imageSize(*this, _target, level); From ac0b63da0b0550a7afe00620c5b3f66ac4c21cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:45:52 +0200 Subject: [PATCH 13/17] Enabled multisample texture limit queries in ES 3.1. --- src/Magnum/AbstractTexture.cpp | 14 +++++++++++++- src/Magnum/AbstractTexture.h | 20 ++++++++++---------- src/Magnum/Implementation/TextureState.cpp | 5 ++++- src/Magnum/Implementation/TextureState.h | 8 +++++--- src/Magnum/Test/CMakeLists.txt | 4 ++-- 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index b4eba3edc..a27805bf1 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; diff --git a/src/Magnum/AbstractTexture.h b/src/Magnum/AbstractTexture.h index 11de23750..1d0a9765d 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -153,15 +153,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(); @@ -169,10 +169,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(); @@ -180,10 +180,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 diff --git a/src/Magnum/Implementation/TextureState.cpp b/src/Magnum/Implementation/TextureState.cpp index cf2df73eb..78c5b9cec 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 */ diff --git a/src/Magnum/Implementation/TextureState.h b/src/Magnum/Implementation/TextureState.h index 6fb7d3087..7773c25b3 100644 --- a/src/Magnum/Implementation/TextureState.h +++ b/src/Magnum/Implementation/TextureState.h @@ -99,11 +99,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/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() From 278877f8e3fcd40bdb38ea4b5feda57a269bfdb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:47:37 +0200 Subject: [PATCH 14/17] Enabled 2D multisample textures in ES 3.1. --- src/Magnum/AbstractTexture.cpp | 8 ++- src/Magnum/AbstractTexture.h | 10 ++++ src/Magnum/CMakeLists.txt | 4 +- src/Magnum/Implementation/TextureState.cpp | 2 + src/Magnum/Implementation/TextureState.h | 4 +- src/Magnum/Magnum.h | 4 +- src/Magnum/MultisampleTexture.cpp | 12 +++- src/Magnum/MultisampleTexture.h | 36 +++++++++--- src/Magnum/Test/MultisampleTextureGLTest.cpp | 60 +++++++++++++++++++- 9 files changed, 124 insertions(+), 16 deletions(-) diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index a27805bf1..fa22cba23 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -983,12 +983,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); } @@ -1206,11 +1210,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 1d0a9765d..edc1f0816 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -420,9 +420,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); @@ -524,7 +530,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 @@ -561,7 +569,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/CMakeLists.txt b/src/Magnum/CMakeLists.txt index 291762503..d6db799e4 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -143,12 +143,10 @@ 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) endif() @@ -156,9 +154,11 @@ endif() 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() diff --git a/src/Magnum/Implementation/TextureState.cpp b/src/Magnum/Implementation/TextureState.cpp index 78c5b9cec..b043280e9 100644 --- a/src/Magnum/Implementation/TextureState.cpp +++ b/src/Magnum/Implementation/TextureState.cpp @@ -218,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 7773c25b3..b361d04fd 100644 --- a/src/Magnum/Implementation/TextureState.h +++ b/src/Magnum/Implementation/TextureState.h @@ -62,8 +62,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*); diff --git a/src/Magnum/Magnum.h b/src/Magnum/Magnum.h index 93e0915d0..74380a20d 100644 --- a/src/Magnum/Magnum.h +++ b/src/Magnum/Magnum.h @@ -508,12 +508,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/MultisampleTexture.cpp b/src/Magnum/MultisampleTexture.cpp index 7705168ce..ef957b688 100644 --- a/src/Magnum/MultisampleTexture.cpp +++ b/src/Magnum/MultisampleTexture.cpp @@ -25,7 +25,7 @@ #include "MultisampleTexture.h" -#ifndef MAGNUM_TARGET_GLES +#ifndef MAGNUM_TARGET_GLES2 #include "Magnum/Context.h" #include "Magnum/Extensions.h" @@ -34,18 +34,24 @@ namespace Magnum { namespace Implementation { template<> 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 6bc3848e4..90cc63268 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 VectorTypeFor 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/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 }} From 74a33df246a2e284319504e047411e98edaa4033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:48:25 +0200 Subject: [PATCH 15/17] Enabled multisample texture framebuffer attachment in ES 3.1. --- src/Magnum/Framebuffer.cpp | 4 +++- src/Magnum/Framebuffer.h | 7 +++++-- src/Magnum/Test/FramebufferGLTest.cpp | 15 +++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/Magnum/Framebuffer.cpp b/src/Magnum/Framebuffer.cpp index 840e1ad62..fefb79bfa 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; diff --git a/src/Magnum/Framebuffer.h b/src/Magnum/Framebuffer.h index eceb3e023..e5d7b76da 100644 --- a/src/Magnum/Framebuffer.h +++ b/src/Magnum/Framebuffer.h @@ -523,10 +523,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 @@ -592,7 +595,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/Test/FramebufferGLTest.cpp b/src/Magnum/Test/FramebufferGLTest.cpp index f7477f5f2..e4c897ae1 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 @@ -465,12 +465,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}); @@ -485,7 +490,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.")); From ea164f697dbb87b0692e56695c2dfe04da8088ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:51:21 +0200 Subject: [PATCH 16/17] Enabled new buffer functionality in ES 3.1. --- src/Magnum/Buffer.cpp | 22 ++++++++--- src/Magnum/Buffer.h | 46 +++++++++++++---------- src/Magnum/Implementation/BufferState.cpp | 18 ++++----- src/Magnum/Implementation/BufferState.h | 8 ++-- 4 files changed, 54 insertions(+), 40 deletions(-) diff --git a/src/Magnum/Buffer.cpp b/src/Magnum/Buffer.cpp index ff6d31e44..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; @@ -396,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 @@ -411,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 e53d24fd5..8f867aae8 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/Implementation/BufferState.cpp b/src/Magnum/Implementation/BufferState.cpp index d9e0b1d3d..618dff7f0 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 }; From a189913fed877f1fa83073cb55eeb1a8ca66fefd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Aug 2014 13:52:36 +0200 Subject: [PATCH 17/17] Platform: display also all new ES 3.1 limits in magnum-info. --- src/Magnum/Platform/magnum-info.cpp | 97 +++++++++++++++++++++++------ 1 file changed, 78 insertions(+), 19 deletions(-) diff --git a/src/Magnum/Platform/magnum-info.cpp b/src/Magnum/Platform/magnum-info.cpp index bc7b0b7ef..52016ab2b 100644 --- a/src/Magnum/Platform/magnum-info.cpp +++ b/src/Magnum/Platform/magnum-info.cpp @@ -39,8 +39,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" @@ -301,6 +303,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)) @@ -310,18 +314,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 @@ -330,7 +328,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 @@ -339,14 +337,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) @@ -354,57 +372,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) @@ -428,14 +475,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) @@ -443,8 +504,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()) @@ -459,8 +518,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)) @@ -468,8 +527,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()) }