From fe5cd6510cc1e4f42f46e485300365691a777cc2 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 27 Oct 2020 23:14:12 +0300 Subject: [PATCH] Use the new OpenGL Loader Generator for the gl loader --- examples/cloud.cpp | 4 +- libs/app/source/app.cpp | 11 +- libs/gfx/gl-loader-generator-config.json | 18 + libs/gfx/include/psemek/gfx/attribs.hpp | 24 +- libs/gfx/include/psemek/gfx/gl.hpp | 3465 +++++++++++----------- libs/gfx/include/psemek/gfx/texture.hpp | 2 +- libs/gfx/source/error.cpp | 2 +- libs/gfx/source/gl.cpp | 2819 ++++++++---------- libs/gfx/source/program.cpp | 22 +- libs/gfx/source/texture.cpp | 5 +- 10 files changed, 2997 insertions(+), 3375 deletions(-) create mode 100644 libs/gfx/gl-loader-generator-config.json diff --git a/examples/cloud.cpp b/examples/cloud.cpp index 9260ae4f..99d7475b 100644 --- a/examples/cloud.cpp +++ b/examples/cloud.cpp @@ -569,7 +569,7 @@ struct cloud_app gl::Enable(gl::BLEND); gl::BlendFunc(gl::SRC_ALPHA, gl::ONE_MINUS_SRC_ALPHA); - gl::DepthMask(gl::FALSE_); + gl::DepthMask(gl::FALSE); cloud_program.bind(); cloud_program["u_transform"] = camera.transform(); @@ -586,7 +586,7 @@ struct cloud_app shadow_texture.bind(); slice_mesh.draw(); - gl::DepthMask(gl::TRUE_); + gl::DepthMask(gl::TRUE); } }; diff --git a/libs/app/source/app.cpp b/libs/app/source/app.cpp index 098436ff..5f93e604 100644 --- a/libs/app/source/app.cpp +++ b/libs/app/source/app.cpp @@ -57,8 +57,8 @@ namespace psemek::app impl().start_time = clock::now(); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gl::sys::GetLeastMajorVersion()); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, gl::sys::GetLeastMinorVersion()); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gl::sys::major_version()); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, gl::sys::minor_version()); SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); @@ -85,13 +85,16 @@ namespace psemek::app SDL_GL_MakeCurrent(impl().window, impl().gl_context); - if (!gl::sys::LoadFunctions()) + if (!gl::sys::initialize()) throw std::runtime_error("Failed to load OpenGL functions"); auto vendor = gl::GetString(gl::VENDOR); auto renderer = gl::GetString(gl::RENDERER); - log::info() << "Initialized OpenGL " << gl::sys::GetMajorVersion() << '.' << gl::sys::GetMinorVersion() << ", " << vendor << ", " << renderer; + int major, minor; + gl::GetIntegerv(gl::MAJOR_VERSION, &major); + gl::GetIntegerv(gl::MINOR_VERSION, &minor); + log::info() << "Initialized OpenGL " << major << '.' << minor << ", " << vendor << ", " << renderer; SDL_GetWindowSize(impl().window, &impl().width, &impl().height); } diff --git a/libs/gfx/gl-loader-generator-config.json b/libs/gfx/gl-loader-generator-config.json new file mode 100644 index 00000000..d3068d2f --- /dev/null +++ b/libs/gfx/gl-loader-generator-config.json @@ -0,0 +1,18 @@ +{ + "spec_file": "gl.xml", + "api": "gl", + "version": "3.3", + "profile": "core", + "extensions": [ + "ARB_texture_filter_anisotropic" + ], + "indent": "\t", + "namespace": "gl", + "loader_namespace": "sys", + "internal_namespace": "internal", + "internal_prefix": "", + "undef": 4, + "strip": true, + "out_header": "gl.hpp", + "out_source": "gl.cpp" +} diff --git a/libs/gfx/include/psemek/gfx/attribs.hpp b/libs/gfx/include/psemek/gfx/attribs.hpp index 57ab373f..148f12d2 100644 --- a/libs/gfx/include/psemek/gfx/attribs.hpp +++ b/libs/gfx/include/psemek/gfx/attribs.hpp @@ -81,7 +81,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::UNSIGNED_BYTE; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -91,7 +91,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::BYTE; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -101,7 +101,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::UNSIGNED_SHORT; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -111,7 +111,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::SHORT; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -121,7 +121,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::UNSIGNED_INT; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -131,7 +131,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::INT; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -141,7 +141,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::FLOAT; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template <> @@ -151,7 +151,7 @@ namespace psemek::gfx static constexpr GLint size = 1; static constexpr GLenum type = gl::DOUBLE; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template @@ -161,7 +161,7 @@ namespace psemek::gfx static constexpr GLint size = N; static constexpr GLenum type = attrib_traits::type; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template @@ -171,7 +171,7 @@ namespace psemek::gfx static constexpr GLint size = N; static constexpr GLenum type = attrib_traits::type; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template @@ -181,7 +181,7 @@ namespace psemek::gfx static constexpr GLint size = N; static constexpr GLenum type = attrib_traits::type; - static constexpr GLboolean normalized = gl::FALSE_; + static constexpr GLboolean normalized = gl::FALSE; }; template @@ -197,7 +197,7 @@ namespace psemek::gfx static constexpr GLint size = attrib_traits::size; static constexpr GLenum type = attrib_traits::type; - static constexpr GLboolean normalized = gl::TRUE_; + static constexpr GLboolean normalized = gl::TRUE; }; template diff --git a/libs/gfx/include/psemek/gfx/gl.hpp b/libs/gfx/include/psemek/gfx/gl.hpp index f91dc49b..2bce2d0d 100644 --- a/libs/gfx/include/psemek/gfx/gl.hpp +++ b/libs/gfx/include/psemek/gfx/gl.hpp @@ -1,1752 +1,1743 @@ -// Generated with glLoadGen-2.0.5 (https://bitbucket.org/alfonse/glloadgen) -// lua LoadGen.lua -style=func_cpp -spec=gl -version=3.3 -profile=core core_3_3 -// 18.07.2018 +#pragma once -#ifndef FUNCTION_CPP_GENERATED_HEADEROPENGL_HPP -#define FUNCTION_CPP_GENERATED_HEADEROPENGL_HPP +// Undefine some macros that may interfere with OpenGL constants -#if defined(__glew_h__) || defined(__GLEW_H__) -#error Attempt to include auto-generated header after including glew.h -#endif -#if defined(__gl_h_) || defined(__GL_H__) -#error Attempt to include auto-generated header after including gl.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#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 -#endif -#if defined(__gl_ATI_h_) -#error Attempt to include auto-generated header after including glATI.h -#endif +#undef ZERO +#undef NONE +#undef TRUE +#undef ONE +#undef LOAD +#undef MULT +#undef ADD +#undef LESS +#undef BACK +#undef LEFT +#undef AUX0 +#undef AUX1 +#undef AUX2 +#undef AUX3 +#undef EXP +#undef EXP2 +#undef CW +#undef CCW +#undef FOG +#undef BYTE +#undef INT +#undef AND +#undef COPY +#undef NOOP +#undef XOR +#undef OR +#undef NOR +#undef NAND +#undef SET +#undef RED +#undef BLUE +#undef RGB +#undef RGBA +#undef LINE +#undef FILL +#undef FLAT +#undef KEEP +#undef INCR +#undef DECR +#undef S +#undef T +#undef R +#undef Q +#undef V2F +#undef V3F +#undef MIN +#undef MAX +#undef RGB4 +#undef RGB5 +#undef RGB8 +#undef BGR +#undef BGRA +#undef RG +#undef R8 +#undef R16 +#undef RG8 +#undef RG16 +#undef R16F +#undef R32F +#undef R8I +#undef R8UI +#undef R16I +#undef R32I +#undef RG8I +#undef BOOL +#undef SRGB +#undef TYPE -#define __glew_h__ -#define __GLEW_H__ -#define __gl_h_ -#define __GL_H__ -#define __glext_h_ -#define __GLEXT_H_ -#define __gltypes_h_ -#define __gl_ATI_h_ +// OpenGL type definitions -#ifndef APIENTRY - #if defined(__MINGW32__) - #ifndef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN 1 - #endif - #ifndef NOMINMAX - #define NOMINMAX - #endif - #include - #elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) - #ifndef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN 1 - #endif - #ifndef NOMINMAX - #define NOMINMAX - #endif - #include - #else - #define APIENTRY - #endif -#endif /*APIENTRY*/ - -#ifndef CODEGEN_FUNCPTR - #define CODEGEN_REMOVE_FUNCPTR - #if defined(_WIN32) - #define CODEGEN_FUNCPTR APIENTRY - #else - #define CODEGEN_FUNCPTR - #endif -#endif /*CODEGEN_FUNCPTR*/ - -#ifndef GLAPI - #define GLAPI extern -#endif - - -#ifndef GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS -#define GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS - - -#endif /*GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS*/ - -#include -#ifndef GLEXT_64_TYPES_DEFINED -/* This code block is duplicated in glxext.h, so must be protected */ -#define GLEXT_64_TYPES_DEFINED -/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ -/* (as used in the GL_EXT_timer_query extension). */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -#elif defined(__sun__) || defined(__digital__) -#include -#if defined(__STDC__) -#if defined(__arch64__) || defined(_LP64) -typedef long int int64_t; -typedef unsigned long int uint64_t; -#else -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#endif /* __arch64__ */ -#endif /* __STDC__ */ -#elif defined( __VMS ) || defined(__sgi) -#include -#elif defined(__SCO__) || defined(__USLC__) -#include -#elif defined(__UNIXOS2__) || defined(__SOL64__) -typedef long int int32_t; -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#elif defined(_WIN32) && defined(__GNUC__) -#include -#elif defined(_WIN32) -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -/* Fallback if nothing above works */ -#include -#endif -#endif - typedef unsigned int GLenum; - typedef unsigned char GLboolean; - typedef unsigned int GLbitfield; - typedef void GLvoid; - typedef signed char GLbyte; - typedef short GLshort; - typedef int GLint; - typedef unsigned char GLubyte; - typedef unsigned short GLushort; - typedef unsigned int GLuint; - typedef int GLsizei; - typedef float GLfloat; - typedef float GLclampf; - typedef double GLdouble; - typedef double GLclampd; - typedef char GLchar; - typedef char GLcharARB; - #ifdef __APPLE__ +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ typedef void *GLhandleARB; #else typedef unsigned int GLhandleARB; #endif - typedef unsigned short GLhalfARB; - typedef unsigned short GLhalf; - typedef GLint GLfixed; - typedef ptrdiff_t GLintptr; - typedef ptrdiff_t GLsizeiptr; - typedef int64_t GLint64; - typedef uint64_t GLuint64; - typedef ptrdiff_t GLintptrARB; - typedef ptrdiff_t GLsizeiptrARB; - typedef int64_t GLint64EXT; - typedef uint64_t GLuint64EXT; - typedef struct __GLsync *GLsync; - struct _cl_context; - struct _cl_event; - typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); - typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); - typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); - typedef unsigned short GLhalfNV; - typedef GLintptr GLvdpauSurfaceNV; +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +typedef khronos_intptr_t GLintptr; +typedef khronos_intptr_t GLintptrARB; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_ssize_t GLsizeiptrARB; +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void (GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void (GLVULKANPROCNV)(void); namespace gl { - namespace exts + + namespace internal { - class LoadTest - { - private: - //Safe bool idiom. Joy! - typedef void (LoadTest::*bool_type)() const; - void big_long_name_that_really_doesnt_matter() const {} - - public: - operator bool_type() const - { - return m_isLoaded ? &LoadTest::big_long_name_that_really_doesnt_matter : 0; - } - - int GetNumMissing() const {return m_numMissing;} - - LoadTest() : m_isLoaded(false), m_numMissing(0) {} - LoadTest(bool isLoaded, int numMissing) : m_isLoaded(isLoaded), m_numMissing(numMissing) {} - private: - bool m_isLoaded; - int m_numMissing; - }; - - extern LoadTest var_EXT_texture_filter_anisotropic; - - } //namespace exts - enum - { - MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF, - TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE, - - ALPHA = 0x1906, - ALWAYS = 0x0207, - AND = 0x1501, - AND_INVERTED = 0x1504, - AND_REVERSE = 0x1502, - BACK = 0x0405, - BACK_LEFT = 0x0402, - BACK_RIGHT = 0x0403, - BLEND = 0x0BE2, - BLEND_DST = 0x0BE0, - BLEND_SRC = 0x0BE1, - BLUE = 0x1905, - BYTE = 0x1400, - CCW = 0x0901, - CLEAR = 0x1500, - COLOR = 0x1800, - COLOR_BUFFER_BIT = 0x00004000, - COLOR_CLEAR_VALUE = 0x0C22, - COLOR_LOGIC_OP = 0x0BF2, - COLOR_WRITEMASK = 0x0C23, - COPY = 0x1503, - COPY_INVERTED = 0x150C, - CULL_FACE = 0x0B44, - CULL_FACE_MODE = 0x0B45, - CW = 0x0900, - DECR = 0x1E03, - DEPTH = 0x1801, - DEPTH_BUFFER_BIT = 0x00000100, - DEPTH_CLEAR_VALUE = 0x0B73, - DEPTH_COMPONENT = 0x1902, - DEPTH_FUNC = 0x0B74, - DEPTH_RANGE = 0x0B70, - DEPTH_TEST = 0x0B71, - DEPTH_WRITEMASK = 0x0B72, - DITHER = 0x0BD0, - DONT_CARE = 0x1100, - DOUBLE = 0x140A, - DOUBLEBUFFER = 0x0C32, - DRAW_BUFFER = 0x0C01, - DST_ALPHA = 0x0304, - DST_COLOR = 0x0306, - EQUAL = 0x0202, - EQUIV = 0x1509, - EXTENSIONS = 0x1F03, - FALSE_ = 0, - FASTEST = 0x1101, - FILL = 0x1B02, - FLOAT = 0x1406, - FRONT = 0x0404, - FRONT_AND_BACK = 0x0408, - FRONT_FACE = 0x0B46, - FRONT_LEFT = 0x0400, - FRONT_RIGHT = 0x0401, - GEQUAL = 0x0206, - GREATER = 0x0204, - GREEN = 0x1904, - INCR = 0x1E02, - INT = 0x1404, - INVALID_ENUM = 0x0500, - INVALID_OPERATION = 0x0502, - INVALID_VALUE = 0x0501, - INVERT = 0x150A, - KEEP = 0x1E00, - LEFT = 0x0406, - LEQUAL = 0x0203, - LESS = 0x0201, - LINE = 0x1B01, - LINEAR = 0x2601, - LINEAR_MIPMAP_LINEAR = 0x2703, - LINEAR_MIPMAP_NEAREST = 0x2701, - LINES = 0x0001, - LINE_LOOP = 0x0002, - LINE_SMOOTH = 0x0B20, - LINE_SMOOTH_HINT = 0x0C52, - LINE_STRIP = 0x0003, - LINE_WIDTH = 0x0B21, - LINE_WIDTH_GRANULARITY = 0x0B23, - LINE_WIDTH_RANGE = 0x0B22, - LOGIC_OP_MODE = 0x0BF0, - MAX_TEXTURE_SIZE = 0x0D33, - MAX_VIEWPORT_DIMS = 0x0D3A, - NAND = 0x150E, - NEAREST = 0x2600, - NEAREST_MIPMAP_LINEAR = 0x2702, - NEAREST_MIPMAP_NEAREST = 0x2700, - NEVER = 0x0200, - NICEST = 0x1102, - NONE = 0, - NOOP = 0x1505, - NOR = 0x1508, - NOTEQUAL = 0x0205, - NO_ERROR_ = 0, - ONE = 1, - ONE_MINUS_DST_ALPHA = 0x0305, - ONE_MINUS_DST_COLOR = 0x0307, - ONE_MINUS_SRC_ALPHA = 0x0303, - ONE_MINUS_SRC_COLOR = 0x0301, - OR = 0x1507, - OR_INVERTED = 0x150D, - OR_REVERSE = 0x150B, - OUT_OF_MEMORY = 0x0505, - PACK_ALIGNMENT = 0x0D05, - PACK_LSB_FIRST = 0x0D01, - PACK_ROW_LENGTH = 0x0D02, - PACK_SKIP_PIXELS = 0x0D04, - PACK_SKIP_ROWS = 0x0D03, - PACK_SWAP_BYTES = 0x0D00, - POINT = 0x1B00, - POINTS = 0x0000, - POINT_SIZE = 0x0B11, - POINT_SIZE_GRANULARITY = 0x0B13, - POINT_SIZE_RANGE = 0x0B12, - POLYGON_MODE = 0x0B40, - POLYGON_OFFSET_FACTOR = 0x8038, - POLYGON_OFFSET_FILL = 0x8037, - POLYGON_OFFSET_LINE = 0x2A02, - POLYGON_OFFSET_POINT = 0x2A01, - POLYGON_OFFSET_UNITS = 0x2A00, - POLYGON_SMOOTH = 0x0B41, - POLYGON_SMOOTH_HINT = 0x0C53, - PROXY_TEXTURE_1D = 0x8063, - PROXY_TEXTURE_2D = 0x8064, - R3_G3_B2 = 0x2A10, - READ_BUFFER = 0x0C02, - RED = 0x1903, - RENDERER = 0x1F01, - REPEAT = 0x2901, - REPLACE = 0x1E01, - RGB = 0x1907, - RGB10 = 0x8052, - RGB10_A2 = 0x8059, - RGB12 = 0x8053, - RGB16 = 0x8054, - RGB4 = 0x804F, - RGB5 = 0x8050, - RGB5_A1 = 0x8057, - RGB8 = 0x8051, - RGBA = 0x1908, - RGBA12 = 0x805A, - RGBA16 = 0x805B, - RGBA2 = 0x8055, - RGBA4 = 0x8056, - RGBA8 = 0x8058, - RIGHT = 0x0407, - SCISSOR_BOX = 0x0C10, - SCISSOR_TEST = 0x0C11, - SET = 0x150F, - SHORT = 0x1402, - SRC_ALPHA = 0x0302, - SRC_ALPHA_SATURATE = 0x0308, - SRC_COLOR = 0x0300, - STENCIL = 0x1802, - STENCIL_BUFFER_BIT = 0x00000400, - STENCIL_CLEAR_VALUE = 0x0B91, - STENCIL_FAIL = 0x0B94, - STENCIL_FUNC = 0x0B92, - STENCIL_INDEX = 0x1901, - STENCIL_PASS_DEPTH_FAIL = 0x0B95, - STENCIL_PASS_DEPTH_PASS = 0x0B96, - STENCIL_REF = 0x0B97, - STENCIL_TEST = 0x0B90, - STENCIL_VALUE_MASK = 0x0B93, - STENCIL_WRITEMASK = 0x0B98, - STEREO = 0x0C33, - SUBPIXEL_BITS = 0x0D50, - TEXTURE = 0x1702, - TEXTURE_1D = 0x0DE0, - TEXTURE_2D = 0x0DE1, - TEXTURE_ALPHA_SIZE = 0x805F, - TEXTURE_BINDING_1D = 0x8068, - TEXTURE_BINDING_2D = 0x8069, - TEXTURE_BLUE_SIZE = 0x805E, - TEXTURE_BORDER_COLOR = 0x1004, - TEXTURE_GREEN_SIZE = 0x805D, - TEXTURE_HEIGHT = 0x1001, - TEXTURE_INTERNAL_FORMAT = 0x1003, - TEXTURE_MAG_FILTER = 0x2800, - TEXTURE_MIN_FILTER = 0x2801, - TEXTURE_RED_SIZE = 0x805C, - TEXTURE_WIDTH = 0x1000, - TEXTURE_WRAP_S = 0x2802, - TEXTURE_WRAP_T = 0x2803, - TRIANGLES = 0x0004, - TRIANGLE_FAN = 0x0006, - TRIANGLE_STRIP = 0x0005, - TRUE_ = 1, - UNPACK_ALIGNMENT = 0x0CF5, - UNPACK_LSB_FIRST = 0x0CF1, - UNPACK_ROW_LENGTH = 0x0CF2, - UNPACK_SKIP_PIXELS = 0x0CF4, - UNPACK_SKIP_ROWS = 0x0CF3, - UNPACK_SWAP_BYTES = 0x0CF0, - UNSIGNED_BYTE = 0x1401, - UNSIGNED_INT = 0x1405, - UNSIGNED_SHORT = 0x1403, - VENDOR = 0x1F00, - VERSION = 0x1F02, - VIEWPORT = 0x0BA2, - XOR = 0x1506, - ZERO = 0, - - ALIASED_LINE_WIDTH_RANGE = 0x846E, - BGR = 0x80E0, - BGRA = 0x80E1, - CLAMP_TO_EDGE = 0x812F, - MAX_3D_TEXTURE_SIZE = 0x8073, - MAX_ELEMENTS_INDICES = 0x80E9, - MAX_ELEMENTS_VERTICES = 0x80E8, - PACK_IMAGE_HEIGHT = 0x806C, - PACK_SKIP_IMAGES = 0x806B, - PROXY_TEXTURE_3D = 0x8070, - SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23, - SMOOTH_LINE_WIDTH_RANGE = 0x0B22, - SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13, - SMOOTH_POINT_SIZE_RANGE = 0x0B12, - TEXTURE_3D = 0x806F, - TEXTURE_BASE_LEVEL = 0x813C, - TEXTURE_BINDING_3D = 0x806A, - TEXTURE_DEPTH = 0x8071, - TEXTURE_MAX_LEVEL = 0x813D, - TEXTURE_MAX_LOD = 0x813B, - TEXTURE_MIN_LOD = 0x813A, - TEXTURE_WRAP_R = 0x8072, - UNPACK_IMAGE_HEIGHT = 0x806E, - UNPACK_SKIP_IMAGES = 0x806D, - UNSIGNED_BYTE_2_3_3_REV = 0x8362, - UNSIGNED_BYTE_3_3_2 = 0x8032, - UNSIGNED_INT_10_10_10_2 = 0x8036, - UNSIGNED_INT_2_10_10_10_REV = 0x8368, - UNSIGNED_INT_8_8_8_8 = 0x8035, - UNSIGNED_INT_8_8_8_8_REV = 0x8367, - UNSIGNED_SHORT_1_5_5_5_REV = 0x8366, - UNSIGNED_SHORT_4_4_4_4 = 0x8033, - UNSIGNED_SHORT_4_4_4_4_REV = 0x8365, - UNSIGNED_SHORT_5_5_5_1 = 0x8034, - UNSIGNED_SHORT_5_6_5 = 0x8363, - UNSIGNED_SHORT_5_6_5_REV = 0x8364, - - ACTIVE_TEXTURE = 0x84E0, - CLAMP_TO_BORDER = 0x812D, - COMPRESSED_RGB = 0x84ED, - COMPRESSED_RGBA = 0x84EE, - COMPRESSED_TEXTURE_FORMATS = 0x86A3, - MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C, - MULTISAMPLE = 0x809D, - NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2, - PROXY_TEXTURE_CUBE_MAP = 0x851B, - SAMPLES = 0x80A9, - SAMPLE_ALPHA_TO_COVERAGE = 0x809E, - SAMPLE_ALPHA_TO_ONE = 0x809F, - SAMPLE_BUFFERS = 0x80A8, - SAMPLE_COVERAGE = 0x80A0, - SAMPLE_COVERAGE_INVERT = 0x80AB, - SAMPLE_COVERAGE_VALUE = 0x80AA, - TEXTURE0 = 0x84C0, - TEXTURE1 = 0x84C1, - TEXTURE10 = 0x84CA, - TEXTURE11 = 0x84CB, - TEXTURE12 = 0x84CC, - TEXTURE13 = 0x84CD, - TEXTURE14 = 0x84CE, - TEXTURE15 = 0x84CF, - TEXTURE16 = 0x84D0, - TEXTURE17 = 0x84D1, - TEXTURE18 = 0x84D2, - TEXTURE19 = 0x84D3, - TEXTURE2 = 0x84C2, - TEXTURE20 = 0x84D4, - TEXTURE21 = 0x84D5, - TEXTURE22 = 0x84D6, - TEXTURE23 = 0x84D7, - TEXTURE24 = 0x84D8, - TEXTURE25 = 0x84D9, - TEXTURE26 = 0x84DA, - TEXTURE27 = 0x84DB, - TEXTURE28 = 0x84DC, - TEXTURE29 = 0x84DD, - TEXTURE3 = 0x84C3, - TEXTURE30 = 0x84DE, - TEXTURE31 = 0x84DF, - TEXTURE4 = 0x84C4, - TEXTURE5 = 0x84C5, - TEXTURE6 = 0x84C6, - TEXTURE7 = 0x84C7, - TEXTURE8 = 0x84C8, - TEXTURE9 = 0x84C9, - TEXTURE_BINDING_CUBE_MAP = 0x8514, - TEXTURE_COMPRESSED = 0x86A1, - TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0, - TEXTURE_COMPRESSION_HINT = 0x84EF, - TEXTURE_CUBE_MAP = 0x8513, - TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516, - TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518, - TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A, - TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515, - TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517, - TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519, - - BLEND_COLOR = 0x8005, - BLEND_DST_ALPHA = 0x80CA, - BLEND_DST_RGB = 0x80C8, - BLEND_EQUATION = 0x8009, - BLEND_SRC_ALPHA = 0x80CB, - BLEND_SRC_RGB = 0x80C9, - CONSTANT_ALPHA = 0x8003, - CONSTANT_COLOR = 0x8001, - DECR_WRAP = 0x8508, - DEPTH_COMPONENT16 = 0x81A5, - DEPTH_COMPONENT24 = 0x81A6, - DEPTH_COMPONENT32 = 0x81A7, - FUNC_ADD = 0x8006, - FUNC_REVERSE_SUBTRACT = 0x800B, - FUNC_SUBTRACT = 0x800A, - INCR_WRAP = 0x8507, - MAX = 0x8008, - MAX_TEXTURE_LOD_BIAS = 0x84FD, - MIN = 0x8007, - MIRRORED_REPEAT = 0x8370, - ONE_MINUS_CONSTANT_ALPHA = 0x8004, - ONE_MINUS_CONSTANT_COLOR = 0x8002, - POINT_FADE_THRESHOLD_SIZE = 0x8128, - TEXTURE_COMPARE_FUNC = 0x884D, - TEXTURE_COMPARE_MODE = 0x884C, - TEXTURE_DEPTH_SIZE = 0x884A, - TEXTURE_LOD_BIAS = 0x8501, - - ARRAY_BUFFER = 0x8892, - ARRAY_BUFFER_BINDING = 0x8894, - BUFFER_ACCESS = 0x88BB, - BUFFER_MAPPED = 0x88BC, - BUFFER_MAP_POINTER = 0x88BD, - BUFFER_SIZE = 0x8764, - BUFFER_USAGE = 0x8765, - CURRENT_QUERY = 0x8865, - DYNAMIC_COPY = 0x88EA, - DYNAMIC_DRAW = 0x88E8, - DYNAMIC_READ = 0x88E9, - ELEMENT_ARRAY_BUFFER = 0x8893, - ELEMENT_ARRAY_BUFFER_BINDING = 0x8895, - QUERY_COUNTER_BITS = 0x8864, - QUERY_RESULT = 0x8866, - QUERY_RESULT_AVAILABLE = 0x8867, - READ_ONLY = 0x88B8, - READ_WRITE = 0x88BA, - SAMPLES_PASSED = 0x8914, - SRC1_ALPHA = 0x8589, - STATIC_COPY = 0x88E6, - STATIC_DRAW = 0x88E4, - STATIC_READ = 0x88E5, - STREAM_COPY = 0x88E2, - STREAM_DRAW = 0x88E0, - STREAM_READ = 0x88E1, - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F, - WRITE_ONLY = 0x88B9, - - ACTIVE_ATTRIBUTES = 0x8B89, - ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A, - ACTIVE_UNIFORMS = 0x8B86, - ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87, - ATTACHED_SHADERS = 0x8B85, - BLEND_EQUATION_ALPHA = 0x883D, - BLEND_EQUATION_RGB = 0x8009, - BOOL = 0x8B56, - BOOL_VEC2 = 0x8B57, - BOOL_VEC3 = 0x8B58, - BOOL_VEC4 = 0x8B59, - COMPILE_STATUS = 0x8B81, - CURRENT_PROGRAM = 0x8B8D, - CURRENT_VERTEX_ATTRIB = 0x8626, - DELETE_STATUS = 0x8B80, - DRAW_BUFFER0 = 0x8825, - DRAW_BUFFER1 = 0x8826, - DRAW_BUFFER10 = 0x882F, - DRAW_BUFFER11 = 0x8830, - DRAW_BUFFER12 = 0x8831, - DRAW_BUFFER13 = 0x8832, - DRAW_BUFFER14 = 0x8833, - DRAW_BUFFER15 = 0x8834, - DRAW_BUFFER2 = 0x8827, - DRAW_BUFFER3 = 0x8828, - DRAW_BUFFER4 = 0x8829, - DRAW_BUFFER5 = 0x882A, - DRAW_BUFFER6 = 0x882B, - DRAW_BUFFER7 = 0x882C, - DRAW_BUFFER8 = 0x882D, - DRAW_BUFFER9 = 0x882E, - FLOAT_MAT2 = 0x8B5A, - FLOAT_MAT3 = 0x8B5B, - FLOAT_MAT4 = 0x8B5C, - FLOAT_VEC2 = 0x8B50, - FLOAT_VEC3 = 0x8B51, - FLOAT_VEC4 = 0x8B52, - FRAGMENT_SHADER = 0x8B30, - FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B, - INFO_LOG_LENGTH = 0x8B84, - INT_VEC2 = 0x8B53, - INT_VEC3 = 0x8B54, - INT_VEC4 = 0x8B55, - LINK_STATUS = 0x8B82, - LOWER_LEFT = 0x8CA1, - MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D, - MAX_DRAW_BUFFERS = 0x8824, - MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49, - MAX_TEXTURE_IMAGE_UNITS = 0x8872, - MAX_VARYING_FLOATS = 0x8B4B, - MAX_VERTEX_ATTRIBS = 0x8869, - MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C, - MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A, - POINT_SPRITE_COORD_ORIGIN = 0x8CA0, - SAMPLER_1D = 0x8B5D, - SAMPLER_1D_SHADOW = 0x8B61, - SAMPLER_2D = 0x8B5E, - SAMPLER_2D_SHADOW = 0x8B62, - SAMPLER_3D = 0x8B5F, - SAMPLER_CUBE = 0x8B60, - SHADER_SOURCE_LENGTH = 0x8B88, - SHADER_TYPE = 0x8B4F, - SHADING_LANGUAGE_VERSION = 0x8B8C, - STENCIL_BACK_FAIL = 0x8801, - STENCIL_BACK_FUNC = 0x8800, - STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802, - STENCIL_BACK_PASS_DEPTH_PASS = 0x8803, - STENCIL_BACK_REF = 0x8CA3, - STENCIL_BACK_VALUE_MASK = 0x8CA4, - STENCIL_BACK_WRITEMASK = 0x8CA5, - UPPER_LEFT = 0x8CA2, - VALIDATE_STATUS = 0x8B83, - VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622, - VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A, - VERTEX_ATTRIB_ARRAY_POINTER = 0x8645, - VERTEX_ATTRIB_ARRAY_SIZE = 0x8623, - VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624, - VERTEX_ATTRIB_ARRAY_TYPE = 0x8625, - VERTEX_PROGRAM_POINT_SIZE = 0x8642, - VERTEX_SHADER = 0x8B31, - - COMPRESSED_SRGB = 0x8C48, - COMPRESSED_SRGB_ALPHA = 0x8C49, - FLOAT_MAT2x3 = 0x8B65, - FLOAT_MAT2x4 = 0x8B66, - FLOAT_MAT3x2 = 0x8B67, - FLOAT_MAT3x4 = 0x8B68, - FLOAT_MAT4x2 = 0x8B69, - FLOAT_MAT4x3 = 0x8B6A, - PIXEL_PACK_BUFFER = 0x88EB, - PIXEL_PACK_BUFFER_BINDING = 0x88ED, - PIXEL_UNPACK_BUFFER = 0x88EC, - PIXEL_UNPACK_BUFFER_BINDING = 0x88EF, - SRGB = 0x8C40, - SRGB8 = 0x8C41, - SRGB8_ALPHA8 = 0x8C43, - SRGB_ALPHA = 0x8C42, - - BGRA_INTEGER = 0x8D9B, - BGR_INTEGER = 0x8D9A, - BLUE_INTEGER = 0x8D96, - BUFFER_ACCESS_FLAGS = 0x911F, - BUFFER_MAP_LENGTH = 0x9120, - BUFFER_MAP_OFFSET = 0x9121, - CLAMP_READ_COLOR = 0x891C, - CLIP_DISTANCE0 = 0x3000, - CLIP_DISTANCE1 = 0x3001, - CLIP_DISTANCE2 = 0x3002, - CLIP_DISTANCE3 = 0x3003, - CLIP_DISTANCE4 = 0x3004, - CLIP_DISTANCE5 = 0x3005, - CLIP_DISTANCE6 = 0x3006, - CLIP_DISTANCE7 = 0x3007, - COLOR_ATTACHMENT0 = 0x8CE0, - COLOR_ATTACHMENT1 = 0x8CE1, - COLOR_ATTACHMENT10 = 0x8CEA, - COLOR_ATTACHMENT11 = 0x8CEB, - COLOR_ATTACHMENT12 = 0x8CEC, - COLOR_ATTACHMENT13 = 0x8CED, - COLOR_ATTACHMENT14 = 0x8CEE, - COLOR_ATTACHMENT15 = 0x8CEF, - COLOR_ATTACHMENT16 = 0x8CF0, - COLOR_ATTACHMENT17 = 0x8CF1, - COLOR_ATTACHMENT18 = 0x8CF2, - COLOR_ATTACHMENT19 = 0x8CF3, - COLOR_ATTACHMENT2 = 0x8CE2, - COLOR_ATTACHMENT20 = 0x8CF4, - COLOR_ATTACHMENT21 = 0x8CF5, - COLOR_ATTACHMENT22 = 0x8CF6, - COLOR_ATTACHMENT23 = 0x8CF7, - COLOR_ATTACHMENT24 = 0x8CF8, - COLOR_ATTACHMENT25 = 0x8CF9, - COLOR_ATTACHMENT26 = 0x8CFA, - COLOR_ATTACHMENT27 = 0x8CFB, - COLOR_ATTACHMENT28 = 0x8CFC, - COLOR_ATTACHMENT29 = 0x8CFD, - COLOR_ATTACHMENT3 = 0x8CE3, - COLOR_ATTACHMENT30 = 0x8CFE, - COLOR_ATTACHMENT31 = 0x8CFF, - COLOR_ATTACHMENT4 = 0x8CE4, - COLOR_ATTACHMENT5 = 0x8CE5, - COLOR_ATTACHMENT6 = 0x8CE6, - COLOR_ATTACHMENT7 = 0x8CE7, - COLOR_ATTACHMENT8 = 0x8CE8, - COLOR_ATTACHMENT9 = 0x8CE9, - COMPARE_REF_TO_TEXTURE = 0x884E, - COMPRESSED_RED = 0x8225, - COMPRESSED_RED_RGTC1 = 0x8DBB, - COMPRESSED_RG = 0x8226, - COMPRESSED_RG_RGTC2 = 0x8DBD, - COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC, - COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE, - CONTEXT_FLAGS = 0x821E, - CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001, - DEPTH24_STENCIL8 = 0x88F0, - DEPTH32F_STENCIL8 = 0x8CAD, - DEPTH_ATTACHMENT = 0x8D00, - DEPTH_COMPONENT32F = 0x8CAC, - DEPTH_STENCIL = 0x84F9, - DEPTH_STENCIL_ATTACHMENT = 0x821A, - DRAW_FRAMEBUFFER = 0x8CA9, - DRAW_FRAMEBUFFER_BINDING = 0x8CA6, - FIXED_ONLY = 0x891D, - FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD, - FRAMEBUFFER = 0x8D40, - FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215, - FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214, - FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210, - FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211, - FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216, - FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213, - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1, - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0, - FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212, - FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217, - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3, - FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4, - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2, - FRAMEBUFFER_BINDING = 0x8CA6, - FRAMEBUFFER_COMPLETE = 0x8CD5, - FRAMEBUFFER_DEFAULT = 0x8218, - FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6, - FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB, - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7, - FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56, - FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC, - FRAMEBUFFER_SRGB = 0x8DB9, - FRAMEBUFFER_UNDEFINED = 0x8219, - FRAMEBUFFER_UNSUPPORTED = 0x8CDD, - GREEN_INTEGER = 0x8D95, - HALF_FLOAT = 0x140B, - INTERLEAVED_ATTRIBS = 0x8C8C, - INT_SAMPLER_1D = 0x8DC9, - INT_SAMPLER_1D_ARRAY = 0x8DCE, - INT_SAMPLER_2D = 0x8DCA, - INT_SAMPLER_2D_ARRAY = 0x8DCF, - INT_SAMPLER_3D = 0x8DCB, - INT_SAMPLER_CUBE = 0x8DCC, - INVALID_FRAMEBUFFER_OPERATION = 0x0506, - MAJOR_VERSION = 0x821B, - MAP_FLUSH_EXPLICIT_BIT = 0x0010, - MAP_INVALIDATE_BUFFER_BIT = 0x0008, - MAP_INVALIDATE_RANGE_BIT = 0x0004, - MAP_READ_BIT = 0x0001, - MAP_UNSYNCHRONIZED_BIT = 0x0020, - MAP_WRITE_BIT = 0x0002, - MAX_ARRAY_TEXTURE_LAYERS = 0x88FF, - MAX_CLIP_DISTANCES = 0x0D32, - MAX_COLOR_ATTACHMENTS = 0x8CDF, - MAX_PROGRAM_TEXEL_OFFSET = 0x8905, - MAX_RENDERBUFFER_SIZE = 0x84E8, - MAX_SAMPLES = 0x8D57, - MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A, - MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B, - MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80, - MAX_VARYING_COMPONENTS = 0x8B4B, - MINOR_VERSION = 0x821C, - MIN_PROGRAM_TEXEL_OFFSET = 0x8904, - NUM_EXTENSIONS = 0x821D, - PRIMITIVES_GENERATED = 0x8C87, - PROXY_TEXTURE_1D_ARRAY = 0x8C19, - PROXY_TEXTURE_2D_ARRAY = 0x8C1B, - QUERY_BY_REGION_NO_WAIT = 0x8E16, - QUERY_BY_REGION_WAIT = 0x8E15, - QUERY_NO_WAIT = 0x8E14, - QUERY_WAIT = 0x8E13, - R11F_G11F_B10F = 0x8C3A, - R16 = 0x822A, - R16F = 0x822D, - R16I = 0x8233, - R16UI = 0x8234, - R32F = 0x822E, - R32I = 0x8235, - R32UI = 0x8236, - R8 = 0x8229, - R8I = 0x8231, - R8UI = 0x8232, - RASTERIZER_DISCARD = 0x8C89, - READ_FRAMEBUFFER = 0x8CA8, - READ_FRAMEBUFFER_BINDING = 0x8CAA, - RED_INTEGER = 0x8D94, - RENDERBUFFER = 0x8D41, - RENDERBUFFER_ALPHA_SIZE = 0x8D53, - RENDERBUFFER_BINDING = 0x8CA7, - RENDERBUFFER_BLUE_SIZE = 0x8D52, - RENDERBUFFER_DEPTH_SIZE = 0x8D54, - RENDERBUFFER_GREEN_SIZE = 0x8D51, - RENDERBUFFER_HEIGHT = 0x8D43, - RENDERBUFFER_INTERNAL_FORMAT = 0x8D44, - RENDERBUFFER_RED_SIZE = 0x8D50, - RENDERBUFFER_SAMPLES = 0x8CAB, - RENDERBUFFER_STENCIL_SIZE = 0x8D55, - RENDERBUFFER_WIDTH = 0x8D42, - RG = 0x8227, - RG16 = 0x822C, - RG16F = 0x822F, - RG16I = 0x8239, - RG16UI = 0x823A, - RG32F = 0x8230, - RG32I = 0x823B, - RG32UI = 0x823C, - RG8 = 0x822B, - RG8I = 0x8237, - RG8UI = 0x8238, - RGB16F = 0x881B, - RGB16I = 0x8D89, - RGB16UI = 0x8D77, - RGB32F = 0x8815, - RGB32I = 0x8D83, - RGB32UI = 0x8D71, - RGB8I = 0x8D8F, - RGB8UI = 0x8D7D, - RGB9_E5 = 0x8C3D, - RGBA16F = 0x881A, - RGBA16I = 0x8D88, - RGBA16UI = 0x8D76, - RGBA32F = 0x8814, - RGBA32I = 0x8D82, - RGBA32UI = 0x8D70, - RGBA8I = 0x8D8E, - RGBA8UI = 0x8D7C, - RGBA_INTEGER = 0x8D99, - RGB_INTEGER = 0x8D98, - RG_INTEGER = 0x8228, - SAMPLER_1D_ARRAY = 0x8DC0, - SAMPLER_1D_ARRAY_SHADOW = 0x8DC3, - SAMPLER_2D_ARRAY = 0x8DC1, - SAMPLER_2D_ARRAY_SHADOW = 0x8DC4, - SAMPLER_CUBE_SHADOW = 0x8DC5, - SEPARATE_ATTRIBS = 0x8C8D, - STENCIL_ATTACHMENT = 0x8D20, - STENCIL_INDEX1 = 0x8D46, - STENCIL_INDEX16 = 0x8D49, - STENCIL_INDEX4 = 0x8D47, - STENCIL_INDEX8 = 0x8D48, - TEXTURE_1D_ARRAY = 0x8C18, - TEXTURE_2D_ARRAY = 0x8C1A, - TEXTURE_ALPHA_TYPE = 0x8C13, - TEXTURE_BINDING_1D_ARRAY = 0x8C1C, - TEXTURE_BINDING_2D_ARRAY = 0x8C1D, - TEXTURE_BLUE_TYPE = 0x8C12, - TEXTURE_DEPTH_TYPE = 0x8C16, - TEXTURE_GREEN_TYPE = 0x8C11, - TEXTURE_RED_TYPE = 0x8C10, - TEXTURE_SHARED_SIZE = 0x8C3F, - TEXTURE_STENCIL_SIZE = 0x88F1, - TRANSFORM_FEEDBACK_BUFFER = 0x8C8E, - TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F, - TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F, - TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85, - TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84, - TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88, - TRANSFORM_FEEDBACK_VARYINGS = 0x8C83, - TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76, - UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B, - UNSIGNED_INT_24_8 = 0x84FA, - UNSIGNED_INT_5_9_9_9_REV = 0x8C3E, - UNSIGNED_INT_SAMPLER_1D = 0x8DD1, - UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6, - UNSIGNED_INT_SAMPLER_2D = 0x8DD2, - UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7, - UNSIGNED_INT_SAMPLER_3D = 0x8DD3, - UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4, - UNSIGNED_INT_VEC2 = 0x8DC6, - UNSIGNED_INT_VEC3 = 0x8DC7, - UNSIGNED_INT_VEC4 = 0x8DC8, - UNSIGNED_NORMALIZED = 0x8C17, - VERTEX_ARRAY_BINDING = 0x85B5, - VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD, - - ACTIVE_UNIFORM_BLOCKS = 0x8A36, - ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35, - COPY_READ_BUFFER = 0x8F36, - COPY_WRITE_BUFFER = 0x8F37, - INT_SAMPLER_2D_RECT = 0x8DCD, - INT_SAMPLER_BUFFER = 0x8DD0, - INVALID_INDEX = 0xFFFFFFFF, - MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33, - MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32, - MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E, - MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31, - MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D, - MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C, - MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8, - MAX_TEXTURE_BUFFER_SIZE = 0x8C2B, - MAX_UNIFORM_BLOCK_SIZE = 0x8A30, - MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F, - MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B, - PRIMITIVE_RESTART = 0x8F9D, - PRIMITIVE_RESTART_INDEX = 0x8F9E, - PROXY_TEXTURE_RECTANGLE = 0x84F7, - R16_SNORM = 0x8F98, - R8_SNORM = 0x8F94, - RG16_SNORM = 0x8F99, - RG8_SNORM = 0x8F95, - RGB16_SNORM = 0x8F9A, - RGB8_SNORM = 0x8F96, - RGBA16_SNORM = 0x8F9B, - RGBA8_SNORM = 0x8F97, - SAMPLER_2D_RECT = 0x8B63, - SAMPLER_2D_RECT_SHADOW = 0x8B64, - SAMPLER_BUFFER = 0x8DC2, - SIGNED_NORMALIZED = 0x8F9C, - TEXTURE_BINDING_BUFFER = 0x8C2C, - TEXTURE_BINDING_RECTANGLE = 0x84F6, - TEXTURE_BUFFER = 0x8C2A, - TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D, - TEXTURE_RECTANGLE = 0x84F5, - UNIFORM_ARRAY_STRIDE = 0x8A3C, - UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42, - UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43, - UNIFORM_BLOCK_BINDING = 0x8A3F, - UNIFORM_BLOCK_DATA_SIZE = 0x8A40, - UNIFORM_BLOCK_INDEX = 0x8A3A, - UNIFORM_BLOCK_NAME_LENGTH = 0x8A41, - UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46, - UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45, - UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44, - UNIFORM_BUFFER = 0x8A11, - UNIFORM_BUFFER_BINDING = 0x8A28, - UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34, - UNIFORM_BUFFER_SIZE = 0x8A2A, - UNIFORM_BUFFER_START = 0x8A29, - UNIFORM_IS_ROW_MAJOR = 0x8A3E, - UNIFORM_MATRIX_STRIDE = 0x8A3D, - UNIFORM_NAME_LENGTH = 0x8A39, - UNIFORM_OFFSET = 0x8A3B, - UNIFORM_SIZE = 0x8A38, - UNIFORM_TYPE = 0x8A37, - UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5, - UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8, - - ALREADY_SIGNALED = 0x911A, - CONDITION_SATISFIED = 0x911C, - CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002, - CONTEXT_CORE_PROFILE_BIT = 0x00000001, - CONTEXT_PROFILE_MASK = 0x9126, - DEPTH_CLAMP = 0x864F, - FIRST_VERTEX_CONVENTION = 0x8E4D, - FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7, - FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8, - GEOMETRY_INPUT_TYPE = 0x8917, - GEOMETRY_OUTPUT_TYPE = 0x8918, - GEOMETRY_SHADER = 0x8DD9, - GEOMETRY_VERTICES_OUT = 0x8916, - INT_SAMPLER_2D_MULTISAMPLE = 0x9109, - INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C, - LAST_VERTEX_CONVENTION = 0x8E4E, - LINES_ADJACENCY = 0x000A, - LINE_STRIP_ADJACENCY = 0x000B, - MAX_COLOR_TEXTURE_SAMPLES = 0x910E, - MAX_DEPTH_TEXTURE_SAMPLES = 0x910F, - MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125, - MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123, - MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124, - MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0, - MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29, - MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1, - MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF, - MAX_INTEGER_SAMPLES = 0x9110, - MAX_SAMPLE_MASK_WORDS = 0x8E59, - MAX_SERVER_WAIT_TIMEOUT = 0x9111, - MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122, - OBJECT_TYPE = 0x9112, - PROGRAM_POINT_SIZE = 0x8642, - PROVOKING_VERTEX = 0x8E4F, - PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101, - PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103, - QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C, - SAMPLER_2D_MULTISAMPLE = 0x9108, - SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B, - SAMPLE_MASK = 0x8E51, - SAMPLE_MASK_VALUE = 0x8E52, - SAMPLE_POSITION = 0x8E50, - SIGNALED = 0x9119, - SYNC_CONDITION = 0x9113, - SYNC_FENCE = 0x9116, - SYNC_FLAGS = 0x9115, - SYNC_FLUSH_COMMANDS_BIT = 0x00000001, - SYNC_GPU_COMMANDS_COMPLETE = 0x9117, - SYNC_STATUS = 0x9114, - TEXTURE_2D_MULTISAMPLE = 0x9100, - TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102, - TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104, - TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105, - TEXTURE_CUBE_MAP_SEAMLESS = 0x884F, - TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107, - TEXTURE_SAMPLES = 0x9106, - TIMEOUT_EXPIRED = 0x911B, - TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF, - TRIANGLES_ADJACENCY = 0x000C, - TRIANGLE_STRIP_ADJACENCY = 0x000D, - UNSIGNALED = 0x9118, - UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A, - UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D, - WAIT_FAILED_ = 0x911D, - - ANY_SAMPLES_PASSED = 0x8C2F, - INT_2_10_10_10_REV = 0x8D9F, - MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC, - ONE_MINUS_SRC1_ALPHA = 0x88FB, - ONE_MINUS_SRC1_COLOR = 0x88FA, - RGB10_A2UI = 0x906F, - SAMPLER_BINDING = 0x8919, - SRC1_COLOR = 0x88F9, - TEXTURE_SWIZZLE_A = 0x8E45, - TEXTURE_SWIZZLE_B = 0x8E44, - TEXTURE_SWIZZLE_G = 0x8E43, - TEXTURE_SWIZZLE_R = 0x8E42, - TEXTURE_SWIZZLE_RGBA = 0x8E46, - TIMESTAMP = 0x8E28, - TIME_ELAPSED = 0x88BF, - VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE, - - }; - - namespace _detail - { - - extern void (CODEGEN_FUNCPTR *BlendFunc)(GLenum sfactor, GLenum dfactor); - extern void (CODEGEN_FUNCPTR *Clear)(GLbitfield mask); - extern void (CODEGEN_FUNCPTR *ClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); - extern void (CODEGEN_FUNCPTR *ClearDepth)(GLdouble depth); - extern void (CODEGEN_FUNCPTR *ClearStencil)(GLint s); - extern void (CODEGEN_FUNCPTR *ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); - extern void (CODEGEN_FUNCPTR *CullFace)(GLenum mode); - extern void (CODEGEN_FUNCPTR *DepthFunc)(GLenum func); - extern void (CODEGEN_FUNCPTR *DepthMask)(GLboolean flag); - extern void (CODEGEN_FUNCPTR *DepthRange)(GLdouble ren_near, GLdouble ren_far); - extern void (CODEGEN_FUNCPTR *Disable)(GLenum cap); - extern void (CODEGEN_FUNCPTR *DrawBuffer)(GLenum buf); - extern void (CODEGEN_FUNCPTR *Enable)(GLenum cap); - extern void (CODEGEN_FUNCPTR *Finish)(void); - extern void (CODEGEN_FUNCPTR *Flush)(void); - extern void (CODEGEN_FUNCPTR *FrontFace)(GLenum mode); - extern void (CODEGEN_FUNCPTR *GetBooleanv)(GLenum pname, GLboolean * data); - extern void (CODEGEN_FUNCPTR *GetDoublev)(GLenum pname, GLdouble * data); - extern GLenum (CODEGEN_FUNCPTR *GetError)(void); - extern void (CODEGEN_FUNCPTR *GetFloatv)(GLenum pname, GLfloat * data); - extern void (CODEGEN_FUNCPTR *GetIntegerv)(GLenum pname, GLint * data); - extern const GLubyte * (CODEGEN_FUNCPTR *GetString)(GLenum name); - extern void (CODEGEN_FUNCPTR *GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, void * pixels); - extern void (CODEGEN_FUNCPTR *GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params); - extern void (CODEGEN_FUNCPTR *GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params); - extern void (CODEGEN_FUNCPTR *GetTexParameteriv)(GLenum target, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *Hint)(GLenum target, GLenum mode); - extern GLboolean (CODEGEN_FUNCPTR *IsEnabled)(GLenum cap); - extern void (CODEGEN_FUNCPTR *LineWidth)(GLfloat width); - extern void (CODEGEN_FUNCPTR *LogicOp)(GLenum opcode); - extern void (CODEGEN_FUNCPTR *PixelStoref)(GLenum pname, GLfloat param); - extern void (CODEGEN_FUNCPTR *PixelStorei)(GLenum pname, GLint param); - extern void (CODEGEN_FUNCPTR *PointSize)(GLfloat size); - extern void (CODEGEN_FUNCPTR *PolygonMode)(GLenum face, GLenum mode); - extern void (CODEGEN_FUNCPTR *ReadBuffer)(GLenum src); - extern void (CODEGEN_FUNCPTR *ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels); - extern void (CODEGEN_FUNCPTR *Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); - extern void (CODEGEN_FUNCPTR *StencilFunc)(GLenum func, GLint ref, GLuint mask); - extern void (CODEGEN_FUNCPTR *StencilMask)(GLuint mask); - extern void (CODEGEN_FUNCPTR *StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); - extern void (CODEGEN_FUNCPTR *TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels); - extern void (CODEGEN_FUNCPTR *TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels); - extern void (CODEGEN_FUNCPTR *TexParameterf)(GLenum target, GLenum pname, GLfloat param); - extern void (CODEGEN_FUNCPTR *TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params); - extern void (CODEGEN_FUNCPTR *TexParameteri)(GLenum target, GLenum pname, GLint param); - extern void (CODEGEN_FUNCPTR *TexParameteriv)(GLenum target, GLenum pname, const GLint * params); - extern void (CODEGEN_FUNCPTR *Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); - - extern void (CODEGEN_FUNCPTR *BindTexture)(GLenum target, GLuint texture); - extern void (CODEGEN_FUNCPTR *CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); - extern void (CODEGEN_FUNCPTR *CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); - extern void (CODEGEN_FUNCPTR *CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); - extern void (CODEGEN_FUNCPTR *CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); - extern void (CODEGEN_FUNCPTR *DeleteTextures)(GLsizei n, const GLuint * textures); - extern void (CODEGEN_FUNCPTR *DrawArrays)(GLenum mode, GLint first, GLsizei count); - extern void (CODEGEN_FUNCPTR *DrawElements)(GLenum mode, GLsizei count, GLenum type, const void * indices); - extern void (CODEGEN_FUNCPTR *GenTextures)(GLsizei n, GLuint * textures); - extern GLboolean (CODEGEN_FUNCPTR *IsTexture)(GLuint texture); - extern void (CODEGEN_FUNCPTR *PolygonOffset)(GLfloat factor, GLfloat units); - extern void (CODEGEN_FUNCPTR *TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels); - extern void (CODEGEN_FUNCPTR *TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels); - - extern void (CODEGEN_FUNCPTR *CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - extern void (CODEGEN_FUNCPTR *DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices); - extern void (CODEGEN_FUNCPTR *TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels); - extern void (CODEGEN_FUNCPTR *TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels); - - extern void (CODEGEN_FUNCPTR *ActiveTexture)(GLenum texture); - extern void (CODEGEN_FUNCPTR *CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data); - extern void (CODEGEN_FUNCPTR *CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data); - extern void (CODEGEN_FUNCPTR *CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data); - extern void (CODEGEN_FUNCPTR *CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data); - extern void (CODEGEN_FUNCPTR *CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data); - extern void (CODEGEN_FUNCPTR *CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data); - extern void (CODEGEN_FUNCPTR *GetCompressedTexImage)(GLenum target, GLint level, void * img); - extern void (CODEGEN_FUNCPTR *SampleCoverage)(GLfloat value, GLboolean invert); - - extern void (CODEGEN_FUNCPTR *BlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); - extern void (CODEGEN_FUNCPTR *BlendEquation)(GLenum mode); - extern void (CODEGEN_FUNCPTR *BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); - extern void (CODEGEN_FUNCPTR *MultiDrawArrays)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount); - extern void (CODEGEN_FUNCPTR *MultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount); - extern void (CODEGEN_FUNCPTR *PointParameterf)(GLenum pname, GLfloat param); - extern void (CODEGEN_FUNCPTR *PointParameterfv)(GLenum pname, const GLfloat * params); - extern void (CODEGEN_FUNCPTR *PointParameteri)(GLenum pname, GLint param); - extern void (CODEGEN_FUNCPTR *PointParameteriv)(GLenum pname, const GLint * params); - - extern void (CODEGEN_FUNCPTR *BeginQuery)(GLenum target, GLuint id); - extern void (CODEGEN_FUNCPTR *BindBuffer)(GLenum target, GLuint buffer); - extern void (CODEGEN_FUNCPTR *BufferData)(GLenum target, GLsizeiptr size, const void * data, GLenum usage); - extern void (CODEGEN_FUNCPTR *BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data); - extern void (CODEGEN_FUNCPTR *DeleteBuffers)(GLsizei n, const GLuint * buffers); - extern void (CODEGEN_FUNCPTR *DeleteQueries)(GLsizei n, const GLuint * ids); - extern void (CODEGEN_FUNCPTR *EndQuery)(GLenum target); - extern void (CODEGEN_FUNCPTR *GenBuffers)(GLsizei n, GLuint * buffers); - extern void (CODEGEN_FUNCPTR *GenQueries)(GLsizei n, GLuint * ids); - extern void (CODEGEN_FUNCPTR *GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetBufferPointerv)(GLenum target, GLenum pname, void ** params); - extern void (CODEGEN_FUNCPTR *GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void * data); - extern void (CODEGEN_FUNCPTR *GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params); - extern void (CODEGEN_FUNCPTR *GetQueryiv)(GLenum target, GLenum pname, GLint * params); - extern GLboolean (CODEGEN_FUNCPTR *IsBuffer)(GLuint buffer); - extern GLboolean (CODEGEN_FUNCPTR *IsQuery)(GLuint id); - extern void * (CODEGEN_FUNCPTR *MapBuffer)(GLenum target, GLenum access); - extern GLboolean (CODEGEN_FUNCPTR *UnmapBuffer)(GLenum target); - - extern void (CODEGEN_FUNCPTR *AttachShader)(GLuint program, GLuint shader); - extern void (CODEGEN_FUNCPTR *BindAttribLocation)(GLuint program, GLuint index, const GLchar * name); - extern void (CODEGEN_FUNCPTR *BlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); - extern void (CODEGEN_FUNCPTR *CompileShader)(GLuint shader); - extern GLuint (CODEGEN_FUNCPTR *CreateProgram)(void); - extern GLuint (CODEGEN_FUNCPTR *CreateShader)(GLenum type); - extern void (CODEGEN_FUNCPTR *DeleteProgram)(GLuint program); - extern void (CODEGEN_FUNCPTR *DeleteShader)(GLuint shader); - extern void (CODEGEN_FUNCPTR *DetachShader)(GLuint program, GLuint shader); - extern void (CODEGEN_FUNCPTR *DisableVertexAttribArray)(GLuint index); - extern void (CODEGEN_FUNCPTR *DrawBuffers)(GLsizei n, const GLenum * bufs); - extern void (CODEGEN_FUNCPTR *EnableVertexAttribArray)(GLuint index); - extern void (CODEGEN_FUNCPTR *GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); - extern void (CODEGEN_FUNCPTR *GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); - extern void (CODEGEN_FUNCPTR *GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders); - extern GLint (CODEGEN_FUNCPTR *GetAttribLocation)(GLuint program, const GLchar * name); - extern void (CODEGEN_FUNCPTR *GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); - extern void (CODEGEN_FUNCPTR *GetProgramiv)(GLuint program, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); - extern void (CODEGEN_FUNCPTR *GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); - extern void (CODEGEN_FUNCPTR *GetShaderiv)(GLuint shader, GLenum pname, GLint * params); - extern GLint (CODEGEN_FUNCPTR *GetUniformLocation)(GLuint program, const GLchar * name); - extern void (CODEGEN_FUNCPTR *GetUniformfv)(GLuint program, GLint location, GLfloat * params); - extern void (CODEGEN_FUNCPTR *GetUniformiv)(GLuint program, GLint location, GLint * params); - extern void (CODEGEN_FUNCPTR *GetVertexAttribPointerv)(GLuint index, GLenum pname, void ** pointer); - extern void (CODEGEN_FUNCPTR *GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params); - extern void (CODEGEN_FUNCPTR *GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params); - extern void (CODEGEN_FUNCPTR *GetVertexAttribiv)(GLuint index, GLenum pname, GLint * params); - extern GLboolean (CODEGEN_FUNCPTR *IsProgram)(GLuint program); - extern GLboolean (CODEGEN_FUNCPTR *IsShader)(GLuint shader); - extern void (CODEGEN_FUNCPTR *LinkProgram)(GLuint program); - extern void (CODEGEN_FUNCPTR *ShaderSource)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length); - extern void (CODEGEN_FUNCPTR *StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); - extern void (CODEGEN_FUNCPTR *StencilMaskSeparate)(GLenum face, GLuint mask); - extern void (CODEGEN_FUNCPTR *StencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); - extern void (CODEGEN_FUNCPTR *Uniform1f)(GLint location, GLfloat v0); - extern void (CODEGEN_FUNCPTR *Uniform1fv)(GLint location, GLsizei count, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *Uniform1i)(GLint location, GLint v0); - extern void (CODEGEN_FUNCPTR *Uniform1iv)(GLint location, GLsizei count, const GLint * value); - extern void (CODEGEN_FUNCPTR *Uniform2f)(GLint location, GLfloat v0, GLfloat v1); - extern void (CODEGEN_FUNCPTR *Uniform2fv)(GLint location, GLsizei count, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *Uniform2i)(GLint location, GLint v0, GLint v1); - extern void (CODEGEN_FUNCPTR *Uniform2iv)(GLint location, GLsizei count, const GLint * value); - extern void (CODEGEN_FUNCPTR *Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); - extern void (CODEGEN_FUNCPTR *Uniform3fv)(GLint location, GLsizei count, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2); - extern void (CODEGEN_FUNCPTR *Uniform3iv)(GLint location, GLsizei count, const GLint * value); - extern void (CODEGEN_FUNCPTR *Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); - extern void (CODEGEN_FUNCPTR *Uniform4fv)(GLint location, GLsizei count, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); - extern void (CODEGEN_FUNCPTR *Uniform4iv)(GLint location, GLsizei count, const GLint * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UseProgram)(GLuint program); - extern void (CODEGEN_FUNCPTR *ValidateProgram)(GLuint program); - extern void (CODEGEN_FUNCPTR *VertexAttrib1d)(GLuint index, GLdouble x); - extern void (CODEGEN_FUNCPTR *VertexAttrib1dv)(GLuint index, const GLdouble * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib1f)(GLuint index, GLfloat x); - extern void (CODEGEN_FUNCPTR *VertexAttrib1fv)(GLuint index, const GLfloat * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib1s)(GLuint index, GLshort x); - extern void (CODEGEN_FUNCPTR *VertexAttrib1sv)(GLuint index, const GLshort * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); - extern void (CODEGEN_FUNCPTR *VertexAttrib2dv)(GLuint index, const GLdouble * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y); - extern void (CODEGEN_FUNCPTR *VertexAttrib2fv)(GLuint index, const GLfloat * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib2s)(GLuint index, GLshort x, GLshort y); - extern void (CODEGEN_FUNCPTR *VertexAttrib2sv)(GLuint index, const GLshort * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); - extern void (CODEGEN_FUNCPTR *VertexAttrib3dv)(GLuint index, const GLdouble * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z); - extern void (CODEGEN_FUNCPTR *VertexAttrib3fv)(GLuint index, const GLfloat * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z); - extern void (CODEGEN_FUNCPTR *VertexAttrib3sv)(GLuint index, const GLshort * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Nbv)(GLuint index, const GLbyte * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Niv)(GLuint index, const GLint * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Nsv)(GLuint index, const GLshort * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Nubv)(GLuint index, const GLubyte * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Nuiv)(GLuint index, const GLuint * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4Nusv)(GLuint index, const GLushort * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4bv)(GLuint index, const GLbyte * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); - extern void (CODEGEN_FUNCPTR *VertexAttrib4dv)(GLuint index, const GLdouble * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); - extern void (CODEGEN_FUNCPTR *VertexAttrib4fv)(GLuint index, const GLfloat * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4iv)(GLuint index, const GLint * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); - extern void (CODEGEN_FUNCPTR *VertexAttrib4sv)(GLuint index, const GLshort * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4ubv)(GLuint index, const GLubyte * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4uiv)(GLuint index, const GLuint * v); - extern void (CODEGEN_FUNCPTR *VertexAttrib4usv)(GLuint index, const GLushort * v); - extern void (CODEGEN_FUNCPTR *VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); - - extern void (CODEGEN_FUNCPTR *UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); - - extern void (CODEGEN_FUNCPTR *BeginConditionalRender)(GLuint id, GLenum mode); - extern void (CODEGEN_FUNCPTR *BeginTransformFeedback)(GLenum primitiveMode); - extern void (CODEGEN_FUNCPTR *BindBufferBase)(GLenum target, GLuint index, GLuint buffer); - extern void (CODEGEN_FUNCPTR *BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); - extern void (CODEGEN_FUNCPTR *BindFragDataLocation)(GLuint program, GLuint color, const GLchar * name); - extern void (CODEGEN_FUNCPTR *BindFramebuffer)(GLenum target, GLuint framebuffer); - extern void (CODEGEN_FUNCPTR *BindRenderbuffer)(GLenum target, GLuint renderbuffer); - extern void (CODEGEN_FUNCPTR *BindVertexArray)(GLuint ren_array); - extern void (CODEGEN_FUNCPTR *BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - extern GLenum (CODEGEN_FUNCPTR *CheckFramebufferStatus)(GLenum target); - extern void (CODEGEN_FUNCPTR *ClampColor)(GLenum target, GLenum clamp); - extern void (CODEGEN_FUNCPTR *ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); - extern void (CODEGEN_FUNCPTR *ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value); - extern void (CODEGEN_FUNCPTR *ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value); - extern void (CODEGEN_FUNCPTR *ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value); - extern void (CODEGEN_FUNCPTR *ColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); - extern void (CODEGEN_FUNCPTR *DeleteFramebuffers)(GLsizei n, const GLuint * framebuffers); - extern void (CODEGEN_FUNCPTR *DeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers); - extern void (CODEGEN_FUNCPTR *DeleteVertexArrays)(GLsizei n, const GLuint * arrays); - extern void (CODEGEN_FUNCPTR *Disablei)(GLenum target, GLuint index); - extern void (CODEGEN_FUNCPTR *Enablei)(GLenum target, GLuint index); - extern void (CODEGEN_FUNCPTR *EndConditionalRender)(void); - extern void (CODEGEN_FUNCPTR *EndTransformFeedback)(void); - extern void (CODEGEN_FUNCPTR *FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); - extern void (CODEGEN_FUNCPTR *FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); - extern void (CODEGEN_FUNCPTR *FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); - extern void (CODEGEN_FUNCPTR *FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); - extern void (CODEGEN_FUNCPTR *FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); - extern void (CODEGEN_FUNCPTR *FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); - extern void (CODEGEN_FUNCPTR *GenFramebuffers)(GLsizei n, GLuint * framebuffers); - extern void (CODEGEN_FUNCPTR *GenRenderbuffers)(GLsizei n, GLuint * renderbuffers); - extern void (CODEGEN_FUNCPTR *GenVertexArrays)(GLsizei n, GLuint * arrays); - extern void (CODEGEN_FUNCPTR *GenerateMipmap)(GLenum target); - extern void (CODEGEN_FUNCPTR *GetBooleani_v)(GLenum target, GLuint index, GLboolean * data); - extern GLint (CODEGEN_FUNCPTR *GetFragDataLocation)(GLuint program, const GLchar * name); - extern void (CODEGEN_FUNCPTR *GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetIntegeri_v)(GLenum target, GLuint index, GLint * data); - extern void (CODEGEN_FUNCPTR *GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params); - extern const GLubyte * (CODEGEN_FUNCPTR *GetStringi)(GLenum name, GLuint index); - extern void (CODEGEN_FUNCPTR *GetTexParameterIiv)(GLenum target, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params); - extern void (CODEGEN_FUNCPTR *GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); - extern void (CODEGEN_FUNCPTR *GetUniformuiv)(GLuint program, GLint location, GLuint * params); - extern void (CODEGEN_FUNCPTR *GetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params); - extern GLboolean (CODEGEN_FUNCPTR *IsEnabledi)(GLenum target, GLuint index); - extern GLboolean (CODEGEN_FUNCPTR *IsFramebuffer)(GLuint framebuffer); - extern GLboolean (CODEGEN_FUNCPTR *IsRenderbuffer)(GLuint renderbuffer); - extern GLboolean (CODEGEN_FUNCPTR *IsVertexArray)(GLuint ren_array); - extern void * (CODEGEN_FUNCPTR *MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); - extern void (CODEGEN_FUNCPTR *RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); - extern void (CODEGEN_FUNCPTR *RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - extern void (CODEGEN_FUNCPTR *TexParameterIiv)(GLenum target, GLenum pname, const GLint * params); - extern void (CODEGEN_FUNCPTR *TexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params); - extern void (CODEGEN_FUNCPTR *TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode); - extern void (CODEGEN_FUNCPTR *Uniform1ui)(GLint location, GLuint v0); - extern void (CODEGEN_FUNCPTR *Uniform1uiv)(GLint location, GLsizei count, const GLuint * value); - extern void (CODEGEN_FUNCPTR *Uniform2ui)(GLint location, GLuint v0, GLuint v1); - extern void (CODEGEN_FUNCPTR *Uniform2uiv)(GLint location, GLsizei count, const GLuint * value); - extern void (CODEGEN_FUNCPTR *Uniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); - extern void (CODEGEN_FUNCPTR *Uniform3uiv)(GLint location, GLsizei count, const GLuint * value); - extern void (CODEGEN_FUNCPTR *Uniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); - extern void (CODEGEN_FUNCPTR *Uniform4uiv)(GLint location, GLsizei count, const GLuint * value); - extern void (CODEGEN_FUNCPTR *VertexAttribI1i)(GLuint index, GLint x); - extern void (CODEGEN_FUNCPTR *VertexAttribI1iv)(GLuint index, const GLint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI1ui)(GLuint index, GLuint x); - extern void (CODEGEN_FUNCPTR *VertexAttribI1uiv)(GLuint index, const GLuint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI2i)(GLuint index, GLint x, GLint y); - extern void (CODEGEN_FUNCPTR *VertexAttribI2iv)(GLuint index, const GLint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI2ui)(GLuint index, GLuint x, GLuint y); - extern void (CODEGEN_FUNCPTR *VertexAttribI2uiv)(GLuint index, const GLuint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z); - extern void (CODEGEN_FUNCPTR *VertexAttribI3iv)(GLuint index, const GLint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z); - extern void (CODEGEN_FUNCPTR *VertexAttribI3uiv)(GLuint index, const GLuint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI4bv)(GLuint index, const GLbyte * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); - extern void (CODEGEN_FUNCPTR *VertexAttribI4iv)(GLuint index, const GLint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI4sv)(GLuint index, const GLshort * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI4ubv)(GLuint index, const GLubyte * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); - extern void (CODEGEN_FUNCPTR *VertexAttribI4uiv)(GLuint index, const GLuint * v); - extern void (CODEGEN_FUNCPTR *VertexAttribI4usv)(GLuint index, const GLushort * v); - extern void (CODEGEN_FUNCPTR *VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer); - - extern void (CODEGEN_FUNCPTR *CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); - extern void (CODEGEN_FUNCPTR *DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); - extern void (CODEGEN_FUNCPTR *DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount); - extern void (CODEGEN_FUNCPTR *GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName); - extern void (CODEGEN_FUNCPTR *GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName); - extern void (CODEGEN_FUNCPTR *GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params); - extern GLuint (CODEGEN_FUNCPTR *GetUniformBlockIndex)(GLuint program, const GLchar * uniformBlockName); - extern void (CODEGEN_FUNCPTR *GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices); - extern void (CODEGEN_FUNCPTR *PrimitiveRestartIndex)(GLuint index); - extern void (CODEGEN_FUNCPTR *TexBuffer)(GLenum target, GLenum internalformat, GLuint buffer); - extern void (CODEGEN_FUNCPTR *UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); - - extern GLenum (CODEGEN_FUNCPTR *ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); - extern void (CODEGEN_FUNCPTR *DeleteSync)(GLsync sync); - extern void (CODEGEN_FUNCPTR *DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex); - extern void (CODEGEN_FUNCPTR *DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex); - extern void (CODEGEN_FUNCPTR *DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex); - extern GLsync (CODEGEN_FUNCPTR *FenceSync)(GLenum condition, GLbitfield flags); - extern void (CODEGEN_FUNCPTR *FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); - extern void (CODEGEN_FUNCPTR *GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params); - extern void (CODEGEN_FUNCPTR *GetInteger64i_v)(GLenum target, GLuint index, GLint64 * data); - extern void (CODEGEN_FUNCPTR *GetInteger64v)(GLenum pname, GLint64 * data); - extern void (CODEGEN_FUNCPTR *GetMultisamplefv)(GLenum pname, GLuint index, GLfloat * val); - extern void (CODEGEN_FUNCPTR *GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); - extern GLboolean (CODEGEN_FUNCPTR *IsSync)(GLsync sync); - extern void (CODEGEN_FUNCPTR *MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex); - extern void (CODEGEN_FUNCPTR *ProvokingVertex)(GLenum mode); - extern void (CODEGEN_FUNCPTR *SampleMaski)(GLuint maskNumber, GLbitfield mask); - extern void (CODEGEN_FUNCPTR *TexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); - extern void (CODEGEN_FUNCPTR *TexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); - extern void (CODEGEN_FUNCPTR *WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); - - extern void (CODEGEN_FUNCPTR *BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); - extern void (CODEGEN_FUNCPTR *BindSampler)(GLuint unit, GLuint sampler); - extern void (CODEGEN_FUNCPTR *DeleteSamplers)(GLsizei count, const GLuint * samplers); - extern void (CODEGEN_FUNCPTR *GenSamplers)(GLsizei count, GLuint * samplers); - extern GLint (CODEGEN_FUNCPTR *GetFragDataIndex)(GLuint program, const GLchar * name); - extern void (CODEGEN_FUNCPTR *GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 * params); - extern void (CODEGEN_FUNCPTR *GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 * params); - extern void (CODEGEN_FUNCPTR *GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params); - extern void (CODEGEN_FUNCPTR *GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params); - extern void (CODEGEN_FUNCPTR *GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params); - extern void (CODEGEN_FUNCPTR *GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params); - extern GLboolean (CODEGEN_FUNCPTR *IsSampler)(GLuint sampler); - extern void (CODEGEN_FUNCPTR *QueryCounter)(GLuint id, GLenum target); - extern void (CODEGEN_FUNCPTR *SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * param); - extern void (CODEGEN_FUNCPTR *SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * param); - extern void (CODEGEN_FUNCPTR *SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); - extern void (CODEGEN_FUNCPTR *SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * param); - extern void (CODEGEN_FUNCPTR *SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); - extern void (CODEGEN_FUNCPTR *SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * param); - extern void (CODEGEN_FUNCPTR *VertexAttribDivisor)(GLuint index, GLuint divisor); - extern void (CODEGEN_FUNCPTR *VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); - extern void (CODEGEN_FUNCPTR *VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); - extern void (CODEGEN_FUNCPTR *VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); - extern void (CODEGEN_FUNCPTR *VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); - extern void (CODEGEN_FUNCPTR *VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); - extern void (CODEGEN_FUNCPTR *VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); - extern void (CODEGEN_FUNCPTR *VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); - extern void (CODEGEN_FUNCPTR *VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value); - - } //namespace _detail - - inline void BlendFunc(GLenum sfactor, GLenum dfactor){_detail::BlendFunc(sfactor, dfactor);} - inline void Clear(GLbitfield mask){_detail::Clear(mask);} - inline void ClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha){_detail::ClearColor(red, green, blue, alpha);} - inline void ClearDepth(GLdouble depth){_detail::ClearDepth(depth);} - inline void ClearStencil(GLint s){_detail::ClearStencil(s);} - inline void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha){_detail::ColorMask(red, green, blue, alpha);} - inline void CullFace(GLenum mode){_detail::CullFace(mode);} - inline void DepthFunc(GLenum func){_detail::DepthFunc(func);} - inline void DepthMask(GLboolean flag){_detail::DepthMask(flag);} - inline void DepthRange(GLdouble ren_near, GLdouble ren_far){_detail::DepthRange(ren_near, ren_far);} - inline void Disable(GLenum cap){_detail::Disable(cap);} - inline void DrawBuffer(GLenum buf){_detail::DrawBuffer(buf);} - inline void Enable(GLenum cap){_detail::Enable(cap);} - inline void Finish(void){_detail::Finish();} - inline void Flush(void){_detail::Flush();} - inline void FrontFace(GLenum mode){_detail::FrontFace(mode);} - inline void GetBooleanv(GLenum pname, GLboolean * data){_detail::GetBooleanv(pname, data);} - inline void GetDoublev(GLenum pname, GLdouble * data){_detail::GetDoublev(pname, data);} - inline GLenum GetError(void){return _detail::GetError();} - inline void GetFloatv(GLenum pname, GLfloat * data){_detail::GetFloatv(pname, data);} - inline void GetIntegerv(GLenum pname, GLint * data){_detail::GetIntegerv(pname, data);} - inline const GLubyte * GetString(GLenum name){return _detail::GetString(name);} - inline void GetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void * pixels){_detail::GetTexImage(target, level, format, type, pixels);} - inline void GetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat * params){_detail::GetTexLevelParameterfv(target, level, pname, params);} - inline void GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint * params){_detail::GetTexLevelParameteriv(target, level, pname, params);} - inline void GetTexParameterfv(GLenum target, GLenum pname, GLfloat * params){_detail::GetTexParameterfv(target, pname, params);} - inline void GetTexParameteriv(GLenum target, GLenum pname, GLint * params){_detail::GetTexParameteriv(target, pname, params);} - inline void Hint(GLenum target, GLenum mode){_detail::Hint(target, mode);} - inline GLboolean IsEnabled(GLenum cap){return _detail::IsEnabled(cap);} - inline void LineWidth(GLfloat width){_detail::LineWidth(width);} - inline void LogicOp(GLenum opcode){_detail::LogicOp(opcode);} - inline void PixelStoref(GLenum pname, GLfloat param){_detail::PixelStoref(pname, param);} - inline void PixelStorei(GLenum pname, GLint param){_detail::PixelStorei(pname, param);} - inline void PointSize(GLfloat size){_detail::PointSize(size);} - inline void PolygonMode(GLenum face, GLenum mode){_detail::PolygonMode(face, mode);} - inline void ReadBuffer(GLenum src){_detail::ReadBuffer(src);} - inline void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels){_detail::ReadPixels(x, y, width, height, format, type, pixels);} - inline void Scissor(GLint x, GLint y, GLsizei width, GLsizei height){_detail::Scissor(x, y, width, height);} - inline void StencilFunc(GLenum func, GLint ref, GLuint mask){_detail::StencilFunc(func, ref, mask);} - inline void StencilMask(GLuint mask){_detail::StencilMask(mask);} - inline void StencilOp(GLenum fail, GLenum zfail, GLenum zpass){_detail::StencilOp(fail, zfail, zpass);} - inline void TexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels){_detail::TexImage1D(target, level, internalformat, width, border, format, type, pixels);} - inline void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels){_detail::TexImage2D(target, level, internalformat, width, height, border, format, type, pixels);} - inline void TexParameterf(GLenum target, GLenum pname, GLfloat param){_detail::TexParameterf(target, pname, param);} - inline void TexParameterfv(GLenum target, GLenum pname, const GLfloat * params){_detail::TexParameterfv(target, pname, params);} - inline void TexParameteri(GLenum target, GLenum pname, GLint param){_detail::TexParameteri(target, pname, param);} - inline void TexParameteriv(GLenum target, GLenum pname, const GLint * params){_detail::TexParameteriv(target, pname, params);} - inline void Viewport(GLint x, GLint y, GLsizei width, GLsizei height){_detail::Viewport(x, y, width, height);} - - inline void BindTexture(GLenum target, GLuint texture){_detail::BindTexture(target, texture);} - inline void CopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border){_detail::CopyTexImage1D(target, level, internalformat, x, y, width, border);} - inline void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border){_detail::CopyTexImage2D(target, level, internalformat, x, y, width, height, border);} - inline void CopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width){_detail::CopyTexSubImage1D(target, level, xoffset, x, y, width);} - inline void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height){_detail::CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);} - inline void DeleteTextures(GLsizei n, const GLuint * textures){_detail::DeleteTextures(n, textures);} - inline void DrawArrays(GLenum mode, GLint first, GLsizei count){_detail::DrawArrays(mode, first, count);} - inline void DrawElements(GLenum mode, GLsizei count, GLenum type, const void * indices){_detail::DrawElements(mode, count, type, indices);} - inline void GenTextures(GLsizei n, GLuint * textures){_detail::GenTextures(n, textures);} - inline GLboolean IsTexture(GLuint texture){return _detail::IsTexture(texture);} - inline void PolygonOffset(GLfloat factor, GLfloat units){_detail::PolygonOffset(factor, units);} - inline void TexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels){_detail::TexSubImage1D(target, level, xoffset, width, format, type, pixels);} - inline void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels){_detail::TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);} - - inline void CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height){_detail::CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);} - inline void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices){_detail::DrawRangeElements(mode, start, end, count, type, indices);} - inline void TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels){_detail::TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);} - inline void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels){_detail::TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);} - - inline void ActiveTexture(GLenum texture){_detail::ActiveTexture(texture);} - inline void CompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data){_detail::CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data);} - inline void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data){_detail::CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);} - inline void CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data){_detail::CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);} - inline void CompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data){_detail::CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);} - inline void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data){_detail::CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);} - inline void CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data){_detail::CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);} - inline void GetCompressedTexImage(GLenum target, GLint level, void * img){_detail::GetCompressedTexImage(target, level, img);} - inline void SampleCoverage(GLfloat value, GLboolean invert){_detail::SampleCoverage(value, invert);} - - inline void BlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha){_detail::BlendColor(red, green, blue, alpha);} - inline void BlendEquation(GLenum mode){_detail::BlendEquation(mode);} - inline void BlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha){_detail::BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);} - inline void MultiDrawArrays(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount){_detail::MultiDrawArrays(mode, first, count, drawcount);} - inline void MultiDrawElements(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount){_detail::MultiDrawElements(mode, count, type, indices, drawcount);} - inline void PointParameterf(GLenum pname, GLfloat param){_detail::PointParameterf(pname, param);} - inline void PointParameterfv(GLenum pname, const GLfloat * params){_detail::PointParameterfv(pname, params);} - inline void PointParameteri(GLenum pname, GLint param){_detail::PointParameteri(pname, param);} - inline void PointParameteriv(GLenum pname, const GLint * params){_detail::PointParameteriv(pname, params);} - - inline void BeginQuery(GLenum target, GLuint id){_detail::BeginQuery(target, id);} - inline void BindBuffer(GLenum target, GLuint buffer){_detail::BindBuffer(target, buffer);} - inline void BufferData(GLenum target, GLsizeiptr size, const void * data, GLenum usage){_detail::BufferData(target, size, data, usage);} - inline void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void * data){_detail::BufferSubData(target, offset, size, data);} - inline void DeleteBuffers(GLsizei n, const GLuint * buffers){_detail::DeleteBuffers(n, buffers);} - inline void DeleteQueries(GLsizei n, const GLuint * ids){_detail::DeleteQueries(n, ids);} - inline void EndQuery(GLenum target){_detail::EndQuery(target);} - inline void GenBuffers(GLsizei n, GLuint * buffers){_detail::GenBuffers(n, buffers);} - inline void GenQueries(GLsizei n, GLuint * ids){_detail::GenQueries(n, ids);} - inline void GetBufferParameteriv(GLenum target, GLenum pname, GLint * params){_detail::GetBufferParameteriv(target, pname, params);} - inline void GetBufferPointerv(GLenum target, GLenum pname, void ** params){_detail::GetBufferPointerv(target, pname, params);} - inline void GetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void * data){_detail::GetBufferSubData(target, offset, size, data);} - inline void GetQueryObjectiv(GLuint id, GLenum pname, GLint * params){_detail::GetQueryObjectiv(id, pname, params);} - inline void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint * params){_detail::GetQueryObjectuiv(id, pname, params);} - inline void GetQueryiv(GLenum target, GLenum pname, GLint * params){_detail::GetQueryiv(target, pname, params);} - inline GLboolean IsBuffer(GLuint buffer){return _detail::IsBuffer(buffer);} - inline GLboolean IsQuery(GLuint id){return _detail::IsQuery(id);} - inline void * MapBuffer(GLenum target, GLenum access){return _detail::MapBuffer(target, access);} - inline GLboolean UnmapBuffer(GLenum target){return _detail::UnmapBuffer(target);} - - inline void AttachShader(GLuint program, GLuint shader){_detail::AttachShader(program, shader);} - inline void BindAttribLocation(GLuint program, GLuint index, const GLchar * name){_detail::BindAttribLocation(program, index, name);} - inline void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha){_detail::BlendEquationSeparate(modeRGB, modeAlpha);} - inline void CompileShader(GLuint shader){_detail::CompileShader(shader);} - inline GLuint CreateProgram(void){return _detail::CreateProgram();} - inline GLuint CreateShader(GLenum type){return _detail::CreateShader(type);} - inline void DeleteProgram(GLuint program){_detail::DeleteProgram(program);} - inline void DeleteShader(GLuint shader){_detail::DeleteShader(shader);} - inline void DetachShader(GLuint program, GLuint shader){_detail::DetachShader(program, shader);} - inline void DisableVertexAttribArray(GLuint index){_detail::DisableVertexAttribArray(index);} - inline void DrawBuffers(GLsizei n, const GLenum * bufs){_detail::DrawBuffers(n, bufs);} - inline void EnableVertexAttribArray(GLuint index){_detail::EnableVertexAttribArray(index);} - inline void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name){_detail::GetActiveAttrib(program, index, bufSize, length, size, type, name);} - inline void GetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name){_detail::GetActiveUniform(program, index, bufSize, length, size, type, name);} - inline void GetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders){_detail::GetAttachedShaders(program, maxCount, count, shaders);} - inline GLint GetAttribLocation(GLuint program, const GLchar * name){return _detail::GetAttribLocation(program, name);} - inline void GetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog){_detail::GetProgramInfoLog(program, bufSize, length, infoLog);} - inline void GetProgramiv(GLuint program, GLenum pname, GLint * params){_detail::GetProgramiv(program, pname, params);} - inline void GetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog){_detail::GetShaderInfoLog(shader, bufSize, length, infoLog);} - inline void GetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source){_detail::GetShaderSource(shader, bufSize, length, source);} - inline void GetShaderiv(GLuint shader, GLenum pname, GLint * params){_detail::GetShaderiv(shader, pname, params);} - inline GLint GetUniformLocation(GLuint program, const GLchar * name){return _detail::GetUniformLocation(program, name);} - inline void GetUniformfv(GLuint program, GLint location, GLfloat * params){_detail::GetUniformfv(program, location, params);} - inline void GetUniformiv(GLuint program, GLint location, GLint * params){_detail::GetUniformiv(program, location, params);} - inline void GetVertexAttribPointerv(GLuint index, GLenum pname, void ** pointer){_detail::GetVertexAttribPointerv(index, pname, pointer);} - inline void GetVertexAttribdv(GLuint index, GLenum pname, GLdouble * params){_detail::GetVertexAttribdv(index, pname, params);} - inline void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat * params){_detail::GetVertexAttribfv(index, pname, params);} - inline void GetVertexAttribiv(GLuint index, GLenum pname, GLint * params){_detail::GetVertexAttribiv(index, pname, params);} - inline GLboolean IsProgram(GLuint program){return _detail::IsProgram(program);} - inline GLboolean IsShader(GLuint shader){return _detail::IsShader(shader);} - inline void LinkProgram(GLuint program){_detail::LinkProgram(program);} - inline void ShaderSource(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length){_detail::ShaderSource(shader, count, string, length);} - inline void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask){_detail::StencilFuncSeparate(face, func, ref, mask);} - inline void StencilMaskSeparate(GLenum face, GLuint mask){_detail::StencilMaskSeparate(face, mask);} - inline void StencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass){_detail::StencilOpSeparate(face, sfail, dpfail, dppass);} - inline void Uniform1f(GLint location, GLfloat v0){_detail::Uniform1f(location, v0);} - inline void Uniform1fv(GLint location, GLsizei count, const GLfloat * value){_detail::Uniform1fv(location, count, value);} - inline void Uniform1i(GLint location, GLint v0){_detail::Uniform1i(location, v0);} - inline void Uniform1iv(GLint location, GLsizei count, const GLint * value){_detail::Uniform1iv(location, count, value);} - inline void Uniform2f(GLint location, GLfloat v0, GLfloat v1){_detail::Uniform2f(location, v0, v1);} - inline void Uniform2fv(GLint location, GLsizei count, const GLfloat * value){_detail::Uniform2fv(location, count, value);} - inline void Uniform2i(GLint location, GLint v0, GLint v1){_detail::Uniform2i(location, v0, v1);} - inline void Uniform2iv(GLint location, GLsizei count, const GLint * value){_detail::Uniform2iv(location, count, value);} - inline void Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2){_detail::Uniform3f(location, v0, v1, v2);} - inline void Uniform3fv(GLint location, GLsizei count, const GLfloat * value){_detail::Uniform3fv(location, count, value);} - inline void Uniform3i(GLint location, GLint v0, GLint v1, GLint v2){_detail::Uniform3i(location, v0, v1, v2);} - inline void Uniform3iv(GLint location, GLsizei count, const GLint * value){_detail::Uniform3iv(location, count, value);} - inline void Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3){_detail::Uniform4f(location, v0, v1, v2, v3);} - inline void Uniform4fv(GLint location, GLsizei count, const GLfloat * value){_detail::Uniform4fv(location, count, value);} - inline void Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3){_detail::Uniform4i(location, v0, v1, v2, v3);} - inline void Uniform4iv(GLint location, GLsizei count, const GLint * value){_detail::Uniform4iv(location, count, value);} - inline void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix2fv(location, count, transpose, value);} - inline void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix3fv(location, count, transpose, value);} - inline void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix4fv(location, count, transpose, value);} - inline void UseProgram(GLuint program){_detail::UseProgram(program);} - inline void ValidateProgram(GLuint program){_detail::ValidateProgram(program);} - inline void VertexAttrib1d(GLuint index, GLdouble x){_detail::VertexAttrib1d(index, x);} - inline void VertexAttrib1dv(GLuint index, const GLdouble * v){_detail::VertexAttrib1dv(index, v);} - inline void VertexAttrib1f(GLuint index, GLfloat x){_detail::VertexAttrib1f(index, x);} - inline void VertexAttrib1fv(GLuint index, const GLfloat * v){_detail::VertexAttrib1fv(index, v);} - inline void VertexAttrib1s(GLuint index, GLshort x){_detail::VertexAttrib1s(index, x);} - inline void VertexAttrib1sv(GLuint index, const GLshort * v){_detail::VertexAttrib1sv(index, v);} - inline void VertexAttrib2d(GLuint index, GLdouble x, GLdouble y){_detail::VertexAttrib2d(index, x, y);} - inline void VertexAttrib2dv(GLuint index, const GLdouble * v){_detail::VertexAttrib2dv(index, v);} - inline void VertexAttrib2f(GLuint index, GLfloat x, GLfloat y){_detail::VertexAttrib2f(index, x, y);} - inline void VertexAttrib2fv(GLuint index, const GLfloat * v){_detail::VertexAttrib2fv(index, v);} - inline void VertexAttrib2s(GLuint index, GLshort x, GLshort y){_detail::VertexAttrib2s(index, x, y);} - inline void VertexAttrib2sv(GLuint index, const GLshort * v){_detail::VertexAttrib2sv(index, v);} - inline void VertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z){_detail::VertexAttrib3d(index, x, y, z);} - inline void VertexAttrib3dv(GLuint index, const GLdouble * v){_detail::VertexAttrib3dv(index, v);} - inline void VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z){_detail::VertexAttrib3f(index, x, y, z);} - inline void VertexAttrib3fv(GLuint index, const GLfloat * v){_detail::VertexAttrib3fv(index, v);} - inline void VertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z){_detail::VertexAttrib3s(index, x, y, z);} - inline void VertexAttrib3sv(GLuint index, const GLshort * v){_detail::VertexAttrib3sv(index, v);} - inline void VertexAttrib4Nbv(GLuint index, const GLbyte * v){_detail::VertexAttrib4Nbv(index, v);} - inline void VertexAttrib4Niv(GLuint index, const GLint * v){_detail::VertexAttrib4Niv(index, v);} - inline void VertexAttrib4Nsv(GLuint index, const GLshort * v){_detail::VertexAttrib4Nsv(index, v);} - inline void VertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w){_detail::VertexAttrib4Nub(index, x, y, z, w);} - inline void VertexAttrib4Nubv(GLuint index, const GLubyte * v){_detail::VertexAttrib4Nubv(index, v);} - inline void VertexAttrib4Nuiv(GLuint index, const GLuint * v){_detail::VertexAttrib4Nuiv(index, v);} - inline void VertexAttrib4Nusv(GLuint index, const GLushort * v){_detail::VertexAttrib4Nusv(index, v);} - inline void VertexAttrib4bv(GLuint index, const GLbyte * v){_detail::VertexAttrib4bv(index, v);} - inline void VertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w){_detail::VertexAttrib4d(index, x, y, z, w);} - inline void VertexAttrib4dv(GLuint index, const GLdouble * v){_detail::VertexAttrib4dv(index, v);} - inline void VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w){_detail::VertexAttrib4f(index, x, y, z, w);} - inline void VertexAttrib4fv(GLuint index, const GLfloat * v){_detail::VertexAttrib4fv(index, v);} - inline void VertexAttrib4iv(GLuint index, const GLint * v){_detail::VertexAttrib4iv(index, v);} - inline void VertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w){_detail::VertexAttrib4s(index, x, y, z, w);} - inline void VertexAttrib4sv(GLuint index, const GLshort * v){_detail::VertexAttrib4sv(index, v);} - inline void VertexAttrib4ubv(GLuint index, const GLubyte * v){_detail::VertexAttrib4ubv(index, v);} - inline void VertexAttrib4uiv(GLuint index, const GLuint * v){_detail::VertexAttrib4uiv(index, v);} - inline void VertexAttrib4usv(GLuint index, const GLushort * v){_detail::VertexAttrib4usv(index, v);} - inline void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer){_detail::VertexAttribPointer(index, size, type, normalized, stride, pointer);} - - inline void UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix2x3fv(location, count, transpose, value);} - inline void UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix2x4fv(location, count, transpose, value);} - inline void UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix3x2fv(location, count, transpose, value);} - inline void UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix3x4fv(location, count, transpose, value);} - inline void UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix4x2fv(location, count, transpose, value);} - inline void UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value){_detail::UniformMatrix4x3fv(location, count, transpose, value);} - - inline void BeginConditionalRender(GLuint id, GLenum mode){_detail::BeginConditionalRender(id, mode);} - inline void BeginTransformFeedback(GLenum primitiveMode){_detail::BeginTransformFeedback(primitiveMode);} - inline void BindBufferBase(GLenum target, GLuint index, GLuint buffer){_detail::BindBufferBase(target, index, buffer);} - inline void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size){_detail::BindBufferRange(target, index, buffer, offset, size);} - inline void BindFragDataLocation(GLuint program, GLuint color, const GLchar * name){_detail::BindFragDataLocation(program, color, name);} - inline void BindFramebuffer(GLenum target, GLuint framebuffer){_detail::BindFramebuffer(target, framebuffer);} - inline void BindRenderbuffer(GLenum target, GLuint renderbuffer){_detail::BindRenderbuffer(target, renderbuffer);} - inline void BindVertexArray(GLuint ren_array){_detail::BindVertexArray(ren_array);} - inline void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter){_detail::BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);} - inline GLenum CheckFramebufferStatus(GLenum target){return _detail::CheckFramebufferStatus(target);} - inline void ClampColor(GLenum target, GLenum clamp){_detail::ClampColor(target, clamp);} - inline void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil){_detail::ClearBufferfi(buffer, drawbuffer, depth, stencil);} - inline void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value){_detail::ClearBufferfv(buffer, drawbuffer, value);} - inline void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value){_detail::ClearBufferiv(buffer, drawbuffer, value);} - inline void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value){_detail::ClearBufferuiv(buffer, drawbuffer, value);} - inline void ColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a){_detail::ColorMaski(index, r, g, b, a);} - inline void DeleteFramebuffers(GLsizei n, const GLuint * framebuffers){_detail::DeleteFramebuffers(n, framebuffers);} - inline void DeleteRenderbuffers(GLsizei n, const GLuint * renderbuffers){_detail::DeleteRenderbuffers(n, renderbuffers);} - inline void DeleteVertexArrays(GLsizei n, const GLuint * arrays){_detail::DeleteVertexArrays(n, arrays);} - inline void Disablei(GLenum target, GLuint index){_detail::Disablei(target, index);} - inline void Enablei(GLenum target, GLuint index){_detail::Enablei(target, index);} - inline void EndConditionalRender(void){_detail::EndConditionalRender();} - inline void EndTransformFeedback(void){_detail::EndTransformFeedback();} - inline void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length){_detail::FlushMappedBufferRange(target, offset, length);} - inline void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer){_detail::FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);} - inline void FramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){_detail::FramebufferTexture1D(target, attachment, textarget, texture, level);} - inline void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){_detail::FramebufferTexture2D(target, attachment, textarget, texture, level);} - inline void FramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset){_detail::FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset);} - inline void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer){_detail::FramebufferTextureLayer(target, attachment, texture, level, layer);} - inline void GenFramebuffers(GLsizei n, GLuint * framebuffers){_detail::GenFramebuffers(n, framebuffers);} - inline void GenRenderbuffers(GLsizei n, GLuint * renderbuffers){_detail::GenRenderbuffers(n, renderbuffers);} - inline void GenVertexArrays(GLsizei n, GLuint * arrays){_detail::GenVertexArrays(n, arrays);} - inline void GenerateMipmap(GLenum target){_detail::GenerateMipmap(target);} - inline void GetBooleani_v(GLenum target, GLuint index, GLboolean * data){_detail::GetBooleani_v(target, index, data);} - inline GLint GetFragDataLocation(GLuint program, const GLchar * name){return _detail::GetFragDataLocation(program, name);} - inline void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint * params){_detail::GetFramebufferAttachmentParameteriv(target, attachment, pname, params);} - inline void GetIntegeri_v(GLenum target, GLuint index, GLint * data){_detail::GetIntegeri_v(target, index, data);} - inline void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint * params){_detail::GetRenderbufferParameteriv(target, pname, params);} - inline const GLubyte * GetStringi(GLenum name, GLuint index){return _detail::GetStringi(name, index);} - inline void GetTexParameterIiv(GLenum target, GLenum pname, GLint * params){_detail::GetTexParameterIiv(target, pname, params);} - inline void GetTexParameterIuiv(GLenum target, GLenum pname, GLuint * params){_detail::GetTexParameterIuiv(target, pname, params);} - inline void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name){_detail::GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);} - inline void GetUniformuiv(GLuint program, GLint location, GLuint * params){_detail::GetUniformuiv(program, location, params);} - inline void GetVertexAttribIiv(GLuint index, GLenum pname, GLint * params){_detail::GetVertexAttribIiv(index, pname, params);} - inline void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint * params){_detail::GetVertexAttribIuiv(index, pname, params);} - inline GLboolean IsEnabledi(GLenum target, GLuint index){return _detail::IsEnabledi(target, index);} - inline GLboolean IsFramebuffer(GLuint framebuffer){return _detail::IsFramebuffer(framebuffer);} - inline GLboolean IsRenderbuffer(GLuint renderbuffer){return _detail::IsRenderbuffer(renderbuffer);} - inline GLboolean IsVertexArray(GLuint ren_array){return _detail::IsVertexArray(ren_array);} - inline void * MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access){return _detail::MapBufferRange(target, offset, length, access);} - inline void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){_detail::RenderbufferStorage(target, internalformat, width, height);} - inline void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height){_detail::RenderbufferStorageMultisample(target, samples, internalformat, width, height);} - inline void TexParameterIiv(GLenum target, GLenum pname, const GLint * params){_detail::TexParameterIiv(target, pname, params);} - inline void TexParameterIuiv(GLenum target, GLenum pname, const GLuint * params){_detail::TexParameterIuiv(target, pname, params);} - inline void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode){_detail::TransformFeedbackVaryings(program, count, varyings, bufferMode);} - inline void Uniform1ui(GLint location, GLuint v0){_detail::Uniform1ui(location, v0);} - inline void Uniform1uiv(GLint location, GLsizei count, const GLuint * value){_detail::Uniform1uiv(location, count, value);} - inline void Uniform2ui(GLint location, GLuint v0, GLuint v1){_detail::Uniform2ui(location, v0, v1);} - inline void Uniform2uiv(GLint location, GLsizei count, const GLuint * value){_detail::Uniform2uiv(location, count, value);} - inline void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2){_detail::Uniform3ui(location, v0, v1, v2);} - inline void Uniform3uiv(GLint location, GLsizei count, const GLuint * value){_detail::Uniform3uiv(location, count, value);} - inline void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3){_detail::Uniform4ui(location, v0, v1, v2, v3);} - inline void Uniform4uiv(GLint location, GLsizei count, const GLuint * value){_detail::Uniform4uiv(location, count, value);} - inline void VertexAttribI1i(GLuint index, GLint x){_detail::VertexAttribI1i(index, x);} - inline void VertexAttribI1iv(GLuint index, const GLint * v){_detail::VertexAttribI1iv(index, v);} - inline void VertexAttribI1ui(GLuint index, GLuint x){_detail::VertexAttribI1ui(index, x);} - inline void VertexAttribI1uiv(GLuint index, const GLuint * v){_detail::VertexAttribI1uiv(index, v);} - inline void VertexAttribI2i(GLuint index, GLint x, GLint y){_detail::VertexAttribI2i(index, x, y);} - inline void VertexAttribI2iv(GLuint index, const GLint * v){_detail::VertexAttribI2iv(index, v);} - inline void VertexAttribI2ui(GLuint index, GLuint x, GLuint y){_detail::VertexAttribI2ui(index, x, y);} - inline void VertexAttribI2uiv(GLuint index, const GLuint * v){_detail::VertexAttribI2uiv(index, v);} - inline void VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z){_detail::VertexAttribI3i(index, x, y, z);} - inline void VertexAttribI3iv(GLuint index, const GLint * v){_detail::VertexAttribI3iv(index, v);} - inline void VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z){_detail::VertexAttribI3ui(index, x, y, z);} - inline void VertexAttribI3uiv(GLuint index, const GLuint * v){_detail::VertexAttribI3uiv(index, v);} - inline void VertexAttribI4bv(GLuint index, const GLbyte * v){_detail::VertexAttribI4bv(index, v);} - inline void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w){_detail::VertexAttribI4i(index, x, y, z, w);} - inline void VertexAttribI4iv(GLuint index, const GLint * v){_detail::VertexAttribI4iv(index, v);} - inline void VertexAttribI4sv(GLuint index, const GLshort * v){_detail::VertexAttribI4sv(index, v);} - inline void VertexAttribI4ubv(GLuint index, const GLubyte * v){_detail::VertexAttribI4ubv(index, v);} - inline void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w){_detail::VertexAttribI4ui(index, x, y, z, w);} - inline void VertexAttribI4uiv(GLuint index, const GLuint * v){_detail::VertexAttribI4uiv(index, v);} - inline void VertexAttribI4usv(GLuint index, const GLushort * v){_detail::VertexAttribI4usv(index, v);} - inline void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer){_detail::VertexAttribIPointer(index, size, type, stride, pointer);} - - inline void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size){_detail::CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);} - inline void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount){_detail::DrawArraysInstanced(mode, first, count, instancecount);} - inline void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount){_detail::DrawElementsInstanced(mode, count, type, indices, instancecount);} - inline void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName){_detail::GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);} - inline void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params){_detail::GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);} - inline void GetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName){_detail::GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName);} - inline void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params){_detail::GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);} - inline GLuint GetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName){return _detail::GetUniformBlockIndex(program, uniformBlockName);} - inline void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices){_detail::GetUniformIndices(program, uniformCount, uniformNames, uniformIndices);} - inline void PrimitiveRestartIndex(GLuint index){_detail::PrimitiveRestartIndex(index);} - inline void TexBuffer(GLenum target, GLenum internalformat, GLuint buffer){_detail::TexBuffer(target, internalformat, buffer);} - inline void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding){_detail::UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);} - - inline GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout){return _detail::ClientWaitSync(sync, flags, timeout);} - inline void DeleteSync(GLsync sync){_detail::DeleteSync(sync);} - inline void DrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex){_detail::DrawElementsBaseVertex(mode, count, type, indices, basevertex);} - inline void DrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex){_detail::DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);} - inline void DrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex){_detail::DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);} - inline GLsync FenceSync(GLenum condition, GLbitfield flags){return _detail::FenceSync(condition, flags);} - inline void FramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level){_detail::FramebufferTexture(target, attachment, texture, level);} - inline void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 * params){_detail::GetBufferParameteri64v(target, pname, params);} - inline void GetInteger64i_v(GLenum target, GLuint index, GLint64 * data){_detail::GetInteger64i_v(target, index, data);} - inline void GetInteger64v(GLenum pname, GLint64 * data){_detail::GetInteger64v(pname, data);} - inline void GetMultisamplefv(GLenum pname, GLuint index, GLfloat * val){_detail::GetMultisamplefv(pname, index, val);} - inline void GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values){_detail::GetSynciv(sync, pname, bufSize, length, values);} - inline GLboolean IsSync(GLsync sync){return _detail::IsSync(sync);} - inline void MultiDrawElementsBaseVertex(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex){_detail::MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex);} - inline void ProvokingVertex(GLenum mode){_detail::ProvokingVertex(mode);} - inline void SampleMaski(GLuint maskNumber, GLbitfield mask){_detail::SampleMaski(maskNumber, mask);} - inline void TexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations){_detail::TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);} - inline void TexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations){_detail::TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);} - inline void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout){_detail::WaitSync(sync, flags, timeout);} - - inline void BindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name){_detail::BindFragDataLocationIndexed(program, colorNumber, index, name);} - inline void BindSampler(GLuint unit, GLuint sampler){_detail::BindSampler(unit, sampler);} - inline void DeleteSamplers(GLsizei count, const GLuint * samplers){_detail::DeleteSamplers(count, samplers);} - inline void GenSamplers(GLsizei count, GLuint * samplers){_detail::GenSamplers(count, samplers);} - inline GLint GetFragDataIndex(GLuint program, const GLchar * name){return _detail::GetFragDataIndex(program, name);} - inline void GetQueryObjecti64v(GLuint id, GLenum pname, GLint64 * params){_detail::GetQueryObjecti64v(id, pname, params);} - inline void GetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 * params){_detail::GetQueryObjectui64v(id, pname, params);} - inline void GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint * params){_detail::GetSamplerParameterIiv(sampler, pname, params);} - inline void GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint * params){_detail::GetSamplerParameterIuiv(sampler, pname, params);} - inline void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat * params){_detail::GetSamplerParameterfv(sampler, pname, params);} - inline void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint * params){_detail::GetSamplerParameteriv(sampler, pname, params);} - inline GLboolean IsSampler(GLuint sampler){return _detail::IsSampler(sampler);} - inline void QueryCounter(GLuint id, GLenum target){_detail::QueryCounter(id, target);} - inline void SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint * param){_detail::SamplerParameterIiv(sampler, pname, param);} - inline void SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint * param){_detail::SamplerParameterIuiv(sampler, pname, param);} - inline void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param){_detail::SamplerParameterf(sampler, pname, param);} - inline void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param){_detail::SamplerParameterfv(sampler, pname, param);} - inline void SamplerParameteri(GLuint sampler, GLenum pname, GLint param){_detail::SamplerParameteri(sampler, pname, param);} - inline void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param){_detail::SamplerParameteriv(sampler, pname, param);} - inline void VertexAttribDivisor(GLuint index, GLuint divisor){_detail::VertexAttribDivisor(index, divisor);} - inline void VertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){_detail::VertexAttribP1ui(index, type, normalized, value);} - inline void VertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value){_detail::VertexAttribP1uiv(index, type, normalized, value);} - inline void VertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){_detail::VertexAttribP2ui(index, type, normalized, value);} - inline void VertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value){_detail::VertexAttribP2uiv(index, type, normalized, value);} - inline void VertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){_detail::VertexAttribP3ui(index, type, normalized, value);} - inline void VertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value){_detail::VertexAttribP3uiv(index, type, normalized, value);} - inline void VertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){_detail::VertexAttribP4ui(index, type, normalized, value);} - inline void VertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value){_detail::VertexAttribP4uiv(index, type, normalized, value);} - - + + // OpenGL 1.0 + + extern void (*glCullFace)(GLenum mode); + extern void (*glFrontFace)(GLenum mode); + extern void (*glHint)(GLenum target, GLenum mode); + extern void (*glLineWidth)(GLfloat width); + extern void (*glPointSize)(GLfloat size); + extern void (*glPolygonMode)(GLenum face, GLenum mode); + extern void (*glScissor)(GLint x, GLint y, GLsizei width, GLsizei height); + extern void (*glTexParameterf)(GLenum target, GLenum pname, GLfloat param); + extern void (*glTexParameterfv)(GLenum target, GLenum pname, const GLfloat *params); + extern void (*glTexParameteri)(GLenum target, GLenum pname, GLint param); + extern void (*glTexParameteriv)(GLenum target, GLenum pname, const GLint *params); + extern void (*glTexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); + extern void (*glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); + extern void (*glDrawBuffer)(GLenum buf); + extern void (*glClear)(GLbitfield mask); + extern void (*glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + extern void (*glClearStencil)(GLint s); + extern void (*glClearDepth)(GLdouble depth); + extern void (*glStencilMask)(GLuint mask); + extern void (*glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + extern void (*glDepthMask)(GLboolean flag); + extern void (*glDisable)(GLenum cap); + extern void (*glEnable)(GLenum cap); + extern void (*glFinish)(); + extern void (*glFlush)(); + extern void (*glBlendFunc)(GLenum sfactor, GLenum dfactor); + extern void (*glLogicOp)(GLenum opcode); + extern void (*glStencilFunc)(GLenum func, GLint ref, GLuint mask); + extern void (*glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass); + extern void (*glDepthFunc)(GLenum func); + extern void (*glPixelStoref)(GLenum pname, GLfloat param); + extern void (*glPixelStorei)(GLenum pname, GLint param); + extern void (*glReadBuffer)(GLenum src); + extern void (*glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); + extern void (*glGetBooleanv)(GLenum pname, GLboolean *data); + extern void (*glGetDoublev)(GLenum pname, GLdouble *data); + extern GLenum (*glGetError)(); + extern void (*glGetFloatv)(GLenum pname, GLfloat *data); + extern void (*glGetIntegerv)(GLenum pname, GLint *data); + extern const GLubyte *(*glGetString)(GLenum name); + extern void (*glGetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); + extern void (*glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params); + extern void (*glGetTexParameteriv)(GLenum target, GLenum pname, GLint *params); + extern void (*glGetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params); + extern void (*glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params); + extern GLboolean (*glIsEnabled)(GLenum cap); + extern void (*glDepthRange)(GLdouble n, GLdouble f); + extern void (*glViewport)(GLint x, GLint y, GLsizei width, GLsizei height); + + // OpenGL 1.1 + + extern void (*glDrawArrays)(GLenum mode, GLint first, GLsizei count); + extern void (*glDrawElements)(GLenum mode, GLsizei count, GLenum type, const void *indices); + extern void (*glPolygonOffset)(GLfloat factor, GLfloat units); + extern void (*glCopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + extern void (*glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + extern void (*glCopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + extern void (*glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + extern void (*glTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); + extern void (*glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); + extern void (*glBindTexture)(GLenum target, GLuint texture); + extern void (*glDeleteTextures)(GLsizei n, const GLuint *textures); + extern void (*glGenTextures)(GLsizei n, GLuint *textures); + extern GLboolean (*glIsTexture)(GLuint texture); + + // OpenGL 1.2 + + extern void (*glDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); + extern void (*glTexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); + extern void (*glTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); + extern void (*glCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + + // OpenGL 1.3 + + extern void (*glActiveTexture)(GLenum texture); + extern void (*glSampleCoverage)(GLfloat value, GLboolean invert); + extern void (*glCompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); + extern void (*glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); + extern void (*glCompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); + extern void (*glCompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); + extern void (*glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); + extern void (*glCompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); + extern void (*glGetCompressedTexImage)(GLenum target, GLint level, void *img); + + // OpenGL 1.4 + + extern void (*glBlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + extern void (*glMultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + extern void (*glMultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); + extern void (*glPointParameterf)(GLenum pname, GLfloat param); + extern void (*glPointParameterfv)(GLenum pname, const GLfloat *params); + extern void (*glPointParameteri)(GLenum pname, GLint param); + extern void (*glPointParameteriv)(GLenum pname, const GLint *params); + extern void (*glBlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + extern void (*glBlendEquation)(GLenum mode); + + // OpenGL 1.5 + + extern void (*glGenQueries)(GLsizei n, GLuint *ids); + extern void (*glDeleteQueries)(GLsizei n, const GLuint *ids); + extern GLboolean (*glIsQuery)(GLuint id); + extern void (*glBeginQuery)(GLenum target, GLuint id); + extern void (*glEndQuery)(GLenum target); + extern void (*glGetQueryiv)(GLenum target, GLenum pname, GLint *params); + extern void (*glGetQueryObjectiv)(GLuint id, GLenum pname, GLint *params); + extern void (*glGetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params); + extern void (*glBindBuffer)(GLenum target, GLuint buffer); + extern void (*glDeleteBuffers)(GLsizei n, const GLuint *buffers); + extern void (*glGenBuffers)(GLsizei n, GLuint *buffers); + extern GLboolean (*glIsBuffer)(GLuint buffer); + extern void (*glBufferData)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); + extern void (*glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); + extern void (*glGetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); + extern void *(*glMapBuffer)(GLenum target, GLenum access); + extern GLboolean (*glUnmapBuffer)(GLenum target); + extern void (*glGetBufferParameteriv)(GLenum target, GLenum pname, GLint *params); + extern void (*glGetBufferPointerv)(GLenum target, GLenum pname, void **params); + + // OpenGL 2.0 + + extern void (*glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); + extern void (*glDrawBuffers)(GLsizei n, const GLenum *bufs); + extern void (*glStencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + extern void (*glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); + extern void (*glStencilMaskSeparate)(GLenum face, GLuint mask); + extern void (*glAttachShader)(GLuint program, GLuint shader); + extern void (*glBindAttribLocation)(GLuint program, GLuint index, const GLchar *name); + extern void (*glCompileShader)(GLuint shader); + extern GLuint (*glCreateProgram)(); + extern GLuint (*glCreateShader)(GLenum type); + extern void (*glDeleteProgram)(GLuint program); + extern void (*glDeleteShader)(GLuint shader); + extern void (*glDetachShader)(GLuint program, GLuint shader); + extern void (*glDisableVertexAttribArray)(GLuint index); + extern void (*glEnableVertexAttribArray)(GLuint index); + extern void (*glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + extern void (*glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + extern void (*glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); + extern GLint (*glGetAttribLocation)(GLuint program, const GLchar *name); + extern void (*glGetProgramiv)(GLuint program, GLenum pname, GLint *params); + extern void (*glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + extern void (*glGetShaderiv)(GLuint shader, GLenum pname, GLint *params); + extern void (*glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + extern void (*glGetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + extern GLint (*glGetUniformLocation)(GLuint program, const GLchar *name); + extern void (*glGetUniformfv)(GLuint program, GLint location, GLfloat *params); + extern void (*glGetUniformiv)(GLuint program, GLint location, GLint *params); + extern void (*glGetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params); + extern void (*glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params); + extern void (*glGetVertexAttribiv)(GLuint index, GLenum pname, GLint *params); + extern void (*glGetVertexAttribPointerv)(GLuint index, GLenum pname, void **pointer); + extern GLboolean (*glIsProgram)(GLuint program); + extern GLboolean (*glIsShader)(GLuint shader); + extern void (*glLinkProgram)(GLuint program); + extern void (*glShaderSource)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); + extern void (*glUseProgram)(GLuint program); + extern void (*glUniform1f)(GLint location, GLfloat v0); + extern void (*glUniform2f)(GLint location, GLfloat v0, GLfloat v1); + extern void (*glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + extern void (*glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + extern void (*glUniform1i)(GLint location, GLint v0); + extern void (*glUniform2i)(GLint location, GLint v0, GLint v1); + extern void (*glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2); + extern void (*glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + extern void (*glUniform1fv)(GLint location, GLsizei count, const GLfloat *value); + extern void (*glUniform2fv)(GLint location, GLsizei count, const GLfloat *value); + extern void (*glUniform3fv)(GLint location, GLsizei count, const GLfloat *value); + extern void (*glUniform4fv)(GLint location, GLsizei count, const GLfloat *value); + extern void (*glUniform1iv)(GLint location, GLsizei count, const GLint *value); + extern void (*glUniform2iv)(GLint location, GLsizei count, const GLint *value); + extern void (*glUniform3iv)(GLint location, GLsizei count, const GLint *value); + extern void (*glUniform4iv)(GLint location, GLsizei count, const GLint *value); + extern void (*glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glValidateProgram)(GLuint program); + extern void (*glVertexAttrib1d)(GLuint index, GLdouble x); + extern void (*glVertexAttrib1dv)(GLuint index, const GLdouble *v); + extern void (*glVertexAttrib1f)(GLuint index, GLfloat x); + extern void (*glVertexAttrib1fv)(GLuint index, const GLfloat *v); + extern void (*glVertexAttrib1s)(GLuint index, GLshort x); + extern void (*glVertexAttrib1sv)(GLuint index, const GLshort *v); + extern void (*glVertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); + extern void (*glVertexAttrib2dv)(GLuint index, const GLdouble *v); + extern void (*glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y); + extern void (*glVertexAttrib2fv)(GLuint index, const GLfloat *v); + extern void (*glVertexAttrib2s)(GLuint index, GLshort x, GLshort y); + extern void (*glVertexAttrib2sv)(GLuint index, const GLshort *v); + extern void (*glVertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + extern void (*glVertexAttrib3dv)(GLuint index, const GLdouble *v); + extern void (*glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + extern void (*glVertexAttrib3fv)(GLuint index, const GLfloat *v); + extern void (*glVertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z); + extern void (*glVertexAttrib3sv)(GLuint index, const GLshort *v); + extern void (*glVertexAttrib4Nbv)(GLuint index, const GLbyte *v); + extern void (*glVertexAttrib4Niv)(GLuint index, const GLint *v); + extern void (*glVertexAttrib4Nsv)(GLuint index, const GLshort *v); + extern void (*glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + extern void (*glVertexAttrib4Nubv)(GLuint index, const GLubyte *v); + extern void (*glVertexAttrib4Nuiv)(GLuint index, const GLuint *v); + extern void (*glVertexAttrib4Nusv)(GLuint index, const GLushort *v); + extern void (*glVertexAttrib4bv)(GLuint index, const GLbyte *v); + extern void (*glVertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + extern void (*glVertexAttrib4dv)(GLuint index, const GLdouble *v); + extern void (*glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + extern void (*glVertexAttrib4fv)(GLuint index, const GLfloat *v); + extern void (*glVertexAttrib4iv)(GLuint index, const GLint *v); + extern void (*glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + extern void (*glVertexAttrib4sv)(GLuint index, const GLshort *v); + extern void (*glVertexAttrib4ubv)(GLuint index, const GLubyte *v); + extern void (*glVertexAttrib4uiv)(GLuint index, const GLuint *v); + extern void (*glVertexAttrib4usv)(GLuint index, const GLushort *v); + extern void (*glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); + + // OpenGL 2.1 + + extern void (*glUniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + extern void (*glUniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 + + extern void (*glColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + extern void (*glGetBooleani_v)(GLenum target, GLuint index, GLboolean *data); + extern void (*glGetIntegeri_v)(GLenum target, GLuint index, GLint *data); + extern void (*glEnablei)(GLenum target, GLuint index); + extern void (*glDisablei)(GLenum target, GLuint index); + extern GLboolean (*glIsEnabledi)(GLenum target, GLuint index); + extern void (*glBeginTransformFeedback)(GLenum primitiveMode); + extern void (*glEndTransformFeedback)(); + extern void (*glBindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + extern void (*glBindBufferBase)(GLenum target, GLuint index, GLuint buffer); + extern void (*glTransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); + extern void (*glGetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + extern void (*glClampColor)(GLenum target, GLenum clamp); + extern void (*glBeginConditionalRender)(GLuint id, GLenum mode); + extern void (*glEndConditionalRender)(); + extern void (*glVertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); + extern void (*glGetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params); + extern void (*glGetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params); + extern void (*glVertexAttribI1i)(GLuint index, GLint x); + extern void (*glVertexAttribI2i)(GLuint index, GLint x, GLint y); + extern void (*glVertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z); + extern void (*glVertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); + extern void (*glVertexAttribI1ui)(GLuint index, GLuint x); + extern void (*glVertexAttribI2ui)(GLuint index, GLuint x, GLuint y); + extern void (*glVertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z); + extern void (*glVertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + extern void (*glVertexAttribI1iv)(GLuint index, const GLint *v); + extern void (*glVertexAttribI2iv)(GLuint index, const GLint *v); + extern void (*glVertexAttribI3iv)(GLuint index, const GLint *v); + extern void (*glVertexAttribI4iv)(GLuint index, const GLint *v); + extern void (*glVertexAttribI1uiv)(GLuint index, const GLuint *v); + extern void (*glVertexAttribI2uiv)(GLuint index, const GLuint *v); + extern void (*glVertexAttribI3uiv)(GLuint index, const GLuint *v); + extern void (*glVertexAttribI4uiv)(GLuint index, const GLuint *v); + extern void (*glVertexAttribI4bv)(GLuint index, const GLbyte *v); + extern void (*glVertexAttribI4sv)(GLuint index, const GLshort *v); + extern void (*glVertexAttribI4ubv)(GLuint index, const GLubyte *v); + extern void (*glVertexAttribI4usv)(GLuint index, const GLushort *v); + extern void (*glGetUniformuiv)(GLuint program, GLint location, GLuint *params); + extern void (*glBindFragDataLocation)(GLuint program, GLuint color, const GLchar *name); + extern GLint (*glGetFragDataLocation)(GLuint program, const GLchar *name); + extern void (*glUniform1ui)(GLint location, GLuint v0); + extern void (*glUniform2ui)(GLint location, GLuint v0, GLuint v1); + extern void (*glUniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); + extern void (*glUniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + extern void (*glUniform1uiv)(GLint location, GLsizei count, const GLuint *value); + extern void (*glUniform2uiv)(GLint location, GLsizei count, const GLuint *value); + extern void (*glUniform3uiv)(GLint location, GLsizei count, const GLuint *value); + extern void (*glUniform4uiv)(GLint location, GLsizei count, const GLuint *value); + extern void (*glTexParameterIiv)(GLenum target, GLenum pname, const GLint *params); + extern void (*glTexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params); + extern void (*glGetTexParameterIiv)(GLenum target, GLenum pname, GLint *params); + extern void (*glGetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params); + extern void (*glClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value); + extern void (*glClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value); + extern void (*glClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value); + extern void (*glClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + extern const GLubyte *(*glGetStringi)(GLenum name, GLuint index); + extern GLboolean (*glIsRenderbuffer)(GLuint renderbuffer); + extern void (*glBindRenderbuffer)(GLenum target, GLuint renderbuffer); + extern void (*glDeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers); + extern void (*glGenRenderbuffers)(GLsizei n, GLuint *renderbuffers); + extern void (*glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + extern void (*glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params); + extern GLboolean (*glIsFramebuffer)(GLuint framebuffer); + extern void (*glBindFramebuffer)(GLenum target, GLuint framebuffer); + extern void (*glDeleteFramebuffers)(GLsizei n, const GLuint *framebuffers); + extern void (*glGenFramebuffers)(GLsizei n, GLuint *framebuffers); + extern GLenum (*glCheckFramebufferStatus)(GLenum target); + extern void (*glFramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + extern void (*glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + extern void (*glFramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + extern void (*glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + extern void (*glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params); + extern void (*glGenerateMipmap)(GLenum target); + extern void (*glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + extern void (*glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + extern void (*glFramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + extern void *(*glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + extern void (*glFlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); + extern void (*glBindVertexArray)(GLuint array); + extern void (*glDeleteVertexArrays)(GLsizei n, const GLuint *arrays); + extern void (*glGenVertexArrays)(GLsizei n, GLuint *arrays); + extern GLboolean (*glIsVertexArray)(GLuint array); + + // OpenGL 3.1 + + extern void (*glDrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + extern void (*glDrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); + extern void (*glTexBuffer)(GLenum target, GLenum internalformat, GLuint buffer); + extern void (*glPrimitiveRestartIndex)(GLuint index); + extern void (*glCopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + extern void (*glGetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); + extern void (*glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + extern void (*glGetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + extern GLuint (*glGetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); + extern void (*glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + extern void (*glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + extern void (*glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + + // OpenGL 3.2 + + extern void (*glDrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); + extern void (*glDrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); + extern void (*glDrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); + extern void (*glMultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); + extern void (*glProvokingVertex)(GLenum mode); + extern GLsync (*glFenceSync)(GLenum condition, GLbitfield flags); + extern GLboolean (*glIsSync)(GLsync sync); + extern void (*glDeleteSync)(GLsync sync); + extern GLenum (*glClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); + extern void (*glWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); + extern void (*glGetInteger64v)(GLenum pname, GLint64 *data); + extern void (*glGetSynciv)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); + extern void (*glGetInteger64i_v)(GLenum target, GLuint index, GLint64 *data); + extern void (*glGetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params); + extern void (*glFramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); + extern void (*glTexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + extern void (*glTexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + extern void (*glGetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val); + extern void (*glSampleMaski)(GLuint maskNumber, GLbitfield mask); + + // OpenGL 3.3 + + extern void (*glBindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + extern GLint (*glGetFragDataIndex)(GLuint program, const GLchar *name); + extern void (*glGenSamplers)(GLsizei count, GLuint *samplers); + extern void (*glDeleteSamplers)(GLsizei count, const GLuint *samplers); + extern GLboolean (*glIsSampler)(GLuint sampler); + extern void (*glBindSampler)(GLuint unit, GLuint sampler); + extern void (*glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param); + extern void (*glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param); + extern void (*glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); + extern void (*glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param); + extern void (*glSamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *param); + extern void (*glSamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *param); + extern void (*glGetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params); + extern void (*glGetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params); + extern void (*glGetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params); + extern void (*glGetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params); + extern void (*glQueryCounter)(GLuint id, GLenum target); + extern void (*glGetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); + extern void (*glGetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); + extern void (*glVertexAttribDivisor)(GLuint index, GLuint divisor); + extern void (*glVertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + extern void (*glVertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + extern void (*glVertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + extern void (*glVertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + extern void (*glVertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + extern void (*glVertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + extern void (*glVertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + extern void (*glVertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + + // GL_ARB_texture_filter_anisotropic + + + } // namespace internal + + // OpenGL 1.0 + + constexpr GLenum DEPTH_BUFFER_BIT = 0x00000100; + constexpr GLenum STENCIL_BUFFER_BIT = 0x00000400; + constexpr GLenum COLOR_BUFFER_BIT = 0x00004000; + constexpr GLenum FALSE = 0; + constexpr GLenum TRUE = 1; + constexpr GLenum POINTS = 0x0000; + constexpr GLenum LINES = 0x0001; + constexpr GLenum LINE_LOOP = 0x0002; + constexpr GLenum LINE_STRIP = 0x0003; + constexpr GLenum TRIANGLES = 0x0004; + constexpr GLenum TRIANGLE_STRIP = 0x0005; + constexpr GLenum TRIANGLE_FAN = 0x0006; + constexpr GLenum NEVER = 0x0200; + constexpr GLenum LESS = 0x0201; + constexpr GLenum EQUAL = 0x0202; + constexpr GLenum LEQUAL = 0x0203; + constexpr GLenum GREATER = 0x0204; + constexpr GLenum NOTEQUAL = 0x0205; + constexpr GLenum GEQUAL = 0x0206; + constexpr GLenum ALWAYS = 0x0207; + constexpr GLenum ZERO = 0; + constexpr GLenum ONE = 1; + constexpr GLenum SRC_COLOR = 0x0300; + constexpr GLenum ONE_MINUS_SRC_COLOR = 0x0301; + constexpr GLenum SRC_ALPHA = 0x0302; + constexpr GLenum ONE_MINUS_SRC_ALPHA = 0x0303; + constexpr GLenum DST_ALPHA = 0x0304; + constexpr GLenum ONE_MINUS_DST_ALPHA = 0x0305; + constexpr GLenum DST_COLOR = 0x0306; + constexpr GLenum ONE_MINUS_DST_COLOR = 0x0307; + constexpr GLenum SRC_ALPHA_SATURATE = 0x0308; + constexpr GLenum NONE = 0; + constexpr GLenum FRONT_LEFT = 0x0400; + constexpr GLenum FRONT_RIGHT = 0x0401; + constexpr GLenum BACK_LEFT = 0x0402; + constexpr GLenum BACK_RIGHT = 0x0403; + constexpr GLenum FRONT = 0x0404; + constexpr GLenum BACK = 0x0405; + constexpr GLenum LEFT = 0x0406; + constexpr GLenum RIGHT = 0x0407; + constexpr GLenum FRONT_AND_BACK = 0x0408; + constexpr GLenum NO_ERROR = 0; + constexpr GLenum INVALID_ENUM = 0x0500; + constexpr GLenum INVALID_VALUE = 0x0501; + constexpr GLenum INVALID_OPERATION = 0x0502; + constexpr GLenum OUT_OF_MEMORY = 0x0505; + constexpr GLenum CW = 0x0900; + constexpr GLenum CCW = 0x0901; + constexpr GLenum POINT_SIZE = 0x0B11; + constexpr GLenum POINT_SIZE_RANGE = 0x0B12; + constexpr GLenum POINT_SIZE_GRANULARITY = 0x0B13; + constexpr GLenum LINE_SMOOTH = 0x0B20; + constexpr GLenum LINE_WIDTH = 0x0B21; + constexpr GLenum LINE_WIDTH_RANGE = 0x0B22; + constexpr GLenum LINE_WIDTH_GRANULARITY = 0x0B23; + constexpr GLenum POLYGON_MODE = 0x0B40; + constexpr GLenum POLYGON_SMOOTH = 0x0B41; + constexpr GLenum CULL_FACE = 0x0B44; + constexpr GLenum CULL_FACE_MODE = 0x0B45; + constexpr GLenum FRONT_FACE = 0x0B46; + constexpr GLenum DEPTH_RANGE = 0x0B70; + constexpr GLenum DEPTH_TEST = 0x0B71; + constexpr GLenum DEPTH_WRITEMASK = 0x0B72; + constexpr GLenum DEPTH_CLEAR_VALUE = 0x0B73; + constexpr GLenum DEPTH_FUNC = 0x0B74; + constexpr GLenum STENCIL_TEST = 0x0B90; + constexpr GLenum STENCIL_CLEAR_VALUE = 0x0B91; + constexpr GLenum STENCIL_FUNC = 0x0B92; + constexpr GLenum STENCIL_VALUE_MASK = 0x0B93; + constexpr GLenum STENCIL_FAIL = 0x0B94; + constexpr GLenum STENCIL_PASS_DEPTH_FAIL = 0x0B95; + constexpr GLenum STENCIL_PASS_DEPTH_PASS = 0x0B96; + constexpr GLenum STENCIL_REF = 0x0B97; + constexpr GLenum STENCIL_WRITEMASK = 0x0B98; + constexpr GLenum VIEWPORT = 0x0BA2; + constexpr GLenum DITHER = 0x0BD0; + constexpr GLenum BLEND_DST = 0x0BE0; + constexpr GLenum BLEND_SRC = 0x0BE1; + constexpr GLenum BLEND = 0x0BE2; + constexpr GLenum LOGIC_OP_MODE = 0x0BF0; + constexpr GLenum DRAW_BUFFER = 0x0C01; + constexpr GLenum READ_BUFFER = 0x0C02; + constexpr GLenum SCISSOR_BOX = 0x0C10; + constexpr GLenum SCISSOR_TEST = 0x0C11; + constexpr GLenum COLOR_CLEAR_VALUE = 0x0C22; + constexpr GLenum COLOR_WRITEMASK = 0x0C23; + constexpr GLenum DOUBLEBUFFER = 0x0C32; + constexpr GLenum STEREO = 0x0C33; + constexpr GLenum LINE_SMOOTH_HINT = 0x0C52; + constexpr GLenum POLYGON_SMOOTH_HINT = 0x0C53; + constexpr GLenum UNPACK_SWAP_BYTES = 0x0CF0; + constexpr GLenum UNPACK_LSB_FIRST = 0x0CF1; + constexpr GLenum UNPACK_ROW_LENGTH = 0x0CF2; + constexpr GLenum UNPACK_SKIP_ROWS = 0x0CF3; + constexpr GLenum UNPACK_SKIP_PIXELS = 0x0CF4; + constexpr GLenum UNPACK_ALIGNMENT = 0x0CF5; + constexpr GLenum PACK_SWAP_BYTES = 0x0D00; + constexpr GLenum PACK_LSB_FIRST = 0x0D01; + constexpr GLenum PACK_ROW_LENGTH = 0x0D02; + constexpr GLenum PACK_SKIP_ROWS = 0x0D03; + constexpr GLenum PACK_SKIP_PIXELS = 0x0D04; + constexpr GLenum PACK_ALIGNMENT = 0x0D05; + constexpr GLenum MAX_TEXTURE_SIZE = 0x0D33; + constexpr GLenum MAX_VIEWPORT_DIMS = 0x0D3A; + constexpr GLenum SUBPIXEL_BITS = 0x0D50; + constexpr GLenum TEXTURE_1D = 0x0DE0; + constexpr GLenum TEXTURE_2D = 0x0DE1; + constexpr GLenum TEXTURE_WIDTH = 0x1000; + constexpr GLenum TEXTURE_HEIGHT = 0x1001; + constexpr GLenum TEXTURE_BORDER_COLOR = 0x1004; + constexpr GLenum DONT_CARE = 0x1100; + constexpr GLenum FASTEST = 0x1101; + constexpr GLenum NICEST = 0x1102; + constexpr GLenum BYTE = 0x1400; + constexpr GLenum UNSIGNED_BYTE = 0x1401; + constexpr GLenum SHORT = 0x1402; + constexpr GLenum UNSIGNED_SHORT = 0x1403; + constexpr GLenum INT = 0x1404; + constexpr GLenum UNSIGNED_INT = 0x1405; + constexpr GLenum FLOAT = 0x1406; + constexpr GLenum CLEAR = 0x1500; + constexpr GLenum AND = 0x1501; + constexpr GLenum AND_REVERSE = 0x1502; + constexpr GLenum COPY = 0x1503; + constexpr GLenum AND_INVERTED = 0x1504; + constexpr GLenum NOOP = 0x1505; + constexpr GLenum XOR = 0x1506; + constexpr GLenum OR = 0x1507; + constexpr GLenum NOR = 0x1508; + constexpr GLenum EQUIV = 0x1509; + constexpr GLenum INVERT = 0x150A; + constexpr GLenum OR_REVERSE = 0x150B; + constexpr GLenum COPY_INVERTED = 0x150C; + constexpr GLenum OR_INVERTED = 0x150D; + constexpr GLenum NAND = 0x150E; + constexpr GLenum SET = 0x150F; + constexpr GLenum TEXTURE = 0x1702; + constexpr GLenum COLOR = 0x1800; + constexpr GLenum DEPTH = 0x1801; + constexpr GLenum STENCIL = 0x1802; + constexpr GLenum STENCIL_INDEX = 0x1901; + constexpr GLenum DEPTH_COMPONENT = 0x1902; + constexpr GLenum RED = 0x1903; + constexpr GLenum GREEN = 0x1904; + constexpr GLenum BLUE = 0x1905; + constexpr GLenum ALPHA = 0x1906; + constexpr GLenum RGB = 0x1907; + constexpr GLenum RGBA = 0x1908; + constexpr GLenum POINT = 0x1B00; + constexpr GLenum LINE = 0x1B01; + constexpr GLenum FILL = 0x1B02; + constexpr GLenum KEEP = 0x1E00; + constexpr GLenum REPLACE = 0x1E01; + constexpr GLenum INCR = 0x1E02; + constexpr GLenum DECR = 0x1E03; + constexpr GLenum VENDOR = 0x1F00; + constexpr GLenum RENDERER = 0x1F01; + constexpr GLenum VERSION = 0x1F02; + constexpr GLenum EXTENSIONS = 0x1F03; + constexpr GLenum NEAREST = 0x2600; + constexpr GLenum LINEAR = 0x2601; + constexpr GLenum NEAREST_MIPMAP_NEAREST = 0x2700; + constexpr GLenum LINEAR_MIPMAP_NEAREST = 0x2701; + constexpr GLenum NEAREST_MIPMAP_LINEAR = 0x2702; + constexpr GLenum LINEAR_MIPMAP_LINEAR = 0x2703; + constexpr GLenum TEXTURE_MAG_FILTER = 0x2800; + constexpr GLenum TEXTURE_MIN_FILTER = 0x2801; + constexpr GLenum TEXTURE_WRAP_S = 0x2802; + constexpr GLenum TEXTURE_WRAP_T = 0x2803; + constexpr GLenum REPEAT = 0x2901; + + inline void CullFace(GLenum mode){ return internal::glCullFace(mode); } + inline void FrontFace(GLenum mode){ return internal::glFrontFace(mode); } + inline void Hint(GLenum target, GLenum mode){ return internal::glHint(target, mode); } + inline void LineWidth(GLfloat width){ return internal::glLineWidth(width); } + inline void PointSize(GLfloat size){ return internal::glPointSize(size); } + inline void PolygonMode(GLenum face, GLenum mode){ return internal::glPolygonMode(face, mode); } + inline void Scissor(GLint x, GLint y, GLsizei width, GLsizei height){ return internal::glScissor(x, y, width, height); } + inline void TexParameterf(GLenum target, GLenum pname, GLfloat param){ return internal::glTexParameterf(target, pname, param); } + inline void TexParameterfv(GLenum target, GLenum pname, const GLfloat *params){ return internal::glTexParameterfv(target, pname, params); } + inline void TexParameteri(GLenum target, GLenum pname, GLint param){ return internal::glTexParameteri(target, pname, param); } + inline void TexParameteriv(GLenum target, GLenum pname, const GLint *params){ return internal::glTexParameteriv(target, pname, params); } + inline void TexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels){ return internal::glTexImage1D(target, level, internalformat, width, border, format, type, pixels); } + inline void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels){ return internal::glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels); } + inline void DrawBuffer(GLenum buf){ return internal::glDrawBuffer(buf); } + inline void Clear(GLbitfield mask){ return internal::glClear(mask); } + inline void ClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha){ return internal::glClearColor(red, green, blue, alpha); } + inline void ClearStencil(GLint s){ return internal::glClearStencil(s); } + inline void ClearDepth(GLdouble depth){ return internal::glClearDepth(depth); } + inline void StencilMask(GLuint mask){ return internal::glStencilMask(mask); } + inline void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha){ return internal::glColorMask(red, green, blue, alpha); } + inline void DepthMask(GLboolean flag){ return internal::glDepthMask(flag); } + inline void Disable(GLenum cap){ return internal::glDisable(cap); } + inline void Enable(GLenum cap){ return internal::glEnable(cap); } + inline void Finish(){ return internal::glFinish(); } + inline void Flush(){ return internal::glFlush(); } + inline void BlendFunc(GLenum sfactor, GLenum dfactor){ return internal::glBlendFunc(sfactor, dfactor); } + inline void LogicOp(GLenum opcode){ return internal::glLogicOp(opcode); } + inline void StencilFunc(GLenum func, GLint ref, GLuint mask){ return internal::glStencilFunc(func, ref, mask); } + inline void StencilOp(GLenum fail, GLenum zfail, GLenum zpass){ return internal::glStencilOp(fail, zfail, zpass); } + inline void DepthFunc(GLenum func){ return internal::glDepthFunc(func); } + inline void PixelStoref(GLenum pname, GLfloat param){ return internal::glPixelStoref(pname, param); } + inline void PixelStorei(GLenum pname, GLint param){ return internal::glPixelStorei(pname, param); } + inline void ReadBuffer(GLenum src){ return internal::glReadBuffer(src); } + inline void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels){ return internal::glReadPixels(x, y, width, height, format, type, pixels); } + inline void GetBooleanv(GLenum pname, GLboolean *data){ return internal::glGetBooleanv(pname, data); } + inline void GetDoublev(GLenum pname, GLdouble *data){ return internal::glGetDoublev(pname, data); } + inline GLenum GetError(){ return internal::glGetError(); } + inline void GetFloatv(GLenum pname, GLfloat *data){ return internal::glGetFloatv(pname, data); } + inline void GetIntegerv(GLenum pname, GLint *data){ return internal::glGetIntegerv(pname, data); } + inline const GLubyte *GetString(GLenum name){ return internal::glGetString(name); } + inline void GetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels){ return internal::glGetTexImage(target, level, format, type, pixels); } + inline void GetTexParameterfv(GLenum target, GLenum pname, GLfloat *params){ return internal::glGetTexParameterfv(target, pname, params); } + inline void GetTexParameteriv(GLenum target, GLenum pname, GLint *params){ return internal::glGetTexParameteriv(target, pname, params); } + inline void GetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params){ return internal::glGetTexLevelParameterfv(target, level, pname, params); } + inline void GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params){ return internal::glGetTexLevelParameteriv(target, level, pname, params); } + inline GLboolean IsEnabled(GLenum cap){ return internal::glIsEnabled(cap); } + inline void DepthRange(GLdouble n, GLdouble f){ return internal::glDepthRange(n, f); } + inline void Viewport(GLint x, GLint y, GLsizei width, GLsizei height){ return internal::glViewport(x, y, width, height); } + + // OpenGL 1.1 + + constexpr GLenum COLOR_LOGIC_OP = 0x0BF2; + constexpr GLenum POLYGON_OFFSET_UNITS = 0x2A00; + constexpr GLenum POLYGON_OFFSET_POINT = 0x2A01; + constexpr GLenum POLYGON_OFFSET_LINE = 0x2A02; + constexpr GLenum POLYGON_OFFSET_FILL = 0x8037; + constexpr GLenum POLYGON_OFFSET_FACTOR = 0x8038; + constexpr GLenum TEXTURE_BINDING_1D = 0x8068; + constexpr GLenum TEXTURE_BINDING_2D = 0x8069; + constexpr GLenum TEXTURE_INTERNAL_FORMAT = 0x1003; + constexpr GLenum TEXTURE_RED_SIZE = 0x805C; + constexpr GLenum TEXTURE_GREEN_SIZE = 0x805D; + constexpr GLenum TEXTURE_BLUE_SIZE = 0x805E; + constexpr GLenum TEXTURE_ALPHA_SIZE = 0x805F; + constexpr GLenum DOUBLE = 0x140A; + constexpr GLenum PROXY_TEXTURE_1D = 0x8063; + constexpr GLenum PROXY_TEXTURE_2D = 0x8064; + constexpr GLenum R3_G3_B2 = 0x2A10; + constexpr GLenum RGB4 = 0x804F; + constexpr GLenum RGB5 = 0x8050; + constexpr GLenum RGB8 = 0x8051; + constexpr GLenum RGB10 = 0x8052; + constexpr GLenum RGB12 = 0x8053; + constexpr GLenum RGB16 = 0x8054; + constexpr GLenum RGBA2 = 0x8055; + constexpr GLenum RGBA4 = 0x8056; + constexpr GLenum RGB5_A1 = 0x8057; + constexpr GLenum RGBA8 = 0x8058; + constexpr GLenum RGB10_A2 = 0x8059; + constexpr GLenum RGBA12 = 0x805A; + constexpr GLenum RGBA16 = 0x805B; + + inline void DrawArrays(GLenum mode, GLint first, GLsizei count){ return internal::glDrawArrays(mode, first, count); } + inline void DrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices){ return internal::glDrawElements(mode, count, type, indices); } + inline void PolygonOffset(GLfloat factor, GLfloat units){ return internal::glPolygonOffset(factor, units); } + inline void CopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border){ return internal::glCopyTexImage1D(target, level, internalformat, x, y, width, border); } + inline void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border){ return internal::glCopyTexImage2D(target, level, internalformat, x, y, width, height, border); } + inline void CopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width){ return internal::glCopyTexSubImage1D(target, level, xoffset, x, y, width); } + inline void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height){ return internal::glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); } + inline void TexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels){ return internal::glTexSubImage1D(target, level, xoffset, width, format, type, pixels); } + inline void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels){ return internal::glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); } + inline void BindTexture(GLenum target, GLuint texture){ return internal::glBindTexture(target, texture); } + inline void DeleteTextures(GLsizei n, const GLuint *textures){ return internal::glDeleteTextures(n, textures); } + inline void GenTextures(GLsizei n, GLuint *textures){ return internal::glGenTextures(n, textures); } + inline GLboolean IsTexture(GLuint texture){ return internal::glIsTexture(texture); } + + // OpenGL 1.2 + + constexpr GLenum UNSIGNED_BYTE_3_3_2 = 0x8032; + constexpr GLenum UNSIGNED_SHORT_4_4_4_4 = 0x8033; + constexpr GLenum UNSIGNED_SHORT_5_5_5_1 = 0x8034; + constexpr GLenum UNSIGNED_INT_8_8_8_8 = 0x8035; + constexpr GLenum UNSIGNED_INT_10_10_10_2 = 0x8036; + constexpr GLenum TEXTURE_BINDING_3D = 0x806A; + constexpr GLenum PACK_SKIP_IMAGES = 0x806B; + constexpr GLenum PACK_IMAGE_HEIGHT = 0x806C; + constexpr GLenum UNPACK_SKIP_IMAGES = 0x806D; + constexpr GLenum UNPACK_IMAGE_HEIGHT = 0x806E; + constexpr GLenum TEXTURE_3D = 0x806F; + constexpr GLenum PROXY_TEXTURE_3D = 0x8070; + constexpr GLenum TEXTURE_DEPTH = 0x8071; + constexpr GLenum TEXTURE_WRAP_R = 0x8072; + constexpr GLenum MAX_3D_TEXTURE_SIZE = 0x8073; + constexpr GLenum UNSIGNED_BYTE_2_3_3_REV = 0x8362; + constexpr GLenum UNSIGNED_SHORT_5_6_5 = 0x8363; + constexpr GLenum UNSIGNED_SHORT_5_6_5_REV = 0x8364; + constexpr GLenum UNSIGNED_SHORT_4_4_4_4_REV = 0x8365; + constexpr GLenum UNSIGNED_SHORT_1_5_5_5_REV = 0x8366; + constexpr GLenum UNSIGNED_INT_8_8_8_8_REV = 0x8367; + constexpr GLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368; + constexpr GLenum BGR = 0x80E0; + constexpr GLenum BGRA = 0x80E1; + constexpr GLenum MAX_ELEMENTS_VERTICES = 0x80E8; + constexpr GLenum MAX_ELEMENTS_INDICES = 0x80E9; + constexpr GLenum CLAMP_TO_EDGE = 0x812F; + constexpr GLenum TEXTURE_MIN_LOD = 0x813A; + constexpr GLenum TEXTURE_MAX_LOD = 0x813B; + constexpr GLenum TEXTURE_BASE_LEVEL = 0x813C; + constexpr GLenum TEXTURE_MAX_LEVEL = 0x813D; + constexpr GLenum SMOOTH_POINT_SIZE_RANGE = 0x0B12; + constexpr GLenum SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13; + constexpr GLenum SMOOTH_LINE_WIDTH_RANGE = 0x0B22; + constexpr GLenum SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23; + constexpr GLenum ALIASED_LINE_WIDTH_RANGE = 0x846E; + + inline void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices){ return internal::glDrawRangeElements(mode, start, end, count, type, indices); } + inline void TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels){ return internal::glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); } + inline void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels){ return internal::glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } + inline void CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height){ return internal::glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); } + + // OpenGL 1.3 + + constexpr GLenum TEXTURE0 = 0x84C0; + constexpr GLenum TEXTURE1 = 0x84C1; + constexpr GLenum TEXTURE2 = 0x84C2; + constexpr GLenum TEXTURE3 = 0x84C3; + constexpr GLenum TEXTURE4 = 0x84C4; + constexpr GLenum TEXTURE5 = 0x84C5; + constexpr GLenum TEXTURE6 = 0x84C6; + constexpr GLenum TEXTURE7 = 0x84C7; + constexpr GLenum TEXTURE8 = 0x84C8; + constexpr GLenum TEXTURE9 = 0x84C9; + constexpr GLenum TEXTURE10 = 0x84CA; + constexpr GLenum TEXTURE11 = 0x84CB; + constexpr GLenum TEXTURE12 = 0x84CC; + constexpr GLenum TEXTURE13 = 0x84CD; + constexpr GLenum TEXTURE14 = 0x84CE; + constexpr GLenum TEXTURE15 = 0x84CF; + constexpr GLenum TEXTURE16 = 0x84D0; + constexpr GLenum TEXTURE17 = 0x84D1; + constexpr GLenum TEXTURE18 = 0x84D2; + constexpr GLenum TEXTURE19 = 0x84D3; + constexpr GLenum TEXTURE20 = 0x84D4; + constexpr GLenum TEXTURE21 = 0x84D5; + constexpr GLenum TEXTURE22 = 0x84D6; + constexpr GLenum TEXTURE23 = 0x84D7; + constexpr GLenum TEXTURE24 = 0x84D8; + constexpr GLenum TEXTURE25 = 0x84D9; + constexpr GLenum TEXTURE26 = 0x84DA; + constexpr GLenum TEXTURE27 = 0x84DB; + constexpr GLenum TEXTURE28 = 0x84DC; + constexpr GLenum TEXTURE29 = 0x84DD; + constexpr GLenum TEXTURE30 = 0x84DE; + constexpr GLenum TEXTURE31 = 0x84DF; + constexpr GLenum ACTIVE_TEXTURE = 0x84E0; + constexpr GLenum MULTISAMPLE = 0x809D; + constexpr GLenum SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + constexpr GLenum SAMPLE_ALPHA_TO_ONE = 0x809F; + constexpr GLenum SAMPLE_COVERAGE = 0x80A0; + constexpr GLenum SAMPLE_BUFFERS = 0x80A8; + constexpr GLenum SAMPLES = 0x80A9; + constexpr GLenum SAMPLE_COVERAGE_VALUE = 0x80AA; + constexpr GLenum SAMPLE_COVERAGE_INVERT = 0x80AB; + constexpr GLenum TEXTURE_CUBE_MAP = 0x8513; + constexpr GLenum TEXTURE_BINDING_CUBE_MAP = 0x8514; + constexpr GLenum TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + constexpr GLenum TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + constexpr GLenum TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + constexpr GLenum TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + constexpr GLenum TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + constexpr GLenum TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + constexpr GLenum PROXY_TEXTURE_CUBE_MAP = 0x851B; + constexpr GLenum MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + constexpr GLenum COMPRESSED_RGB = 0x84ED; + constexpr GLenum COMPRESSED_RGBA = 0x84EE; + constexpr GLenum TEXTURE_COMPRESSION_HINT = 0x84EF; + constexpr GLenum TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0; + constexpr GLenum TEXTURE_COMPRESSED = 0x86A1; + constexpr GLenum NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; + constexpr GLenum COMPRESSED_TEXTURE_FORMATS = 0x86A3; + constexpr GLenum CLAMP_TO_BORDER = 0x812D; + + inline void ActiveTexture(GLenum texture){ return internal::glActiveTexture(texture); } + inline void SampleCoverage(GLfloat value, GLboolean invert){ return internal::glSampleCoverage(value, invert); } + inline void CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data){ return internal::glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); } + inline void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data){ return internal::glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); } + inline void CompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data){ return internal::glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); } + inline void CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data){ return internal::glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } + inline void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data){ return internal::glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); } + inline void CompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data){ return internal::glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); } + inline void GetCompressedTexImage(GLenum target, GLint level, void *img){ return internal::glGetCompressedTexImage(target, level, img); } + + // OpenGL 1.4 + + constexpr GLenum BLEND_DST_RGB = 0x80C8; + constexpr GLenum BLEND_SRC_RGB = 0x80C9; + constexpr GLenum BLEND_DST_ALPHA = 0x80CA; + constexpr GLenum BLEND_SRC_ALPHA = 0x80CB; + constexpr GLenum POINT_FADE_THRESHOLD_SIZE = 0x8128; + constexpr GLenum DEPTH_COMPONENT16 = 0x81A5; + constexpr GLenum DEPTH_COMPONENT24 = 0x81A6; + constexpr GLenum DEPTH_COMPONENT32 = 0x81A7; + constexpr GLenum MIRRORED_REPEAT = 0x8370; + constexpr GLenum MAX_TEXTURE_LOD_BIAS = 0x84FD; + constexpr GLenum TEXTURE_LOD_BIAS = 0x8501; + constexpr GLenum INCR_WRAP = 0x8507; + constexpr GLenum DECR_WRAP = 0x8508; + constexpr GLenum TEXTURE_DEPTH_SIZE = 0x884A; + constexpr GLenum TEXTURE_COMPARE_MODE = 0x884C; + constexpr GLenum TEXTURE_COMPARE_FUNC = 0x884D; + constexpr GLenum BLEND_COLOR = 0x8005; + constexpr GLenum BLEND_EQUATION = 0x8009; + constexpr GLenum CONSTANT_COLOR = 0x8001; + constexpr GLenum ONE_MINUS_CONSTANT_COLOR = 0x8002; + constexpr GLenum CONSTANT_ALPHA = 0x8003; + constexpr GLenum ONE_MINUS_CONSTANT_ALPHA = 0x8004; + constexpr GLenum FUNC_ADD = 0x8006; + constexpr GLenum FUNC_REVERSE_SUBTRACT = 0x800B; + constexpr GLenum FUNC_SUBTRACT = 0x800A; + constexpr GLenum MIN = 0x8007; + constexpr GLenum MAX = 0x8008; + + inline void BlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha){ return internal::glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } + inline void MultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount){ return internal::glMultiDrawArrays(mode, first, count, drawcount); } + inline void MultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount){ return internal::glMultiDrawElements(mode, count, type, indices, drawcount); } + inline void PointParameterf(GLenum pname, GLfloat param){ return internal::glPointParameterf(pname, param); } + inline void PointParameterfv(GLenum pname, const GLfloat *params){ return internal::glPointParameterfv(pname, params); } + inline void PointParameteri(GLenum pname, GLint param){ return internal::glPointParameteri(pname, param); } + inline void PointParameteriv(GLenum pname, const GLint *params){ return internal::glPointParameteriv(pname, params); } + inline void BlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha){ return internal::glBlendColor(red, green, blue, alpha); } + inline void BlendEquation(GLenum mode){ return internal::glBlendEquation(mode); } + + // OpenGL 1.5 + + constexpr GLenum BUFFER_SIZE = 0x8764; + constexpr GLenum BUFFER_USAGE = 0x8765; + constexpr GLenum QUERY_COUNTER_BITS = 0x8864; + constexpr GLenum CURRENT_QUERY = 0x8865; + constexpr GLenum QUERY_RESULT = 0x8866; + constexpr GLenum QUERY_RESULT_AVAILABLE = 0x8867; + constexpr GLenum ARRAY_BUFFER = 0x8892; + constexpr GLenum ELEMENT_ARRAY_BUFFER = 0x8893; + constexpr GLenum ARRAY_BUFFER_BINDING = 0x8894; + constexpr GLenum ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + constexpr GLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + constexpr GLenum READ_ONLY = 0x88B8; + constexpr GLenum WRITE_ONLY = 0x88B9; + constexpr GLenum READ_WRITE = 0x88BA; + constexpr GLenum BUFFER_ACCESS = 0x88BB; + constexpr GLenum BUFFER_MAPPED = 0x88BC; + constexpr GLenum BUFFER_MAP_POINTER = 0x88BD; + constexpr GLenum STREAM_DRAW = 0x88E0; + constexpr GLenum STREAM_READ = 0x88E1; + constexpr GLenum STREAM_COPY = 0x88E2; + constexpr GLenum STATIC_DRAW = 0x88E4; + constexpr GLenum STATIC_READ = 0x88E5; + constexpr GLenum STATIC_COPY = 0x88E6; + constexpr GLenum DYNAMIC_DRAW = 0x88E8; + constexpr GLenum DYNAMIC_READ = 0x88E9; + constexpr GLenum DYNAMIC_COPY = 0x88EA; + constexpr GLenum SAMPLES_PASSED = 0x8914; + constexpr GLenum SRC1_ALPHA = 0x8589; + + inline void GenQueries(GLsizei n, GLuint *ids){ return internal::glGenQueries(n, ids); } + inline void DeleteQueries(GLsizei n, const GLuint *ids){ return internal::glDeleteQueries(n, ids); } + inline GLboolean IsQuery(GLuint id){ return internal::glIsQuery(id); } + inline void BeginQuery(GLenum target, GLuint id){ return internal::glBeginQuery(target, id); } + inline void EndQuery(GLenum target){ return internal::glEndQuery(target); } + inline void GetQueryiv(GLenum target, GLenum pname, GLint *params){ return internal::glGetQueryiv(target, pname, params); } + inline void GetQueryObjectiv(GLuint id, GLenum pname, GLint *params){ return internal::glGetQueryObjectiv(id, pname, params); } + inline void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params){ return internal::glGetQueryObjectuiv(id, pname, params); } + inline void BindBuffer(GLenum target, GLuint buffer){ return internal::glBindBuffer(target, buffer); } + inline void DeleteBuffers(GLsizei n, const GLuint *buffers){ return internal::glDeleteBuffers(n, buffers); } + inline void GenBuffers(GLsizei n, GLuint *buffers){ return internal::glGenBuffers(n, buffers); } + inline GLboolean IsBuffer(GLuint buffer){ return internal::glIsBuffer(buffer); } + inline void BufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage){ return internal::glBufferData(target, size, data, usage); } + inline void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data){ return internal::glBufferSubData(target, offset, size, data); } + inline void GetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data){ return internal::glGetBufferSubData(target, offset, size, data); } + inline void *MapBuffer(GLenum target, GLenum access){ return internal::glMapBuffer(target, access); } + inline GLboolean UnmapBuffer(GLenum target){ return internal::glUnmapBuffer(target); } + inline void GetBufferParameteriv(GLenum target, GLenum pname, GLint *params){ return internal::glGetBufferParameteriv(target, pname, params); } + inline void GetBufferPointerv(GLenum target, GLenum pname, void **params){ return internal::glGetBufferPointerv(target, pname, params); } + + // OpenGL 2.0 + + constexpr GLenum BLEND_EQUATION_RGB = 0x8009; + constexpr GLenum VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + constexpr GLenum VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + constexpr GLenum VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + constexpr GLenum VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + constexpr GLenum CURRENT_VERTEX_ATTRIB = 0x8626; + constexpr GLenum VERTEX_PROGRAM_POINT_SIZE = 0x8642; + constexpr GLenum VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + constexpr GLenum STENCIL_BACK_FUNC = 0x8800; + constexpr GLenum STENCIL_BACK_FAIL = 0x8801; + constexpr GLenum STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + constexpr GLenum STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + constexpr GLenum MAX_DRAW_BUFFERS = 0x8824; + constexpr GLenum DRAW_BUFFER0 = 0x8825; + constexpr GLenum DRAW_BUFFER1 = 0x8826; + constexpr GLenum DRAW_BUFFER2 = 0x8827; + constexpr GLenum DRAW_BUFFER3 = 0x8828; + constexpr GLenum DRAW_BUFFER4 = 0x8829; + constexpr GLenum DRAW_BUFFER5 = 0x882A; + constexpr GLenum DRAW_BUFFER6 = 0x882B; + constexpr GLenum DRAW_BUFFER7 = 0x882C; + constexpr GLenum DRAW_BUFFER8 = 0x882D; + constexpr GLenum DRAW_BUFFER9 = 0x882E; + constexpr GLenum DRAW_BUFFER10 = 0x882F; + constexpr GLenum DRAW_BUFFER11 = 0x8830; + constexpr GLenum DRAW_BUFFER12 = 0x8831; + constexpr GLenum DRAW_BUFFER13 = 0x8832; + constexpr GLenum DRAW_BUFFER14 = 0x8833; + constexpr GLenum DRAW_BUFFER15 = 0x8834; + constexpr GLenum BLEND_EQUATION_ALPHA = 0x883D; + constexpr GLenum MAX_VERTEX_ATTRIBS = 0x8869; + constexpr GLenum VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + constexpr GLenum MAX_TEXTURE_IMAGE_UNITS = 0x8872; + constexpr GLenum FRAGMENT_SHADER = 0x8B30; + constexpr GLenum VERTEX_SHADER = 0x8B31; + constexpr GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + constexpr GLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + constexpr GLenum MAX_VARYING_FLOATS = 0x8B4B; + constexpr GLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + constexpr GLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + constexpr GLenum SHADER_TYPE = 0x8B4F; + constexpr GLenum FLOAT_VEC2 = 0x8B50; + constexpr GLenum FLOAT_VEC3 = 0x8B51; + constexpr GLenum FLOAT_VEC4 = 0x8B52; + constexpr GLenum INT_VEC2 = 0x8B53; + constexpr GLenum INT_VEC3 = 0x8B54; + constexpr GLenum INT_VEC4 = 0x8B55; + constexpr GLenum BOOL = 0x8B56; + constexpr GLenum BOOL_VEC2 = 0x8B57; + constexpr GLenum BOOL_VEC3 = 0x8B58; + constexpr GLenum BOOL_VEC4 = 0x8B59; + constexpr GLenum FLOAT_MAT2 = 0x8B5A; + constexpr GLenum FLOAT_MAT3 = 0x8B5B; + constexpr GLenum FLOAT_MAT4 = 0x8B5C; + constexpr GLenum SAMPLER_1D = 0x8B5D; + constexpr GLenum SAMPLER_2D = 0x8B5E; + constexpr GLenum SAMPLER_3D = 0x8B5F; + constexpr GLenum SAMPLER_CUBE = 0x8B60; + constexpr GLenum SAMPLER_1D_SHADOW = 0x8B61; + constexpr GLenum SAMPLER_2D_SHADOW = 0x8B62; + constexpr GLenum DELETE_STATUS = 0x8B80; + constexpr GLenum COMPILE_STATUS = 0x8B81; + constexpr GLenum LINK_STATUS = 0x8B82; + constexpr GLenum VALIDATE_STATUS = 0x8B83; + constexpr GLenum INFO_LOG_LENGTH = 0x8B84; + constexpr GLenum ATTACHED_SHADERS = 0x8B85; + constexpr GLenum ACTIVE_UNIFORMS = 0x8B86; + constexpr GLenum ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; + constexpr GLenum SHADER_SOURCE_LENGTH = 0x8B88; + constexpr GLenum ACTIVE_ATTRIBUTES = 0x8B89; + constexpr GLenum ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; + constexpr GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + constexpr GLenum SHADING_LANGUAGE_VERSION = 0x8B8C; + constexpr GLenum CURRENT_PROGRAM = 0x8B8D; + constexpr GLenum POINT_SPRITE_COORD_ORIGIN = 0x8CA0; + constexpr GLenum LOWER_LEFT = 0x8CA1; + constexpr GLenum UPPER_LEFT = 0x8CA2; + constexpr GLenum STENCIL_BACK_REF = 0x8CA3; + constexpr GLenum STENCIL_BACK_VALUE_MASK = 0x8CA4; + constexpr GLenum STENCIL_BACK_WRITEMASK = 0x8CA5; + + inline void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha){ return internal::glBlendEquationSeparate(modeRGB, modeAlpha); } + inline void DrawBuffers(GLsizei n, const GLenum *bufs){ return internal::glDrawBuffers(n, bufs); } + inline void StencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass){ return internal::glStencilOpSeparate(face, sfail, dpfail, dppass); } + inline void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask){ return internal::glStencilFuncSeparate(face, func, ref, mask); } + inline void StencilMaskSeparate(GLenum face, GLuint mask){ return internal::glStencilMaskSeparate(face, mask); } + inline void AttachShader(GLuint program, GLuint shader){ return internal::glAttachShader(program, shader); } + inline void BindAttribLocation(GLuint program, GLuint index, const GLchar *name){ return internal::glBindAttribLocation(program, index, name); } + inline void CompileShader(GLuint shader){ return internal::glCompileShader(shader); } + inline GLuint CreateProgram(){ return internal::glCreateProgram(); } + inline GLuint CreateShader(GLenum type){ return internal::glCreateShader(type); } + inline void DeleteProgram(GLuint program){ return internal::glDeleteProgram(program); } + inline void DeleteShader(GLuint shader){ return internal::glDeleteShader(shader); } + inline void DetachShader(GLuint program, GLuint shader){ return internal::glDetachShader(program, shader); } + inline void DisableVertexAttribArray(GLuint index){ return internal::glDisableVertexAttribArray(index); } + inline void EnableVertexAttribArray(GLuint index){ return internal::glEnableVertexAttribArray(index); } + inline void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name){ return internal::glGetActiveAttrib(program, index, bufSize, length, size, type, name); } + inline void GetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name){ return internal::glGetActiveUniform(program, index, bufSize, length, size, type, name); } + inline void GetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders){ return internal::glGetAttachedShaders(program, maxCount, count, shaders); } + inline GLint GetAttribLocation(GLuint program, const GLchar *name){ return internal::glGetAttribLocation(program, name); } + inline void GetProgramiv(GLuint program, GLenum pname, GLint *params){ return internal::glGetProgramiv(program, pname, params); } + inline void GetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog){ return internal::glGetProgramInfoLog(program, bufSize, length, infoLog); } + inline void GetShaderiv(GLuint shader, GLenum pname, GLint *params){ return internal::glGetShaderiv(shader, pname, params); } + inline void GetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog){ return internal::glGetShaderInfoLog(shader, bufSize, length, infoLog); } + inline void GetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source){ return internal::glGetShaderSource(shader, bufSize, length, source); } + inline GLint GetUniformLocation(GLuint program, const GLchar *name){ return internal::glGetUniformLocation(program, name); } + inline void GetUniformfv(GLuint program, GLint location, GLfloat *params){ return internal::glGetUniformfv(program, location, params); } + inline void GetUniformiv(GLuint program, GLint location, GLint *params){ return internal::glGetUniformiv(program, location, params); } + inline void GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params){ return internal::glGetVertexAttribdv(index, pname, params); } + inline void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params){ return internal::glGetVertexAttribfv(index, pname, params); } + inline void GetVertexAttribiv(GLuint index, GLenum pname, GLint *params){ return internal::glGetVertexAttribiv(index, pname, params); } + inline void GetVertexAttribPointerv(GLuint index, GLenum pname, void **pointer){ return internal::glGetVertexAttribPointerv(index, pname, pointer); } + inline GLboolean IsProgram(GLuint program){ return internal::glIsProgram(program); } + inline GLboolean IsShader(GLuint shader){ return internal::glIsShader(shader); } + inline void LinkProgram(GLuint program){ return internal::glLinkProgram(program); } + inline void ShaderSource(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length){ return internal::glShaderSource(shader, count, string, length); } + inline void UseProgram(GLuint program){ return internal::glUseProgram(program); } + inline void Uniform1f(GLint location, GLfloat v0){ return internal::glUniform1f(location, v0); } + inline void Uniform2f(GLint location, GLfloat v0, GLfloat v1){ return internal::glUniform2f(location, v0, v1); } + inline void Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2){ return internal::glUniform3f(location, v0, v1, v2); } + inline void Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3){ return internal::glUniform4f(location, v0, v1, v2, v3); } + inline void Uniform1i(GLint location, GLint v0){ return internal::glUniform1i(location, v0); } + inline void Uniform2i(GLint location, GLint v0, GLint v1){ return internal::glUniform2i(location, v0, v1); } + inline void Uniform3i(GLint location, GLint v0, GLint v1, GLint v2){ return internal::glUniform3i(location, v0, v1, v2); } + inline void Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3){ return internal::glUniform4i(location, v0, v1, v2, v3); } + inline void Uniform1fv(GLint location, GLsizei count, const GLfloat *value){ return internal::glUniform1fv(location, count, value); } + inline void Uniform2fv(GLint location, GLsizei count, const GLfloat *value){ return internal::glUniform2fv(location, count, value); } + inline void Uniform3fv(GLint location, GLsizei count, const GLfloat *value){ return internal::glUniform3fv(location, count, value); } + inline void Uniform4fv(GLint location, GLsizei count, const GLfloat *value){ return internal::glUniform4fv(location, count, value); } + inline void Uniform1iv(GLint location, GLsizei count, const GLint *value){ return internal::glUniform1iv(location, count, value); } + inline void Uniform2iv(GLint location, GLsizei count, const GLint *value){ return internal::glUniform2iv(location, count, value); } + inline void Uniform3iv(GLint location, GLsizei count, const GLint *value){ return internal::glUniform3iv(location, count, value); } + inline void Uniform4iv(GLint location, GLsizei count, const GLint *value){ return internal::glUniform4iv(location, count, value); } + inline void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix2fv(location, count, transpose, value); } + inline void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix3fv(location, count, transpose, value); } + inline void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix4fv(location, count, transpose, value); } + inline void ValidateProgram(GLuint program){ return internal::glValidateProgram(program); } + inline void VertexAttrib1d(GLuint index, GLdouble x){ return internal::glVertexAttrib1d(index, x); } + inline void VertexAttrib1dv(GLuint index, const GLdouble *v){ return internal::glVertexAttrib1dv(index, v); } + inline void VertexAttrib1f(GLuint index, GLfloat x){ return internal::glVertexAttrib1f(index, x); } + inline void VertexAttrib1fv(GLuint index, const GLfloat *v){ return internal::glVertexAttrib1fv(index, v); } + inline void VertexAttrib1s(GLuint index, GLshort x){ return internal::glVertexAttrib1s(index, x); } + inline void VertexAttrib1sv(GLuint index, const GLshort *v){ return internal::glVertexAttrib1sv(index, v); } + inline void VertexAttrib2d(GLuint index, GLdouble x, GLdouble y){ return internal::glVertexAttrib2d(index, x, y); } + inline void VertexAttrib2dv(GLuint index, const GLdouble *v){ return internal::glVertexAttrib2dv(index, v); } + inline void VertexAttrib2f(GLuint index, GLfloat x, GLfloat y){ return internal::glVertexAttrib2f(index, x, y); } + inline void VertexAttrib2fv(GLuint index, const GLfloat *v){ return internal::glVertexAttrib2fv(index, v); } + inline void VertexAttrib2s(GLuint index, GLshort x, GLshort y){ return internal::glVertexAttrib2s(index, x, y); } + inline void VertexAttrib2sv(GLuint index, const GLshort *v){ return internal::glVertexAttrib2sv(index, v); } + inline void VertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z){ return internal::glVertexAttrib3d(index, x, y, z); } + inline void VertexAttrib3dv(GLuint index, const GLdouble *v){ return internal::glVertexAttrib3dv(index, v); } + inline void VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z){ return internal::glVertexAttrib3f(index, x, y, z); } + inline void VertexAttrib3fv(GLuint index, const GLfloat *v){ return internal::glVertexAttrib3fv(index, v); } + inline void VertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z){ return internal::glVertexAttrib3s(index, x, y, z); } + inline void VertexAttrib3sv(GLuint index, const GLshort *v){ return internal::glVertexAttrib3sv(index, v); } + inline void VertexAttrib4Nbv(GLuint index, const GLbyte *v){ return internal::glVertexAttrib4Nbv(index, v); } + inline void VertexAttrib4Niv(GLuint index, const GLint *v){ return internal::glVertexAttrib4Niv(index, v); } + inline void VertexAttrib4Nsv(GLuint index, const GLshort *v){ return internal::glVertexAttrib4Nsv(index, v); } + inline void VertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w){ return internal::glVertexAttrib4Nub(index, x, y, z, w); } + inline void VertexAttrib4Nubv(GLuint index, const GLubyte *v){ return internal::glVertexAttrib4Nubv(index, v); } + inline void VertexAttrib4Nuiv(GLuint index, const GLuint *v){ return internal::glVertexAttrib4Nuiv(index, v); } + inline void VertexAttrib4Nusv(GLuint index, const GLushort *v){ return internal::glVertexAttrib4Nusv(index, v); } + inline void VertexAttrib4bv(GLuint index, const GLbyte *v){ return internal::glVertexAttrib4bv(index, v); } + inline void VertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w){ return internal::glVertexAttrib4d(index, x, y, z, w); } + inline void VertexAttrib4dv(GLuint index, const GLdouble *v){ return internal::glVertexAttrib4dv(index, v); } + inline void VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w){ return internal::glVertexAttrib4f(index, x, y, z, w); } + inline void VertexAttrib4fv(GLuint index, const GLfloat *v){ return internal::glVertexAttrib4fv(index, v); } + inline void VertexAttrib4iv(GLuint index, const GLint *v){ return internal::glVertexAttrib4iv(index, v); } + inline void VertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w){ return internal::glVertexAttrib4s(index, x, y, z, w); } + inline void VertexAttrib4sv(GLuint index, const GLshort *v){ return internal::glVertexAttrib4sv(index, v); } + inline void VertexAttrib4ubv(GLuint index, const GLubyte *v){ return internal::glVertexAttrib4ubv(index, v); } + inline void VertexAttrib4uiv(GLuint index, const GLuint *v){ return internal::glVertexAttrib4uiv(index, v); } + inline void VertexAttrib4usv(GLuint index, const GLushort *v){ return internal::glVertexAttrib4usv(index, v); } + inline void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer){ return internal::glVertexAttribPointer(index, size, type, normalized, stride, pointer); } + + // OpenGL 2.1 + + constexpr GLenum PIXEL_PACK_BUFFER = 0x88EB; + constexpr GLenum PIXEL_UNPACK_BUFFER = 0x88EC; + constexpr GLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED; + constexpr GLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + constexpr GLenum FLOAT_MAT2x3 = 0x8B65; + constexpr GLenum FLOAT_MAT2x4 = 0x8B66; + constexpr GLenum FLOAT_MAT3x2 = 0x8B67; + constexpr GLenum FLOAT_MAT3x4 = 0x8B68; + constexpr GLenum FLOAT_MAT4x2 = 0x8B69; + constexpr GLenum FLOAT_MAT4x3 = 0x8B6A; + constexpr GLenum SRGB = 0x8C40; + constexpr GLenum SRGB8 = 0x8C41; + constexpr GLenum SRGB_ALPHA = 0x8C42; + constexpr GLenum SRGB8_ALPHA8 = 0x8C43; + constexpr GLenum COMPRESSED_SRGB = 0x8C48; + constexpr GLenum COMPRESSED_SRGB_ALPHA = 0x8C49; + + inline void UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix2x3fv(location, count, transpose, value); } + inline void UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix3x2fv(location, count, transpose, value); } + inline void UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix2x4fv(location, count, transpose, value); } + inline void UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix4x2fv(location, count, transpose, value); } + inline void UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix3x4fv(location, count, transpose, value); } + inline void UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){ return internal::glUniformMatrix4x3fv(location, count, transpose, value); } + + // OpenGL 3.0 + + constexpr GLenum COMPARE_REF_TO_TEXTURE = 0x884E; + constexpr GLenum CLIP_DISTANCE0 = 0x3000; + constexpr GLenum CLIP_DISTANCE1 = 0x3001; + constexpr GLenum CLIP_DISTANCE2 = 0x3002; + constexpr GLenum CLIP_DISTANCE3 = 0x3003; + constexpr GLenum CLIP_DISTANCE4 = 0x3004; + constexpr GLenum CLIP_DISTANCE5 = 0x3005; + constexpr GLenum CLIP_DISTANCE6 = 0x3006; + constexpr GLenum CLIP_DISTANCE7 = 0x3007; + constexpr GLenum MAX_CLIP_DISTANCES = 0x0D32; + constexpr GLenum MAJOR_VERSION = 0x821B; + constexpr GLenum MINOR_VERSION = 0x821C; + constexpr GLenum NUM_EXTENSIONS = 0x821D; + constexpr GLenum CONTEXT_FLAGS = 0x821E; + constexpr GLenum COMPRESSED_RED = 0x8225; + constexpr GLenum COMPRESSED_RG = 0x8226; + constexpr GLenum CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001; + constexpr GLenum RGBA32F = 0x8814; + constexpr GLenum RGB32F = 0x8815; + constexpr GLenum RGBA16F = 0x881A; + constexpr GLenum RGB16F = 0x881B; + constexpr GLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + constexpr GLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + constexpr GLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + constexpr GLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + constexpr GLenum CLAMP_READ_COLOR = 0x891C; + constexpr GLenum FIXED_ONLY = 0x891D; + constexpr GLenum MAX_VARYING_COMPONENTS = 0x8B4B; + constexpr GLenum TEXTURE_1D_ARRAY = 0x8C18; + constexpr GLenum PROXY_TEXTURE_1D_ARRAY = 0x8C19; + constexpr GLenum TEXTURE_2D_ARRAY = 0x8C1A; + constexpr GLenum PROXY_TEXTURE_2D_ARRAY = 0x8C1B; + constexpr GLenum TEXTURE_BINDING_1D_ARRAY = 0x8C1C; + constexpr GLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + constexpr GLenum R11F_G11F_B10F = 0x8C3A; + constexpr GLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + constexpr GLenum RGB9_E5 = 0x8C3D; + constexpr GLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + constexpr GLenum TEXTURE_SHARED_SIZE = 0x8C3F; + constexpr GLenum TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76; + constexpr GLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + constexpr GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + constexpr GLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + constexpr GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + constexpr GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + constexpr GLenum PRIMITIVES_GENERATED = 0x8C87; + constexpr GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + constexpr GLenum RASTERIZER_DISCARD = 0x8C89; + constexpr GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + constexpr GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + constexpr GLenum INTERLEAVED_ATTRIBS = 0x8C8C; + constexpr GLenum SEPARATE_ATTRIBS = 0x8C8D; + constexpr GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + constexpr GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + constexpr GLenum RGBA32UI = 0x8D70; + constexpr GLenum RGB32UI = 0x8D71; + constexpr GLenum RGBA16UI = 0x8D76; + constexpr GLenum RGB16UI = 0x8D77; + constexpr GLenum RGBA8UI = 0x8D7C; + constexpr GLenum RGB8UI = 0x8D7D; + constexpr GLenum RGBA32I = 0x8D82; + constexpr GLenum RGB32I = 0x8D83; + constexpr GLenum RGBA16I = 0x8D88; + constexpr GLenum RGB16I = 0x8D89; + constexpr GLenum RGBA8I = 0x8D8E; + constexpr GLenum RGB8I = 0x8D8F; + constexpr GLenum RED_INTEGER = 0x8D94; + constexpr GLenum GREEN_INTEGER = 0x8D95; + constexpr GLenum BLUE_INTEGER = 0x8D96; + constexpr GLenum RGB_INTEGER = 0x8D98; + constexpr GLenum RGBA_INTEGER = 0x8D99; + constexpr GLenum BGR_INTEGER = 0x8D9A; + constexpr GLenum BGRA_INTEGER = 0x8D9B; + constexpr GLenum SAMPLER_1D_ARRAY = 0x8DC0; + constexpr GLenum SAMPLER_2D_ARRAY = 0x8DC1; + constexpr GLenum SAMPLER_1D_ARRAY_SHADOW = 0x8DC3; + constexpr GLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + constexpr GLenum SAMPLER_CUBE_SHADOW = 0x8DC5; + constexpr GLenum UNSIGNED_INT_VEC2 = 0x8DC6; + constexpr GLenum UNSIGNED_INT_VEC3 = 0x8DC7; + constexpr GLenum UNSIGNED_INT_VEC4 = 0x8DC8; + constexpr GLenum INT_SAMPLER_1D = 0x8DC9; + constexpr GLenum INT_SAMPLER_2D = 0x8DCA; + constexpr GLenum INT_SAMPLER_3D = 0x8DCB; + constexpr GLenum INT_SAMPLER_CUBE = 0x8DCC; + constexpr GLenum INT_SAMPLER_1D_ARRAY = 0x8DCE; + constexpr GLenum INT_SAMPLER_2D_ARRAY = 0x8DCF; + constexpr GLenum UNSIGNED_INT_SAMPLER_1D = 0x8DD1; + constexpr GLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + constexpr GLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + constexpr GLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + constexpr GLenum UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6; + constexpr GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + constexpr GLenum QUERY_WAIT = 0x8E13; + constexpr GLenum QUERY_NO_WAIT = 0x8E14; + constexpr GLenum QUERY_BY_REGION_WAIT = 0x8E15; + constexpr GLenum QUERY_BY_REGION_NO_WAIT = 0x8E16; + constexpr GLenum BUFFER_ACCESS_FLAGS = 0x911F; + constexpr GLenum BUFFER_MAP_LENGTH = 0x9120; + constexpr GLenum BUFFER_MAP_OFFSET = 0x9121; + constexpr GLenum DEPTH_COMPONENT32F = 0x8CAC; + constexpr GLenum DEPTH32F_STENCIL8 = 0x8CAD; + constexpr GLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + constexpr GLenum INVALID_FRAMEBUFFER_OPERATION = 0x0506; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + constexpr GLenum FRAMEBUFFER_DEFAULT = 0x8218; + constexpr GLenum FRAMEBUFFER_UNDEFINED = 0x8219; + constexpr GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A; + constexpr GLenum MAX_RENDERBUFFER_SIZE = 0x84E8; + constexpr GLenum DEPTH_STENCIL = 0x84F9; + constexpr GLenum UNSIGNED_INT_24_8 = 0x84FA; + constexpr GLenum DEPTH24_STENCIL8 = 0x88F0; + constexpr GLenum TEXTURE_STENCIL_SIZE = 0x88F1; + constexpr GLenum TEXTURE_RED_TYPE = 0x8C10; + constexpr GLenum TEXTURE_GREEN_TYPE = 0x8C11; + constexpr GLenum TEXTURE_BLUE_TYPE = 0x8C12; + constexpr GLenum TEXTURE_ALPHA_TYPE = 0x8C13; + constexpr GLenum TEXTURE_DEPTH_TYPE = 0x8C16; + constexpr GLenum UNSIGNED_NORMALIZED = 0x8C17; + constexpr GLenum FRAMEBUFFER_BINDING = 0x8CA6; + constexpr GLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; + constexpr GLenum RENDERBUFFER_BINDING = 0x8CA7; + constexpr GLenum READ_FRAMEBUFFER = 0x8CA8; + constexpr GLenum DRAW_FRAMEBUFFER = 0x8CA9; + constexpr GLenum READ_FRAMEBUFFER_BINDING = 0x8CAA; + constexpr GLenum RENDERBUFFER_SAMPLES = 0x8CAB; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + constexpr GLenum FRAMEBUFFER_COMPLETE = 0x8CD5; + constexpr GLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + constexpr GLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + constexpr GLenum FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB; + constexpr GLenum FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC; + constexpr GLenum FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + constexpr GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF; + constexpr GLenum COLOR_ATTACHMENT0 = 0x8CE0; + constexpr GLenum COLOR_ATTACHMENT1 = 0x8CE1; + constexpr GLenum COLOR_ATTACHMENT2 = 0x8CE2; + constexpr GLenum COLOR_ATTACHMENT3 = 0x8CE3; + constexpr GLenum COLOR_ATTACHMENT4 = 0x8CE4; + constexpr GLenum COLOR_ATTACHMENT5 = 0x8CE5; + constexpr GLenum COLOR_ATTACHMENT6 = 0x8CE6; + constexpr GLenum COLOR_ATTACHMENT7 = 0x8CE7; + constexpr GLenum COLOR_ATTACHMENT8 = 0x8CE8; + constexpr GLenum COLOR_ATTACHMENT9 = 0x8CE9; + constexpr GLenum COLOR_ATTACHMENT10 = 0x8CEA; + constexpr GLenum COLOR_ATTACHMENT11 = 0x8CEB; + constexpr GLenum COLOR_ATTACHMENT12 = 0x8CEC; + constexpr GLenum COLOR_ATTACHMENT13 = 0x8CED; + constexpr GLenum COLOR_ATTACHMENT14 = 0x8CEE; + constexpr GLenum COLOR_ATTACHMENT15 = 0x8CEF; + constexpr GLenum COLOR_ATTACHMENT16 = 0x8CF0; + constexpr GLenum COLOR_ATTACHMENT17 = 0x8CF1; + constexpr GLenum COLOR_ATTACHMENT18 = 0x8CF2; + constexpr GLenum COLOR_ATTACHMENT19 = 0x8CF3; + constexpr GLenum COLOR_ATTACHMENT20 = 0x8CF4; + constexpr GLenum COLOR_ATTACHMENT21 = 0x8CF5; + constexpr GLenum COLOR_ATTACHMENT22 = 0x8CF6; + constexpr GLenum COLOR_ATTACHMENT23 = 0x8CF7; + constexpr GLenum COLOR_ATTACHMENT24 = 0x8CF8; + constexpr GLenum COLOR_ATTACHMENT25 = 0x8CF9; + constexpr GLenum COLOR_ATTACHMENT26 = 0x8CFA; + constexpr GLenum COLOR_ATTACHMENT27 = 0x8CFB; + constexpr GLenum COLOR_ATTACHMENT28 = 0x8CFC; + constexpr GLenum COLOR_ATTACHMENT29 = 0x8CFD; + constexpr GLenum COLOR_ATTACHMENT30 = 0x8CFE; + constexpr GLenum COLOR_ATTACHMENT31 = 0x8CFF; + constexpr GLenum DEPTH_ATTACHMENT = 0x8D00; + constexpr GLenum STENCIL_ATTACHMENT = 0x8D20; + constexpr GLenum FRAMEBUFFER = 0x8D40; + constexpr GLenum RENDERBUFFER = 0x8D41; + constexpr GLenum RENDERBUFFER_WIDTH = 0x8D42; + constexpr GLenum RENDERBUFFER_HEIGHT = 0x8D43; + constexpr GLenum RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + constexpr GLenum STENCIL_INDEX1 = 0x8D46; + constexpr GLenum STENCIL_INDEX4 = 0x8D47; + constexpr GLenum STENCIL_INDEX8 = 0x8D48; + constexpr GLenum STENCIL_INDEX16 = 0x8D49; + constexpr GLenum RENDERBUFFER_RED_SIZE = 0x8D50; + constexpr GLenum RENDERBUFFER_GREEN_SIZE = 0x8D51; + constexpr GLenum RENDERBUFFER_BLUE_SIZE = 0x8D52; + constexpr GLenum RENDERBUFFER_ALPHA_SIZE = 0x8D53; + constexpr GLenum RENDERBUFFER_DEPTH_SIZE = 0x8D54; + constexpr GLenum RENDERBUFFER_STENCIL_SIZE = 0x8D55; + constexpr GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + constexpr GLenum MAX_SAMPLES = 0x8D57; + constexpr GLenum FRAMEBUFFER_SRGB = 0x8DB9; + constexpr GLenum HALF_FLOAT = 0x140B; + constexpr GLenum MAP_READ_BIT = 0x0001; + constexpr GLenum MAP_WRITE_BIT = 0x0002; + constexpr GLenum MAP_INVALIDATE_RANGE_BIT = 0x0004; + constexpr GLenum MAP_INVALIDATE_BUFFER_BIT = 0x0008; + constexpr GLenum MAP_FLUSH_EXPLICIT_BIT = 0x0010; + constexpr GLenum MAP_UNSYNCHRONIZED_BIT = 0x0020; + constexpr GLenum COMPRESSED_RED_RGTC1 = 0x8DBB; + constexpr GLenum COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC; + constexpr GLenum COMPRESSED_RG_RGTC2 = 0x8DBD; + constexpr GLenum COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE; + constexpr GLenum RG = 0x8227; + constexpr GLenum RG_INTEGER = 0x8228; + constexpr GLenum R8 = 0x8229; + constexpr GLenum R16 = 0x822A; + constexpr GLenum RG8 = 0x822B; + constexpr GLenum RG16 = 0x822C; + constexpr GLenum R16F = 0x822D; + constexpr GLenum R32F = 0x822E; + constexpr GLenum RG16F = 0x822F; + constexpr GLenum RG32F = 0x8230; + constexpr GLenum R8I = 0x8231; + constexpr GLenum R8UI = 0x8232; + constexpr GLenum R16I = 0x8233; + constexpr GLenum R16UI = 0x8234; + constexpr GLenum R32I = 0x8235; + constexpr GLenum R32UI = 0x8236; + constexpr GLenum RG8I = 0x8237; + constexpr GLenum RG8UI = 0x8238; + constexpr GLenum RG16I = 0x8239; + constexpr GLenum RG16UI = 0x823A; + constexpr GLenum RG32I = 0x823B; + constexpr GLenum RG32UI = 0x823C; + constexpr GLenum VERTEX_ARRAY_BINDING = 0x85B5; + + inline void ColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a){ return internal::glColorMaski(index, r, g, b, a); } + inline void GetBooleani_v(GLenum target, GLuint index, GLboolean *data){ return internal::glGetBooleani_v(target, index, data); } + inline void GetIntegeri_v(GLenum target, GLuint index, GLint *data){ return internal::glGetIntegeri_v(target, index, data); } + inline void Enablei(GLenum target, GLuint index){ return internal::glEnablei(target, index); } + inline void Disablei(GLenum target, GLuint index){ return internal::glDisablei(target, index); } + inline GLboolean IsEnabledi(GLenum target, GLuint index){ return internal::glIsEnabledi(target, index); } + inline void BeginTransformFeedback(GLenum primitiveMode){ return internal::glBeginTransformFeedback(primitiveMode); } + inline void EndTransformFeedback(){ return internal::glEndTransformFeedback(); } + inline void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size){ return internal::glBindBufferRange(target, index, buffer, offset, size); } + inline void BindBufferBase(GLenum target, GLuint index, GLuint buffer){ return internal::glBindBufferBase(target, index, buffer); } + inline void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode){ return internal::glTransformFeedbackVaryings(program, count, varyings, bufferMode); } + inline void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name){ return internal::glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); } + inline void ClampColor(GLenum target, GLenum clamp){ return internal::glClampColor(target, clamp); } + inline void BeginConditionalRender(GLuint id, GLenum mode){ return internal::glBeginConditionalRender(id, mode); } + inline void EndConditionalRender(){ return internal::glEndConditionalRender(); } + inline void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer){ return internal::glVertexAttribIPointer(index, size, type, stride, pointer); } + inline void GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params){ return internal::glGetVertexAttribIiv(index, pname, params); } + inline void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params){ return internal::glGetVertexAttribIuiv(index, pname, params); } + inline void VertexAttribI1i(GLuint index, GLint x){ return internal::glVertexAttribI1i(index, x); } + inline void VertexAttribI2i(GLuint index, GLint x, GLint y){ return internal::glVertexAttribI2i(index, x, y); } + inline void VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z){ return internal::glVertexAttribI3i(index, x, y, z); } + inline void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w){ return internal::glVertexAttribI4i(index, x, y, z, w); } + inline void VertexAttribI1ui(GLuint index, GLuint x){ return internal::glVertexAttribI1ui(index, x); } + inline void VertexAttribI2ui(GLuint index, GLuint x, GLuint y){ return internal::glVertexAttribI2ui(index, x, y); } + inline void VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z){ return internal::glVertexAttribI3ui(index, x, y, z); } + inline void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w){ return internal::glVertexAttribI4ui(index, x, y, z, w); } + inline void VertexAttribI1iv(GLuint index, const GLint *v){ return internal::glVertexAttribI1iv(index, v); } + inline void VertexAttribI2iv(GLuint index, const GLint *v){ return internal::glVertexAttribI2iv(index, v); } + inline void VertexAttribI3iv(GLuint index, const GLint *v){ return internal::glVertexAttribI3iv(index, v); } + inline void VertexAttribI4iv(GLuint index, const GLint *v){ return internal::glVertexAttribI4iv(index, v); } + inline void VertexAttribI1uiv(GLuint index, const GLuint *v){ return internal::glVertexAttribI1uiv(index, v); } + inline void VertexAttribI2uiv(GLuint index, const GLuint *v){ return internal::glVertexAttribI2uiv(index, v); } + inline void VertexAttribI3uiv(GLuint index, const GLuint *v){ return internal::glVertexAttribI3uiv(index, v); } + inline void VertexAttribI4uiv(GLuint index, const GLuint *v){ return internal::glVertexAttribI4uiv(index, v); } + inline void VertexAttribI4bv(GLuint index, const GLbyte *v){ return internal::glVertexAttribI4bv(index, v); } + inline void VertexAttribI4sv(GLuint index, const GLshort *v){ return internal::glVertexAttribI4sv(index, v); } + inline void VertexAttribI4ubv(GLuint index, const GLubyte *v){ return internal::glVertexAttribI4ubv(index, v); } + inline void VertexAttribI4usv(GLuint index, const GLushort *v){ return internal::glVertexAttribI4usv(index, v); } + inline void GetUniformuiv(GLuint program, GLint location, GLuint *params){ return internal::glGetUniformuiv(program, location, params); } + inline void BindFragDataLocation(GLuint program, GLuint color, const GLchar *name){ return internal::glBindFragDataLocation(program, color, name); } + inline GLint GetFragDataLocation(GLuint program, const GLchar *name){ return internal::glGetFragDataLocation(program, name); } + inline void Uniform1ui(GLint location, GLuint v0){ return internal::glUniform1ui(location, v0); } + inline void Uniform2ui(GLint location, GLuint v0, GLuint v1){ return internal::glUniform2ui(location, v0, v1); } + inline void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2){ return internal::glUniform3ui(location, v0, v1, v2); } + inline void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3){ return internal::glUniform4ui(location, v0, v1, v2, v3); } + inline void Uniform1uiv(GLint location, GLsizei count, const GLuint *value){ return internal::glUniform1uiv(location, count, value); } + inline void Uniform2uiv(GLint location, GLsizei count, const GLuint *value){ return internal::glUniform2uiv(location, count, value); } + inline void Uniform3uiv(GLint location, GLsizei count, const GLuint *value){ return internal::glUniform3uiv(location, count, value); } + inline void Uniform4uiv(GLint location, GLsizei count, const GLuint *value){ return internal::glUniform4uiv(location, count, value); } + inline void TexParameterIiv(GLenum target, GLenum pname, const GLint *params){ return internal::glTexParameterIiv(target, pname, params); } + inline void TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params){ return internal::glTexParameterIuiv(target, pname, params); } + inline void GetTexParameterIiv(GLenum target, GLenum pname, GLint *params){ return internal::glGetTexParameterIiv(target, pname, params); } + inline void GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params){ return internal::glGetTexParameterIuiv(target, pname, params); } + inline void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value){ return internal::glClearBufferiv(buffer, drawbuffer, value); } + inline void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value){ return internal::glClearBufferuiv(buffer, drawbuffer, value); } + inline void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value){ return internal::glClearBufferfv(buffer, drawbuffer, value); } + inline void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil){ return internal::glClearBufferfi(buffer, drawbuffer, depth, stencil); } + inline const GLubyte *GetStringi(GLenum name, GLuint index){ return internal::glGetStringi(name, index); } + inline GLboolean IsRenderbuffer(GLuint renderbuffer){ return internal::glIsRenderbuffer(renderbuffer); } + inline void BindRenderbuffer(GLenum target, GLuint renderbuffer){ return internal::glBindRenderbuffer(target, renderbuffer); } + inline void DeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers){ return internal::glDeleteRenderbuffers(n, renderbuffers); } + inline void GenRenderbuffers(GLsizei n, GLuint *renderbuffers){ return internal::glGenRenderbuffers(n, renderbuffers); } + inline void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){ return internal::glRenderbufferStorage(target, internalformat, width, height); } + inline void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params){ return internal::glGetRenderbufferParameteriv(target, pname, params); } + inline GLboolean IsFramebuffer(GLuint framebuffer){ return internal::glIsFramebuffer(framebuffer); } + inline void BindFramebuffer(GLenum target, GLuint framebuffer){ return internal::glBindFramebuffer(target, framebuffer); } + inline void DeleteFramebuffers(GLsizei n, const GLuint *framebuffers){ return internal::glDeleteFramebuffers(n, framebuffers); } + inline void GenFramebuffers(GLsizei n, GLuint *framebuffers){ return internal::glGenFramebuffers(n, framebuffers); } + inline GLenum CheckFramebufferStatus(GLenum target){ return internal::glCheckFramebufferStatus(target); } + inline void FramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){ return internal::glFramebufferTexture1D(target, attachment, textarget, texture, level); } + inline void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){ return internal::glFramebufferTexture2D(target, attachment, textarget, texture, level); } + inline void FramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset){ return internal::glFramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); } + inline void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer){ return internal::glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); } + inline void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params){ return internal::glGetFramebufferAttachmentParameteriv(target, attachment, pname, params); } + inline void GenerateMipmap(GLenum target){ return internal::glGenerateMipmap(target); } + inline void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter){ return internal::glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } + inline void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height){ return internal::glRenderbufferStorageMultisample(target, samples, internalformat, width, height); } + inline void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer){ return internal::glFramebufferTextureLayer(target, attachment, texture, level, layer); } + inline void *MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access){ return internal::glMapBufferRange(target, offset, length, access); } + inline void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length){ return internal::glFlushMappedBufferRange(target, offset, length); } + inline void BindVertexArray(GLuint array){ return internal::glBindVertexArray(array); } + inline void DeleteVertexArrays(GLsizei n, const GLuint *arrays){ return internal::glDeleteVertexArrays(n, arrays); } + inline void GenVertexArrays(GLsizei n, GLuint *arrays){ return internal::glGenVertexArrays(n, arrays); } + inline GLboolean IsVertexArray(GLuint array){ return internal::glIsVertexArray(array); } + + // OpenGL 3.1 + + constexpr GLenum SAMPLER_2D_RECT = 0x8B63; + constexpr GLenum SAMPLER_2D_RECT_SHADOW = 0x8B64; + constexpr GLenum SAMPLER_BUFFER = 0x8DC2; + constexpr GLenum INT_SAMPLER_2D_RECT = 0x8DCD; + constexpr GLenum INT_SAMPLER_BUFFER = 0x8DD0; + constexpr GLenum UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5; + constexpr GLenum UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8; + constexpr GLenum TEXTURE_BUFFER = 0x8C2A; + constexpr GLenum MAX_TEXTURE_BUFFER_SIZE = 0x8C2B; + constexpr GLenum TEXTURE_BINDING_BUFFER = 0x8C2C; + constexpr GLenum TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D; + constexpr GLenum TEXTURE_RECTANGLE = 0x84F5; + constexpr GLenum TEXTURE_BINDING_RECTANGLE = 0x84F6; + constexpr GLenum PROXY_TEXTURE_RECTANGLE = 0x84F7; + constexpr GLenum MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8; + constexpr GLenum R8_SNORM = 0x8F94; + constexpr GLenum RG8_SNORM = 0x8F95; + constexpr GLenum RGB8_SNORM = 0x8F96; + constexpr GLenum RGBA8_SNORM = 0x8F97; + constexpr GLenum R16_SNORM = 0x8F98; + constexpr GLenum RG16_SNORM = 0x8F99; + constexpr GLenum RGB16_SNORM = 0x8F9A; + constexpr GLenum RGBA16_SNORM = 0x8F9B; + constexpr GLenum SIGNED_NORMALIZED = 0x8F9C; + constexpr GLenum PRIMITIVE_RESTART = 0x8F9D; + constexpr GLenum PRIMITIVE_RESTART_INDEX = 0x8F9E; + constexpr GLenum COPY_READ_BUFFER = 0x8F36; + constexpr GLenum COPY_WRITE_BUFFER = 0x8F37; + constexpr GLenum UNIFORM_BUFFER = 0x8A11; + constexpr GLenum UNIFORM_BUFFER_BINDING = 0x8A28; + constexpr GLenum UNIFORM_BUFFER_START = 0x8A29; + constexpr GLenum UNIFORM_BUFFER_SIZE = 0x8A2A; + constexpr GLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + constexpr GLenum MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C; + constexpr GLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + constexpr GLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + constexpr GLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + constexpr GLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + constexpr GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + constexpr GLenum MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32; + constexpr GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + constexpr GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + constexpr GLenum ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35; + constexpr GLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36; + constexpr GLenum UNIFORM_TYPE = 0x8A37; + constexpr GLenum UNIFORM_SIZE = 0x8A38; + constexpr GLenum UNIFORM_NAME_LENGTH = 0x8A39; + constexpr GLenum UNIFORM_BLOCK_INDEX = 0x8A3A; + constexpr GLenum UNIFORM_OFFSET = 0x8A3B; + constexpr GLenum UNIFORM_ARRAY_STRIDE = 0x8A3C; + constexpr GLenum UNIFORM_MATRIX_STRIDE = 0x8A3D; + constexpr GLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E; + constexpr GLenum UNIFORM_BLOCK_BINDING = 0x8A3F; + constexpr GLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + constexpr GLenum UNIFORM_BLOCK_NAME_LENGTH = 0x8A41; + constexpr GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + constexpr GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + constexpr GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + constexpr GLenum UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45; + constexpr GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + constexpr unsigned INVALID_INDEX = 0xFFFFFFFF; + + inline void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount){ return internal::glDrawArraysInstanced(mode, first, count, instancecount); } + inline void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount){ return internal::glDrawElementsInstanced(mode, count, type, indices, instancecount); } + inline void TexBuffer(GLenum target, GLenum internalformat, GLuint buffer){ return internal::glTexBuffer(target, internalformat, buffer); } + inline void PrimitiveRestartIndex(GLuint index){ return internal::glPrimitiveRestartIndex(index); } + inline void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size){ return internal::glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); } + inline void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices){ return internal::glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices); } + inline void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params){ return internal::glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); } + inline void GetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName){ return internal::glGetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); } + inline GLuint GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName){ return internal::glGetUniformBlockIndex(program, uniformBlockName); } + inline void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params){ return internal::glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); } + inline void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName){ return internal::glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); } + inline void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding){ return internal::glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); } + + // OpenGL 3.2 + + constexpr GLenum CONTEXT_CORE_PROFILE_BIT = 0x00000001; + constexpr GLenum CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002; + constexpr GLenum LINES_ADJACENCY = 0x000A; + constexpr GLenum LINE_STRIP_ADJACENCY = 0x000B; + constexpr GLenum TRIANGLES_ADJACENCY = 0x000C; + constexpr GLenum TRIANGLE_STRIP_ADJACENCY = 0x000D; + constexpr GLenum PROGRAM_POINT_SIZE = 0x8642; + constexpr GLenum MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29; + constexpr GLenum FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7; + constexpr GLenum FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8; + constexpr GLenum GEOMETRY_SHADER = 0x8DD9; + constexpr GLenum GEOMETRY_VERTICES_OUT = 0x8916; + constexpr GLenum GEOMETRY_INPUT_TYPE = 0x8917; + constexpr GLenum GEOMETRY_OUTPUT_TYPE = 0x8918; + constexpr GLenum MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF; + constexpr GLenum MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0; + constexpr GLenum MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1; + constexpr GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + constexpr GLenum MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123; + constexpr GLenum MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124; + constexpr GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + constexpr GLenum CONTEXT_PROFILE_MASK = 0x9126; + constexpr GLenum DEPTH_CLAMP = 0x864F; + constexpr GLenum QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C; + constexpr GLenum FIRST_VERTEX_CONVENTION = 0x8E4D; + constexpr GLenum LAST_VERTEX_CONVENTION = 0x8E4E; + constexpr GLenum PROVOKING_VERTEX = 0x8E4F; + constexpr GLenum TEXTURE_CUBE_MAP_SEAMLESS = 0x884F; + constexpr GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111; + constexpr GLenum OBJECT_TYPE = 0x9112; + constexpr GLenum SYNC_CONDITION = 0x9113; + constexpr GLenum SYNC_STATUS = 0x9114; + constexpr GLenum SYNC_FLAGS = 0x9115; + constexpr GLenum SYNC_FENCE = 0x9116; + constexpr GLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + constexpr GLenum UNSIGNALED = 0x9118; + constexpr GLenum SIGNALED = 0x9119; + constexpr GLenum ALREADY_SIGNALED = 0x911A; + constexpr GLenum TIMEOUT_EXPIRED = 0x911B; + constexpr GLenum CONDITION_SATISFIED = 0x911C; + constexpr GLenum WAIT_FAILED = 0x911D; + constexpr unsigned long long TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF; + constexpr GLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + constexpr GLenum SAMPLE_POSITION = 0x8E50; + constexpr GLenum SAMPLE_MASK = 0x8E51; + constexpr GLenum SAMPLE_MASK_VALUE = 0x8E52; + constexpr GLenum MAX_SAMPLE_MASK_WORDS = 0x8E59; + constexpr GLenum TEXTURE_2D_MULTISAMPLE = 0x9100; + constexpr GLenum PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101; + constexpr GLenum TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102; + constexpr GLenum PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103; + constexpr GLenum TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104; + constexpr GLenum TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105; + constexpr GLenum TEXTURE_SAMPLES = 0x9106; + constexpr GLenum TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107; + constexpr GLenum SAMPLER_2D_MULTISAMPLE = 0x9108; + constexpr GLenum INT_SAMPLER_2D_MULTISAMPLE = 0x9109; + constexpr GLenum UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A; + constexpr GLenum SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B; + constexpr GLenum INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C; + constexpr GLenum UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D; + constexpr GLenum MAX_COLOR_TEXTURE_SAMPLES = 0x910E; + constexpr GLenum MAX_DEPTH_TEXTURE_SAMPLES = 0x910F; + constexpr GLenum MAX_INTEGER_SAMPLES = 0x9110; + + inline void DrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex){ return internal::glDrawElementsBaseVertex(mode, count, type, indices, basevertex); } + inline void DrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex){ return internal::glDrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); } + inline void DrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex){ return internal::glDrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); } + inline void MultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex){ return internal::glMultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); } + inline void ProvokingVertex(GLenum mode){ return internal::glProvokingVertex(mode); } + inline GLsync FenceSync(GLenum condition, GLbitfield flags){ return internal::glFenceSync(condition, flags); } + inline GLboolean IsSync(GLsync sync){ return internal::glIsSync(sync); } + inline void DeleteSync(GLsync sync){ return internal::glDeleteSync(sync); } + inline GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout){ return internal::glClientWaitSync(sync, flags, timeout); } + inline void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout){ return internal::glWaitSync(sync, flags, timeout); } + inline void GetInteger64v(GLenum pname, GLint64 *data){ return internal::glGetInteger64v(pname, data); } + inline void GetSynciv(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values){ return internal::glGetSynciv(sync, pname, count, length, values); } + inline void GetInteger64i_v(GLenum target, GLuint index, GLint64 *data){ return internal::glGetInteger64i_v(target, index, data); } + inline void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params){ return internal::glGetBufferParameteri64v(target, pname, params); } + inline void FramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level){ return internal::glFramebufferTexture(target, attachment, texture, level); } + inline void TexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations){ return internal::glTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); } + inline void TexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations){ return internal::glTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); } + inline void GetMultisamplefv(GLenum pname, GLuint index, GLfloat *val){ return internal::glGetMultisamplefv(pname, index, val); } + inline void SampleMaski(GLuint maskNumber, GLbitfield mask){ return internal::glSampleMaski(maskNumber, mask); } + + // OpenGL 3.3 + + constexpr GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + constexpr GLenum SRC1_COLOR = 0x88F9; + constexpr GLenum ONE_MINUS_SRC1_COLOR = 0x88FA; + constexpr GLenum ONE_MINUS_SRC1_ALPHA = 0x88FB; + constexpr GLenum MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC; + constexpr GLenum ANY_SAMPLES_PASSED = 0x8C2F; + constexpr GLenum SAMPLER_BINDING = 0x8919; + constexpr GLenum RGB10_A2UI = 0x906F; + constexpr GLenum TEXTURE_SWIZZLE_R = 0x8E42; + constexpr GLenum TEXTURE_SWIZZLE_G = 0x8E43; + constexpr GLenum TEXTURE_SWIZZLE_B = 0x8E44; + constexpr GLenum TEXTURE_SWIZZLE_A = 0x8E45; + constexpr GLenum TEXTURE_SWIZZLE_RGBA = 0x8E46; + constexpr GLenum TIME_ELAPSED = 0x88BF; + constexpr GLenum TIMESTAMP = 0x8E28; + constexpr GLenum INT_2_10_10_10_REV = 0x8D9F; + + inline void BindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name){ return internal::glBindFragDataLocationIndexed(program, colorNumber, index, name); } + inline GLint GetFragDataIndex(GLuint program, const GLchar *name){ return internal::glGetFragDataIndex(program, name); } + inline void GenSamplers(GLsizei count, GLuint *samplers){ return internal::glGenSamplers(count, samplers); } + inline void DeleteSamplers(GLsizei count, const GLuint *samplers){ return internal::glDeleteSamplers(count, samplers); } + inline GLboolean IsSampler(GLuint sampler){ return internal::glIsSampler(sampler); } + inline void BindSampler(GLuint unit, GLuint sampler){ return internal::glBindSampler(unit, sampler); } + inline void SamplerParameteri(GLuint sampler, GLenum pname, GLint param){ return internal::glSamplerParameteri(sampler, pname, param); } + inline void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param){ return internal::glSamplerParameteriv(sampler, pname, param); } + inline void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param){ return internal::glSamplerParameterf(sampler, pname, param); } + inline void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param){ return internal::glSamplerParameterfv(sampler, pname, param); } + inline void SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param){ return internal::glSamplerParameterIiv(sampler, pname, param); } + inline void SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param){ return internal::glSamplerParameterIuiv(sampler, pname, param); } + inline void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params){ return internal::glGetSamplerParameteriv(sampler, pname, params); } + inline void GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params){ return internal::glGetSamplerParameterIiv(sampler, pname, params); } + inline void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params){ return internal::glGetSamplerParameterfv(sampler, pname, params); } + inline void GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params){ return internal::glGetSamplerParameterIuiv(sampler, pname, params); } + inline void QueryCounter(GLuint id, GLenum target){ return internal::glQueryCounter(id, target); } + inline void GetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params){ return internal::glGetQueryObjecti64v(id, pname, params); } + inline void GetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params){ return internal::glGetQueryObjectui64v(id, pname, params); } + inline void VertexAttribDivisor(GLuint index, GLuint divisor){ return internal::glVertexAttribDivisor(index, divisor); } + inline void VertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){ return internal::glVertexAttribP1ui(index, type, normalized, value); } + inline void VertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value){ return internal::glVertexAttribP1uiv(index, type, normalized, value); } + inline void VertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){ return internal::glVertexAttribP2ui(index, type, normalized, value); } + inline void VertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value){ return internal::glVertexAttribP2uiv(index, type, normalized, value); } + inline void VertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){ return internal::glVertexAttribP3ui(index, type, normalized, value); } + inline void VertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value){ return internal::glVertexAttribP3uiv(index, type, normalized, value); } + inline void VertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value){ return internal::glVertexAttribP4ui(index, type, normalized, value); } + inline void VertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value){ return internal::glVertexAttribP4uiv(index, type, normalized, value); } + + // GL_ARB_texture_filter_anisotropic + + constexpr GLenum TEXTURE_MAX_ANISOTROPY = 0x84FE; + constexpr GLenum MAX_TEXTURE_MAX_ANISOTROPY = 0x84FF; + + namespace sys { - - exts::LoadTest LoadFunctions(); - int GetLeastMinorVersion(); - int GetLeastMajorVersion(); - - int GetMinorVersion(); - int GetMajorVersion(); - bool IsVersionGEQ(int majorVersion, int minorVersion); - - } //namespace sys -} //namespace gl -#endif //FUNCTION_CPP_GENERATED_HEADEROPENGL_HPP + bool initialize(); + const char * api(); + int major_version(); + int minor_version(); + + bool ext_ARB_texture_filter_anisotropic(); + + } // namespace sys + +} // namespace gl + diff --git a/libs/gfx/include/psemek/gfx/texture.hpp b/libs/gfx/include/psemek/gfx/texture.hpp index 51f354d5..66db3828 100644 --- a/libs/gfx/include/psemek/gfx/texture.hpp +++ b/libs/gfx/include/psemek/gfx/texture.hpp @@ -344,7 +344,7 @@ namespace psemek::gfx if (level) { bind(); - gl::TexParameterf(Target, gl::TEXTURE_MAX_ANISOTROPY_EXT, *level); + gl::TexParameterf(Target, gl::TEXTURE_MAX_ANISOTROPY, *level); } } diff --git a/libs/gfx/source/error.cpp b/libs/gfx/source/error.cpp index 8da6856a..31bd834b 100644 --- a/libs/gfx/source/error.cpp +++ b/libs/gfx/source/error.cpp @@ -13,7 +13,7 @@ namespace psemek::gfx { switch (e) { - case gl::NO_ERROR_: return "GL_NO_ERROR"; + case gl::NO_ERROR: return "GL_NO_ERROR"; case gl::INVALID_ENUM: return "GL_INVALID_ENUM"; case gl::INVALID_VALUE: return "GL_INVALID_VALUE"; case gl::INVALID_OPERATION: return "GL_INVALID_OPERATION"; diff --git a/libs/gfx/source/gl.cpp b/libs/gfx/source/gl.cpp index 7d6bb2b3..6caf0f5b 100644 --- a/libs/gfx/source/gl.cpp +++ b/libs/gfx/source/gl.cpp @@ -1,1631 +1,1240 @@ -#include -#include -#include -#include -#include + +#include +#include #if defined(__APPLE__) #include - -static void* AppleGLGetProcAddress (const char *name) -{ - static void* image = NULL; - - if (NULL == image) - image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); - - return (image ? dlsym(image, name) : NULL); -} -#endif /* __APPLE__ */ - -#if defined(__sgi) || defined (__sun) +#elif defined(__sgi) || defined (__sun) #include #include - -static void* SunGetProcAddress (const GLubyte* name) -{ - static void* h = NULL; - static void* gpa; - - if (h == NULL) - { - if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL; - gpa = dlsym(h, "glXGetProcAddress"); - } - - if (gpa != NULL) - return ((void*(*)(const GLubyte*))gpa)(name); - else - return dlsym(h, (const char*)name); -} -#endif /* __sgi || __sun */ - -#if defined(_WIN32) - -#ifdef _MSC_VER -#pragma warning(disable: 4055) -#pragma warning(disable: 4054) -#pragma warning(disable: 4996) -#endif - -static int TestPointer(const PROC pTest) -{ - ptrdiff_t iTest; - if(!pTest) return 0; - iTest = (ptrdiff_t)pTest; - - if(iTest == 1 || iTest == 2 || iTest == 3 || iTest == -1) return 0; - - return 1; -} - -static void *WinGetProcAddress(const char *name) -{ - HMODULE glMod = NULL; - PROC pFunc = wglGetProcAddress((LPCSTR)name); - if(TestPointer(pFunc)) - { - return (void*)pFunc; - } - glMod = GetModuleHandleA("OpenGL32.dll"); - return (void*)GetProcAddress(glMod, (LPCSTR)name); -} - -#define IntGetProcAddress(name) WinGetProcAddress(name) +#elif defined(_WIN32) +#include #else - #if defined(__APPLE__) - #define IntGetProcAddress(name) AppleGLGetProcAddress(name) - #else - #if defined(__sgi) || defined(__sun) - #define IntGetProcAddress(name) SunGetProcAddress(name) - #else /* GLX */ - #include - - #define IntGetProcAddress(name) (*glXGetProcAddressARB)((const GLubyte*)name) - #endif - #endif +#include #endif namespace gl { - namespace exts + + namespace internal { - LoadTest var_EXT_texture_filter_anisotropic; + - } //namespace exts - - namespace _detail - { - typedef void (CODEGEN_FUNCPTR *PFNBLENDFUNC)(GLenum, GLenum); - PFNBLENDFUNC BlendFunc = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEAR)(GLbitfield); - PFNCLEAR Clear = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARCOLOR)(GLfloat, GLfloat, GLfloat, GLfloat); - PFNCLEARCOLOR ClearColor = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARDEPTH)(GLdouble); - PFNCLEARDEPTH ClearDepth = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARSTENCIL)(GLint); - PFNCLEARSTENCIL ClearStencil = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOLORMASK)(GLboolean, GLboolean, GLboolean, GLboolean); - PFNCOLORMASK ColorMask = 0; - typedef void (CODEGEN_FUNCPTR *PFNCULLFACE)(GLenum); - PFNCULLFACE CullFace = 0; - typedef void (CODEGEN_FUNCPTR *PFNDEPTHFUNC)(GLenum); - PFNDEPTHFUNC DepthFunc = 0; - typedef void (CODEGEN_FUNCPTR *PFNDEPTHMASK)(GLboolean); - PFNDEPTHMASK DepthMask = 0; - typedef void (CODEGEN_FUNCPTR *PFNDEPTHRANGE)(GLdouble, GLdouble); - PFNDEPTHRANGE DepthRange = 0; - typedef void (CODEGEN_FUNCPTR *PFNDISABLE)(GLenum); - PFNDISABLE Disable = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWBUFFER)(GLenum); - PFNDRAWBUFFER DrawBuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNENABLE)(GLenum); - PFNENABLE Enable = 0; - typedef void (CODEGEN_FUNCPTR *PFNFINISH)(void); - PFNFINISH Finish = 0; - typedef void (CODEGEN_FUNCPTR *PFNFLUSH)(void); - PFNFLUSH Flush = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRONTFACE)(GLenum); - PFNFRONTFACE FrontFace = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETBOOLEANV)(GLenum, GLboolean *); - PFNGETBOOLEANV GetBooleanv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETDOUBLEV)(GLenum, GLdouble *); - PFNGETDOUBLEV GetDoublev = 0; - typedef GLenum (CODEGEN_FUNCPTR *PFNGETERROR)(void); - PFNGETERROR GetError = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETFLOATV)(GLenum, GLfloat *); - PFNGETFLOATV GetFloatv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETINTEGERV)(GLenum, GLint *); - PFNGETINTEGERV GetIntegerv = 0; - typedef const GLubyte * (CODEGEN_FUNCPTR *PFNGETSTRING)(GLenum); - PFNGETSTRING GetString = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXIMAGE)(GLenum, GLint, GLenum, GLenum, void *); - PFNGETTEXIMAGE GetTexImage = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXLEVELPARAMETERFV)(GLenum, GLint, GLenum, GLfloat *); - PFNGETTEXLEVELPARAMETERFV GetTexLevelParameterfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXLEVELPARAMETERIV)(GLenum, GLint, GLenum, GLint *); - PFNGETTEXLEVELPARAMETERIV GetTexLevelParameteriv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERFV)(GLenum, GLenum, GLfloat *); - PFNGETTEXPARAMETERFV GetTexParameterfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERIV)(GLenum, GLenum, GLint *); - PFNGETTEXPARAMETERIV GetTexParameteriv = 0; - typedef void (CODEGEN_FUNCPTR *PFNHINT)(GLenum, GLenum); - PFNHINT Hint = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISENABLED)(GLenum); - PFNISENABLED IsEnabled = 0; - typedef void (CODEGEN_FUNCPTR *PFNLINEWIDTH)(GLfloat); - PFNLINEWIDTH LineWidth = 0; - typedef void (CODEGEN_FUNCPTR *PFNLOGICOP)(GLenum); - PFNLOGICOP LogicOp = 0; - typedef void (CODEGEN_FUNCPTR *PFNPIXELSTOREF)(GLenum, GLfloat); - PFNPIXELSTOREF PixelStoref = 0; - typedef void (CODEGEN_FUNCPTR *PFNPIXELSTOREI)(GLenum, GLint); - PFNPIXELSTOREI PixelStorei = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOINTSIZE)(GLfloat); - PFNPOINTSIZE PointSize = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOLYGONMODE)(GLenum, GLenum); - PFNPOLYGONMODE PolygonMode = 0; - typedef void (CODEGEN_FUNCPTR *PFNREADBUFFER)(GLenum); - PFNREADBUFFER ReadBuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNREADPIXELS)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *); - PFNREADPIXELS ReadPixels = 0; - typedef void (CODEGEN_FUNCPTR *PFNSCISSOR)(GLint, GLint, GLsizei, GLsizei); - PFNSCISSOR Scissor = 0; - typedef void (CODEGEN_FUNCPTR *PFNSTENCILFUNC)(GLenum, GLint, GLuint); - PFNSTENCILFUNC StencilFunc = 0; - typedef void (CODEGEN_FUNCPTR *PFNSTENCILMASK)(GLuint); - PFNSTENCILMASK StencilMask = 0; - typedef void (CODEGEN_FUNCPTR *PFNSTENCILOP)(GLenum, GLenum, GLenum); - PFNSTENCILOP StencilOp = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE1D)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void *); - PFNTEXIMAGE1D TexImage1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); - PFNTEXIMAGE2D TexImage2D = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERF)(GLenum, GLenum, GLfloat); - PFNTEXPARAMETERF TexParameterf = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERFV)(GLenum, GLenum, const GLfloat *); - PFNTEXPARAMETERFV TexParameterfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERI)(GLenum, GLenum, GLint); - PFNTEXPARAMETERI TexParameteri = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIV)(GLenum, GLenum, const GLint *); - PFNTEXPARAMETERIV TexParameteriv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVIEWPORT)(GLint, GLint, GLsizei, GLsizei); - PFNVIEWPORT Viewport = 0; + #if defined(__APPLE__) - typedef void (CODEGEN_FUNCPTR *PFNBINDTEXTURE)(GLenum, GLuint); - PFNBINDTEXTURE BindTexture = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXIMAGE1D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); - PFNCOPYTEXIMAGE1D CopyTexImage1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXIMAGE2D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); - PFNCOPYTEXIMAGE2D CopyTexImage2D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXSUBIMAGE1D)(GLenum, GLint, GLint, GLint, GLint, GLsizei); - PFNCOPYTEXSUBIMAGE1D CopyTexSubImage1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXSUBIMAGE2D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); - PFNCOPYTEXSUBIMAGE2D CopyTexSubImage2D = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETETEXTURES)(GLsizei, const GLuint *); - PFNDELETETEXTURES DeleteTextures = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWARRAYS)(GLenum, GLint, GLsizei); - PFNDRAWARRAYS DrawArrays = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWELEMENTS)(GLenum, GLsizei, GLenum, const void *); - PFNDRAWELEMENTS DrawElements = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENTEXTURES)(GLsizei, GLuint *); - PFNGENTEXTURES GenTextures = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISTEXTURE)(GLuint); - PFNISTEXTURE IsTexture = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOLYGONOFFSET)(GLfloat, GLfloat); - PFNPOLYGONOFFSET PolygonOffset = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXSUBIMAGE1D)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void *); - PFNTEXSUBIMAGE1D TexSubImage1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXSUBIMAGE2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *); - PFNTEXSUBIMAGE2D TexSubImage2D = 0; - - typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXSUBIMAGE3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); - PFNCOPYTEXSUBIMAGE3D CopyTexSubImage3D = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWRANGEELEMENTS)(GLenum, GLuint, GLuint, GLsizei, GLenum, const void *); - PFNDRAWRANGEELEMENTS DrawRangeElements = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *); - PFNTEXIMAGE3D TexImage3D = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXSUBIMAGE3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *); - PFNTEXSUBIMAGE3D TexSubImage3D = 0; - - typedef void (CODEGEN_FUNCPTR *PFNACTIVETEXTURE)(GLenum); - PFNACTIVETEXTURE ActiveTexture = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXIMAGE1D)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *); - PFNCOMPRESSEDTEXIMAGE1D CompressedTexImage1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXIMAGE2D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *); - PFNCOMPRESSEDTEXIMAGE2D CompressedTexImage2D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXIMAGE3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *); - PFNCOMPRESSEDTEXIMAGE3D CompressedTexImage3D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXSUBIMAGE1D)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *); - PFNCOMPRESSEDTEXSUBIMAGE1D CompressedTexSubImage1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXSUBIMAGE2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *); - PFNCOMPRESSEDTEXSUBIMAGE2D CompressedTexSubImage2D = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXSUBIMAGE3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *); - PFNCOMPRESSEDTEXSUBIMAGE3D CompressedTexSubImage3D = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETCOMPRESSEDTEXIMAGE)(GLenum, GLint, void *); - PFNGETCOMPRESSEDTEXIMAGE GetCompressedTexImage = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLECOVERAGE)(GLfloat, GLboolean); - PFNSAMPLECOVERAGE SampleCoverage = 0; - - typedef void (CODEGEN_FUNCPTR *PFNBLENDCOLOR)(GLfloat, GLfloat, GLfloat, GLfloat); - PFNBLENDCOLOR BlendColor = 0; - typedef void (CODEGEN_FUNCPTR *PFNBLENDEQUATION)(GLenum); - PFNBLENDEQUATION BlendEquation = 0; - typedef void (CODEGEN_FUNCPTR *PFNBLENDFUNCSEPARATE)(GLenum, GLenum, GLenum, GLenum); - PFNBLENDFUNCSEPARATE BlendFuncSeparate = 0; - typedef void (CODEGEN_FUNCPTR *PFNMULTIDRAWARRAYS)(GLenum, const GLint *, const GLsizei *, GLsizei); - PFNMULTIDRAWARRAYS MultiDrawArrays = 0; - typedef void (CODEGEN_FUNCPTR *PFNMULTIDRAWELEMENTS)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); - PFNMULTIDRAWELEMENTS MultiDrawElements = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERF)(GLenum, GLfloat); - PFNPOINTPARAMETERF PointParameterf = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERFV)(GLenum, const GLfloat *); - PFNPOINTPARAMETERFV PointParameterfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERI)(GLenum, GLint); - PFNPOINTPARAMETERI PointParameteri = 0; - typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERIV)(GLenum, const GLint *); - PFNPOINTPARAMETERIV PointParameteriv = 0; - - typedef void (CODEGEN_FUNCPTR *PFNBEGINQUERY)(GLenum, GLuint); - PFNBEGINQUERY BeginQuery = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDBUFFER)(GLenum, GLuint); - PFNBINDBUFFER BindBuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNBUFFERDATA)(GLenum, GLsizeiptr, const void *, GLenum); - PFNBUFFERDATA BufferData = 0; - typedef void (CODEGEN_FUNCPTR *PFNBUFFERSUBDATA)(GLenum, GLintptr, GLsizeiptr, const void *); - PFNBUFFERSUBDATA BufferSubData = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETEBUFFERS)(GLsizei, const GLuint *); - PFNDELETEBUFFERS DeleteBuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETEQUERIES)(GLsizei, const GLuint *); - PFNDELETEQUERIES DeleteQueries = 0; - typedef void (CODEGEN_FUNCPTR *PFNENDQUERY)(GLenum); - PFNENDQUERY EndQuery = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENBUFFERS)(GLsizei, GLuint *); - PFNGENBUFFERS GenBuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENQUERIES)(GLsizei, GLuint *); - PFNGENQUERIES GenQueries = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERPARAMETERIV)(GLenum, GLenum, GLint *); - PFNGETBUFFERPARAMETERIV GetBufferParameteriv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERPOINTERV)(GLenum, GLenum, void **); - PFNGETBUFFERPOINTERV GetBufferPointerv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERSUBDATA)(GLenum, GLintptr, GLsizeiptr, void *); - PFNGETBUFFERSUBDATA GetBufferSubData = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETQUERYOBJECTIV)(GLuint, GLenum, GLint *); - PFNGETQUERYOBJECTIV GetQueryObjectiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETQUERYOBJECTUIV)(GLuint, GLenum, GLuint *); - PFNGETQUERYOBJECTUIV GetQueryObjectuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETQUERYIV)(GLenum, GLenum, GLint *); - PFNGETQUERYIV GetQueryiv = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISBUFFER)(GLuint); - PFNISBUFFER IsBuffer = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISQUERY)(GLuint); - PFNISQUERY IsQuery = 0; - typedef void * (CODEGEN_FUNCPTR *PFNMAPBUFFER)(GLenum, GLenum); - PFNMAPBUFFER MapBuffer = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNUNMAPBUFFER)(GLenum); - PFNUNMAPBUFFER UnmapBuffer = 0; - - typedef void (CODEGEN_FUNCPTR *PFNATTACHSHADER)(GLuint, GLuint); - PFNATTACHSHADER AttachShader = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDATTRIBLOCATION)(GLuint, GLuint, const GLchar *); - PFNBINDATTRIBLOCATION BindAttribLocation = 0; - typedef void (CODEGEN_FUNCPTR *PFNBLENDEQUATIONSEPARATE)(GLenum, GLenum); - PFNBLENDEQUATIONSEPARATE BlendEquationSeparate = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOMPILESHADER)(GLuint); - PFNCOMPILESHADER CompileShader = 0; - typedef GLuint (CODEGEN_FUNCPTR *PFNCREATEPROGRAM)(void); - PFNCREATEPROGRAM CreateProgram = 0; - typedef GLuint (CODEGEN_FUNCPTR *PFNCREATESHADER)(GLenum); - PFNCREATESHADER CreateShader = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETEPROGRAM)(GLuint); - PFNDELETEPROGRAM DeleteProgram = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETESHADER)(GLuint); - PFNDELETESHADER DeleteShader = 0; - typedef void (CODEGEN_FUNCPTR *PFNDETACHSHADER)(GLuint, GLuint); - PFNDETACHSHADER DetachShader = 0; - typedef void (CODEGEN_FUNCPTR *PFNDISABLEVERTEXATTRIBARRAY)(GLuint); - PFNDISABLEVERTEXATTRIBARRAY DisableVertexAttribArray = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWBUFFERS)(GLsizei, const GLenum *); - PFNDRAWBUFFERS DrawBuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNENABLEVERTEXATTRIBARRAY)(GLuint); - PFNENABLEVERTEXATTRIBARRAY EnableVertexAttribArray = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEATTRIB)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); - PFNGETACTIVEATTRIB GetActiveAttrib = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORM)(GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); - PFNGETACTIVEUNIFORM GetActiveUniform = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETATTACHEDSHADERS)(GLuint, GLsizei, GLsizei *, GLuint *); - PFNGETATTACHEDSHADERS GetAttachedShaders = 0; - typedef GLint (CODEGEN_FUNCPTR *PFNGETATTRIBLOCATION)(GLuint, const GLchar *); - PFNGETATTRIBLOCATION GetAttribLocation = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETPROGRAMINFOLOG)(GLuint, GLsizei, GLsizei *, GLchar *); - PFNGETPROGRAMINFOLOG GetProgramInfoLog = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETPROGRAMIV)(GLuint, GLenum, GLint *); - PFNGETPROGRAMIV GetProgramiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSHADERINFOLOG)(GLuint, GLsizei, GLsizei *, GLchar *); - PFNGETSHADERINFOLOG GetShaderInfoLog = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSHADERSOURCE)(GLuint, GLsizei, GLsizei *, GLchar *); - PFNGETSHADERSOURCE GetShaderSource = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSHADERIV)(GLuint, GLenum, GLint *); - PFNGETSHADERIV GetShaderiv = 0; - typedef GLint (CODEGEN_FUNCPTR *PFNGETUNIFORMLOCATION)(GLuint, const GLchar *); - PFNGETUNIFORMLOCATION GetUniformLocation = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMFV)(GLuint, GLint, GLfloat *); - PFNGETUNIFORMFV GetUniformfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMIV)(GLuint, GLint, GLint *); - PFNGETUNIFORMIV GetUniformiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBPOINTERV)(GLuint, GLenum, void **); - PFNGETVERTEXATTRIBPOINTERV GetVertexAttribPointerv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBDV)(GLuint, GLenum, GLdouble *); - PFNGETVERTEXATTRIBDV GetVertexAttribdv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBFV)(GLuint, GLenum, GLfloat *); - PFNGETVERTEXATTRIBFV GetVertexAttribfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBIV)(GLuint, GLenum, GLint *); - PFNGETVERTEXATTRIBIV GetVertexAttribiv = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISPROGRAM)(GLuint); - PFNISPROGRAM IsProgram = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISSHADER)(GLuint); - PFNISSHADER IsShader = 0; - typedef void (CODEGEN_FUNCPTR *PFNLINKPROGRAM)(GLuint); - PFNLINKPROGRAM LinkProgram = 0; - typedef void (CODEGEN_FUNCPTR *PFNSHADERSOURCE)(GLuint, GLsizei, const GLchar *const*, const GLint *); - PFNSHADERSOURCE ShaderSource = 0; - typedef void (CODEGEN_FUNCPTR *PFNSTENCILFUNCSEPARATE)(GLenum, GLenum, GLint, GLuint); - PFNSTENCILFUNCSEPARATE StencilFuncSeparate = 0; - typedef void (CODEGEN_FUNCPTR *PFNSTENCILMASKSEPARATE)(GLenum, GLuint); - PFNSTENCILMASKSEPARATE StencilMaskSeparate = 0; - typedef void (CODEGEN_FUNCPTR *PFNSTENCILOPSEPARATE)(GLenum, GLenum, GLenum, GLenum); - PFNSTENCILOPSEPARATE StencilOpSeparate = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1F)(GLint, GLfloat); - PFNUNIFORM1F Uniform1f = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1FV)(GLint, GLsizei, const GLfloat *); - PFNUNIFORM1FV Uniform1fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1I)(GLint, GLint); - PFNUNIFORM1I Uniform1i = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1IV)(GLint, GLsizei, const GLint *); - PFNUNIFORM1IV Uniform1iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2F)(GLint, GLfloat, GLfloat); - PFNUNIFORM2F Uniform2f = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2FV)(GLint, GLsizei, const GLfloat *); - PFNUNIFORM2FV Uniform2fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2I)(GLint, GLint, GLint); - PFNUNIFORM2I Uniform2i = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2IV)(GLint, GLsizei, const GLint *); - PFNUNIFORM2IV Uniform2iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3F)(GLint, GLfloat, GLfloat, GLfloat); - PFNUNIFORM3F Uniform3f = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3FV)(GLint, GLsizei, const GLfloat *); - PFNUNIFORM3FV Uniform3fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3I)(GLint, GLint, GLint, GLint); - PFNUNIFORM3I Uniform3i = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3IV)(GLint, GLsizei, const GLint *); - PFNUNIFORM3IV Uniform3iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4F)(GLint, GLfloat, GLfloat, GLfloat, GLfloat); - PFNUNIFORM4F Uniform4f = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4FV)(GLint, GLsizei, const GLfloat *); - PFNUNIFORM4FV Uniform4fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4I)(GLint, GLint, GLint, GLint, GLint); - PFNUNIFORM4I Uniform4i = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4IV)(GLint, GLsizei, const GLint *); - PFNUNIFORM4IV Uniform4iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX2FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX2FV UniformMatrix2fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX3FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX3FV UniformMatrix3fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX4FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX4FV UniformMatrix4fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUSEPROGRAM)(GLuint); - PFNUSEPROGRAM UseProgram = 0; - typedef void (CODEGEN_FUNCPTR *PFNVALIDATEPROGRAM)(GLuint); - PFNVALIDATEPROGRAM ValidateProgram = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB1D)(GLuint, GLdouble); - PFNVERTEXATTRIB1D VertexAttrib1d = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB1DV)(GLuint, const GLdouble *); - PFNVERTEXATTRIB1DV VertexAttrib1dv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB1F)(GLuint, GLfloat); - PFNVERTEXATTRIB1F VertexAttrib1f = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB1FV)(GLuint, const GLfloat *); - PFNVERTEXATTRIB1FV VertexAttrib1fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB1S)(GLuint, GLshort); - PFNVERTEXATTRIB1S VertexAttrib1s = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB1SV)(GLuint, const GLshort *); - PFNVERTEXATTRIB1SV VertexAttrib1sv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB2D)(GLuint, GLdouble, GLdouble); - PFNVERTEXATTRIB2D VertexAttrib2d = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB2DV)(GLuint, const GLdouble *); - PFNVERTEXATTRIB2DV VertexAttrib2dv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB2F)(GLuint, GLfloat, GLfloat); - PFNVERTEXATTRIB2F VertexAttrib2f = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB2FV)(GLuint, const GLfloat *); - PFNVERTEXATTRIB2FV VertexAttrib2fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB2S)(GLuint, GLshort, GLshort); - PFNVERTEXATTRIB2S VertexAttrib2s = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB2SV)(GLuint, const GLshort *); - PFNVERTEXATTRIB2SV VertexAttrib2sv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB3D)(GLuint, GLdouble, GLdouble, GLdouble); - PFNVERTEXATTRIB3D VertexAttrib3d = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB3DV)(GLuint, const GLdouble *); - PFNVERTEXATTRIB3DV VertexAttrib3dv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB3F)(GLuint, GLfloat, GLfloat, GLfloat); - PFNVERTEXATTRIB3F VertexAttrib3f = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB3FV)(GLuint, const GLfloat *); - PFNVERTEXATTRIB3FV VertexAttrib3fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB3S)(GLuint, GLshort, GLshort, GLshort); - PFNVERTEXATTRIB3S VertexAttrib3s = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB3SV)(GLuint, const GLshort *); - PFNVERTEXATTRIB3SV VertexAttrib3sv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NBV)(GLuint, const GLbyte *); - PFNVERTEXATTRIB4NBV VertexAttrib4Nbv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NIV)(GLuint, const GLint *); - PFNVERTEXATTRIB4NIV VertexAttrib4Niv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NSV)(GLuint, const GLshort *); - PFNVERTEXATTRIB4NSV VertexAttrib4Nsv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NUB)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte); - PFNVERTEXATTRIB4NUB VertexAttrib4Nub = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NUBV)(GLuint, const GLubyte *); - PFNVERTEXATTRIB4NUBV VertexAttrib4Nubv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NUIV)(GLuint, const GLuint *); - PFNVERTEXATTRIB4NUIV VertexAttrib4Nuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4NUSV)(GLuint, const GLushort *); - PFNVERTEXATTRIB4NUSV VertexAttrib4Nusv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4BV)(GLuint, const GLbyte *); - PFNVERTEXATTRIB4BV VertexAttrib4bv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4D)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble); - PFNVERTEXATTRIB4D VertexAttrib4d = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4DV)(GLuint, const GLdouble *); - PFNVERTEXATTRIB4DV VertexAttrib4dv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4F)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); - PFNVERTEXATTRIB4F VertexAttrib4f = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4FV)(GLuint, const GLfloat *); - PFNVERTEXATTRIB4FV VertexAttrib4fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4IV)(GLuint, const GLint *); - PFNVERTEXATTRIB4IV VertexAttrib4iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4S)(GLuint, GLshort, GLshort, GLshort, GLshort); - PFNVERTEXATTRIB4S VertexAttrib4s = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4SV)(GLuint, const GLshort *); - PFNVERTEXATTRIB4SV VertexAttrib4sv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4UBV)(GLuint, const GLubyte *); - PFNVERTEXATTRIB4UBV VertexAttrib4ubv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4UIV)(GLuint, const GLuint *); - PFNVERTEXATTRIB4UIV VertexAttrib4uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIB4USV)(GLuint, const GLushort *); - PFNVERTEXATTRIB4USV VertexAttrib4usv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBPOINTER)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *); - PFNVERTEXATTRIBPOINTER VertexAttribPointer = 0; - - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX2X3FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX2X3FV UniformMatrix2x3fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX2X4FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX2X4FV UniformMatrix2x4fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX3X2FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX3X2FV UniformMatrix3x2fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX3X4FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX3X4FV UniformMatrix3x4fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX4X2FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX4X2FV UniformMatrix4x2fv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX4X3FV)(GLint, GLsizei, GLboolean, const GLfloat *); - PFNUNIFORMMATRIX4X3FV UniformMatrix4x3fv = 0; - - typedef void (CODEGEN_FUNCPTR *PFNBEGINCONDITIONALRENDER)(GLuint, GLenum); - PFNBEGINCONDITIONALRENDER BeginConditionalRender = 0; - typedef void (CODEGEN_FUNCPTR *PFNBEGINTRANSFORMFEEDBACK)(GLenum); - PFNBEGINTRANSFORMFEEDBACK BeginTransformFeedback = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDBUFFERBASE)(GLenum, GLuint, GLuint); - PFNBINDBUFFERBASE BindBufferBase = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDBUFFERRANGE)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); - PFNBINDBUFFERRANGE BindBufferRange = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDFRAGDATALOCATION)(GLuint, GLuint, const GLchar *); - PFNBINDFRAGDATALOCATION BindFragDataLocation = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDFRAMEBUFFER)(GLenum, GLuint); - PFNBINDFRAMEBUFFER BindFramebuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDRENDERBUFFER)(GLenum, GLuint); - PFNBINDRENDERBUFFER BindRenderbuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDVERTEXARRAY)(GLuint); - PFNBINDVERTEXARRAY BindVertexArray = 0; - typedef void (CODEGEN_FUNCPTR *PFNBLITFRAMEBUFFER)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); - PFNBLITFRAMEBUFFER BlitFramebuffer = 0; - typedef GLenum (CODEGEN_FUNCPTR *PFNCHECKFRAMEBUFFERSTATUS)(GLenum); - PFNCHECKFRAMEBUFFERSTATUS CheckFramebufferStatus = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLAMPCOLOR)(GLenum, GLenum); - PFNCLAMPCOLOR ClampColor = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERFI)(GLenum, GLint, GLfloat, GLint); - PFNCLEARBUFFERFI ClearBufferfi = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERFV)(GLenum, GLint, const GLfloat *); - PFNCLEARBUFFERFV ClearBufferfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERIV)(GLenum, GLint, const GLint *); - PFNCLEARBUFFERIV ClearBufferiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERUIV)(GLenum, GLint, const GLuint *); - PFNCLEARBUFFERUIV ClearBufferuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNCOLORMASKI)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); - PFNCOLORMASKI ColorMaski = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETEFRAMEBUFFERS)(GLsizei, const GLuint *); - PFNDELETEFRAMEBUFFERS DeleteFramebuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETERENDERBUFFERS)(GLsizei, const GLuint *); - PFNDELETERENDERBUFFERS DeleteRenderbuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETEVERTEXARRAYS)(GLsizei, const GLuint *); - PFNDELETEVERTEXARRAYS DeleteVertexArrays = 0; - typedef void (CODEGEN_FUNCPTR *PFNDISABLEI)(GLenum, GLuint); - PFNDISABLEI Disablei = 0; - typedef void (CODEGEN_FUNCPTR *PFNENABLEI)(GLenum, GLuint); - PFNENABLEI Enablei = 0; - typedef void (CODEGEN_FUNCPTR *PFNENDCONDITIONALRENDER)(void); - PFNENDCONDITIONALRENDER EndConditionalRender = 0; - typedef void (CODEGEN_FUNCPTR *PFNENDTRANSFORMFEEDBACK)(void); - PFNENDTRANSFORMFEEDBACK EndTransformFeedback = 0; - typedef void (CODEGEN_FUNCPTR *PFNFLUSHMAPPEDBUFFERRANGE)(GLenum, GLintptr, GLsizeiptr); - PFNFLUSHMAPPEDBUFFERRANGE FlushMappedBufferRange = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERRENDERBUFFER)(GLenum, GLenum, GLenum, GLuint); - PFNFRAMEBUFFERRENDERBUFFER FramebufferRenderbuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE1D)(GLenum, GLenum, GLenum, GLuint, GLint); - PFNFRAMEBUFFERTEXTURE1D FramebufferTexture1D = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE2D)(GLenum, GLenum, GLenum, GLuint, GLint); - PFNFRAMEBUFFERTEXTURE2D FramebufferTexture2D = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE3D)(GLenum, GLenum, GLenum, GLuint, GLint, GLint); - PFNFRAMEBUFFERTEXTURE3D FramebufferTexture3D = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURELAYER)(GLenum, GLenum, GLuint, GLint, GLint); - PFNFRAMEBUFFERTEXTURELAYER FramebufferTextureLayer = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENFRAMEBUFFERS)(GLsizei, GLuint *); - PFNGENFRAMEBUFFERS GenFramebuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENRENDERBUFFERS)(GLsizei, GLuint *); - PFNGENRENDERBUFFERS GenRenderbuffers = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENVERTEXARRAYS)(GLsizei, GLuint *); - PFNGENVERTEXARRAYS GenVertexArrays = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENERATEMIPMAP)(GLenum); - PFNGENERATEMIPMAP GenerateMipmap = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETBOOLEANI_V)(GLenum, GLuint, GLboolean *); - PFNGETBOOLEANI_V GetBooleani_v = 0; - typedef GLint (CODEGEN_FUNCPTR *PFNGETFRAGDATALOCATION)(GLuint, const GLchar *); - PFNGETFRAGDATALOCATION GetFragDataLocation = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETFRAMEBUFFERATTACHMENTPARAMETERIV)(GLenum, GLenum, GLenum, GLint *); - PFNGETFRAMEBUFFERATTACHMENTPARAMETERIV GetFramebufferAttachmentParameteriv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETINTEGERI_V)(GLenum, GLuint, GLint *); - PFNGETINTEGERI_V GetIntegeri_v = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETRENDERBUFFERPARAMETERIV)(GLenum, GLenum, GLint *); - PFNGETRENDERBUFFERPARAMETERIV GetRenderbufferParameteriv = 0; - typedef const GLubyte * (CODEGEN_FUNCPTR *PFNGETSTRINGI)(GLenum, GLuint); - PFNGETSTRINGI GetStringi = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERIIV)(GLenum, GLenum, GLint *); - PFNGETTEXPARAMETERIIV GetTexParameterIiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERIUIV)(GLenum, GLenum, GLuint *); - PFNGETTEXPARAMETERIUIV GetTexParameterIuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETTRANSFORMFEEDBACKVARYING)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); - PFNGETTRANSFORMFEEDBACKVARYING GetTransformFeedbackVarying = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMUIV)(GLuint, GLint, GLuint *); - PFNGETUNIFORMUIV GetUniformuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBIIV)(GLuint, GLenum, GLint *); - PFNGETVERTEXATTRIBIIV GetVertexAttribIiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBIUIV)(GLuint, GLenum, GLuint *); - PFNGETVERTEXATTRIBIUIV GetVertexAttribIuiv = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISENABLEDI)(GLenum, GLuint); - PFNISENABLEDI IsEnabledi = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISFRAMEBUFFER)(GLuint); - PFNISFRAMEBUFFER IsFramebuffer = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISRENDERBUFFER)(GLuint); - PFNISRENDERBUFFER IsRenderbuffer = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISVERTEXARRAY)(GLuint); - PFNISVERTEXARRAY IsVertexArray = 0; - typedef void * (CODEGEN_FUNCPTR *PFNMAPBUFFERRANGE)(GLenum, GLintptr, GLsizeiptr, GLbitfield); - PFNMAPBUFFERRANGE MapBufferRange = 0; - typedef void (CODEGEN_FUNCPTR *PFNRENDERBUFFERSTORAGE)(GLenum, GLenum, GLsizei, GLsizei); - PFNRENDERBUFFERSTORAGE RenderbufferStorage = 0; - typedef void (CODEGEN_FUNCPTR *PFNRENDERBUFFERSTORAGEMULTISAMPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); - PFNRENDERBUFFERSTORAGEMULTISAMPLE RenderbufferStorageMultisample = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIIV)(GLenum, GLenum, const GLint *); - PFNTEXPARAMETERIIV TexParameterIiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIUIV)(GLenum, GLenum, const GLuint *); - PFNTEXPARAMETERIUIV TexParameterIuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNTRANSFORMFEEDBACKVARYINGS)(GLuint, GLsizei, const GLchar *const*, GLenum); - PFNTRANSFORMFEEDBACKVARYINGS TransformFeedbackVaryings = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1UI)(GLint, GLuint); - PFNUNIFORM1UI Uniform1ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1UIV)(GLint, GLsizei, const GLuint *); - PFNUNIFORM1UIV Uniform1uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2UI)(GLint, GLuint, GLuint); - PFNUNIFORM2UI Uniform2ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2UIV)(GLint, GLsizei, const GLuint *); - PFNUNIFORM2UIV Uniform2uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3UI)(GLint, GLuint, GLuint, GLuint); - PFNUNIFORM3UI Uniform3ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3UIV)(GLint, GLsizei, const GLuint *); - PFNUNIFORM3UIV Uniform3uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4UI)(GLint, GLuint, GLuint, GLuint, GLuint); - PFNUNIFORM4UI Uniform4ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4UIV)(GLint, GLsizei, const GLuint *); - PFNUNIFORM4UIV Uniform4uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1I)(GLuint, GLint); - PFNVERTEXATTRIBI1I VertexAttribI1i = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1IV)(GLuint, const GLint *); - PFNVERTEXATTRIBI1IV VertexAttribI1iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1UI)(GLuint, GLuint); - PFNVERTEXATTRIBI1UI VertexAttribI1ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1UIV)(GLuint, const GLuint *); - PFNVERTEXATTRIBI1UIV VertexAttribI1uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2I)(GLuint, GLint, GLint); - PFNVERTEXATTRIBI2I VertexAttribI2i = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2IV)(GLuint, const GLint *); - PFNVERTEXATTRIBI2IV VertexAttribI2iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2UI)(GLuint, GLuint, GLuint); - PFNVERTEXATTRIBI2UI VertexAttribI2ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2UIV)(GLuint, const GLuint *); - PFNVERTEXATTRIBI2UIV VertexAttribI2uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3I)(GLuint, GLint, GLint, GLint); - PFNVERTEXATTRIBI3I VertexAttribI3i = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3IV)(GLuint, const GLint *); - PFNVERTEXATTRIBI3IV VertexAttribI3iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3UI)(GLuint, GLuint, GLuint, GLuint); - PFNVERTEXATTRIBI3UI VertexAttribI3ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3UIV)(GLuint, const GLuint *); - PFNVERTEXATTRIBI3UIV VertexAttribI3uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4BV)(GLuint, const GLbyte *); - PFNVERTEXATTRIBI4BV VertexAttribI4bv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4I)(GLuint, GLint, GLint, GLint, GLint); - PFNVERTEXATTRIBI4I VertexAttribI4i = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4IV)(GLuint, const GLint *); - PFNVERTEXATTRIBI4IV VertexAttribI4iv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4SV)(GLuint, const GLshort *); - PFNVERTEXATTRIBI4SV VertexAttribI4sv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4UBV)(GLuint, const GLubyte *); - PFNVERTEXATTRIBI4UBV VertexAttribI4ubv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4UI)(GLuint, GLuint, GLuint, GLuint, GLuint); - PFNVERTEXATTRIBI4UI VertexAttribI4ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4UIV)(GLuint, const GLuint *); - PFNVERTEXATTRIBI4UIV VertexAttribI4uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4USV)(GLuint, const GLushort *); - PFNVERTEXATTRIBI4USV VertexAttribI4usv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBIPOINTER)(GLuint, GLint, GLenum, GLsizei, const void *); - PFNVERTEXATTRIBIPOINTER VertexAttribIPointer = 0; - - typedef void (CODEGEN_FUNCPTR *PFNCOPYBUFFERSUBDATA)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr); - PFNCOPYBUFFERSUBDATA CopyBufferSubData = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWARRAYSINSTANCED)(GLenum, GLint, GLsizei, GLsizei); - PFNDRAWARRAYSINSTANCED DrawArraysInstanced = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWELEMENTSINSTANCED)(GLenum, GLsizei, GLenum, const void *, GLsizei); - PFNDRAWELEMENTSINSTANCED DrawElementsInstanced = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMBLOCKNAME)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *); - PFNGETACTIVEUNIFORMBLOCKNAME GetActiveUniformBlockName = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMBLOCKIV)(GLuint, GLuint, GLenum, GLint *); - PFNGETACTIVEUNIFORMBLOCKIV GetActiveUniformBlockiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMNAME)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *); - PFNGETACTIVEUNIFORMNAME GetActiveUniformName = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMSIV)(GLuint, GLsizei, const GLuint *, GLenum, GLint *); - PFNGETACTIVEUNIFORMSIV GetActiveUniformsiv = 0; - typedef GLuint (CODEGEN_FUNCPTR *PFNGETUNIFORMBLOCKINDEX)(GLuint, const GLchar *); - PFNGETUNIFORMBLOCKINDEX GetUniformBlockIndex = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMINDICES)(GLuint, GLsizei, const GLchar *const*, GLuint *); - PFNGETUNIFORMINDICES GetUniformIndices = 0; - typedef void (CODEGEN_FUNCPTR *PFNPRIMITIVERESTARTINDEX)(GLuint); - PFNPRIMITIVERESTARTINDEX PrimitiveRestartIndex = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXBUFFER)(GLenum, GLenum, GLuint); - PFNTEXBUFFER TexBuffer = 0; - typedef void (CODEGEN_FUNCPTR *PFNUNIFORMBLOCKBINDING)(GLuint, GLuint, GLuint); - PFNUNIFORMBLOCKBINDING UniformBlockBinding = 0; - - typedef GLenum (CODEGEN_FUNCPTR *PFNCLIENTWAITSYNC)(GLsync, GLbitfield, GLuint64); - PFNCLIENTWAITSYNC ClientWaitSync = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETESYNC)(GLsync); - PFNDELETESYNC DeleteSync = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWELEMENTSBASEVERTEX)(GLenum, GLsizei, GLenum, const void *, GLint); - PFNDRAWELEMENTSBASEVERTEX DrawElementsBaseVertex = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWELEMENTSINSTANCEDBASEVERTEX)(GLenum, GLsizei, GLenum, const void *, GLsizei, GLint); - PFNDRAWELEMENTSINSTANCEDBASEVERTEX DrawElementsInstancedBaseVertex = 0; - typedef void (CODEGEN_FUNCPTR *PFNDRAWRANGEELEMENTSBASEVERTEX)(GLenum, GLuint, GLuint, GLsizei, GLenum, const void *, GLint); - PFNDRAWRANGEELEMENTSBASEVERTEX DrawRangeElementsBaseVertex = 0; - typedef GLsync (CODEGEN_FUNCPTR *PFNFENCESYNC)(GLenum, GLbitfield); - PFNFENCESYNC FenceSync = 0; - typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE)(GLenum, GLenum, GLuint, GLint); - PFNFRAMEBUFFERTEXTURE FramebufferTexture = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERPARAMETERI64V)(GLenum, GLenum, GLint64 *); - PFNGETBUFFERPARAMETERI64V GetBufferParameteri64v = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETINTEGER64I_V)(GLenum, GLuint, GLint64 *); - PFNGETINTEGER64I_V GetInteger64i_v = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETINTEGER64V)(GLenum, GLint64 *); - PFNGETINTEGER64V GetInteger64v = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETMULTISAMPLEFV)(GLenum, GLuint, GLfloat *); - PFNGETMULTISAMPLEFV GetMultisamplefv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSYNCIV)(GLsync, GLenum, GLsizei, GLsizei *, GLint *); - PFNGETSYNCIV GetSynciv = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISSYNC)(GLsync); - PFNISSYNC IsSync = 0; - typedef void (CODEGEN_FUNCPTR *PFNMULTIDRAWELEMENTSBASEVERTEX)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei, const GLint *); - PFNMULTIDRAWELEMENTSBASEVERTEX MultiDrawElementsBaseVertex = 0; - typedef void (CODEGEN_FUNCPTR *PFNPROVOKINGVERTEX)(GLenum); - PFNPROVOKINGVERTEX ProvokingVertex = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLEMASKI)(GLuint, GLbitfield); - PFNSAMPLEMASKI SampleMaski = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE2DMULTISAMPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean); - PFNTEXIMAGE2DMULTISAMPLE TexImage2DMultisample = 0; - typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE3DMULTISAMPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean); - PFNTEXIMAGE3DMULTISAMPLE TexImage3DMultisample = 0; - typedef void (CODEGEN_FUNCPTR *PFNWAITSYNC)(GLsync, GLbitfield, GLuint64); - PFNWAITSYNC WaitSync = 0; - - typedef void (CODEGEN_FUNCPTR *PFNBINDFRAGDATALOCATIONINDEXED)(GLuint, GLuint, GLuint, const GLchar *); - PFNBINDFRAGDATALOCATIONINDEXED BindFragDataLocationIndexed = 0; - typedef void (CODEGEN_FUNCPTR *PFNBINDSAMPLER)(GLuint, GLuint); - PFNBINDSAMPLER BindSampler = 0; - typedef void (CODEGEN_FUNCPTR *PFNDELETESAMPLERS)(GLsizei, const GLuint *); - PFNDELETESAMPLERS DeleteSamplers = 0; - typedef void (CODEGEN_FUNCPTR *PFNGENSAMPLERS)(GLsizei, GLuint *); - PFNGENSAMPLERS GenSamplers = 0; - typedef GLint (CODEGEN_FUNCPTR *PFNGETFRAGDATAINDEX)(GLuint, const GLchar *); - PFNGETFRAGDATAINDEX GetFragDataIndex = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETQUERYOBJECTI64V)(GLuint, GLenum, GLint64 *); - PFNGETQUERYOBJECTI64V GetQueryObjecti64v = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETQUERYOBJECTUI64V)(GLuint, GLenum, GLuint64 *); - PFNGETQUERYOBJECTUI64V GetQueryObjectui64v = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSAMPLERPARAMETERIIV)(GLuint, GLenum, GLint *); - PFNGETSAMPLERPARAMETERIIV GetSamplerParameterIiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSAMPLERPARAMETERIUIV)(GLuint, GLenum, GLuint *); - PFNGETSAMPLERPARAMETERIUIV GetSamplerParameterIuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSAMPLERPARAMETERFV)(GLuint, GLenum, GLfloat *); - PFNGETSAMPLERPARAMETERFV GetSamplerParameterfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNGETSAMPLERPARAMETERIV)(GLuint, GLenum, GLint *); - PFNGETSAMPLERPARAMETERIV GetSamplerParameteriv = 0; - typedef GLboolean (CODEGEN_FUNCPTR *PFNISSAMPLER)(GLuint); - PFNISSAMPLER IsSampler = 0; - typedef void (CODEGEN_FUNCPTR *PFNQUERYCOUNTER)(GLuint, GLenum); - PFNQUERYCOUNTER QueryCounter = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLERPARAMETERIIV)(GLuint, GLenum, const GLint *); - PFNSAMPLERPARAMETERIIV SamplerParameterIiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLERPARAMETERIUIV)(GLuint, GLenum, const GLuint *); - PFNSAMPLERPARAMETERIUIV SamplerParameterIuiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLERPARAMETERF)(GLuint, GLenum, GLfloat); - PFNSAMPLERPARAMETERF SamplerParameterf = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLERPARAMETERFV)(GLuint, GLenum, const GLfloat *); - PFNSAMPLERPARAMETERFV SamplerParameterfv = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLERPARAMETERI)(GLuint, GLenum, GLint); - PFNSAMPLERPARAMETERI SamplerParameteri = 0; - typedef void (CODEGEN_FUNCPTR *PFNSAMPLERPARAMETERIV)(GLuint, GLenum, const GLint *); - PFNSAMPLERPARAMETERIV SamplerParameteriv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBDIVISOR)(GLuint, GLuint); - PFNVERTEXATTRIBDIVISOR VertexAttribDivisor = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP1UI)(GLuint, GLenum, GLboolean, GLuint); - PFNVERTEXATTRIBP1UI VertexAttribP1ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP1UIV)(GLuint, GLenum, GLboolean, const GLuint *); - PFNVERTEXATTRIBP1UIV VertexAttribP1uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP2UI)(GLuint, GLenum, GLboolean, GLuint); - PFNVERTEXATTRIBP2UI VertexAttribP2ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP2UIV)(GLuint, GLenum, GLboolean, const GLuint *); - PFNVERTEXATTRIBP2UIV VertexAttribP2uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP3UI)(GLuint, GLenum, GLboolean, GLuint); - PFNVERTEXATTRIBP3UI VertexAttribP3ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP3UIV)(GLuint, GLenum, GLboolean, const GLuint *); - PFNVERTEXATTRIBP3UIV VertexAttribP3uiv = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP4UI)(GLuint, GLenum, GLboolean, GLuint); - PFNVERTEXATTRIBP4UI VertexAttribP4ui = 0; - typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBP4UIV)(GLuint, GLenum, GLboolean, const GLuint *); - PFNVERTEXATTRIBP4UIV VertexAttribP4uiv = 0; - - static int LoadCoreFunctions() + static void * get_proc_address(const char *func) { - int numFailed = 0; - BlendFunc = reinterpret_cast(IntGetProcAddress("glBlendFunc")); - if(!BlendFunc) ++numFailed; - Clear = reinterpret_cast(IntGetProcAddress("glClear")); - if(!Clear) ++numFailed; - ClearColor = reinterpret_cast(IntGetProcAddress("glClearColor")); - if(!ClearColor) ++numFailed; - ClearDepth = reinterpret_cast(IntGetProcAddress("glClearDepth")); - if(!ClearDepth) ++numFailed; - ClearStencil = reinterpret_cast(IntGetProcAddress("glClearStencil")); - if(!ClearStencil) ++numFailed; - ColorMask = reinterpret_cast(IntGetProcAddress("glColorMask")); - if(!ColorMask) ++numFailed; - CullFace = reinterpret_cast(IntGetProcAddress("glCullFace")); - if(!CullFace) ++numFailed; - DepthFunc = reinterpret_cast(IntGetProcAddress("glDepthFunc")); - if(!DepthFunc) ++numFailed; - DepthMask = reinterpret_cast(IntGetProcAddress("glDepthMask")); - if(!DepthMask) ++numFailed; - DepthRange = reinterpret_cast(IntGetProcAddress("glDepthRange")); - if(!DepthRange) ++numFailed; - Disable = reinterpret_cast(IntGetProcAddress("glDisable")); - if(!Disable) ++numFailed; - DrawBuffer = reinterpret_cast(IntGetProcAddress("glDrawBuffer")); - if(!DrawBuffer) ++numFailed; - Enable = reinterpret_cast(IntGetProcAddress("glEnable")); - if(!Enable) ++numFailed; - Finish = reinterpret_cast(IntGetProcAddress("glFinish")); - if(!Finish) ++numFailed; - Flush = reinterpret_cast(IntGetProcAddress("glFlush")); - if(!Flush) ++numFailed; - FrontFace = reinterpret_cast(IntGetProcAddress("glFrontFace")); - if(!FrontFace) ++numFailed; - GetBooleanv = reinterpret_cast(IntGetProcAddress("glGetBooleanv")); - if(!GetBooleanv) ++numFailed; - GetDoublev = reinterpret_cast(IntGetProcAddress("glGetDoublev")); - if(!GetDoublev) ++numFailed; - GetError = reinterpret_cast(IntGetProcAddress("glGetError")); - if(!GetError) ++numFailed; - GetFloatv = reinterpret_cast(IntGetProcAddress("glGetFloatv")); - if(!GetFloatv) ++numFailed; - GetIntegerv = reinterpret_cast(IntGetProcAddress("glGetIntegerv")); - if(!GetIntegerv) ++numFailed; - GetString = reinterpret_cast(IntGetProcAddress("glGetString")); - if(!GetString) ++numFailed; - GetTexImage = reinterpret_cast(IntGetProcAddress("glGetTexImage")); - if(!GetTexImage) ++numFailed; - GetTexLevelParameterfv = reinterpret_cast(IntGetProcAddress("glGetTexLevelParameterfv")); - if(!GetTexLevelParameterfv) ++numFailed; - GetTexLevelParameteriv = reinterpret_cast(IntGetProcAddress("glGetTexLevelParameteriv")); - if(!GetTexLevelParameteriv) ++numFailed; - GetTexParameterfv = reinterpret_cast(IntGetProcAddress("glGetTexParameterfv")); - if(!GetTexParameterfv) ++numFailed; - GetTexParameteriv = reinterpret_cast(IntGetProcAddress("glGetTexParameteriv")); - if(!GetTexParameteriv) ++numFailed; - Hint = reinterpret_cast(IntGetProcAddress("glHint")); - if(!Hint) ++numFailed; - IsEnabled = reinterpret_cast(IntGetProcAddress("glIsEnabled")); - if(!IsEnabled) ++numFailed; - LineWidth = reinterpret_cast(IntGetProcAddress("glLineWidth")); - if(!LineWidth) ++numFailed; - LogicOp = reinterpret_cast(IntGetProcAddress("glLogicOp")); - if(!LogicOp) ++numFailed; - PixelStoref = reinterpret_cast(IntGetProcAddress("glPixelStoref")); - if(!PixelStoref) ++numFailed; - PixelStorei = reinterpret_cast(IntGetProcAddress("glPixelStorei")); - if(!PixelStorei) ++numFailed; - PointSize = reinterpret_cast(IntGetProcAddress("glPointSize")); - if(!PointSize) ++numFailed; - PolygonMode = reinterpret_cast(IntGetProcAddress("glPolygonMode")); - if(!PolygonMode) ++numFailed; - ReadBuffer = reinterpret_cast(IntGetProcAddress("glReadBuffer")); - if(!ReadBuffer) ++numFailed; - ReadPixels = reinterpret_cast(IntGetProcAddress("glReadPixels")); - if(!ReadPixels) ++numFailed; - Scissor = reinterpret_cast(IntGetProcAddress("glScissor")); - if(!Scissor) ++numFailed; - StencilFunc = reinterpret_cast(IntGetProcAddress("glStencilFunc")); - if(!StencilFunc) ++numFailed; - StencilMask = reinterpret_cast(IntGetProcAddress("glStencilMask")); - if(!StencilMask) ++numFailed; - StencilOp = reinterpret_cast(IntGetProcAddress("glStencilOp")); - if(!StencilOp) ++numFailed; - TexImage1D = reinterpret_cast(IntGetProcAddress("glTexImage1D")); - if(!TexImage1D) ++numFailed; - TexImage2D = reinterpret_cast(IntGetProcAddress("glTexImage2D")); - if(!TexImage2D) ++numFailed; - TexParameterf = reinterpret_cast(IntGetProcAddress("glTexParameterf")); - if(!TexParameterf) ++numFailed; - TexParameterfv = reinterpret_cast(IntGetProcAddress("glTexParameterfv")); - if(!TexParameterfv) ++numFailed; - TexParameteri = reinterpret_cast(IntGetProcAddress("glTexParameteri")); - if(!TexParameteri) ++numFailed; - TexParameteriv = reinterpret_cast(IntGetProcAddress("glTexParameteriv")); - if(!TexParameteriv) ++numFailed; - Viewport = reinterpret_cast(IntGetProcAddress("glViewport")); - if(!Viewport) ++numFailed; - BindTexture = reinterpret_cast(IntGetProcAddress("glBindTexture")); - if(!BindTexture) ++numFailed; - CopyTexImage1D = reinterpret_cast(IntGetProcAddress("glCopyTexImage1D")); - if(!CopyTexImage1D) ++numFailed; - CopyTexImage2D = reinterpret_cast(IntGetProcAddress("glCopyTexImage2D")); - if(!CopyTexImage2D) ++numFailed; - CopyTexSubImage1D = reinterpret_cast(IntGetProcAddress("glCopyTexSubImage1D")); - if(!CopyTexSubImage1D) ++numFailed; - CopyTexSubImage2D = reinterpret_cast(IntGetProcAddress("glCopyTexSubImage2D")); - if(!CopyTexSubImage2D) ++numFailed; - DeleteTextures = reinterpret_cast(IntGetProcAddress("glDeleteTextures")); - if(!DeleteTextures) ++numFailed; - DrawArrays = reinterpret_cast(IntGetProcAddress("glDrawArrays")); - if(!DrawArrays) ++numFailed; - DrawElements = reinterpret_cast(IntGetProcAddress("glDrawElements")); - if(!DrawElements) ++numFailed; - GenTextures = reinterpret_cast(IntGetProcAddress("glGenTextures")); - if(!GenTextures) ++numFailed; - IsTexture = reinterpret_cast(IntGetProcAddress("glIsTexture")); - if(!IsTexture) ++numFailed; - PolygonOffset = reinterpret_cast(IntGetProcAddress("glPolygonOffset")); - if(!PolygonOffset) ++numFailed; - TexSubImage1D = reinterpret_cast(IntGetProcAddress("glTexSubImage1D")); - if(!TexSubImage1D) ++numFailed; - TexSubImage2D = reinterpret_cast(IntGetProcAddress("glTexSubImage2D")); - if(!TexSubImage2D) ++numFailed; - CopyTexSubImage3D = reinterpret_cast(IntGetProcAddress("glCopyTexSubImage3D")); - if(!CopyTexSubImage3D) ++numFailed; - DrawRangeElements = reinterpret_cast(IntGetProcAddress("glDrawRangeElements")); - if(!DrawRangeElements) ++numFailed; - TexImage3D = reinterpret_cast(IntGetProcAddress("glTexImage3D")); - if(!TexImage3D) ++numFailed; - TexSubImage3D = reinterpret_cast(IntGetProcAddress("glTexSubImage3D")); - if(!TexSubImage3D) ++numFailed; - ActiveTexture = reinterpret_cast(IntGetProcAddress("glActiveTexture")); - if(!ActiveTexture) ++numFailed; - CompressedTexImage1D = reinterpret_cast(IntGetProcAddress("glCompressedTexImage1D")); - if(!CompressedTexImage1D) ++numFailed; - CompressedTexImage2D = reinterpret_cast(IntGetProcAddress("glCompressedTexImage2D")); - if(!CompressedTexImage2D) ++numFailed; - CompressedTexImage3D = reinterpret_cast(IntGetProcAddress("glCompressedTexImage3D")); - if(!CompressedTexImage3D) ++numFailed; - CompressedTexSubImage1D = reinterpret_cast(IntGetProcAddress("glCompressedTexSubImage1D")); - if(!CompressedTexSubImage1D) ++numFailed; - CompressedTexSubImage2D = reinterpret_cast(IntGetProcAddress("glCompressedTexSubImage2D")); - if(!CompressedTexSubImage2D) ++numFailed; - CompressedTexSubImage3D = reinterpret_cast(IntGetProcAddress("glCompressedTexSubImage3D")); - if(!CompressedTexSubImage3D) ++numFailed; - GetCompressedTexImage = reinterpret_cast(IntGetProcAddress("glGetCompressedTexImage")); - if(!GetCompressedTexImage) ++numFailed; - SampleCoverage = reinterpret_cast(IntGetProcAddress("glSampleCoverage")); - if(!SampleCoverage) ++numFailed; - BlendColor = reinterpret_cast(IntGetProcAddress("glBlendColor")); - if(!BlendColor) ++numFailed; - BlendEquation = reinterpret_cast(IntGetProcAddress("glBlendEquation")); - if(!BlendEquation) ++numFailed; - BlendFuncSeparate = reinterpret_cast(IntGetProcAddress("glBlendFuncSeparate")); - if(!BlendFuncSeparate) ++numFailed; - MultiDrawArrays = reinterpret_cast(IntGetProcAddress("glMultiDrawArrays")); - if(!MultiDrawArrays) ++numFailed; - MultiDrawElements = reinterpret_cast(IntGetProcAddress("glMultiDrawElements")); - if(!MultiDrawElements) ++numFailed; - PointParameterf = reinterpret_cast(IntGetProcAddress("glPointParameterf")); - if(!PointParameterf) ++numFailed; - PointParameterfv = reinterpret_cast(IntGetProcAddress("glPointParameterfv")); - if(!PointParameterfv) ++numFailed; - PointParameteri = reinterpret_cast(IntGetProcAddress("glPointParameteri")); - if(!PointParameteri) ++numFailed; - PointParameteriv = reinterpret_cast(IntGetProcAddress("glPointParameteriv")); - if(!PointParameteriv) ++numFailed; - BeginQuery = reinterpret_cast(IntGetProcAddress("glBeginQuery")); - if(!BeginQuery) ++numFailed; - BindBuffer = reinterpret_cast(IntGetProcAddress("glBindBuffer")); - if(!BindBuffer) ++numFailed; - BufferData = reinterpret_cast(IntGetProcAddress("glBufferData")); - if(!BufferData) ++numFailed; - BufferSubData = reinterpret_cast(IntGetProcAddress("glBufferSubData")); - if(!BufferSubData) ++numFailed; - DeleteBuffers = reinterpret_cast(IntGetProcAddress("glDeleteBuffers")); - if(!DeleteBuffers) ++numFailed; - DeleteQueries = reinterpret_cast(IntGetProcAddress("glDeleteQueries")); - if(!DeleteQueries) ++numFailed; - EndQuery = reinterpret_cast(IntGetProcAddress("glEndQuery")); - if(!EndQuery) ++numFailed; - GenBuffers = reinterpret_cast(IntGetProcAddress("glGenBuffers")); - if(!GenBuffers) ++numFailed; - GenQueries = reinterpret_cast(IntGetProcAddress("glGenQueries")); - if(!GenQueries) ++numFailed; - GetBufferParameteriv = reinterpret_cast(IntGetProcAddress("glGetBufferParameteriv")); - if(!GetBufferParameteriv) ++numFailed; - GetBufferPointerv = reinterpret_cast(IntGetProcAddress("glGetBufferPointerv")); - if(!GetBufferPointerv) ++numFailed; - GetBufferSubData = reinterpret_cast(IntGetProcAddress("glGetBufferSubData")); - if(!GetBufferSubData) ++numFailed; - GetQueryObjectiv = reinterpret_cast(IntGetProcAddress("glGetQueryObjectiv")); - if(!GetQueryObjectiv) ++numFailed; - GetQueryObjectuiv = reinterpret_cast(IntGetProcAddress("glGetQueryObjectuiv")); - if(!GetQueryObjectuiv) ++numFailed; - GetQueryiv = reinterpret_cast(IntGetProcAddress("glGetQueryiv")); - if(!GetQueryiv) ++numFailed; - IsBuffer = reinterpret_cast(IntGetProcAddress("glIsBuffer")); - if(!IsBuffer) ++numFailed; - IsQuery = reinterpret_cast(IntGetProcAddress("glIsQuery")); - if(!IsQuery) ++numFailed; - MapBuffer = reinterpret_cast(IntGetProcAddress("glMapBuffer")); - if(!MapBuffer) ++numFailed; - UnmapBuffer = reinterpret_cast(IntGetProcAddress("glUnmapBuffer")); - if(!UnmapBuffer) ++numFailed; - AttachShader = reinterpret_cast(IntGetProcAddress("glAttachShader")); - if(!AttachShader) ++numFailed; - BindAttribLocation = reinterpret_cast(IntGetProcAddress("glBindAttribLocation")); - if(!BindAttribLocation) ++numFailed; - BlendEquationSeparate = reinterpret_cast(IntGetProcAddress("glBlendEquationSeparate")); - if(!BlendEquationSeparate) ++numFailed; - CompileShader = reinterpret_cast(IntGetProcAddress("glCompileShader")); - if(!CompileShader) ++numFailed; - CreateProgram = reinterpret_cast(IntGetProcAddress("glCreateProgram")); - if(!CreateProgram) ++numFailed; - CreateShader = reinterpret_cast(IntGetProcAddress("glCreateShader")); - if(!CreateShader) ++numFailed; - DeleteProgram = reinterpret_cast(IntGetProcAddress("glDeleteProgram")); - if(!DeleteProgram) ++numFailed; - DeleteShader = reinterpret_cast(IntGetProcAddress("glDeleteShader")); - if(!DeleteShader) ++numFailed; - DetachShader = reinterpret_cast(IntGetProcAddress("glDetachShader")); - if(!DetachShader) ++numFailed; - DisableVertexAttribArray = reinterpret_cast(IntGetProcAddress("glDisableVertexAttribArray")); - if(!DisableVertexAttribArray) ++numFailed; - DrawBuffers = reinterpret_cast(IntGetProcAddress("glDrawBuffers")); - if(!DrawBuffers) ++numFailed; - EnableVertexAttribArray = reinterpret_cast(IntGetProcAddress("glEnableVertexAttribArray")); - if(!EnableVertexAttribArray) ++numFailed; - GetActiveAttrib = reinterpret_cast(IntGetProcAddress("glGetActiveAttrib")); - if(!GetActiveAttrib) ++numFailed; - GetActiveUniform = reinterpret_cast(IntGetProcAddress("glGetActiveUniform")); - if(!GetActiveUniform) ++numFailed; - GetAttachedShaders = reinterpret_cast(IntGetProcAddress("glGetAttachedShaders")); - if(!GetAttachedShaders) ++numFailed; - GetAttribLocation = reinterpret_cast(IntGetProcAddress("glGetAttribLocation")); - if(!GetAttribLocation) ++numFailed; - GetProgramInfoLog = reinterpret_cast(IntGetProcAddress("glGetProgramInfoLog")); - if(!GetProgramInfoLog) ++numFailed; - GetProgramiv = reinterpret_cast(IntGetProcAddress("glGetProgramiv")); - if(!GetProgramiv) ++numFailed; - GetShaderInfoLog = reinterpret_cast(IntGetProcAddress("glGetShaderInfoLog")); - if(!GetShaderInfoLog) ++numFailed; - GetShaderSource = reinterpret_cast(IntGetProcAddress("glGetShaderSource")); - if(!GetShaderSource) ++numFailed; - GetShaderiv = reinterpret_cast(IntGetProcAddress("glGetShaderiv")); - if(!GetShaderiv) ++numFailed; - GetUniformLocation = reinterpret_cast(IntGetProcAddress("glGetUniformLocation")); - if(!GetUniformLocation) ++numFailed; - GetUniformfv = reinterpret_cast(IntGetProcAddress("glGetUniformfv")); - if(!GetUniformfv) ++numFailed; - GetUniformiv = reinterpret_cast(IntGetProcAddress("glGetUniformiv")); - if(!GetUniformiv) ++numFailed; - GetVertexAttribPointerv = reinterpret_cast(IntGetProcAddress("glGetVertexAttribPointerv")); - if(!GetVertexAttribPointerv) ++numFailed; - GetVertexAttribdv = reinterpret_cast(IntGetProcAddress("glGetVertexAttribdv")); - if(!GetVertexAttribdv) ++numFailed; - GetVertexAttribfv = reinterpret_cast(IntGetProcAddress("glGetVertexAttribfv")); - if(!GetVertexAttribfv) ++numFailed; - GetVertexAttribiv = reinterpret_cast(IntGetProcAddress("glGetVertexAttribiv")); - if(!GetVertexAttribiv) ++numFailed; - IsProgram = reinterpret_cast(IntGetProcAddress("glIsProgram")); - if(!IsProgram) ++numFailed; - IsShader = reinterpret_cast(IntGetProcAddress("glIsShader")); - if(!IsShader) ++numFailed; - LinkProgram = reinterpret_cast(IntGetProcAddress("glLinkProgram")); - if(!LinkProgram) ++numFailed; - ShaderSource = reinterpret_cast(IntGetProcAddress("glShaderSource")); - if(!ShaderSource) ++numFailed; - StencilFuncSeparate = reinterpret_cast(IntGetProcAddress("glStencilFuncSeparate")); - if(!StencilFuncSeparate) ++numFailed; - StencilMaskSeparate = reinterpret_cast(IntGetProcAddress("glStencilMaskSeparate")); - if(!StencilMaskSeparate) ++numFailed; - StencilOpSeparate = reinterpret_cast(IntGetProcAddress("glStencilOpSeparate")); - if(!StencilOpSeparate) ++numFailed; - Uniform1f = reinterpret_cast(IntGetProcAddress("glUniform1f")); - if(!Uniform1f) ++numFailed; - Uniform1fv = reinterpret_cast(IntGetProcAddress("glUniform1fv")); - if(!Uniform1fv) ++numFailed; - Uniform1i = reinterpret_cast(IntGetProcAddress("glUniform1i")); - if(!Uniform1i) ++numFailed; - Uniform1iv = reinterpret_cast(IntGetProcAddress("glUniform1iv")); - if(!Uniform1iv) ++numFailed; - Uniform2f = reinterpret_cast(IntGetProcAddress("glUniform2f")); - if(!Uniform2f) ++numFailed; - Uniform2fv = reinterpret_cast(IntGetProcAddress("glUniform2fv")); - if(!Uniform2fv) ++numFailed; - Uniform2i = reinterpret_cast(IntGetProcAddress("glUniform2i")); - if(!Uniform2i) ++numFailed; - Uniform2iv = reinterpret_cast(IntGetProcAddress("glUniform2iv")); - if(!Uniform2iv) ++numFailed; - Uniform3f = reinterpret_cast(IntGetProcAddress("glUniform3f")); - if(!Uniform3f) ++numFailed; - Uniform3fv = reinterpret_cast(IntGetProcAddress("glUniform3fv")); - if(!Uniform3fv) ++numFailed; - Uniform3i = reinterpret_cast(IntGetProcAddress("glUniform3i")); - if(!Uniform3i) ++numFailed; - Uniform3iv = reinterpret_cast(IntGetProcAddress("glUniform3iv")); - if(!Uniform3iv) ++numFailed; - Uniform4f = reinterpret_cast(IntGetProcAddress("glUniform4f")); - if(!Uniform4f) ++numFailed; - Uniform4fv = reinterpret_cast(IntGetProcAddress("glUniform4fv")); - if(!Uniform4fv) ++numFailed; - Uniform4i = reinterpret_cast(IntGetProcAddress("glUniform4i")); - if(!Uniform4i) ++numFailed; - Uniform4iv = reinterpret_cast(IntGetProcAddress("glUniform4iv")); - if(!Uniform4iv) ++numFailed; - UniformMatrix2fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix2fv")); - if(!UniformMatrix2fv) ++numFailed; - UniformMatrix3fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix3fv")); - if(!UniformMatrix3fv) ++numFailed; - UniformMatrix4fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix4fv")); - if(!UniformMatrix4fv) ++numFailed; - UseProgram = reinterpret_cast(IntGetProcAddress("glUseProgram")); - if(!UseProgram) ++numFailed; - ValidateProgram = reinterpret_cast(IntGetProcAddress("glValidateProgram")); - if(!ValidateProgram) ++numFailed; - VertexAttrib1d = reinterpret_cast(IntGetProcAddress("glVertexAttrib1d")); - if(!VertexAttrib1d) ++numFailed; - VertexAttrib1dv = reinterpret_cast(IntGetProcAddress("glVertexAttrib1dv")); - if(!VertexAttrib1dv) ++numFailed; - VertexAttrib1f = reinterpret_cast(IntGetProcAddress("glVertexAttrib1f")); - if(!VertexAttrib1f) ++numFailed; - VertexAttrib1fv = reinterpret_cast(IntGetProcAddress("glVertexAttrib1fv")); - if(!VertexAttrib1fv) ++numFailed; - VertexAttrib1s = reinterpret_cast(IntGetProcAddress("glVertexAttrib1s")); - if(!VertexAttrib1s) ++numFailed; - VertexAttrib1sv = reinterpret_cast(IntGetProcAddress("glVertexAttrib1sv")); - if(!VertexAttrib1sv) ++numFailed; - VertexAttrib2d = reinterpret_cast(IntGetProcAddress("glVertexAttrib2d")); - if(!VertexAttrib2d) ++numFailed; - VertexAttrib2dv = reinterpret_cast(IntGetProcAddress("glVertexAttrib2dv")); - if(!VertexAttrib2dv) ++numFailed; - VertexAttrib2f = reinterpret_cast(IntGetProcAddress("glVertexAttrib2f")); - if(!VertexAttrib2f) ++numFailed; - VertexAttrib2fv = reinterpret_cast(IntGetProcAddress("glVertexAttrib2fv")); - if(!VertexAttrib2fv) ++numFailed; - VertexAttrib2s = reinterpret_cast(IntGetProcAddress("glVertexAttrib2s")); - if(!VertexAttrib2s) ++numFailed; - VertexAttrib2sv = reinterpret_cast(IntGetProcAddress("glVertexAttrib2sv")); - if(!VertexAttrib2sv) ++numFailed; - VertexAttrib3d = reinterpret_cast(IntGetProcAddress("glVertexAttrib3d")); - if(!VertexAttrib3d) ++numFailed; - VertexAttrib3dv = reinterpret_cast(IntGetProcAddress("glVertexAttrib3dv")); - if(!VertexAttrib3dv) ++numFailed; - VertexAttrib3f = reinterpret_cast(IntGetProcAddress("glVertexAttrib3f")); - if(!VertexAttrib3f) ++numFailed; - VertexAttrib3fv = reinterpret_cast(IntGetProcAddress("glVertexAttrib3fv")); - if(!VertexAttrib3fv) ++numFailed; - VertexAttrib3s = reinterpret_cast(IntGetProcAddress("glVertexAttrib3s")); - if(!VertexAttrib3s) ++numFailed; - VertexAttrib3sv = reinterpret_cast(IntGetProcAddress("glVertexAttrib3sv")); - if(!VertexAttrib3sv) ++numFailed; - VertexAttrib4Nbv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Nbv")); - if(!VertexAttrib4Nbv) ++numFailed; - VertexAttrib4Niv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Niv")); - if(!VertexAttrib4Niv) ++numFailed; - VertexAttrib4Nsv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Nsv")); - if(!VertexAttrib4Nsv) ++numFailed; - VertexAttrib4Nub = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Nub")); - if(!VertexAttrib4Nub) ++numFailed; - VertexAttrib4Nubv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Nubv")); - if(!VertexAttrib4Nubv) ++numFailed; - VertexAttrib4Nuiv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Nuiv")); - if(!VertexAttrib4Nuiv) ++numFailed; - VertexAttrib4Nusv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4Nusv")); - if(!VertexAttrib4Nusv) ++numFailed; - VertexAttrib4bv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4bv")); - if(!VertexAttrib4bv) ++numFailed; - VertexAttrib4d = reinterpret_cast(IntGetProcAddress("glVertexAttrib4d")); - if(!VertexAttrib4d) ++numFailed; - VertexAttrib4dv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4dv")); - if(!VertexAttrib4dv) ++numFailed; - VertexAttrib4f = reinterpret_cast(IntGetProcAddress("glVertexAttrib4f")); - if(!VertexAttrib4f) ++numFailed; - VertexAttrib4fv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4fv")); - if(!VertexAttrib4fv) ++numFailed; - VertexAttrib4iv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4iv")); - if(!VertexAttrib4iv) ++numFailed; - VertexAttrib4s = reinterpret_cast(IntGetProcAddress("glVertexAttrib4s")); - if(!VertexAttrib4s) ++numFailed; - VertexAttrib4sv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4sv")); - if(!VertexAttrib4sv) ++numFailed; - VertexAttrib4ubv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4ubv")); - if(!VertexAttrib4ubv) ++numFailed; - VertexAttrib4uiv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4uiv")); - if(!VertexAttrib4uiv) ++numFailed; - VertexAttrib4usv = reinterpret_cast(IntGetProcAddress("glVertexAttrib4usv")); - if(!VertexAttrib4usv) ++numFailed; - VertexAttribPointer = reinterpret_cast(IntGetProcAddress("glVertexAttribPointer")); - if(!VertexAttribPointer) ++numFailed; - UniformMatrix2x3fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix2x3fv")); - if(!UniformMatrix2x3fv) ++numFailed; - UniformMatrix2x4fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix2x4fv")); - if(!UniformMatrix2x4fv) ++numFailed; - UniformMatrix3x2fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix3x2fv")); - if(!UniformMatrix3x2fv) ++numFailed; - UniformMatrix3x4fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix3x4fv")); - if(!UniformMatrix3x4fv) ++numFailed; - UniformMatrix4x2fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix4x2fv")); - if(!UniformMatrix4x2fv) ++numFailed; - UniformMatrix4x3fv = reinterpret_cast(IntGetProcAddress("glUniformMatrix4x3fv")); - if(!UniformMatrix4x3fv) ++numFailed; - BeginConditionalRender = reinterpret_cast(IntGetProcAddress("glBeginConditionalRender")); - if(!BeginConditionalRender) ++numFailed; - BeginTransformFeedback = reinterpret_cast(IntGetProcAddress("glBeginTransformFeedback")); - if(!BeginTransformFeedback) ++numFailed; - BindBufferBase = reinterpret_cast(IntGetProcAddress("glBindBufferBase")); - if(!BindBufferBase) ++numFailed; - BindBufferRange = reinterpret_cast(IntGetProcAddress("glBindBufferRange")); - if(!BindBufferRange) ++numFailed; - BindFragDataLocation = reinterpret_cast(IntGetProcAddress("glBindFragDataLocation")); - if(!BindFragDataLocation) ++numFailed; - BindFramebuffer = reinterpret_cast(IntGetProcAddress("glBindFramebuffer")); - if(!BindFramebuffer) ++numFailed; - BindRenderbuffer = reinterpret_cast(IntGetProcAddress("glBindRenderbuffer")); - if(!BindRenderbuffer) ++numFailed; - BindVertexArray = reinterpret_cast(IntGetProcAddress("glBindVertexArray")); - if(!BindVertexArray) ++numFailed; - BlitFramebuffer = reinterpret_cast(IntGetProcAddress("glBlitFramebuffer")); - if(!BlitFramebuffer) ++numFailed; - CheckFramebufferStatus = reinterpret_cast(IntGetProcAddress("glCheckFramebufferStatus")); - if(!CheckFramebufferStatus) ++numFailed; - ClampColor = reinterpret_cast(IntGetProcAddress("glClampColor")); - if(!ClampColor) ++numFailed; - ClearBufferfi = reinterpret_cast(IntGetProcAddress("glClearBufferfi")); - if(!ClearBufferfi) ++numFailed; - ClearBufferfv = reinterpret_cast(IntGetProcAddress("glClearBufferfv")); - if(!ClearBufferfv) ++numFailed; - ClearBufferiv = reinterpret_cast(IntGetProcAddress("glClearBufferiv")); - if(!ClearBufferiv) ++numFailed; - ClearBufferuiv = reinterpret_cast(IntGetProcAddress("glClearBufferuiv")); - if(!ClearBufferuiv) ++numFailed; - ColorMaski = reinterpret_cast(IntGetProcAddress("glColorMaski")); - if(!ColorMaski) ++numFailed; - DeleteFramebuffers = reinterpret_cast(IntGetProcAddress("glDeleteFramebuffers")); - if(!DeleteFramebuffers) ++numFailed; - DeleteRenderbuffers = reinterpret_cast(IntGetProcAddress("glDeleteRenderbuffers")); - if(!DeleteRenderbuffers) ++numFailed; - DeleteVertexArrays = reinterpret_cast(IntGetProcAddress("glDeleteVertexArrays")); - if(!DeleteVertexArrays) ++numFailed; - Disablei = reinterpret_cast(IntGetProcAddress("glDisablei")); - if(!Disablei) ++numFailed; - Enablei = reinterpret_cast(IntGetProcAddress("glEnablei")); - if(!Enablei) ++numFailed; - EndConditionalRender = reinterpret_cast(IntGetProcAddress("glEndConditionalRender")); - if(!EndConditionalRender) ++numFailed; - EndTransformFeedback = reinterpret_cast(IntGetProcAddress("glEndTransformFeedback")); - if(!EndTransformFeedback) ++numFailed; - FlushMappedBufferRange = reinterpret_cast(IntGetProcAddress("glFlushMappedBufferRange")); - if(!FlushMappedBufferRange) ++numFailed; - FramebufferRenderbuffer = reinterpret_cast(IntGetProcAddress("glFramebufferRenderbuffer")); - if(!FramebufferRenderbuffer) ++numFailed; - FramebufferTexture1D = reinterpret_cast(IntGetProcAddress("glFramebufferTexture1D")); - if(!FramebufferTexture1D) ++numFailed; - FramebufferTexture2D = reinterpret_cast(IntGetProcAddress("glFramebufferTexture2D")); - if(!FramebufferTexture2D) ++numFailed; - FramebufferTexture3D = reinterpret_cast(IntGetProcAddress("glFramebufferTexture3D")); - if(!FramebufferTexture3D) ++numFailed; - FramebufferTextureLayer = reinterpret_cast(IntGetProcAddress("glFramebufferTextureLayer")); - if(!FramebufferTextureLayer) ++numFailed; - GenFramebuffers = reinterpret_cast(IntGetProcAddress("glGenFramebuffers")); - if(!GenFramebuffers) ++numFailed; - GenRenderbuffers = reinterpret_cast(IntGetProcAddress("glGenRenderbuffers")); - if(!GenRenderbuffers) ++numFailed; - GenVertexArrays = reinterpret_cast(IntGetProcAddress("glGenVertexArrays")); - if(!GenVertexArrays) ++numFailed; - GenerateMipmap = reinterpret_cast(IntGetProcAddress("glGenerateMipmap")); - if(!GenerateMipmap) ++numFailed; - GetBooleani_v = reinterpret_cast(IntGetProcAddress("glGetBooleani_v")); - if(!GetBooleani_v) ++numFailed; - GetFragDataLocation = reinterpret_cast(IntGetProcAddress("glGetFragDataLocation")); - if(!GetFragDataLocation) ++numFailed; - GetFramebufferAttachmentParameteriv = reinterpret_cast(IntGetProcAddress("glGetFramebufferAttachmentParameteriv")); - if(!GetFramebufferAttachmentParameteriv) ++numFailed; - GetIntegeri_v = reinterpret_cast(IntGetProcAddress("glGetIntegeri_v")); - if(!GetIntegeri_v) ++numFailed; - GetRenderbufferParameteriv = reinterpret_cast(IntGetProcAddress("glGetRenderbufferParameteriv")); - if(!GetRenderbufferParameteriv) ++numFailed; - GetStringi = reinterpret_cast(IntGetProcAddress("glGetStringi")); - if(!GetStringi) ++numFailed; - GetTexParameterIiv = reinterpret_cast(IntGetProcAddress("glGetTexParameterIiv")); - if(!GetTexParameterIiv) ++numFailed; - GetTexParameterIuiv = reinterpret_cast(IntGetProcAddress("glGetTexParameterIuiv")); - if(!GetTexParameterIuiv) ++numFailed; - GetTransformFeedbackVarying = reinterpret_cast(IntGetProcAddress("glGetTransformFeedbackVarying")); - if(!GetTransformFeedbackVarying) ++numFailed; - GetUniformuiv = reinterpret_cast(IntGetProcAddress("glGetUniformuiv")); - if(!GetUniformuiv) ++numFailed; - GetVertexAttribIiv = reinterpret_cast(IntGetProcAddress("glGetVertexAttribIiv")); - if(!GetVertexAttribIiv) ++numFailed; - GetVertexAttribIuiv = reinterpret_cast(IntGetProcAddress("glGetVertexAttribIuiv")); - if(!GetVertexAttribIuiv) ++numFailed; - IsEnabledi = reinterpret_cast(IntGetProcAddress("glIsEnabledi")); - if(!IsEnabledi) ++numFailed; - IsFramebuffer = reinterpret_cast(IntGetProcAddress("glIsFramebuffer")); - if(!IsFramebuffer) ++numFailed; - IsRenderbuffer = reinterpret_cast(IntGetProcAddress("glIsRenderbuffer")); - if(!IsRenderbuffer) ++numFailed; - IsVertexArray = reinterpret_cast(IntGetProcAddress("glIsVertexArray")); - if(!IsVertexArray) ++numFailed; - MapBufferRange = reinterpret_cast(IntGetProcAddress("glMapBufferRange")); - if(!MapBufferRange) ++numFailed; - RenderbufferStorage = reinterpret_cast(IntGetProcAddress("glRenderbufferStorage")); - if(!RenderbufferStorage) ++numFailed; - RenderbufferStorageMultisample = reinterpret_cast(IntGetProcAddress("glRenderbufferStorageMultisample")); - if(!RenderbufferStorageMultisample) ++numFailed; - TexParameterIiv = reinterpret_cast(IntGetProcAddress("glTexParameterIiv")); - if(!TexParameterIiv) ++numFailed; - TexParameterIuiv = reinterpret_cast(IntGetProcAddress("glTexParameterIuiv")); - if(!TexParameterIuiv) ++numFailed; - TransformFeedbackVaryings = reinterpret_cast(IntGetProcAddress("glTransformFeedbackVaryings")); - if(!TransformFeedbackVaryings) ++numFailed; - Uniform1ui = reinterpret_cast(IntGetProcAddress("glUniform1ui")); - if(!Uniform1ui) ++numFailed; - Uniform1uiv = reinterpret_cast(IntGetProcAddress("glUniform1uiv")); - if(!Uniform1uiv) ++numFailed; - Uniform2ui = reinterpret_cast(IntGetProcAddress("glUniform2ui")); - if(!Uniform2ui) ++numFailed; - Uniform2uiv = reinterpret_cast(IntGetProcAddress("glUniform2uiv")); - if(!Uniform2uiv) ++numFailed; - Uniform3ui = reinterpret_cast(IntGetProcAddress("glUniform3ui")); - if(!Uniform3ui) ++numFailed; - Uniform3uiv = reinterpret_cast(IntGetProcAddress("glUniform3uiv")); - if(!Uniform3uiv) ++numFailed; - Uniform4ui = reinterpret_cast(IntGetProcAddress("glUniform4ui")); - if(!Uniform4ui) ++numFailed; - Uniform4uiv = reinterpret_cast(IntGetProcAddress("glUniform4uiv")); - if(!Uniform4uiv) ++numFailed; - VertexAttribI1i = reinterpret_cast(IntGetProcAddress("glVertexAttribI1i")); - if(!VertexAttribI1i) ++numFailed; - VertexAttribI1iv = reinterpret_cast(IntGetProcAddress("glVertexAttribI1iv")); - if(!VertexAttribI1iv) ++numFailed; - VertexAttribI1ui = reinterpret_cast(IntGetProcAddress("glVertexAttribI1ui")); - if(!VertexAttribI1ui) ++numFailed; - VertexAttribI1uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribI1uiv")); - if(!VertexAttribI1uiv) ++numFailed; - VertexAttribI2i = reinterpret_cast(IntGetProcAddress("glVertexAttribI2i")); - if(!VertexAttribI2i) ++numFailed; - VertexAttribI2iv = reinterpret_cast(IntGetProcAddress("glVertexAttribI2iv")); - if(!VertexAttribI2iv) ++numFailed; - VertexAttribI2ui = reinterpret_cast(IntGetProcAddress("glVertexAttribI2ui")); - if(!VertexAttribI2ui) ++numFailed; - VertexAttribI2uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribI2uiv")); - if(!VertexAttribI2uiv) ++numFailed; - VertexAttribI3i = reinterpret_cast(IntGetProcAddress("glVertexAttribI3i")); - if(!VertexAttribI3i) ++numFailed; - VertexAttribI3iv = reinterpret_cast(IntGetProcAddress("glVertexAttribI3iv")); - if(!VertexAttribI3iv) ++numFailed; - VertexAttribI3ui = reinterpret_cast(IntGetProcAddress("glVertexAttribI3ui")); - if(!VertexAttribI3ui) ++numFailed; - VertexAttribI3uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribI3uiv")); - if(!VertexAttribI3uiv) ++numFailed; - VertexAttribI4bv = reinterpret_cast(IntGetProcAddress("glVertexAttribI4bv")); - if(!VertexAttribI4bv) ++numFailed; - VertexAttribI4i = reinterpret_cast(IntGetProcAddress("glVertexAttribI4i")); - if(!VertexAttribI4i) ++numFailed; - VertexAttribI4iv = reinterpret_cast(IntGetProcAddress("glVertexAttribI4iv")); - if(!VertexAttribI4iv) ++numFailed; - VertexAttribI4sv = reinterpret_cast(IntGetProcAddress("glVertexAttribI4sv")); - if(!VertexAttribI4sv) ++numFailed; - VertexAttribI4ubv = reinterpret_cast(IntGetProcAddress("glVertexAttribI4ubv")); - if(!VertexAttribI4ubv) ++numFailed; - VertexAttribI4ui = reinterpret_cast(IntGetProcAddress("glVertexAttribI4ui")); - if(!VertexAttribI4ui) ++numFailed; - VertexAttribI4uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribI4uiv")); - if(!VertexAttribI4uiv) ++numFailed; - VertexAttribI4usv = reinterpret_cast(IntGetProcAddress("glVertexAttribI4usv")); - if(!VertexAttribI4usv) ++numFailed; - VertexAttribIPointer = reinterpret_cast(IntGetProcAddress("glVertexAttribIPointer")); - if(!VertexAttribIPointer) ++numFailed; - CopyBufferSubData = reinterpret_cast(IntGetProcAddress("glCopyBufferSubData")); - if(!CopyBufferSubData) ++numFailed; - DrawArraysInstanced = reinterpret_cast(IntGetProcAddress("glDrawArraysInstanced")); - if(!DrawArraysInstanced) ++numFailed; - DrawElementsInstanced = reinterpret_cast(IntGetProcAddress("glDrawElementsInstanced")); - if(!DrawElementsInstanced) ++numFailed; - GetActiveUniformBlockName = reinterpret_cast(IntGetProcAddress("glGetActiveUniformBlockName")); - if(!GetActiveUniformBlockName) ++numFailed; - GetActiveUniformBlockiv = reinterpret_cast(IntGetProcAddress("glGetActiveUniformBlockiv")); - if(!GetActiveUniformBlockiv) ++numFailed; - GetActiveUniformName = reinterpret_cast(IntGetProcAddress("glGetActiveUniformName")); - if(!GetActiveUniformName) ++numFailed; - GetActiveUniformsiv = reinterpret_cast(IntGetProcAddress("glGetActiveUniformsiv")); - if(!GetActiveUniformsiv) ++numFailed; - GetUniformBlockIndex = reinterpret_cast(IntGetProcAddress("glGetUniformBlockIndex")); - if(!GetUniformBlockIndex) ++numFailed; - GetUniformIndices = reinterpret_cast(IntGetProcAddress("glGetUniformIndices")); - if(!GetUniformIndices) ++numFailed; - PrimitiveRestartIndex = reinterpret_cast(IntGetProcAddress("glPrimitiveRestartIndex")); - if(!PrimitiveRestartIndex) ++numFailed; - TexBuffer = reinterpret_cast(IntGetProcAddress("glTexBuffer")); - if(!TexBuffer) ++numFailed; - UniformBlockBinding = reinterpret_cast(IntGetProcAddress("glUniformBlockBinding")); - if(!UniformBlockBinding) ++numFailed; - ClientWaitSync = reinterpret_cast(IntGetProcAddress("glClientWaitSync")); - if(!ClientWaitSync) ++numFailed; - DeleteSync = reinterpret_cast(IntGetProcAddress("glDeleteSync")); - if(!DeleteSync) ++numFailed; - DrawElementsBaseVertex = reinterpret_cast(IntGetProcAddress("glDrawElementsBaseVertex")); - if(!DrawElementsBaseVertex) ++numFailed; - DrawElementsInstancedBaseVertex = reinterpret_cast(IntGetProcAddress("glDrawElementsInstancedBaseVertex")); - if(!DrawElementsInstancedBaseVertex) ++numFailed; - DrawRangeElementsBaseVertex = reinterpret_cast(IntGetProcAddress("glDrawRangeElementsBaseVertex")); - if(!DrawRangeElementsBaseVertex) ++numFailed; - FenceSync = reinterpret_cast(IntGetProcAddress("glFenceSync")); - if(!FenceSync) ++numFailed; - FramebufferTexture = reinterpret_cast(IntGetProcAddress("glFramebufferTexture")); - if(!FramebufferTexture) ++numFailed; - GetBufferParameteri64v = reinterpret_cast(IntGetProcAddress("glGetBufferParameteri64v")); - if(!GetBufferParameteri64v) ++numFailed; - GetInteger64i_v = reinterpret_cast(IntGetProcAddress("glGetInteger64i_v")); - if(!GetInteger64i_v) ++numFailed; - GetInteger64v = reinterpret_cast(IntGetProcAddress("glGetInteger64v")); - if(!GetInteger64v) ++numFailed; - GetMultisamplefv = reinterpret_cast(IntGetProcAddress("glGetMultisamplefv")); - if(!GetMultisamplefv) ++numFailed; - GetSynciv = reinterpret_cast(IntGetProcAddress("glGetSynciv")); - if(!GetSynciv) ++numFailed; - IsSync = reinterpret_cast(IntGetProcAddress("glIsSync")); - if(!IsSync) ++numFailed; - MultiDrawElementsBaseVertex = reinterpret_cast(IntGetProcAddress("glMultiDrawElementsBaseVertex")); - if(!MultiDrawElementsBaseVertex) ++numFailed; - ProvokingVertex = reinterpret_cast(IntGetProcAddress("glProvokingVertex")); - if(!ProvokingVertex) ++numFailed; - SampleMaski = reinterpret_cast(IntGetProcAddress("glSampleMaski")); - if(!SampleMaski) ++numFailed; - TexImage2DMultisample = reinterpret_cast(IntGetProcAddress("glTexImage2DMultisample")); - if(!TexImage2DMultisample) ++numFailed; - TexImage3DMultisample = reinterpret_cast(IntGetProcAddress("glTexImage3DMultisample")); - if(!TexImage3DMultisample) ++numFailed; - WaitSync = reinterpret_cast(IntGetProcAddress("glWaitSync")); - if(!WaitSync) ++numFailed; - BindFragDataLocationIndexed = reinterpret_cast(IntGetProcAddress("glBindFragDataLocationIndexed")); - if(!BindFragDataLocationIndexed) ++numFailed; - BindSampler = reinterpret_cast(IntGetProcAddress("glBindSampler")); - if(!BindSampler) ++numFailed; - DeleteSamplers = reinterpret_cast(IntGetProcAddress("glDeleteSamplers")); - if(!DeleteSamplers) ++numFailed; - GenSamplers = reinterpret_cast(IntGetProcAddress("glGenSamplers")); - if(!GenSamplers) ++numFailed; - GetFragDataIndex = reinterpret_cast(IntGetProcAddress("glGetFragDataIndex")); - if(!GetFragDataIndex) ++numFailed; - GetQueryObjecti64v = reinterpret_cast(IntGetProcAddress("glGetQueryObjecti64v")); - if(!GetQueryObjecti64v) ++numFailed; - GetQueryObjectui64v = reinterpret_cast(IntGetProcAddress("glGetQueryObjectui64v")); - if(!GetQueryObjectui64v) ++numFailed; - GetSamplerParameterIiv = reinterpret_cast(IntGetProcAddress("glGetSamplerParameterIiv")); - if(!GetSamplerParameterIiv) ++numFailed; - GetSamplerParameterIuiv = reinterpret_cast(IntGetProcAddress("glGetSamplerParameterIuiv")); - if(!GetSamplerParameterIuiv) ++numFailed; - GetSamplerParameterfv = reinterpret_cast(IntGetProcAddress("glGetSamplerParameterfv")); - if(!GetSamplerParameterfv) ++numFailed; - GetSamplerParameteriv = reinterpret_cast(IntGetProcAddress("glGetSamplerParameteriv")); - if(!GetSamplerParameteriv) ++numFailed; - IsSampler = reinterpret_cast(IntGetProcAddress("glIsSampler")); - if(!IsSampler) ++numFailed; - QueryCounter = reinterpret_cast(IntGetProcAddress("glQueryCounter")); - if(!QueryCounter) ++numFailed; - SamplerParameterIiv = reinterpret_cast(IntGetProcAddress("glSamplerParameterIiv")); - if(!SamplerParameterIiv) ++numFailed; - SamplerParameterIuiv = reinterpret_cast(IntGetProcAddress("glSamplerParameterIuiv")); - if(!SamplerParameterIuiv) ++numFailed; - SamplerParameterf = reinterpret_cast(IntGetProcAddress("glSamplerParameterf")); - if(!SamplerParameterf) ++numFailed; - SamplerParameterfv = reinterpret_cast(IntGetProcAddress("glSamplerParameterfv")); - if(!SamplerParameterfv) ++numFailed; - SamplerParameteri = reinterpret_cast(IntGetProcAddress("glSamplerParameteri")); - if(!SamplerParameteri) ++numFailed; - SamplerParameteriv = reinterpret_cast(IntGetProcAddress("glSamplerParameteriv")); - if(!SamplerParameteriv) ++numFailed; - VertexAttribDivisor = reinterpret_cast(IntGetProcAddress("glVertexAttribDivisor")); - if(!VertexAttribDivisor) ++numFailed; - VertexAttribP1ui = reinterpret_cast(IntGetProcAddress("glVertexAttribP1ui")); - if(!VertexAttribP1ui) ++numFailed; - VertexAttribP1uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribP1uiv")); - if(!VertexAttribP1uiv) ++numFailed; - VertexAttribP2ui = reinterpret_cast(IntGetProcAddress("glVertexAttribP2ui")); - if(!VertexAttribP2ui) ++numFailed; - VertexAttribP2uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribP2uiv")); - if(!VertexAttribP2uiv) ++numFailed; - VertexAttribP3ui = reinterpret_cast(IntGetProcAddress("glVertexAttribP3ui")); - if(!VertexAttribP3ui) ++numFailed; - VertexAttribP3uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribP3uiv")); - if(!VertexAttribP3uiv) ++numFailed; - VertexAttribP4ui = reinterpret_cast(IntGetProcAddress("glVertexAttribP4ui")); - if(!VertexAttribP4ui) ++numFailed; - VertexAttribP4uiv = reinterpret_cast(IntGetProcAddress("glVertexAttribP4uiv")); - if(!VertexAttribP4uiv) ++numFailed; - return numFailed; + static void * image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); + + if (!image) return nullptr; + + return dlsym(image, func); } - } //namespace _detail - + #elif defined(__sgi) || defined (__sun) + + static void * get_proc_address(const char *func) + { + static void * image = dlopen(nullptr, RTLD_LAZY | RTLD_LOCAL); + static void * gpa = image ? dlsym(image, "glXGetProcAddress") : nullptr; + + if (gpa) + return reinterpret_cast(gpa)(reinterpret_cast(name)); + else + return dlsym(image, name); + } + + #elif defined(_WIN32) + + #ifdef _MSC_VER + #pragma warning(disable: 4055) + #pragma warning(disable: 4054) + #pragma warning(disable: 4996) + #endif + + static int test_pointer(const PROC pTest) + { + ptrdiff_t iTest; + if(!pTest) return 0; + iTest = (ptrdiff_t)pTest; + + if(iTest == 1 || iTest == 2 || iTest == 3 || iTest == -1) return 0; + + return 1; + } + + static void * get_proc_address(const char *name) + { + static HMODULE glMod = GetModuleHandleA("opengl32.dll"); + + PROC pFunc = wglGetProcAddress(reinterpret_cast(name)); + if(TestPointer(pFunc)) + { + return reinterpret_cast(pFunc); + } + + return reinterpret_castGetProcAddress(glMod, reinterpret_cast(name)); + } + + #else // GLX + + static void * get_proc_address(const char *func) + { + return reinterpret_cast(glXGetProcAddress(reinterpret_cast(func))); + } + + #endif + + // OpenGL 1.0 + + void (*glCullFace)(GLenum mode) = nullptr; + void (*glFrontFace)(GLenum mode) = nullptr; + void (*glHint)(GLenum target, GLenum mode) = nullptr; + void (*glLineWidth)(GLfloat width) = nullptr; + void (*glPointSize)(GLfloat size) = nullptr; + void (*glPolygonMode)(GLenum face, GLenum mode) = nullptr; + void (*glScissor)(GLint x, GLint y, GLsizei width, GLsizei height) = nullptr; + void (*glTexParameterf)(GLenum target, GLenum pname, GLfloat param) = nullptr; + void (*glTexParameterfv)(GLenum target, GLenum pname, const GLfloat *params) = nullptr; + void (*glTexParameteri)(GLenum target, GLenum pname, GLint param) = nullptr; + void (*glTexParameteriv)(GLenum target, GLenum pname, const GLint *params) = nullptr; + void (*glTexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels) = nullptr; + void (*glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) = nullptr; + void (*glDrawBuffer)(GLenum buf) = nullptr; + void (*glClear)(GLbitfield mask) = nullptr; + void (*glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) = nullptr; + void (*glClearStencil)(GLint s) = nullptr; + void (*glClearDepth)(GLdouble depth) = nullptr; + void (*glStencilMask)(GLuint mask) = nullptr; + void (*glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = nullptr; + void (*glDepthMask)(GLboolean flag) = nullptr; + void (*glDisable)(GLenum cap) = nullptr; + void (*glEnable)(GLenum cap) = nullptr; + void (*glFinish)() = nullptr; + void (*glFlush)() = nullptr; + void (*glBlendFunc)(GLenum sfactor, GLenum dfactor) = nullptr; + void (*glLogicOp)(GLenum opcode) = nullptr; + void (*glStencilFunc)(GLenum func, GLint ref, GLuint mask) = nullptr; + void (*glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass) = nullptr; + void (*glDepthFunc)(GLenum func) = nullptr; + void (*glPixelStoref)(GLenum pname, GLfloat param) = nullptr; + void (*glPixelStorei)(GLenum pname, GLint param) = nullptr; + void (*glReadBuffer)(GLenum src) = nullptr; + void (*glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) = nullptr; + void (*glGetBooleanv)(GLenum pname, GLboolean *data) = nullptr; + void (*glGetDoublev)(GLenum pname, GLdouble *data) = nullptr; + GLenum (*glGetError)() = nullptr; + void (*glGetFloatv)(GLenum pname, GLfloat *data) = nullptr; + void (*glGetIntegerv)(GLenum pname, GLint *data) = nullptr; + const GLubyte *(*glGetString)(GLenum name) = nullptr; + void (*glGetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels) = nullptr; + void (*glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params) = nullptr; + void (*glGetTexParameteriv)(GLenum target, GLenum pname, GLint *params) = nullptr; + void (*glGetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params) = nullptr; + void (*glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params) = nullptr; + GLboolean (*glIsEnabled)(GLenum cap) = nullptr; + void (*glDepthRange)(GLdouble n, GLdouble f) = nullptr; + void (*glViewport)(GLint x, GLint y, GLsizei width, GLsizei height) = nullptr; + + // OpenGL 1.1 + + void (*glDrawArrays)(GLenum mode, GLint first, GLsizei count) = nullptr; + void (*glDrawElements)(GLenum mode, GLsizei count, GLenum type, const void *indices) = nullptr; + void (*glPolygonOffset)(GLfloat factor, GLfloat units) = nullptr; + void (*glCopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) = nullptr; + void (*glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) = nullptr; + void (*glCopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) = nullptr; + void (*glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) = nullptr; + void (*glTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels) = nullptr; + void (*glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) = nullptr; + void (*glBindTexture)(GLenum target, GLuint texture) = nullptr; + void (*glDeleteTextures)(GLsizei n, const GLuint *textures) = nullptr; + void (*glGenTextures)(GLsizei n, GLuint *textures) = nullptr; + GLboolean (*glIsTexture)(GLuint texture) = nullptr; + + // OpenGL 1.2 + + void (*glDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices) = nullptr; + void (*glTexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels) = nullptr; + void (*glTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) = nullptr; + void (*glCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) = nullptr; + + // OpenGL 1.3 + + void (*glActiveTexture)(GLenum texture) = nullptr; + void (*glSampleCoverage)(GLfloat value, GLboolean invert) = nullptr; + void (*glCompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data) = nullptr; + void (*glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) = nullptr; + void (*glCompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data) = nullptr; + void (*glCompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) = nullptr; + void (*glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) = nullptr; + void (*glCompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data) = nullptr; + void (*glGetCompressedTexImage)(GLenum target, GLint level, void *img) = nullptr; + + // OpenGL 1.4 + + void (*glBlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) = nullptr; + void (*glMultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) = nullptr; + void (*glMultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount) = nullptr; + void (*glPointParameterf)(GLenum pname, GLfloat param) = nullptr; + void (*glPointParameterfv)(GLenum pname, const GLfloat *params) = nullptr; + void (*glPointParameteri)(GLenum pname, GLint param) = nullptr; + void (*glPointParameteriv)(GLenum pname, const GLint *params) = nullptr; + void (*glBlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) = nullptr; + void (*glBlendEquation)(GLenum mode) = nullptr; + + // OpenGL 1.5 + + void (*glGenQueries)(GLsizei n, GLuint *ids) = nullptr; + void (*glDeleteQueries)(GLsizei n, const GLuint *ids) = nullptr; + GLboolean (*glIsQuery)(GLuint id) = nullptr; + void (*glBeginQuery)(GLenum target, GLuint id) = nullptr; + void (*glEndQuery)(GLenum target) = nullptr; + void (*glGetQueryiv)(GLenum target, GLenum pname, GLint *params) = nullptr; + void (*glGetQueryObjectiv)(GLuint id, GLenum pname, GLint *params) = nullptr; + void (*glGetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params) = nullptr; + void (*glBindBuffer)(GLenum target, GLuint buffer) = nullptr; + void (*glDeleteBuffers)(GLsizei n, const GLuint *buffers) = nullptr; + void (*glGenBuffers)(GLsizei n, GLuint *buffers) = nullptr; + GLboolean (*glIsBuffer)(GLuint buffer) = nullptr; + void (*glBufferData)(GLenum target, GLsizeiptr size, const void *data, GLenum usage) = nullptr; + void (*glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) = nullptr; + void (*glGetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void *data) = nullptr; + void *(*glMapBuffer)(GLenum target, GLenum access) = nullptr; + GLboolean (*glUnmapBuffer)(GLenum target) = nullptr; + void (*glGetBufferParameteriv)(GLenum target, GLenum pname, GLint *params) = nullptr; + void (*glGetBufferPointerv)(GLenum target, GLenum pname, void **params) = nullptr; + + // OpenGL 2.0 + + void (*glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha) = nullptr; + void (*glDrawBuffers)(GLsizei n, const GLenum *bufs) = nullptr; + void (*glStencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) = nullptr; + void (*glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask) = nullptr; + void (*glStencilMaskSeparate)(GLenum face, GLuint mask) = nullptr; + void (*glAttachShader)(GLuint program, GLuint shader) = nullptr; + void (*glBindAttribLocation)(GLuint program, GLuint index, const GLchar *name) = nullptr; + void (*glCompileShader)(GLuint shader) = nullptr; + GLuint (*glCreateProgram)() = nullptr; + GLuint (*glCreateShader)(GLenum type) = nullptr; + void (*glDeleteProgram)(GLuint program) = nullptr; + void (*glDeleteShader)(GLuint shader) = nullptr; + void (*glDetachShader)(GLuint program, GLuint shader) = nullptr; + void (*glDisableVertexAttribArray)(GLuint index) = nullptr; + void (*glEnableVertexAttribArray)(GLuint index) = nullptr; + void (*glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) = nullptr; + void (*glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) = nullptr; + void (*glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) = nullptr; + GLint (*glGetAttribLocation)(GLuint program, const GLchar *name) = nullptr; + void (*glGetProgramiv)(GLuint program, GLenum pname, GLint *params) = nullptr; + void (*glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) = nullptr; + void (*glGetShaderiv)(GLuint shader, GLenum pname, GLint *params) = nullptr; + void (*glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) = nullptr; + void (*glGetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) = nullptr; + GLint (*glGetUniformLocation)(GLuint program, const GLchar *name) = nullptr; + void (*glGetUniformfv)(GLuint program, GLint location, GLfloat *params) = nullptr; + void (*glGetUniformiv)(GLuint program, GLint location, GLint *params) = nullptr; + void (*glGetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params) = nullptr; + void (*glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params) = nullptr; + void (*glGetVertexAttribiv)(GLuint index, GLenum pname, GLint *params) = nullptr; + void (*glGetVertexAttribPointerv)(GLuint index, GLenum pname, void **pointer) = nullptr; + GLboolean (*glIsProgram)(GLuint program) = nullptr; + GLboolean (*glIsShader)(GLuint shader) = nullptr; + void (*glLinkProgram)(GLuint program) = nullptr; + void (*glShaderSource)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length) = nullptr; + void (*glUseProgram)(GLuint program) = nullptr; + void (*glUniform1f)(GLint location, GLfloat v0) = nullptr; + void (*glUniform2f)(GLint location, GLfloat v0, GLfloat v1) = nullptr; + void (*glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) = nullptr; + void (*glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) = nullptr; + void (*glUniform1i)(GLint location, GLint v0) = nullptr; + void (*glUniform2i)(GLint location, GLint v0, GLint v1) = nullptr; + void (*glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2) = nullptr; + void (*glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) = nullptr; + void (*glUniform1fv)(GLint location, GLsizei count, const GLfloat *value) = nullptr; + void (*glUniform2fv)(GLint location, GLsizei count, const GLfloat *value) = nullptr; + void (*glUniform3fv)(GLint location, GLsizei count, const GLfloat *value) = nullptr; + void (*glUniform4fv)(GLint location, GLsizei count, const GLfloat *value) = nullptr; + void (*glUniform1iv)(GLint location, GLsizei count, const GLint *value) = nullptr; + void (*glUniform2iv)(GLint location, GLsizei count, const GLint *value) = nullptr; + void (*glUniform3iv)(GLint location, GLsizei count, const GLint *value) = nullptr; + void (*glUniform4iv)(GLint location, GLsizei count, const GLint *value) = nullptr; + void (*glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glValidateProgram)(GLuint program) = nullptr; + void (*glVertexAttrib1d)(GLuint index, GLdouble x) = nullptr; + void (*glVertexAttrib1dv)(GLuint index, const GLdouble *v) = nullptr; + void (*glVertexAttrib1f)(GLuint index, GLfloat x) = nullptr; + void (*glVertexAttrib1fv)(GLuint index, const GLfloat *v) = nullptr; + void (*glVertexAttrib1s)(GLuint index, GLshort x) = nullptr; + void (*glVertexAttrib1sv)(GLuint index, const GLshort *v) = nullptr; + void (*glVertexAttrib2d)(GLuint index, GLdouble x, GLdouble y) = nullptr; + void (*glVertexAttrib2dv)(GLuint index, const GLdouble *v) = nullptr; + void (*glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y) = nullptr; + void (*glVertexAttrib2fv)(GLuint index, const GLfloat *v) = nullptr; + void (*glVertexAttrib2s)(GLuint index, GLshort x, GLshort y) = nullptr; + void (*glVertexAttrib2sv)(GLuint index, const GLshort *v) = nullptr; + void (*glVertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z) = nullptr; + void (*glVertexAttrib3dv)(GLuint index, const GLdouble *v) = nullptr; + void (*glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z) = nullptr; + void (*glVertexAttrib3fv)(GLuint index, const GLfloat *v) = nullptr; + void (*glVertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z) = nullptr; + void (*glVertexAttrib3sv)(GLuint index, const GLshort *v) = nullptr; + void (*glVertexAttrib4Nbv)(GLuint index, const GLbyte *v) = nullptr; + void (*glVertexAttrib4Niv)(GLuint index, const GLint *v) = nullptr; + void (*glVertexAttrib4Nsv)(GLuint index, const GLshort *v) = nullptr; + void (*glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) = nullptr; + void (*glVertexAttrib4Nubv)(GLuint index, const GLubyte *v) = nullptr; + void (*glVertexAttrib4Nuiv)(GLuint index, const GLuint *v) = nullptr; + void (*glVertexAttrib4Nusv)(GLuint index, const GLushort *v) = nullptr; + void (*glVertexAttrib4bv)(GLuint index, const GLbyte *v) = nullptr; + void (*glVertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) = nullptr; + void (*glVertexAttrib4dv)(GLuint index, const GLdouble *v) = nullptr; + void (*glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = nullptr; + void (*glVertexAttrib4fv)(GLuint index, const GLfloat *v) = nullptr; + void (*glVertexAttrib4iv)(GLuint index, const GLint *v) = nullptr; + void (*glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) = nullptr; + void (*glVertexAttrib4sv)(GLuint index, const GLshort *v) = nullptr; + void (*glVertexAttrib4ubv)(GLuint index, const GLubyte *v) = nullptr; + void (*glVertexAttrib4uiv)(GLuint index, const GLuint *v) = nullptr; + void (*glVertexAttrib4usv)(GLuint index, const GLushort *v) = nullptr; + void (*glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) = nullptr; + + // OpenGL 2.1 + + void (*glUniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + void (*glUniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) = nullptr; + + // OpenGL 3.0 + + void (*glColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) = nullptr; + void (*glGetBooleani_v)(GLenum target, GLuint index, GLboolean *data) = nullptr; + void (*glGetIntegeri_v)(GLenum target, GLuint index, GLint *data) = nullptr; + void (*glEnablei)(GLenum target, GLuint index) = nullptr; + void (*glDisablei)(GLenum target, GLuint index) = nullptr; + GLboolean (*glIsEnabledi)(GLenum target, GLuint index) = nullptr; + void (*glBeginTransformFeedback)(GLenum primitiveMode) = nullptr; + void (*glEndTransformFeedback)() = nullptr; + void (*glBindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) = nullptr; + void (*glBindBufferBase)(GLenum target, GLuint index, GLuint buffer) = nullptr; + void (*glTransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode) = nullptr; + void (*glGetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) = nullptr; + void (*glClampColor)(GLenum target, GLenum clamp) = nullptr; + void (*glBeginConditionalRender)(GLuint id, GLenum mode) = nullptr; + void (*glEndConditionalRender)() = nullptr; + void (*glVertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer) = nullptr; + void (*glGetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params) = nullptr; + void (*glGetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params) = nullptr; + void (*glVertexAttribI1i)(GLuint index, GLint x) = nullptr; + void (*glVertexAttribI2i)(GLuint index, GLint x, GLint y) = nullptr; + void (*glVertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z) = nullptr; + void (*glVertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w) = nullptr; + void (*glVertexAttribI1ui)(GLuint index, GLuint x) = nullptr; + void (*glVertexAttribI2ui)(GLuint index, GLuint x, GLuint y) = nullptr; + void (*glVertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z) = nullptr; + void (*glVertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) = nullptr; + void (*glVertexAttribI1iv)(GLuint index, const GLint *v) = nullptr; + void (*glVertexAttribI2iv)(GLuint index, const GLint *v) = nullptr; + void (*glVertexAttribI3iv)(GLuint index, const GLint *v) = nullptr; + void (*glVertexAttribI4iv)(GLuint index, const GLint *v) = nullptr; + void (*glVertexAttribI1uiv)(GLuint index, const GLuint *v) = nullptr; + void (*glVertexAttribI2uiv)(GLuint index, const GLuint *v) = nullptr; + void (*glVertexAttribI3uiv)(GLuint index, const GLuint *v) = nullptr; + void (*glVertexAttribI4uiv)(GLuint index, const GLuint *v) = nullptr; + void (*glVertexAttribI4bv)(GLuint index, const GLbyte *v) = nullptr; + void (*glVertexAttribI4sv)(GLuint index, const GLshort *v) = nullptr; + void (*glVertexAttribI4ubv)(GLuint index, const GLubyte *v) = nullptr; + void (*glVertexAttribI4usv)(GLuint index, const GLushort *v) = nullptr; + void (*glGetUniformuiv)(GLuint program, GLint location, GLuint *params) = nullptr; + void (*glBindFragDataLocation)(GLuint program, GLuint color, const GLchar *name) = nullptr; + GLint (*glGetFragDataLocation)(GLuint program, const GLchar *name) = nullptr; + void (*glUniform1ui)(GLint location, GLuint v0) = nullptr; + void (*glUniform2ui)(GLint location, GLuint v0, GLuint v1) = nullptr; + void (*glUniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2) = nullptr; + void (*glUniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) = nullptr; + void (*glUniform1uiv)(GLint location, GLsizei count, const GLuint *value) = nullptr; + void (*glUniform2uiv)(GLint location, GLsizei count, const GLuint *value) = nullptr; + void (*glUniform3uiv)(GLint location, GLsizei count, const GLuint *value) = nullptr; + void (*glUniform4uiv)(GLint location, GLsizei count, const GLuint *value) = nullptr; + void (*glTexParameterIiv)(GLenum target, GLenum pname, const GLint *params) = nullptr; + void (*glTexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params) = nullptr; + void (*glGetTexParameterIiv)(GLenum target, GLenum pname, GLint *params) = nullptr; + void (*glGetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params) = nullptr; + void (*glClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value) = nullptr; + void (*glClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value) = nullptr; + void (*glClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value) = nullptr; + void (*glClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) = nullptr; + const GLubyte *(*glGetStringi)(GLenum name, GLuint index) = nullptr; + GLboolean (*glIsRenderbuffer)(GLuint renderbuffer) = nullptr; + void (*glBindRenderbuffer)(GLenum target, GLuint renderbuffer) = nullptr; + void (*glDeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers) = nullptr; + void (*glGenRenderbuffers)(GLsizei n, GLuint *renderbuffers) = nullptr; + void (*glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = nullptr; + void (*glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params) = nullptr; + GLboolean (*glIsFramebuffer)(GLuint framebuffer) = nullptr; + void (*glBindFramebuffer)(GLenum target, GLuint framebuffer) = nullptr; + void (*glDeleteFramebuffers)(GLsizei n, const GLuint *framebuffers) = nullptr; + void (*glGenFramebuffers)(GLsizei n, GLuint *framebuffers) = nullptr; + GLenum (*glCheckFramebufferStatus)(GLenum target) = nullptr; + void (*glFramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = nullptr; + void (*glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = nullptr; + void (*glFramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) = nullptr; + void (*glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) = nullptr; + void (*glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params) = nullptr; + void (*glGenerateMipmap)(GLenum target) = nullptr; + void (*glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) = nullptr; + void (*glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) = nullptr; + void (*glFramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) = nullptr; + void *(*glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) = nullptr; + void (*glFlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length) = nullptr; + void (*glBindVertexArray)(GLuint array) = nullptr; + void (*glDeleteVertexArrays)(GLsizei n, const GLuint *arrays) = nullptr; + void (*glGenVertexArrays)(GLsizei n, GLuint *arrays) = nullptr; + GLboolean (*glIsVertexArray)(GLuint array) = nullptr; + + // OpenGL 3.1 + + void (*glDrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) = nullptr; + void (*glDrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount) = nullptr; + void (*glTexBuffer)(GLenum target, GLenum internalformat, GLuint buffer) = nullptr; + void (*glPrimitiveRestartIndex)(GLuint index) = nullptr; + void (*glCopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) = nullptr; + void (*glGetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices) = nullptr; + void (*glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) = nullptr; + void (*glGetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) = nullptr; + GLuint (*glGetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName) = nullptr; + void (*glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) = nullptr; + void (*glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) = nullptr; + void (*glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) = nullptr; + + // OpenGL 3.2 + + void (*glDrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex) = nullptr; + void (*glDrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex) = nullptr; + void (*glDrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) = nullptr; + void (*glMultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex) = nullptr; + void (*glProvokingVertex)(GLenum mode) = nullptr; + GLsync (*glFenceSync)(GLenum condition, GLbitfield flags) = nullptr; + GLboolean (*glIsSync)(GLsync sync) = nullptr; + void (*glDeleteSync)(GLsync sync) = nullptr; + GLenum (*glClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout) = nullptr; + void (*glWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout) = nullptr; + void (*glGetInteger64v)(GLenum pname, GLint64 *data) = nullptr; + void (*glGetSynciv)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values) = nullptr; + void (*glGetInteger64i_v)(GLenum target, GLuint index, GLint64 *data) = nullptr; + void (*glGetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params) = nullptr; + void (*glFramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level) = nullptr; + void (*glTexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) = nullptr; + void (*glTexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) = nullptr; + void (*glGetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val) = nullptr; + void (*glSampleMaski)(GLuint maskNumber, GLbitfield mask) = nullptr; + + // OpenGL 3.3 + + void (*glBindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) = nullptr; + GLint (*glGetFragDataIndex)(GLuint program, const GLchar *name) = nullptr; + void (*glGenSamplers)(GLsizei count, GLuint *samplers) = nullptr; + void (*glDeleteSamplers)(GLsizei count, const GLuint *samplers) = nullptr; + GLboolean (*glIsSampler)(GLuint sampler) = nullptr; + void (*glBindSampler)(GLuint unit, GLuint sampler) = nullptr; + void (*glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param) = nullptr; + void (*glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param) = nullptr; + void (*glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param) = nullptr; + void (*glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param) = nullptr; + void (*glSamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *param) = nullptr; + void (*glSamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *param) = nullptr; + void (*glGetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params) = nullptr; + void (*glGetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params) = nullptr; + void (*glGetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params) = nullptr; + void (*glGetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params) = nullptr; + void (*glQueryCounter)(GLuint id, GLenum target) = nullptr; + void (*glGetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params) = nullptr; + void (*glGetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params) = nullptr; + void (*glVertexAttribDivisor)(GLuint index, GLuint divisor) = nullptr; + void (*glVertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = nullptr; + void (*glVertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) = nullptr; + void (*glVertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = nullptr; + void (*glVertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) = nullptr; + void (*glVertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = nullptr; + void (*glVertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) = nullptr; + void (*glVertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value) = nullptr; + void (*glVertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) = nullptr; + + // GL_ARB_texture_filter_anisotropic + + + } // namespace internal + namespace sys { - namespace + + static bool ext_GL_ARB_texture_filter_anisotropic_loaded = false; + + static bool load_core() { - typedef int (*PFN_LOADEXTENSION)(); - struct MapEntry - { - MapEntry(const char *_extName, exts::LoadTest *_extVariable) - : extName(_extName) - , extVariable(_extVariable) - , loaderFunc(0) - {} - - MapEntry(const char *_extName, exts::LoadTest *_extVariable, PFN_LOADEXTENSION _loaderFunc) - : extName(_extName) - , extVariable(_extVariable) - , loaderFunc(_loaderFunc) - {} - - const char *extName; - exts::LoadTest *extVariable; - PFN_LOADEXTENSION loaderFunc; - }; - - struct MapCompare - { - MapCompare(const char *test_) : test(test_) {} - bool operator()(const MapEntry &other) { return strcmp(test, other.extName) == 0; } - const char *test; - }; - - void InitializeMappingTable(std::vector &table) - { - table.reserve(1); - table.push_back(MapEntry("GL_EXT_texture_filter_anisotropic", &exts::var_EXT_texture_filter_anisotropic)); - } - - void ClearExtensionVars() - { - exts::var_EXT_texture_filter_anisotropic = exts::LoadTest(); - } - - void LoadExtByName(std::vector &table, const char *extensionName) - { - std::vector::iterator entry = std::find_if(table.begin(), table.end(), MapCompare(extensionName)); - - if(entry != table.end()) - { - if(entry->loaderFunc) - (*entry->extVariable) = exts::LoadTest(true, entry->loaderFunc()); - else - (*entry->extVariable) = exts::LoadTest(true, 0); - } - } - } //namespace - - - namespace - { - static void ProcExtsFromExtList(std::vector &table) - { - GLint iLoop; - GLint iNumExtensions = 0; - gl::_detail::GetIntegerv(gl::NUM_EXTENSIONS, &iNumExtensions); - - for(iLoop = 0; iLoop < iNumExtensions; iLoop++) - { - const char *strExtensionName = (const char *)gl::_detail::GetStringi(gl::EXTENSIONS, iLoop); - LoadExtByName(table, strExtensionName); - } - } - - } //namespace - - exts::LoadTest LoadFunctions() - { - ClearExtensionVars(); - std::vector table; - InitializeMappingTable(table); - - _detail::GetIntegerv = reinterpret_cast<_detail::PFNGETINTEGERV>(IntGetProcAddress("glGetIntegerv")); - if(!_detail::GetIntegerv) return exts::LoadTest(); - _detail::GetStringi = reinterpret_cast<_detail::PFNGETSTRINGI>(IntGetProcAddress("glGetStringi")); - if(!_detail::GetStringi) return exts::LoadTest(); - - ProcExtsFromExtList(table); - - int numFailed = _detail::LoadCoreFunctions(); - return exts::LoadTest(true, numFailed); + // OpenGL 1.0 + + internal::glCullFace = reinterpret_cast(internal::get_proc_address("glCullFace")); + if (!internal::glCullFace) return false; + internal::glFrontFace = reinterpret_cast(internal::get_proc_address("glFrontFace")); + if (!internal::glFrontFace) return false; + internal::glHint = reinterpret_cast(internal::get_proc_address("glHint")); + if (!internal::glHint) return false; + internal::glLineWidth = reinterpret_cast(internal::get_proc_address("glLineWidth")); + if (!internal::glLineWidth) return false; + internal::glPointSize = reinterpret_cast(internal::get_proc_address("glPointSize")); + if (!internal::glPointSize) return false; + internal::glPolygonMode = reinterpret_cast(internal::get_proc_address("glPolygonMode")); + if (!internal::glPolygonMode) return false; + internal::glScissor = reinterpret_cast(internal::get_proc_address("glScissor")); + if (!internal::glScissor) return false; + internal::glTexParameterf = reinterpret_cast(internal::get_proc_address("glTexParameterf")); + if (!internal::glTexParameterf) return false; + internal::glTexParameterfv = reinterpret_cast(internal::get_proc_address("glTexParameterfv")); + if (!internal::glTexParameterfv) return false; + internal::glTexParameteri = reinterpret_cast(internal::get_proc_address("glTexParameteri")); + if (!internal::glTexParameteri) return false; + internal::glTexParameteriv = reinterpret_cast(internal::get_proc_address("glTexParameteriv")); + if (!internal::glTexParameteriv) return false; + internal::glTexImage1D = reinterpret_cast(internal::get_proc_address("glTexImage1D")); + if (!internal::glTexImage1D) return false; + internal::glTexImage2D = reinterpret_cast(internal::get_proc_address("glTexImage2D")); + if (!internal::glTexImage2D) return false; + internal::glDrawBuffer = reinterpret_cast(internal::get_proc_address("glDrawBuffer")); + if (!internal::glDrawBuffer) return false; + internal::glClear = reinterpret_cast(internal::get_proc_address("glClear")); + if (!internal::glClear) return false; + internal::glClearColor = reinterpret_cast(internal::get_proc_address("glClearColor")); + if (!internal::glClearColor) return false; + internal::glClearStencil = reinterpret_cast(internal::get_proc_address("glClearStencil")); + if (!internal::glClearStencil) return false; + internal::glClearDepth = reinterpret_cast(internal::get_proc_address("glClearDepth")); + if (!internal::glClearDepth) return false; + internal::glStencilMask = reinterpret_cast(internal::get_proc_address("glStencilMask")); + if (!internal::glStencilMask) return false; + internal::glColorMask = reinterpret_cast(internal::get_proc_address("glColorMask")); + if (!internal::glColorMask) return false; + internal::glDepthMask = reinterpret_cast(internal::get_proc_address("glDepthMask")); + if (!internal::glDepthMask) return false; + internal::glDisable = reinterpret_cast(internal::get_proc_address("glDisable")); + if (!internal::glDisable) return false; + internal::glEnable = reinterpret_cast(internal::get_proc_address("glEnable")); + if (!internal::glEnable) return false; + internal::glFinish = reinterpret_cast(internal::get_proc_address("glFinish")); + if (!internal::glFinish) return false; + internal::glFlush = reinterpret_cast(internal::get_proc_address("glFlush")); + if (!internal::glFlush) return false; + internal::glBlendFunc = reinterpret_cast(internal::get_proc_address("glBlendFunc")); + if (!internal::glBlendFunc) return false; + internal::glLogicOp = reinterpret_cast(internal::get_proc_address("glLogicOp")); + if (!internal::glLogicOp) return false; + internal::glStencilFunc = reinterpret_cast(internal::get_proc_address("glStencilFunc")); + if (!internal::glStencilFunc) return false; + internal::glStencilOp = reinterpret_cast(internal::get_proc_address("glStencilOp")); + if (!internal::glStencilOp) return false; + internal::glDepthFunc = reinterpret_cast(internal::get_proc_address("glDepthFunc")); + if (!internal::glDepthFunc) return false; + internal::glPixelStoref = reinterpret_cast(internal::get_proc_address("glPixelStoref")); + if (!internal::glPixelStoref) return false; + internal::glPixelStorei = reinterpret_cast(internal::get_proc_address("glPixelStorei")); + if (!internal::glPixelStorei) return false; + internal::glReadBuffer = reinterpret_cast(internal::get_proc_address("glReadBuffer")); + if (!internal::glReadBuffer) return false; + internal::glReadPixels = reinterpret_cast(internal::get_proc_address("glReadPixels")); + if (!internal::glReadPixels) return false; + internal::glGetBooleanv = reinterpret_cast(internal::get_proc_address("glGetBooleanv")); + if (!internal::glGetBooleanv) return false; + internal::glGetDoublev = reinterpret_cast(internal::get_proc_address("glGetDoublev")); + if (!internal::glGetDoublev) return false; + internal::glGetError = reinterpret_cast(internal::get_proc_address("glGetError")); + if (!internal::glGetError) return false; + internal::glGetFloatv = reinterpret_cast(internal::get_proc_address("glGetFloatv")); + if (!internal::glGetFloatv) return false; + internal::glGetIntegerv = reinterpret_cast(internal::get_proc_address("glGetIntegerv")); + if (!internal::glGetIntegerv) return false; + internal::glGetString = reinterpret_cast(internal::get_proc_address("glGetString")); + if (!internal::glGetString) return false; + internal::glGetTexImage = reinterpret_cast(internal::get_proc_address("glGetTexImage")); + if (!internal::glGetTexImage) return false; + internal::glGetTexParameterfv = reinterpret_cast(internal::get_proc_address("glGetTexParameterfv")); + if (!internal::glGetTexParameterfv) return false; + internal::glGetTexParameteriv = reinterpret_cast(internal::get_proc_address("glGetTexParameteriv")); + if (!internal::glGetTexParameteriv) return false; + internal::glGetTexLevelParameterfv = reinterpret_cast(internal::get_proc_address("glGetTexLevelParameterfv")); + if (!internal::glGetTexLevelParameterfv) return false; + internal::glGetTexLevelParameteriv = reinterpret_cast(internal::get_proc_address("glGetTexLevelParameteriv")); + if (!internal::glGetTexLevelParameteriv) return false; + internal::glIsEnabled = reinterpret_cast(internal::get_proc_address("glIsEnabled")); + if (!internal::glIsEnabled) return false; + internal::glDepthRange = reinterpret_cast(internal::get_proc_address("glDepthRange")); + if (!internal::glDepthRange) return false; + internal::glViewport = reinterpret_cast(internal::get_proc_address("glViewport")); + if (!internal::glViewport) return false; + + // OpenGL 1.1 + + internal::glDrawArrays = reinterpret_cast(internal::get_proc_address("glDrawArrays")); + if (!internal::glDrawArrays) return false; + internal::glDrawElements = reinterpret_cast(internal::get_proc_address("glDrawElements")); + if (!internal::glDrawElements) return false; + internal::glPolygonOffset = reinterpret_cast(internal::get_proc_address("glPolygonOffset")); + if (!internal::glPolygonOffset) return false; + internal::glCopyTexImage1D = reinterpret_cast(internal::get_proc_address("glCopyTexImage1D")); + if (!internal::glCopyTexImage1D) return false; + internal::glCopyTexImage2D = reinterpret_cast(internal::get_proc_address("glCopyTexImage2D")); + if (!internal::glCopyTexImage2D) return false; + internal::glCopyTexSubImage1D = reinterpret_cast(internal::get_proc_address("glCopyTexSubImage1D")); + if (!internal::glCopyTexSubImage1D) return false; + internal::glCopyTexSubImage2D = reinterpret_cast(internal::get_proc_address("glCopyTexSubImage2D")); + if (!internal::glCopyTexSubImage2D) return false; + internal::glTexSubImage1D = reinterpret_cast(internal::get_proc_address("glTexSubImage1D")); + if (!internal::glTexSubImage1D) return false; + internal::glTexSubImage2D = reinterpret_cast(internal::get_proc_address("glTexSubImage2D")); + if (!internal::glTexSubImage2D) return false; + internal::glBindTexture = reinterpret_cast(internal::get_proc_address("glBindTexture")); + if (!internal::glBindTexture) return false; + internal::glDeleteTextures = reinterpret_cast(internal::get_proc_address("glDeleteTextures")); + if (!internal::glDeleteTextures) return false; + internal::glGenTextures = reinterpret_cast(internal::get_proc_address("glGenTextures")); + if (!internal::glGenTextures) return false; + internal::glIsTexture = reinterpret_cast(internal::get_proc_address("glIsTexture")); + if (!internal::glIsTexture) return false; + + // OpenGL 1.2 + + internal::glDrawRangeElements = reinterpret_cast(internal::get_proc_address("glDrawRangeElements")); + if (!internal::glDrawRangeElements) return false; + internal::glTexImage3D = reinterpret_cast(internal::get_proc_address("glTexImage3D")); + if (!internal::glTexImage3D) return false; + internal::glTexSubImage3D = reinterpret_cast(internal::get_proc_address("glTexSubImage3D")); + if (!internal::glTexSubImage3D) return false; + internal::glCopyTexSubImage3D = reinterpret_cast(internal::get_proc_address("glCopyTexSubImage3D")); + if (!internal::glCopyTexSubImage3D) return false; + + // OpenGL 1.3 + + internal::glActiveTexture = reinterpret_cast(internal::get_proc_address("glActiveTexture")); + if (!internal::glActiveTexture) return false; + internal::glSampleCoverage = reinterpret_cast(internal::get_proc_address("glSampleCoverage")); + if (!internal::glSampleCoverage) return false; + internal::glCompressedTexImage3D = reinterpret_cast(internal::get_proc_address("glCompressedTexImage3D")); + if (!internal::glCompressedTexImage3D) return false; + internal::glCompressedTexImage2D = reinterpret_cast(internal::get_proc_address("glCompressedTexImage2D")); + if (!internal::glCompressedTexImage2D) return false; + internal::glCompressedTexImage1D = reinterpret_cast(internal::get_proc_address("glCompressedTexImage1D")); + if (!internal::glCompressedTexImage1D) return false; + internal::glCompressedTexSubImage3D = reinterpret_cast(internal::get_proc_address("glCompressedTexSubImage3D")); + if (!internal::glCompressedTexSubImage3D) return false; + internal::glCompressedTexSubImage2D = reinterpret_cast(internal::get_proc_address("glCompressedTexSubImage2D")); + if (!internal::glCompressedTexSubImage2D) return false; + internal::glCompressedTexSubImage1D = reinterpret_cast(internal::get_proc_address("glCompressedTexSubImage1D")); + if (!internal::glCompressedTexSubImage1D) return false; + internal::glGetCompressedTexImage = reinterpret_cast(internal::get_proc_address("glGetCompressedTexImage")); + if (!internal::glGetCompressedTexImage) return false; + + // OpenGL 1.4 + + internal::glBlendFuncSeparate = reinterpret_cast(internal::get_proc_address("glBlendFuncSeparate")); + if (!internal::glBlendFuncSeparate) return false; + internal::glMultiDrawArrays = reinterpret_cast(internal::get_proc_address("glMultiDrawArrays")); + if (!internal::glMultiDrawArrays) return false; + internal::glMultiDrawElements = reinterpret_cast(internal::get_proc_address("glMultiDrawElements")); + if (!internal::glMultiDrawElements) return false; + internal::glPointParameterf = reinterpret_cast(internal::get_proc_address("glPointParameterf")); + if (!internal::glPointParameterf) return false; + internal::glPointParameterfv = reinterpret_cast(internal::get_proc_address("glPointParameterfv")); + if (!internal::glPointParameterfv) return false; + internal::glPointParameteri = reinterpret_cast(internal::get_proc_address("glPointParameteri")); + if (!internal::glPointParameteri) return false; + internal::glPointParameteriv = reinterpret_cast(internal::get_proc_address("glPointParameteriv")); + if (!internal::glPointParameteriv) return false; + internal::glBlendColor = reinterpret_cast(internal::get_proc_address("glBlendColor")); + if (!internal::glBlendColor) return false; + internal::glBlendEquation = reinterpret_cast(internal::get_proc_address("glBlendEquation")); + if (!internal::glBlendEquation) return false; + + // OpenGL 1.5 + + internal::glGenQueries = reinterpret_cast(internal::get_proc_address("glGenQueries")); + if (!internal::glGenQueries) return false; + internal::glDeleteQueries = reinterpret_cast(internal::get_proc_address("glDeleteQueries")); + if (!internal::glDeleteQueries) return false; + internal::glIsQuery = reinterpret_cast(internal::get_proc_address("glIsQuery")); + if (!internal::glIsQuery) return false; + internal::glBeginQuery = reinterpret_cast(internal::get_proc_address("glBeginQuery")); + if (!internal::glBeginQuery) return false; + internal::glEndQuery = reinterpret_cast(internal::get_proc_address("glEndQuery")); + if (!internal::glEndQuery) return false; + internal::glGetQueryiv = reinterpret_cast(internal::get_proc_address("glGetQueryiv")); + if (!internal::glGetQueryiv) return false; + internal::glGetQueryObjectiv = reinterpret_cast(internal::get_proc_address("glGetQueryObjectiv")); + if (!internal::glGetQueryObjectiv) return false; + internal::glGetQueryObjectuiv = reinterpret_cast(internal::get_proc_address("glGetQueryObjectuiv")); + if (!internal::glGetQueryObjectuiv) return false; + internal::glBindBuffer = reinterpret_cast(internal::get_proc_address("glBindBuffer")); + if (!internal::glBindBuffer) return false; + internal::glDeleteBuffers = reinterpret_cast(internal::get_proc_address("glDeleteBuffers")); + if (!internal::glDeleteBuffers) return false; + internal::glGenBuffers = reinterpret_cast(internal::get_proc_address("glGenBuffers")); + if (!internal::glGenBuffers) return false; + internal::glIsBuffer = reinterpret_cast(internal::get_proc_address("glIsBuffer")); + if (!internal::glIsBuffer) return false; + internal::glBufferData = reinterpret_cast(internal::get_proc_address("glBufferData")); + if (!internal::glBufferData) return false; + internal::glBufferSubData = reinterpret_cast(internal::get_proc_address("glBufferSubData")); + if (!internal::glBufferSubData) return false; + internal::glGetBufferSubData = reinterpret_cast(internal::get_proc_address("glGetBufferSubData")); + if (!internal::glGetBufferSubData) return false; + internal::glMapBuffer = reinterpret_cast(internal::get_proc_address("glMapBuffer")); + if (!internal::glMapBuffer) return false; + internal::glUnmapBuffer = reinterpret_cast(internal::get_proc_address("glUnmapBuffer")); + if (!internal::glUnmapBuffer) return false; + internal::glGetBufferParameteriv = reinterpret_cast(internal::get_proc_address("glGetBufferParameteriv")); + if (!internal::glGetBufferParameteriv) return false; + internal::glGetBufferPointerv = reinterpret_cast(internal::get_proc_address("glGetBufferPointerv")); + if (!internal::glGetBufferPointerv) return false; + + // OpenGL 2.0 + + internal::glBlendEquationSeparate = reinterpret_cast(internal::get_proc_address("glBlendEquationSeparate")); + if (!internal::glBlendEquationSeparate) return false; + internal::glDrawBuffers = reinterpret_cast(internal::get_proc_address("glDrawBuffers")); + if (!internal::glDrawBuffers) return false; + internal::glStencilOpSeparate = reinterpret_cast(internal::get_proc_address("glStencilOpSeparate")); + if (!internal::glStencilOpSeparate) return false; + internal::glStencilFuncSeparate = reinterpret_cast(internal::get_proc_address("glStencilFuncSeparate")); + if (!internal::glStencilFuncSeparate) return false; + internal::glStencilMaskSeparate = reinterpret_cast(internal::get_proc_address("glStencilMaskSeparate")); + if (!internal::glStencilMaskSeparate) return false; + internal::glAttachShader = reinterpret_cast(internal::get_proc_address("glAttachShader")); + if (!internal::glAttachShader) return false; + internal::glBindAttribLocation = reinterpret_cast(internal::get_proc_address("glBindAttribLocation")); + if (!internal::glBindAttribLocation) return false; + internal::glCompileShader = reinterpret_cast(internal::get_proc_address("glCompileShader")); + if (!internal::glCompileShader) return false; + internal::glCreateProgram = reinterpret_cast(internal::get_proc_address("glCreateProgram")); + if (!internal::glCreateProgram) return false; + internal::glCreateShader = reinterpret_cast(internal::get_proc_address("glCreateShader")); + if (!internal::glCreateShader) return false; + internal::glDeleteProgram = reinterpret_cast(internal::get_proc_address("glDeleteProgram")); + if (!internal::glDeleteProgram) return false; + internal::glDeleteShader = reinterpret_cast(internal::get_proc_address("glDeleteShader")); + if (!internal::glDeleteShader) return false; + internal::glDetachShader = reinterpret_cast(internal::get_proc_address("glDetachShader")); + if (!internal::glDetachShader) return false; + internal::glDisableVertexAttribArray = reinterpret_cast(internal::get_proc_address("glDisableVertexAttribArray")); + if (!internal::glDisableVertexAttribArray) return false; + internal::glEnableVertexAttribArray = reinterpret_cast(internal::get_proc_address("glEnableVertexAttribArray")); + if (!internal::glEnableVertexAttribArray) return false; + internal::glGetActiveAttrib = reinterpret_cast(internal::get_proc_address("glGetActiveAttrib")); + if (!internal::glGetActiveAttrib) return false; + internal::glGetActiveUniform = reinterpret_cast(internal::get_proc_address("glGetActiveUniform")); + if (!internal::glGetActiveUniform) return false; + internal::glGetAttachedShaders = reinterpret_cast(internal::get_proc_address("glGetAttachedShaders")); + if (!internal::glGetAttachedShaders) return false; + internal::glGetAttribLocation = reinterpret_cast(internal::get_proc_address("glGetAttribLocation")); + if (!internal::glGetAttribLocation) return false; + internal::glGetProgramiv = reinterpret_cast(internal::get_proc_address("glGetProgramiv")); + if (!internal::glGetProgramiv) return false; + internal::glGetProgramInfoLog = reinterpret_cast(internal::get_proc_address("glGetProgramInfoLog")); + if (!internal::glGetProgramInfoLog) return false; + internal::glGetShaderiv = reinterpret_cast(internal::get_proc_address("glGetShaderiv")); + if (!internal::glGetShaderiv) return false; + internal::glGetShaderInfoLog = reinterpret_cast(internal::get_proc_address("glGetShaderInfoLog")); + if (!internal::glGetShaderInfoLog) return false; + internal::glGetShaderSource = reinterpret_cast(internal::get_proc_address("glGetShaderSource")); + if (!internal::glGetShaderSource) return false; + internal::glGetUniformLocation = reinterpret_cast(internal::get_proc_address("glGetUniformLocation")); + if (!internal::glGetUniformLocation) return false; + internal::glGetUniformfv = reinterpret_cast(internal::get_proc_address("glGetUniformfv")); + if (!internal::glGetUniformfv) return false; + internal::glGetUniformiv = reinterpret_cast(internal::get_proc_address("glGetUniformiv")); + if (!internal::glGetUniformiv) return false; + internal::glGetVertexAttribdv = reinterpret_cast(internal::get_proc_address("glGetVertexAttribdv")); + if (!internal::glGetVertexAttribdv) return false; + internal::glGetVertexAttribfv = reinterpret_cast(internal::get_proc_address("glGetVertexAttribfv")); + if (!internal::glGetVertexAttribfv) return false; + internal::glGetVertexAttribiv = reinterpret_cast(internal::get_proc_address("glGetVertexAttribiv")); + if (!internal::glGetVertexAttribiv) return false; + internal::glGetVertexAttribPointerv = reinterpret_cast(internal::get_proc_address("glGetVertexAttribPointerv")); + if (!internal::glGetVertexAttribPointerv) return false; + internal::glIsProgram = reinterpret_cast(internal::get_proc_address("glIsProgram")); + if (!internal::glIsProgram) return false; + internal::glIsShader = reinterpret_cast(internal::get_proc_address("glIsShader")); + if (!internal::glIsShader) return false; + internal::glLinkProgram = reinterpret_cast(internal::get_proc_address("glLinkProgram")); + if (!internal::glLinkProgram) return false; + internal::glShaderSource = reinterpret_cast(internal::get_proc_address("glShaderSource")); + if (!internal::glShaderSource) return false; + internal::glUseProgram = reinterpret_cast(internal::get_proc_address("glUseProgram")); + if (!internal::glUseProgram) return false; + internal::glUniform1f = reinterpret_cast(internal::get_proc_address("glUniform1f")); + if (!internal::glUniform1f) return false; + internal::glUniform2f = reinterpret_cast(internal::get_proc_address("glUniform2f")); + if (!internal::glUniform2f) return false; + internal::glUniform3f = reinterpret_cast(internal::get_proc_address("glUniform3f")); + if (!internal::glUniform3f) return false; + internal::glUniform4f = reinterpret_cast(internal::get_proc_address("glUniform4f")); + if (!internal::glUniform4f) return false; + internal::glUniform1i = reinterpret_cast(internal::get_proc_address("glUniform1i")); + if (!internal::glUniform1i) return false; + internal::glUniform2i = reinterpret_cast(internal::get_proc_address("glUniform2i")); + if (!internal::glUniform2i) return false; + internal::glUniform3i = reinterpret_cast(internal::get_proc_address("glUniform3i")); + if (!internal::glUniform3i) return false; + internal::glUniform4i = reinterpret_cast(internal::get_proc_address("glUniform4i")); + if (!internal::glUniform4i) return false; + internal::glUniform1fv = reinterpret_cast(internal::get_proc_address("glUniform1fv")); + if (!internal::glUniform1fv) return false; + internal::glUniform2fv = reinterpret_cast(internal::get_proc_address("glUniform2fv")); + if (!internal::glUniform2fv) return false; + internal::glUniform3fv = reinterpret_cast(internal::get_proc_address("glUniform3fv")); + if (!internal::glUniform3fv) return false; + internal::glUniform4fv = reinterpret_cast(internal::get_proc_address("glUniform4fv")); + if (!internal::glUniform4fv) return false; + internal::glUniform1iv = reinterpret_cast(internal::get_proc_address("glUniform1iv")); + if (!internal::glUniform1iv) return false; + internal::glUniform2iv = reinterpret_cast(internal::get_proc_address("glUniform2iv")); + if (!internal::glUniform2iv) return false; + internal::glUniform3iv = reinterpret_cast(internal::get_proc_address("glUniform3iv")); + if (!internal::glUniform3iv) return false; + internal::glUniform4iv = reinterpret_cast(internal::get_proc_address("glUniform4iv")); + if (!internal::glUniform4iv) return false; + internal::glUniformMatrix2fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix2fv")); + if (!internal::glUniformMatrix2fv) return false; + internal::glUniformMatrix3fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix3fv")); + if (!internal::glUniformMatrix3fv) return false; + internal::glUniformMatrix4fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix4fv")); + if (!internal::glUniformMatrix4fv) return false; + internal::glValidateProgram = reinterpret_cast(internal::get_proc_address("glValidateProgram")); + if (!internal::glValidateProgram) return false; + internal::glVertexAttrib1d = reinterpret_cast(internal::get_proc_address("glVertexAttrib1d")); + if (!internal::glVertexAttrib1d) return false; + internal::glVertexAttrib1dv = reinterpret_cast(internal::get_proc_address("glVertexAttrib1dv")); + if (!internal::glVertexAttrib1dv) return false; + internal::glVertexAttrib1f = reinterpret_cast(internal::get_proc_address("glVertexAttrib1f")); + if (!internal::glVertexAttrib1f) return false; + internal::glVertexAttrib1fv = reinterpret_cast(internal::get_proc_address("glVertexAttrib1fv")); + if (!internal::glVertexAttrib1fv) return false; + internal::glVertexAttrib1s = reinterpret_cast(internal::get_proc_address("glVertexAttrib1s")); + if (!internal::glVertexAttrib1s) return false; + internal::glVertexAttrib1sv = reinterpret_cast(internal::get_proc_address("glVertexAttrib1sv")); + if (!internal::glVertexAttrib1sv) return false; + internal::glVertexAttrib2d = reinterpret_cast(internal::get_proc_address("glVertexAttrib2d")); + if (!internal::glVertexAttrib2d) return false; + internal::glVertexAttrib2dv = reinterpret_cast(internal::get_proc_address("glVertexAttrib2dv")); + if (!internal::glVertexAttrib2dv) return false; + internal::glVertexAttrib2f = reinterpret_cast(internal::get_proc_address("glVertexAttrib2f")); + if (!internal::glVertexAttrib2f) return false; + internal::glVertexAttrib2fv = reinterpret_cast(internal::get_proc_address("glVertexAttrib2fv")); + if (!internal::glVertexAttrib2fv) return false; + internal::glVertexAttrib2s = reinterpret_cast(internal::get_proc_address("glVertexAttrib2s")); + if (!internal::glVertexAttrib2s) return false; + internal::glVertexAttrib2sv = reinterpret_cast(internal::get_proc_address("glVertexAttrib2sv")); + if (!internal::glVertexAttrib2sv) return false; + internal::glVertexAttrib3d = reinterpret_cast(internal::get_proc_address("glVertexAttrib3d")); + if (!internal::glVertexAttrib3d) return false; + internal::glVertexAttrib3dv = reinterpret_cast(internal::get_proc_address("glVertexAttrib3dv")); + if (!internal::glVertexAttrib3dv) return false; + internal::glVertexAttrib3f = reinterpret_cast(internal::get_proc_address("glVertexAttrib3f")); + if (!internal::glVertexAttrib3f) return false; + internal::glVertexAttrib3fv = reinterpret_cast(internal::get_proc_address("glVertexAttrib3fv")); + if (!internal::glVertexAttrib3fv) return false; + internal::glVertexAttrib3s = reinterpret_cast(internal::get_proc_address("glVertexAttrib3s")); + if (!internal::glVertexAttrib3s) return false; + internal::glVertexAttrib3sv = reinterpret_cast(internal::get_proc_address("glVertexAttrib3sv")); + if (!internal::glVertexAttrib3sv) return false; + internal::glVertexAttrib4Nbv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Nbv")); + if (!internal::glVertexAttrib4Nbv) return false; + internal::glVertexAttrib4Niv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Niv")); + if (!internal::glVertexAttrib4Niv) return false; + internal::glVertexAttrib4Nsv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Nsv")); + if (!internal::glVertexAttrib4Nsv) return false; + internal::glVertexAttrib4Nub = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Nub")); + if (!internal::glVertexAttrib4Nub) return false; + internal::glVertexAttrib4Nubv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Nubv")); + if (!internal::glVertexAttrib4Nubv) return false; + internal::glVertexAttrib4Nuiv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Nuiv")); + if (!internal::glVertexAttrib4Nuiv) return false; + internal::glVertexAttrib4Nusv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4Nusv")); + if (!internal::glVertexAttrib4Nusv) return false; + internal::glVertexAttrib4bv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4bv")); + if (!internal::glVertexAttrib4bv) return false; + internal::glVertexAttrib4d = reinterpret_cast(internal::get_proc_address("glVertexAttrib4d")); + if (!internal::glVertexAttrib4d) return false; + internal::glVertexAttrib4dv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4dv")); + if (!internal::glVertexAttrib4dv) return false; + internal::glVertexAttrib4f = reinterpret_cast(internal::get_proc_address("glVertexAttrib4f")); + if (!internal::glVertexAttrib4f) return false; + internal::glVertexAttrib4fv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4fv")); + if (!internal::glVertexAttrib4fv) return false; + internal::glVertexAttrib4iv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4iv")); + if (!internal::glVertexAttrib4iv) return false; + internal::glVertexAttrib4s = reinterpret_cast(internal::get_proc_address("glVertexAttrib4s")); + if (!internal::glVertexAttrib4s) return false; + internal::glVertexAttrib4sv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4sv")); + if (!internal::glVertexAttrib4sv) return false; + internal::glVertexAttrib4ubv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4ubv")); + if (!internal::glVertexAttrib4ubv) return false; + internal::glVertexAttrib4uiv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4uiv")); + if (!internal::glVertexAttrib4uiv) return false; + internal::glVertexAttrib4usv = reinterpret_cast(internal::get_proc_address("glVertexAttrib4usv")); + if (!internal::glVertexAttrib4usv) return false; + internal::glVertexAttribPointer = reinterpret_cast(internal::get_proc_address("glVertexAttribPointer")); + if (!internal::glVertexAttribPointer) return false; + + // OpenGL 2.1 + + internal::glUniformMatrix2x3fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix2x3fv")); + if (!internal::glUniformMatrix2x3fv) return false; + internal::glUniformMatrix3x2fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix3x2fv")); + if (!internal::glUniformMatrix3x2fv) return false; + internal::glUniformMatrix2x4fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix2x4fv")); + if (!internal::glUniformMatrix2x4fv) return false; + internal::glUniformMatrix4x2fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix4x2fv")); + if (!internal::glUniformMatrix4x2fv) return false; + internal::glUniformMatrix3x4fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix3x4fv")); + if (!internal::glUniformMatrix3x4fv) return false; + internal::glUniformMatrix4x3fv = reinterpret_cast(internal::get_proc_address("glUniformMatrix4x3fv")); + if (!internal::glUniformMatrix4x3fv) return false; + + // OpenGL 3.0 + + internal::glColorMaski = reinterpret_cast(internal::get_proc_address("glColorMaski")); + if (!internal::glColorMaski) return false; + internal::glGetBooleani_v = reinterpret_cast(internal::get_proc_address("glGetBooleani_v")); + if (!internal::glGetBooleani_v) return false; + internal::glGetIntegeri_v = reinterpret_cast(internal::get_proc_address("glGetIntegeri_v")); + if (!internal::glGetIntegeri_v) return false; + internal::glEnablei = reinterpret_cast(internal::get_proc_address("glEnablei")); + if (!internal::glEnablei) return false; + internal::glDisablei = reinterpret_cast(internal::get_proc_address("glDisablei")); + if (!internal::glDisablei) return false; + internal::glIsEnabledi = reinterpret_cast(internal::get_proc_address("glIsEnabledi")); + if (!internal::glIsEnabledi) return false; + internal::glBeginTransformFeedback = reinterpret_cast(internal::get_proc_address("glBeginTransformFeedback")); + if (!internal::glBeginTransformFeedback) return false; + internal::glEndTransformFeedback = reinterpret_cast(internal::get_proc_address("glEndTransformFeedback")); + if (!internal::glEndTransformFeedback) return false; + internal::glBindBufferRange = reinterpret_cast(internal::get_proc_address("glBindBufferRange")); + if (!internal::glBindBufferRange) return false; + internal::glBindBufferBase = reinterpret_cast(internal::get_proc_address("glBindBufferBase")); + if (!internal::glBindBufferBase) return false; + internal::glTransformFeedbackVaryings = reinterpret_cast(internal::get_proc_address("glTransformFeedbackVaryings")); + if (!internal::glTransformFeedbackVaryings) return false; + internal::glGetTransformFeedbackVarying = reinterpret_cast(internal::get_proc_address("glGetTransformFeedbackVarying")); + if (!internal::glGetTransformFeedbackVarying) return false; + internal::glClampColor = reinterpret_cast(internal::get_proc_address("glClampColor")); + if (!internal::glClampColor) return false; + internal::glBeginConditionalRender = reinterpret_cast(internal::get_proc_address("glBeginConditionalRender")); + if (!internal::glBeginConditionalRender) return false; + internal::glEndConditionalRender = reinterpret_cast(internal::get_proc_address("glEndConditionalRender")); + if (!internal::glEndConditionalRender) return false; + internal::glVertexAttribIPointer = reinterpret_cast(internal::get_proc_address("glVertexAttribIPointer")); + if (!internal::glVertexAttribIPointer) return false; + internal::glGetVertexAttribIiv = reinterpret_cast(internal::get_proc_address("glGetVertexAttribIiv")); + if (!internal::glGetVertexAttribIiv) return false; + internal::glGetVertexAttribIuiv = reinterpret_cast(internal::get_proc_address("glGetVertexAttribIuiv")); + if (!internal::glGetVertexAttribIuiv) return false; + internal::glVertexAttribI1i = reinterpret_cast(internal::get_proc_address("glVertexAttribI1i")); + if (!internal::glVertexAttribI1i) return false; + internal::glVertexAttribI2i = reinterpret_cast(internal::get_proc_address("glVertexAttribI2i")); + if (!internal::glVertexAttribI2i) return false; + internal::glVertexAttribI3i = reinterpret_cast(internal::get_proc_address("glVertexAttribI3i")); + if (!internal::glVertexAttribI3i) return false; + internal::glVertexAttribI4i = reinterpret_cast(internal::get_proc_address("glVertexAttribI4i")); + if (!internal::glVertexAttribI4i) return false; + internal::glVertexAttribI1ui = reinterpret_cast(internal::get_proc_address("glVertexAttribI1ui")); + if (!internal::glVertexAttribI1ui) return false; + internal::glVertexAttribI2ui = reinterpret_cast(internal::get_proc_address("glVertexAttribI2ui")); + if (!internal::glVertexAttribI2ui) return false; + internal::glVertexAttribI3ui = reinterpret_cast(internal::get_proc_address("glVertexAttribI3ui")); + if (!internal::glVertexAttribI3ui) return false; + internal::glVertexAttribI4ui = reinterpret_cast(internal::get_proc_address("glVertexAttribI4ui")); + if (!internal::glVertexAttribI4ui) return false; + internal::glVertexAttribI1iv = reinterpret_cast(internal::get_proc_address("glVertexAttribI1iv")); + if (!internal::glVertexAttribI1iv) return false; + internal::glVertexAttribI2iv = reinterpret_cast(internal::get_proc_address("glVertexAttribI2iv")); + if (!internal::glVertexAttribI2iv) return false; + internal::glVertexAttribI3iv = reinterpret_cast(internal::get_proc_address("glVertexAttribI3iv")); + if (!internal::glVertexAttribI3iv) return false; + internal::glVertexAttribI4iv = reinterpret_cast(internal::get_proc_address("glVertexAttribI4iv")); + if (!internal::glVertexAttribI4iv) return false; + internal::glVertexAttribI1uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribI1uiv")); + if (!internal::glVertexAttribI1uiv) return false; + internal::glVertexAttribI2uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribI2uiv")); + if (!internal::glVertexAttribI2uiv) return false; + internal::glVertexAttribI3uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribI3uiv")); + if (!internal::glVertexAttribI3uiv) return false; + internal::glVertexAttribI4uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribI4uiv")); + if (!internal::glVertexAttribI4uiv) return false; + internal::glVertexAttribI4bv = reinterpret_cast(internal::get_proc_address("glVertexAttribI4bv")); + if (!internal::glVertexAttribI4bv) return false; + internal::glVertexAttribI4sv = reinterpret_cast(internal::get_proc_address("glVertexAttribI4sv")); + if (!internal::glVertexAttribI4sv) return false; + internal::glVertexAttribI4ubv = reinterpret_cast(internal::get_proc_address("glVertexAttribI4ubv")); + if (!internal::glVertexAttribI4ubv) return false; + internal::glVertexAttribI4usv = reinterpret_cast(internal::get_proc_address("glVertexAttribI4usv")); + if (!internal::glVertexAttribI4usv) return false; + internal::glGetUniformuiv = reinterpret_cast(internal::get_proc_address("glGetUniformuiv")); + if (!internal::glGetUniformuiv) return false; + internal::glBindFragDataLocation = reinterpret_cast(internal::get_proc_address("glBindFragDataLocation")); + if (!internal::glBindFragDataLocation) return false; + internal::glGetFragDataLocation = reinterpret_cast(internal::get_proc_address("glGetFragDataLocation")); + if (!internal::glGetFragDataLocation) return false; + internal::glUniform1ui = reinterpret_cast(internal::get_proc_address("glUniform1ui")); + if (!internal::glUniform1ui) return false; + internal::glUniform2ui = reinterpret_cast(internal::get_proc_address("glUniform2ui")); + if (!internal::glUniform2ui) return false; + internal::glUniform3ui = reinterpret_cast(internal::get_proc_address("glUniform3ui")); + if (!internal::glUniform3ui) return false; + internal::glUniform4ui = reinterpret_cast(internal::get_proc_address("glUniform4ui")); + if (!internal::glUniform4ui) return false; + internal::glUniform1uiv = reinterpret_cast(internal::get_proc_address("glUniform1uiv")); + if (!internal::glUniform1uiv) return false; + internal::glUniform2uiv = reinterpret_cast(internal::get_proc_address("glUniform2uiv")); + if (!internal::glUniform2uiv) return false; + internal::glUniform3uiv = reinterpret_cast(internal::get_proc_address("glUniform3uiv")); + if (!internal::glUniform3uiv) return false; + internal::glUniform4uiv = reinterpret_cast(internal::get_proc_address("glUniform4uiv")); + if (!internal::glUniform4uiv) return false; + internal::glTexParameterIiv = reinterpret_cast(internal::get_proc_address("glTexParameterIiv")); + if (!internal::glTexParameterIiv) return false; + internal::glTexParameterIuiv = reinterpret_cast(internal::get_proc_address("glTexParameterIuiv")); + if (!internal::glTexParameterIuiv) return false; + internal::glGetTexParameterIiv = reinterpret_cast(internal::get_proc_address("glGetTexParameterIiv")); + if (!internal::glGetTexParameterIiv) return false; + internal::glGetTexParameterIuiv = reinterpret_cast(internal::get_proc_address("glGetTexParameterIuiv")); + if (!internal::glGetTexParameterIuiv) return false; + internal::glClearBufferiv = reinterpret_cast(internal::get_proc_address("glClearBufferiv")); + if (!internal::glClearBufferiv) return false; + internal::glClearBufferuiv = reinterpret_cast(internal::get_proc_address("glClearBufferuiv")); + if (!internal::glClearBufferuiv) return false; + internal::glClearBufferfv = reinterpret_cast(internal::get_proc_address("glClearBufferfv")); + if (!internal::glClearBufferfv) return false; + internal::glClearBufferfi = reinterpret_cast(internal::get_proc_address("glClearBufferfi")); + if (!internal::glClearBufferfi) return false; + internal::glGetStringi = reinterpret_cast(internal::get_proc_address("glGetStringi")); + if (!internal::glGetStringi) return false; + internal::glIsRenderbuffer = reinterpret_cast(internal::get_proc_address("glIsRenderbuffer")); + if (!internal::glIsRenderbuffer) return false; + internal::glBindRenderbuffer = reinterpret_cast(internal::get_proc_address("glBindRenderbuffer")); + if (!internal::glBindRenderbuffer) return false; + internal::glDeleteRenderbuffers = reinterpret_cast(internal::get_proc_address("glDeleteRenderbuffers")); + if (!internal::glDeleteRenderbuffers) return false; + internal::glGenRenderbuffers = reinterpret_cast(internal::get_proc_address("glGenRenderbuffers")); + if (!internal::glGenRenderbuffers) return false; + internal::glRenderbufferStorage = reinterpret_cast(internal::get_proc_address("glRenderbufferStorage")); + if (!internal::glRenderbufferStorage) return false; + internal::glGetRenderbufferParameteriv = reinterpret_cast(internal::get_proc_address("glGetRenderbufferParameteriv")); + if (!internal::glGetRenderbufferParameteriv) return false; + internal::glIsFramebuffer = reinterpret_cast(internal::get_proc_address("glIsFramebuffer")); + if (!internal::glIsFramebuffer) return false; + internal::glBindFramebuffer = reinterpret_cast(internal::get_proc_address("glBindFramebuffer")); + if (!internal::glBindFramebuffer) return false; + internal::glDeleteFramebuffers = reinterpret_cast(internal::get_proc_address("glDeleteFramebuffers")); + if (!internal::glDeleteFramebuffers) return false; + internal::glGenFramebuffers = reinterpret_cast(internal::get_proc_address("glGenFramebuffers")); + if (!internal::glGenFramebuffers) return false; + internal::glCheckFramebufferStatus = reinterpret_cast(internal::get_proc_address("glCheckFramebufferStatus")); + if (!internal::glCheckFramebufferStatus) return false; + internal::glFramebufferTexture1D = reinterpret_cast(internal::get_proc_address("glFramebufferTexture1D")); + if (!internal::glFramebufferTexture1D) return false; + internal::glFramebufferTexture2D = reinterpret_cast(internal::get_proc_address("glFramebufferTexture2D")); + if (!internal::glFramebufferTexture2D) return false; + internal::glFramebufferTexture3D = reinterpret_cast(internal::get_proc_address("glFramebufferTexture3D")); + if (!internal::glFramebufferTexture3D) return false; + internal::glFramebufferRenderbuffer = reinterpret_cast(internal::get_proc_address("glFramebufferRenderbuffer")); + if (!internal::glFramebufferRenderbuffer) return false; + internal::glGetFramebufferAttachmentParameteriv = reinterpret_cast(internal::get_proc_address("glGetFramebufferAttachmentParameteriv")); + if (!internal::glGetFramebufferAttachmentParameteriv) return false; + internal::glGenerateMipmap = reinterpret_cast(internal::get_proc_address("glGenerateMipmap")); + if (!internal::glGenerateMipmap) return false; + internal::glBlitFramebuffer = reinterpret_cast(internal::get_proc_address("glBlitFramebuffer")); + if (!internal::glBlitFramebuffer) return false; + internal::glRenderbufferStorageMultisample = reinterpret_cast(internal::get_proc_address("glRenderbufferStorageMultisample")); + if (!internal::glRenderbufferStorageMultisample) return false; + internal::glFramebufferTextureLayer = reinterpret_cast(internal::get_proc_address("glFramebufferTextureLayer")); + if (!internal::glFramebufferTextureLayer) return false; + internal::glMapBufferRange = reinterpret_cast(internal::get_proc_address("glMapBufferRange")); + if (!internal::glMapBufferRange) return false; + internal::glFlushMappedBufferRange = reinterpret_cast(internal::get_proc_address("glFlushMappedBufferRange")); + if (!internal::glFlushMappedBufferRange) return false; + internal::glBindVertexArray = reinterpret_cast(internal::get_proc_address("glBindVertexArray")); + if (!internal::glBindVertexArray) return false; + internal::glDeleteVertexArrays = reinterpret_cast(internal::get_proc_address("glDeleteVertexArrays")); + if (!internal::glDeleteVertexArrays) return false; + internal::glGenVertexArrays = reinterpret_cast(internal::get_proc_address("glGenVertexArrays")); + if (!internal::glGenVertexArrays) return false; + internal::glIsVertexArray = reinterpret_cast(internal::get_proc_address("glIsVertexArray")); + if (!internal::glIsVertexArray) return false; + + // OpenGL 3.1 + + internal::glDrawArraysInstanced = reinterpret_cast(internal::get_proc_address("glDrawArraysInstanced")); + if (!internal::glDrawArraysInstanced) return false; + internal::glDrawElementsInstanced = reinterpret_cast(internal::get_proc_address("glDrawElementsInstanced")); + if (!internal::glDrawElementsInstanced) return false; + internal::glTexBuffer = reinterpret_cast(internal::get_proc_address("glTexBuffer")); + if (!internal::glTexBuffer) return false; + internal::glPrimitiveRestartIndex = reinterpret_cast(internal::get_proc_address("glPrimitiveRestartIndex")); + if (!internal::glPrimitiveRestartIndex) return false; + internal::glCopyBufferSubData = reinterpret_cast(internal::get_proc_address("glCopyBufferSubData")); + if (!internal::glCopyBufferSubData) return false; + internal::glGetUniformIndices = reinterpret_cast(internal::get_proc_address("glGetUniformIndices")); + if (!internal::glGetUniformIndices) return false; + internal::glGetActiveUniformsiv = reinterpret_cast(internal::get_proc_address("glGetActiveUniformsiv")); + if (!internal::glGetActiveUniformsiv) return false; + internal::glGetActiveUniformName = reinterpret_cast(internal::get_proc_address("glGetActiveUniformName")); + if (!internal::glGetActiveUniformName) return false; + internal::glGetUniformBlockIndex = reinterpret_cast(internal::get_proc_address("glGetUniformBlockIndex")); + if (!internal::glGetUniformBlockIndex) return false; + internal::glGetActiveUniformBlockiv = reinterpret_cast(internal::get_proc_address("glGetActiveUniformBlockiv")); + if (!internal::glGetActiveUniformBlockiv) return false; + internal::glGetActiveUniformBlockName = reinterpret_cast(internal::get_proc_address("glGetActiveUniformBlockName")); + if (!internal::glGetActiveUniformBlockName) return false; + internal::glUniformBlockBinding = reinterpret_cast(internal::get_proc_address("glUniformBlockBinding")); + if (!internal::glUniformBlockBinding) return false; + + // OpenGL 3.2 + + internal::glDrawElementsBaseVertex = reinterpret_cast(internal::get_proc_address("glDrawElementsBaseVertex")); + if (!internal::glDrawElementsBaseVertex) return false; + internal::glDrawRangeElementsBaseVertex = reinterpret_cast(internal::get_proc_address("glDrawRangeElementsBaseVertex")); + if (!internal::glDrawRangeElementsBaseVertex) return false; + internal::glDrawElementsInstancedBaseVertex = reinterpret_cast(internal::get_proc_address("glDrawElementsInstancedBaseVertex")); + if (!internal::glDrawElementsInstancedBaseVertex) return false; + internal::glMultiDrawElementsBaseVertex = reinterpret_cast(internal::get_proc_address("glMultiDrawElementsBaseVertex")); + if (!internal::glMultiDrawElementsBaseVertex) return false; + internal::glProvokingVertex = reinterpret_cast(internal::get_proc_address("glProvokingVertex")); + if (!internal::glProvokingVertex) return false; + internal::glFenceSync = reinterpret_cast(internal::get_proc_address("glFenceSync")); + if (!internal::glFenceSync) return false; + internal::glIsSync = reinterpret_cast(internal::get_proc_address("glIsSync")); + if (!internal::glIsSync) return false; + internal::glDeleteSync = reinterpret_cast(internal::get_proc_address("glDeleteSync")); + if (!internal::glDeleteSync) return false; + internal::glClientWaitSync = reinterpret_cast(internal::get_proc_address("glClientWaitSync")); + if (!internal::glClientWaitSync) return false; + internal::glWaitSync = reinterpret_cast(internal::get_proc_address("glWaitSync")); + if (!internal::glWaitSync) return false; + internal::glGetInteger64v = reinterpret_cast(internal::get_proc_address("glGetInteger64v")); + if (!internal::glGetInteger64v) return false; + internal::glGetSynciv = reinterpret_cast(internal::get_proc_address("glGetSynciv")); + if (!internal::glGetSynciv) return false; + internal::glGetInteger64i_v = reinterpret_cast(internal::get_proc_address("glGetInteger64i_v")); + if (!internal::glGetInteger64i_v) return false; + internal::glGetBufferParameteri64v = reinterpret_cast(internal::get_proc_address("glGetBufferParameteri64v")); + if (!internal::glGetBufferParameteri64v) return false; + internal::glFramebufferTexture = reinterpret_cast(internal::get_proc_address("glFramebufferTexture")); + if (!internal::glFramebufferTexture) return false; + internal::glTexImage2DMultisample = reinterpret_cast(internal::get_proc_address("glTexImage2DMultisample")); + if (!internal::glTexImage2DMultisample) return false; + internal::glTexImage3DMultisample = reinterpret_cast(internal::get_proc_address("glTexImage3DMultisample")); + if (!internal::glTexImage3DMultisample) return false; + internal::glGetMultisamplefv = reinterpret_cast(internal::get_proc_address("glGetMultisamplefv")); + if (!internal::glGetMultisamplefv) return false; + internal::glSampleMaski = reinterpret_cast(internal::get_proc_address("glSampleMaski")); + if (!internal::glSampleMaski) return false; + + // OpenGL 3.3 + + internal::glBindFragDataLocationIndexed = reinterpret_cast(internal::get_proc_address("glBindFragDataLocationIndexed")); + if (!internal::glBindFragDataLocationIndexed) return false; + internal::glGetFragDataIndex = reinterpret_cast(internal::get_proc_address("glGetFragDataIndex")); + if (!internal::glGetFragDataIndex) return false; + internal::glGenSamplers = reinterpret_cast(internal::get_proc_address("glGenSamplers")); + if (!internal::glGenSamplers) return false; + internal::glDeleteSamplers = reinterpret_cast(internal::get_proc_address("glDeleteSamplers")); + if (!internal::glDeleteSamplers) return false; + internal::glIsSampler = reinterpret_cast(internal::get_proc_address("glIsSampler")); + if (!internal::glIsSampler) return false; + internal::glBindSampler = reinterpret_cast(internal::get_proc_address("glBindSampler")); + if (!internal::glBindSampler) return false; + internal::glSamplerParameteri = reinterpret_cast(internal::get_proc_address("glSamplerParameteri")); + if (!internal::glSamplerParameteri) return false; + internal::glSamplerParameteriv = reinterpret_cast(internal::get_proc_address("glSamplerParameteriv")); + if (!internal::glSamplerParameteriv) return false; + internal::glSamplerParameterf = reinterpret_cast(internal::get_proc_address("glSamplerParameterf")); + if (!internal::glSamplerParameterf) return false; + internal::glSamplerParameterfv = reinterpret_cast(internal::get_proc_address("glSamplerParameterfv")); + if (!internal::glSamplerParameterfv) return false; + internal::glSamplerParameterIiv = reinterpret_cast(internal::get_proc_address("glSamplerParameterIiv")); + if (!internal::glSamplerParameterIiv) return false; + internal::glSamplerParameterIuiv = reinterpret_cast(internal::get_proc_address("glSamplerParameterIuiv")); + if (!internal::glSamplerParameterIuiv) return false; + internal::glGetSamplerParameteriv = reinterpret_cast(internal::get_proc_address("glGetSamplerParameteriv")); + if (!internal::glGetSamplerParameteriv) return false; + internal::glGetSamplerParameterIiv = reinterpret_cast(internal::get_proc_address("glGetSamplerParameterIiv")); + if (!internal::glGetSamplerParameterIiv) return false; + internal::glGetSamplerParameterfv = reinterpret_cast(internal::get_proc_address("glGetSamplerParameterfv")); + if (!internal::glGetSamplerParameterfv) return false; + internal::glGetSamplerParameterIuiv = reinterpret_cast(internal::get_proc_address("glGetSamplerParameterIuiv")); + if (!internal::glGetSamplerParameterIuiv) return false; + internal::glQueryCounter = reinterpret_cast(internal::get_proc_address("glQueryCounter")); + if (!internal::glQueryCounter) return false; + internal::glGetQueryObjecti64v = reinterpret_cast(internal::get_proc_address("glGetQueryObjecti64v")); + if (!internal::glGetQueryObjecti64v) return false; + internal::glGetQueryObjectui64v = reinterpret_cast(internal::get_proc_address("glGetQueryObjectui64v")); + if (!internal::glGetQueryObjectui64v) return false; + internal::glVertexAttribDivisor = reinterpret_cast(internal::get_proc_address("glVertexAttribDivisor")); + if (!internal::glVertexAttribDivisor) return false; + internal::glVertexAttribP1ui = reinterpret_cast(internal::get_proc_address("glVertexAttribP1ui")); + if (!internal::glVertexAttribP1ui) return false; + internal::glVertexAttribP1uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribP1uiv")); + if (!internal::glVertexAttribP1uiv) return false; + internal::glVertexAttribP2ui = reinterpret_cast(internal::get_proc_address("glVertexAttribP2ui")); + if (!internal::glVertexAttribP2ui) return false; + internal::glVertexAttribP2uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribP2uiv")); + if (!internal::glVertexAttribP2uiv) return false; + internal::glVertexAttribP3ui = reinterpret_cast(internal::get_proc_address("glVertexAttribP3ui")); + if (!internal::glVertexAttribP3ui) return false; + internal::glVertexAttribP3uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribP3uiv")); + if (!internal::glVertexAttribP3uiv) return false; + internal::glVertexAttribP4ui = reinterpret_cast(internal::get_proc_address("glVertexAttribP4ui")); + if (!internal::glVertexAttribP4ui) return false; + internal::glVertexAttribP4uiv = reinterpret_cast(internal::get_proc_address("glVertexAttribP4uiv")); + if (!internal::glVertexAttribP4uiv) return false; + + return true; } - int GetLeastMinorVersion() + static bool load_ext_GL_ARB_texture_filter_anisotropic() { - return 3; + + return true; } - int GetLeastMajorVersion() + static std::unordered_set extensions; + bool initialize() { - return 3; + if (!load_core()) return false; + + GLint num_extensions; + internal::glGetIntegerv(0x821D, &num_extensions); + for (GLint i = 0; i < num_extensions; ++i) + extensions.insert(reinterpret_cast(internal::glGetStringi(0x1F03, i))); + + if (extensions.count("GL_ARB_texture_filter_anisotropic") > 0) + ext_GL_ARB_texture_filter_anisotropic_loaded = load_ext_GL_ARB_texture_filter_anisotropic(); + + return true; } - - static int g_major_version = 0; - static int g_minor_version = 0; - - static void GetGLVersion() - { - _detail::GetIntegerv(MAJOR_VERSION, &g_major_version); - _detail::GetIntegerv(MINOR_VERSION, &g_minor_version); - } - - int GetMajorVersion() - { - if(g_major_version == 0) - GetGLVersion(); - return g_major_version; - } - - int GetMinorVersion() - { - if(g_major_version == 0) //Yes, check the major version to get the minor one. - GetGLVersion(); - return g_minor_version; - } - - bool IsVersionGEQ(int majorVersion, int minorVersion) - { - if(g_major_version == 0) - GetGLVersion(); - - if(majorVersion < g_major_version) return true; - if(majorVersion > g_major_version) return false; - if(minorVersion <= g_minor_version) return true; - return false; - } - - } //namespace sys -} //namespace gl + + const char * api(){ return "OpenGL"; } + + int major_version(){ return 3; } + + int minor_version(){ return 3; } + + bool ext_ARB_texture_filter_anisotropic(){ return ext_GL_ARB_texture_filter_anisotropic_loaded; } + + } // namespace sys + +} // namespace gl + diff --git a/libs/gfx/source/program.cpp b/libs/gfx/source/program.cpp index 835e3fae..6906298a 100644 --- a/libs/gfx/source/program.cpp +++ b/libs/gfx/source/program.cpp @@ -151,47 +151,47 @@ namespace psemek::gfx void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix2fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix2fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix3x2fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix3x2fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix4x2fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix4x2fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix2x3fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix2x3fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix3fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix3fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix4x3fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix4x3fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix2x4fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix2x4fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix3x4fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix3x4fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::matrix const & m) { - gl::UniformMatrix4fv(location_, 1, gl::TRUE_, m.coords); + gl::UniformMatrix4fv(location_, 1, gl::TRUE, m.coords); } void program::uniform_proxy::operator = (geom::interval const & i) @@ -218,7 +218,7 @@ namespace psemek::gfx GLint status; gl::GetShaderiv(shader, gl::COMPILE_STATUS, &status); - if (status != gl::TRUE_) + if (status != gl::TRUE) { GLint log_len; gl::GetShaderiv(shader, gl::INFO_LOG_LENGTH, &log_len); @@ -236,7 +236,7 @@ namespace psemek::gfx GLint status; gl::GetProgramiv(program, gl::LINK_STATUS, &status); - if (status != gl::TRUE_) + if (status != gl::TRUE) { GLint log_len; gl::GetProgramiv(program, gl::INFO_LOG_LENGTH, &log_len); diff --git a/libs/gfx/source/texture.cpp b/libs/gfx/source/texture.cpp index d5e73cc7..2b66172e 100644 --- a/libs/gfx/source/texture.cpp +++ b/libs/gfx/source/texture.cpp @@ -17,11 +17,12 @@ namespace psemek::gfx static std::optional get_max_anisotropy() { - if (!gl::exts::var_EXT_texture_filter_anisotropic) return std::nullopt; + if (!gl::sys::ext_ARB_texture_filter_anisotropic()) return std::nullopt; float level; - gl::GetFloatv(gl::MAX_TEXTURE_MAX_ANISOTROPY_EXT, &level); + gl::GetFloatv(gl::MAX_TEXTURE_MAX_ANISOTROPY, &level); return level; + return 0.f; } std::optional max_anisotropy()