From 9945fa5b40d0d1862d810bf15222fa02a398c7a0 Mon Sep 17 00:00:00 2001 From: sergeypdev Date: Sat, 3 Feb 2024 04:27:10 +0400 Subject: [PATCH] Remove glad, fix windows build, finally a good base --- .gitignore | 4 +- build.zig | 218 +- build.zig.zon | 4 +- include/KHR/khrplatform.h | 311 -- include/glad/glad.h | 2652 ----------- src/c.zig | 7 +- src/game.zig | 476 +- src/gl.zig | 9275 +++++++++++++++++++++++++++++++++++++ src/glad.c | 1421 ------ src/main.zig | 316 +- src/shaders/frag.glsl | 14 +- src/shaders/vert.glsl | 14 +- 12 files changed, 9797 insertions(+), 4915 deletions(-) delete mode 100644 include/KHR/khrplatform.h delete mode 100644 include/glad/glad.h create mode 100644 src/gl.zig delete mode 100644 src/glad.c diff --git a/.gitignore b/.gitignore index c26d4af..7f47535 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -zig-out -zig-cache +zig-out +zig-cache diff --git a/build.zig b/build.zig index cda1ca9..f2ff5d0 100644 --- a/build.zig +++ b/build.zig @@ -1,117 +1,101 @@ -const std = @import("std"); - -// Although this function looks imperative, note that its job is to -// declaratively construct a build graph that will be executed by an external -// runner. -pub fn build(b: *std.Build) void { - // Standard target options allows the person running `zig build` to choose - // what target to build for. Here we do not override the defaults, which - // means any target is allowed, and the default is native. Other options - // for restricting supported target set are available. - const target = b.standardTargetOptions(.{}); - - // Standard optimization options allow the person running `zig build` to select - // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not - // set a preferred release mode, allowing the user to decide how to optimize. - const optimize = b.standardOptimizeOption(.{}); - - // const sdl_dep = b.dependency("SDL", .{ - // .target = target, - // .optimize = .ReleaseSafe, - // }); - // const sdl2 = sdl_dep.artifact("SDL2"); - - const glad = b.addSharedLibrary(.{ - .name = "glad", - .target = target, - .optimize = optimize, - }); - glad.addCSourceFile(.{ .file = .{ .path = "src/glad.c" } }); - glad.addIncludePath(.{ .path = "include" }); - - const lib = b.addSharedLibrary(.{ - .name = "learnopengl", - .root_source_file = .{ .path = "src/game.zig" }, - .target = target, - .optimize = optimize, - }); - - lib.linkSystemLibrary("SDL2"); - lib.addSystemIncludePath(.{ .path = "/opt/homebrew/opt/sdl2/include/" }); - lib.addLibraryPath(.{ .path = "/opt/homebrew/opt/sdl2/lib" }); - lib.linkLibrary(glad); - lib.addIncludePath(.{ .path = "include" }); - - const installLib = b.addInstallArtifact(lib, .{ - .dest_dir = .{ .override = .bin }, - }); - b.getInstallStep().dependOn(&installLib.step); - - const exe = b.addExecutable(.{ - .name = "learnopengl", - // In this case the main source file is merely a path, however, in more - // complicated build scripts, this could be a generated file. - .root_source_file = .{ .path = "src/main.zig" }, - .target = target, - .optimize = optimize, - }); - - exe.linkSystemLibrary("SDL2"); - exe.addSystemIncludePath(.{ .path = "/opt/homebrew/opt/sdl2/include/" }); - exe.addLibraryPath(.{ .path = "/opt/homebrew/opt/sdl2/lib" }); - exe.linkLibrary(glad); - exe.addIncludePath(.{ .path = "include" }); - - // This declares intent for the executable to be installed into the - // standard location when the user invokes the "install" step (the default - // step when running `zig build`). - b.installArtifact(exe); - - // This *creates* a Run step in the build graph, to be executed when another - // step is evaluated that depends on it. The next line below will establish - // such a dependency. - const run_cmd = b.addRunArtifact(exe); - - // By making the run step depend on the install step, it will be run from the - // installation directory rather than directly from within the cache directory. - // This is not necessary, however, if the application depends on other installed - // files, this ensures they will be present and in the expected location. - run_cmd.step.dependOn(b.getInstallStep()); - - // This allows the user to pass arguments to the application in the build - // command itself, like this: `zig build run -- arg1 arg2 etc` - if (b.args) |args| { - run_cmd.addArgs(args); - } - - // This creates a build step. It will be visible in the `zig build --help` menu, - // and can be selected like this: `zig build run` - // This will evaluate the `run` step rather than the default, which is "install". - const run_step = b.step("run", "Run the app"); - run_step.dependOn(&run_cmd.step); - - // // Creates a step for unit testing. This only builds the test executable - // // but does not run it. - // const lib_unit_tests = b.addTest(.{ - // .root_source_file = .{ .path = "src/root.zig" }, - // .target = target, - // .optimize = optimize, - // }); - - // const run_lib_unit_tests = b.addRunArtifact(lib_unit_tests); - - const exe_unit_tests = b.addTest(.{ - .root_source_file = .{ .path = "src/main.zig" }, - .target = target, - .optimize = optimize, - }); - - const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests); - - // Similar to creating the run step earlier, this exposes a `test` step to - // the `zig build --help` menu, providing a way for the user to request - // running the unit tests. - const test_step = b.step("test", "Run unit tests"); - // test_step.dependOn(&run_lib_unit_tests.step); - test_step.dependOn(&run_exe_unit_tests.step); -} +const std = @import("std"); + +// Although this function looks imperative, note that its job is to +// declaratively construct a build graph that will be executed by an external +// runner. +pub fn build(b: *std.Build) void { + // Standard target options allows the person running `zig build` to choose + // what target to build for. Here we do not override the defaults, which + // means any target is allowed, and the default is native. Other options + // for restricting supported target set are available. + const target = b.standardTargetOptions(.{}); + + // Standard optimization options allow the person running `zig build` to select + // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not + // set a preferred release mode, allowing the user to decide how to optimize. + const optimize = b.standardOptimizeOption(.{}); + + const sdl_dep = b.dependency("SDL", .{ + .target = target, + .optimize = .ReleaseSafe, + }); + const sdl2 = sdl_dep.artifact("SDL2"); + + const lib = b.addSharedLibrary(.{ + .name = "learnopengl", + .root_source_file = .{ .path = "src/game.zig" }, + .target = target, + .optimize = optimize, + }); + + lib.linkLibrary(sdl2); + + const installLib = b.addInstallArtifact(lib, .{ + .dest_dir = .{ .override = .bin }, + }); + b.getInstallStep().dependOn(&installLib.step); + + const exe = b.addExecutable(.{ + .name = "learnopengl", + // In this case the main source file is merely a path, however, in more + // complicated build scripts, this could be a generated file. + .root_source_file = .{ .path = "src/main.zig" }, + .target = target, + .optimize = optimize, + }); + + exe.linkLibrary(sdl2); + + // This declares intent for the executable to be installed into the + // standard location when the user invokes the "install" step (the default + // step when running `zig build`). + b.installArtifact(exe); + + // This *creates* a Run step in the build graph, to be executed when another + // step is evaluated that depends on it. The next line below will establish + // such a dependency. + const run_cmd = b.addRunArtifact(exe); + + // By making the run step depend on the install step, it will be run from the + // installation directory rather than directly from within the cache directory. + // This is not necessary, however, if the application depends on other installed + // files, this ensures they will be present and in the expected location. + run_cmd.step.dependOn(b.getInstallStep()); + + // This allows the user to pass arguments to the application in the build + // command itself, like this: `zig build run -- arg1 arg2 etc` + if (b.args) |args| { + run_cmd.addArgs(args); + } + + // This creates a build step. It will be visible in the `zig build --help` menu, + // and can be selected like this: `zig build run` + // This will evaluate the `run` step rather than the default, which is "install". + const run_step = b.step("run", "Run the app"); + run_step.dependOn(&run_cmd.step); + + // // Creates a step for unit testing. This only builds the test executable + // // but does not run it. + // const lib_unit_tests = b.addTest(.{ + // .root_source_file = .{ .path = "src/root.zig" }, + // .target = target, + // .optimize = optimize, + // }); + + // const run_lib_unit_tests = b.addRunArtifact(lib_unit_tests); + + const exe_unit_tests = b.addTest(.{ + .root_source_file = .{ .path = "src/main.zig" }, + .target = target, + .optimize = optimize, + }); + + const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests); + + // Similar to creating the run step earlier, this exposes a `test` step to + // the `zig build --help` menu, providing a way for the user to request + // running the unit tests. + const test_step = b.step("test", "Run unit tests"); + // test_step.dependOn(&run_lib_unit_tests.step); + test_step.dependOn(&run_exe_unit_tests.step); +} diff --git a/build.zig.zon b/build.zig.zon index e4d721e..71021fd 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -16,8 +16,8 @@ // internet connectivity. .dependencies = .{ .SDL = .{ - .url = "https://github.com/sergeypdev/SDL/tarball/0d062f21742b2914a0258df718931f80a952be1a", - .hash = "122009e9c57dcbc6cd92be92c61eba913468ecfebd6c166011f6065a3ffbdc75f45f", + .url = "https://github.com/sergeypdev/SDL/tarball/b23c0ba880c53e5e98c57d2d5470c8d551a520b3", + .hash = "122080136ee910b4bec7be16e6c69cf1e7fc4f69d14f4d7d2dd1bba3c3fe30e489a3", }, }, .paths = .{ diff --git a/include/KHR/khrplatform.h b/include/KHR/khrplatform.h deleted file mode 100644 index 0164644..0000000 --- a/include/KHR/khrplatform.h +++ /dev/null @@ -1,311 +0,0 @@ -#ifndef __khrplatform_h_ -#define __khrplatform_h_ - -/* -** Copyright (c) 2008-2018 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -/* Khronos platform-specific types and definitions. - * - * The master copy of khrplatform.h is maintained in the Khronos EGL - * Registry repository at https://github.com/KhronosGroup/EGL-Registry - * The last semantic modification to khrplatform.h was at commit ID: - * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 - * - * Adopters may modify this file to suit their platform. Adopters are - * encouraged to submit platform specific modifications to the Khronos - * group so that they can be included in future versions of this file. - * Please submit changes by filing pull requests or issues on - * the EGL Registry repository linked above. - * - * - * See the Implementer's Guidelines for information about where this file - * should be located on your system and for more details of its use: - * http://www.khronos.org/registry/implementers_guide.pdf - * - * This file should be included as - * #include - * by Khronos client API header files that use its types and defines. - * - * The types in khrplatform.h should only be used to define API-specific types. - * - * Types defined in khrplatform.h: - * khronos_int8_t signed 8 bit - * khronos_uint8_t unsigned 8 bit - * khronos_int16_t signed 16 bit - * khronos_uint16_t unsigned 16 bit - * khronos_int32_t signed 32 bit - * khronos_uint32_t unsigned 32 bit - * khronos_int64_t signed 64 bit - * khronos_uint64_t unsigned 64 bit - * khronos_intptr_t signed same number of bits as a pointer - * khronos_uintptr_t unsigned same number of bits as a pointer - * khronos_ssize_t signed size - * khronos_usize_t unsigned size - * khronos_float_t signed 32 bit floating point - * khronos_time_ns_t unsigned 64 bit time in nanoseconds - * khronos_utime_nanoseconds_t unsigned time interval or absolute time in - * nanoseconds - * khronos_stime_nanoseconds_t signed time interval in nanoseconds - * khronos_boolean_enum_t enumerated boolean type. This should - * only be used as a base type when a client API's boolean type is - * an enum. Client APIs which use an integer or other type for - * booleans cannot use this as the base type for their boolean. - * - * Tokens defined in khrplatform.h: - * - * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. - * - * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. - * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. - * - * Calling convention macros defined in this file: - * KHRONOS_APICALL - * KHRONOS_APIENTRY - * KHRONOS_APIATTRIBUTES - * - * These may be used in function prototypes as: - * - * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( - * int arg1, - * int arg2) KHRONOS_APIATTRIBUTES; - */ - -#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) -# define KHRONOS_STATIC 1 -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APICALL - *------------------------------------------------------------------------- - * This precedes the return type of the function in the function prototype. - */ -#if defined(KHRONOS_STATIC) - /* If the preprocessor constant KHRONOS_STATIC is defined, make the - * header compatible with static linking. */ -# define KHRONOS_APICALL -#elif defined(_WIN32) -# define KHRONOS_APICALL __declspec(dllimport) -#elif defined (__SYMBIAN32__) -# define KHRONOS_APICALL IMPORT_C -#elif defined(__ANDROID__) -# define KHRONOS_APICALL __attribute__((visibility("default"))) -#else -# define KHRONOS_APICALL -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APIENTRY - *------------------------------------------------------------------------- - * This follows the return type of the function and precedes the function - * name in the function prototype. - */ -#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) - /* Win32 but not WinCE */ -# define KHRONOS_APIENTRY __stdcall -#else -# define KHRONOS_APIENTRY -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APIATTRIBUTES - *------------------------------------------------------------------------- - * This follows the closing parenthesis of the function prototype arguments. - */ -#if defined (__ARMCC_2__) -#define KHRONOS_APIATTRIBUTES __softfp -#else -#define KHRONOS_APIATTRIBUTES -#endif - -/*------------------------------------------------------------------------- - * basic type definitions - *-----------------------------------------------------------------------*/ -#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) - - -/* - * Using - */ -#include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 -/* - * To support platform where unsigned long cannot be used interchangeably with - * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. - * Ideally, we could just use (u)intptr_t everywhere, but this could result in - * ABI breakage if khronos_uintptr_t is changed from unsigned long to - * unsigned long long or similar (this results in different C++ name mangling). - * To avoid changes for existing platforms, we restrict usage of intptr_t to - * platforms where the size of a pointer is larger than the size of long. - */ -#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) -#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ -#define KHRONOS_USE_INTPTR_T -#endif -#endif - -#elif defined(__VMS ) || defined(__sgi) - -/* - * Using - */ -#include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) - -/* - * Win32 - */ -typedef __int32 khronos_int32_t; -typedef unsigned __int32 khronos_uint32_t; -typedef __int64 khronos_int64_t; -typedef unsigned __int64 khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(__sun__) || defined(__digital__) - -/* - * Sun or Digital - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#if defined(__arch64__) || defined(_LP64) -typedef long int khronos_int64_t; -typedef unsigned long int khronos_uint64_t; -#else -typedef long long int khronos_int64_t; -typedef unsigned long long int khronos_uint64_t; -#endif /* __arch64__ */ -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif 0 - -/* - * Hypothetical platform with no float or int64 support - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#define KHRONOS_SUPPORT_INT64 0 -#define KHRONOS_SUPPORT_FLOAT 0 - -#else - -/* - * Generic fallback - */ -#include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#endif - - -/* - * Types that are (so far) the same on all platforms - */ -typedef signed char khronos_int8_t; -typedef unsigned char khronos_uint8_t; -typedef signed short int khronos_int16_t; -typedef unsigned short int khronos_uint16_t; - -/* - * Types that differ between LLP64 and LP64 architectures - in LLP64, - * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears - * to be the only LLP64 architecture in current use. - */ -#ifdef KHRONOS_USE_INTPTR_T -typedef intptr_t khronos_intptr_t; -typedef uintptr_t khronos_uintptr_t; -#elif defined(_WIN64) -typedef signed long long int khronos_intptr_t; -typedef unsigned long long int khronos_uintptr_t; -#else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; -#endif - -#if defined(_WIN64) -typedef signed long long int khronos_ssize_t; -typedef unsigned long long int khronos_usize_t; -#else -typedef signed long int khronos_ssize_t; -typedef unsigned long int khronos_usize_t; -#endif - -#if KHRONOS_SUPPORT_FLOAT -/* - * Float type - */ -typedef float khronos_float_t; -#endif - -#if KHRONOS_SUPPORT_INT64 -/* Time types - * - * These types can be used to represent a time interval in nanoseconds or - * an absolute Unadjusted System Time. Unadjusted System Time is the number - * of nanoseconds since some arbitrary system event (e.g. since the last - * time the system booted). The Unadjusted System Time is an unsigned - * 64 bit value that wraps back to 0 every 584 years. Time intervals - * may be either signed or unsigned. - */ -typedef khronos_uint64_t khronos_utime_nanoseconds_t; -typedef khronos_int64_t khronos_stime_nanoseconds_t; -#endif - -/* - * Dummy value used to pad enum types to 32 bits. - */ -#ifndef KHRONOS_MAX_ENUM -#define KHRONOS_MAX_ENUM 0x7FFFFFFF -#endif - -/* - * Enumerated boolean type - * - * Values other than zero should be considered to be true. Therefore - * comparisons should not be made against KHRONOS_TRUE. - */ -typedef enum { - KHRONOS_FALSE = 0, - KHRONOS_TRUE = 1, - KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM -} khronos_boolean_enum_t; - -#endif /* __khrplatform_h_ */ diff --git a/include/glad/glad.h b/include/glad/glad.h deleted file mode 100644 index e065ecc..0000000 --- a/include/glad/glad.h +++ /dev/null @@ -1,2652 +0,0 @@ -/* - - OpenGL loader generated by glad 0.1.36 on Tue Jan 30 09:19:53 2024. - - Language/Generator: C/C++ - Specification: gl - APIs: gl=4.1 - Profile: core - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="" - Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.1 -*/ - - -#ifndef __glad_h_ -#define __glad_h_ - -#ifdef __gl_h_ -#error OpenGL header already included, remove this include, glad already provides it -#endif -#define __gl_h_ - -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) -#define APIENTRY __stdcall -#endif - -#ifndef APIENTRY -#define APIENTRY -#endif -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -struct gladGLversionStruct { - int major; - int minor; -}; - -typedef void* (* GLADloadproc)(const char *name); - -#ifndef GLAPI -# if defined(GLAD_GLAPI_EXPORT) -# if defined(_WIN32) || defined(__CYGWIN__) -# if defined(GLAD_GLAPI_EXPORT_BUILD) -# if defined(__GNUC__) -# define GLAPI __attribute__ ((dllexport)) extern -# else -# define GLAPI __declspec(dllexport) extern -# endif -# else -# if defined(__GNUC__) -# define GLAPI __attribute__ ((dllimport)) extern -# else -# define GLAPI __declspec(dllimport) extern -# endif -# endif -# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) -# define GLAPI __attribute__ ((visibility ("default"))) extern -# else -# define GLAPI extern -# endif -# else -# define GLAPI extern -# endif -#endif - -GLAPI struct gladGLversionStruct GLVersion; - -GLAPI int gladLoadGL(void); - -GLAPI int gladLoadGLLoader(GLADloadproc); - -#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 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 (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 *GLDEBUGPROCKHR)(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 void (APIENTRY *GLVULKANPROCNV)(void); -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_FALSE 0 -#define GL_TRUE 1 -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_NONE 0 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_VIEWPORT 0x0BA2 -#define GL_DITHER 0x0BD0 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND 0x0BE2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_READ_BUFFER 0x0C02 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_CLEAR 0x1500 -#define GL_AND 0x1501 -#define GL_AND_REVERSE 0x1502 -#define GL_COPY 0x1503 -#define GL_AND_INVERTED 0x1504 -#define GL_NOOP 0x1505 -#define GL_XOR 0x1506 -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_EQUIV 0x1509 -#define GL_INVERT 0x150A -#define GL_OR_REVERSE 0x150B -#define GL_COPY_INVERTED 0x150C -#define GL_OR_INVERTED 0x150D -#define GL_NAND 0x150E -#define GL_SET 0x150F -#define GL_TEXTURE 0x1702 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_STENCIL_INDEX 0x1901 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_REPEAT 0x2901 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_DOUBLE 0x140A -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_BLEND_COLOR 0x8005 -#define GL_BLEND_EQUATION 0x8009 -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_FUNC_ADD 0x8006 -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_FUNC_SUBTRACT 0x800A -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 -#define GL_SRC1_ALPHA 0x8589 -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_CLIP_DISTANCE0 0x3000 -#define GL_CLIP_DISTANCE1 0x3001 -#define GL_CLIP_DISTANCE2 0x3002 -#define GL_CLIP_DISTANCE3 0x3003 -#define GL_CLIP_DISTANCE4 0x3004 -#define GL_CLIP_DISTANCE5 0x3005 -#define GL_CLIP_DISTANCE6 0x3006 -#define GL_CLIP_DISTANCE7 0x3007 -#define GL_MAX_CLIP_DISTANCES 0x0D32 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_COLOR_ATTACHMENT16 0x8CF0 -#define GL_COLOR_ATTACHMENT17 0x8CF1 -#define GL_COLOR_ATTACHMENT18 0x8CF2 -#define GL_COLOR_ATTACHMENT19 0x8CF3 -#define GL_COLOR_ATTACHMENT20 0x8CF4 -#define GL_COLOR_ATTACHMENT21 0x8CF5 -#define GL_COLOR_ATTACHMENT22 0x8CF6 -#define GL_COLOR_ATTACHMENT23 0x8CF7 -#define GL_COLOR_ATTACHMENT24 0x8CF8 -#define GL_COLOR_ATTACHMENT25 0x8CF9 -#define GL_COLOR_ATTACHMENT26 0x8CFA -#define GL_COLOR_ATTACHMENT27 0x8CFB -#define GL_COLOR_ATTACHMENT28 0x8CFC -#define GL_COLOR_ATTACHMENT29 0x8CFD -#define GL_COLOR_ATTACHMENT30 0x8CFE -#define GL_COLOR_ATTACHMENT31 0x8CFF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 -#define GL_FRAMEBUFFER_SRGB 0x8DB9 -#define GL_HALF_FLOAT 0x140B -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C -#define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFF -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 -#define GL_DEPTH_CLAMP 0x864F -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_SRC1_COLOR 0x88F9 -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_SAMPLER_BINDING 0x8919 -#define GL_RGB10_A2UI 0x906F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIMESTAMP 0x8E28 -#define GL_INT_2_10_10_10_REV 0x8D9F -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 -#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E -#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E -#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F -#define GL_DRAW_INDIRECT_BUFFER 0x8F3F -#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 -#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F -#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A -#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B -#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C -#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D -#define GL_MAX_VERTEX_STREAMS 0x8E71 -#define GL_DOUBLE_VEC2 0x8FFC -#define GL_DOUBLE_VEC3 0x8FFD -#define GL_DOUBLE_VEC4 0x8FFE -#define GL_DOUBLE_MAT2 0x8F46 -#define GL_DOUBLE_MAT3 0x8F47 -#define GL_DOUBLE_MAT4 0x8F48 -#define GL_DOUBLE_MAT2x3 0x8F49 -#define GL_DOUBLE_MAT2x4 0x8F4A -#define GL_DOUBLE_MAT3x2 0x8F4B -#define GL_DOUBLE_MAT3x4 0x8F4C -#define GL_DOUBLE_MAT4x2 0x8F4D -#define GL_DOUBLE_MAT4x3 0x8F4E -#define GL_ACTIVE_SUBROUTINES 0x8DE5 -#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 -#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 -#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 -#define GL_MAX_SUBROUTINES 0x8DE7 -#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 -#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A -#define GL_COMPATIBLE_SUBROUTINES 0x8E4B -#define GL_PATCHES 0x000E -#define GL_PATCH_VERTICES 0x8E72 -#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 -#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 -#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 -#define GL_TESS_GEN_MODE 0x8E76 -#define GL_TESS_GEN_SPACING 0x8E77 -#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 -#define GL_TESS_GEN_POINT_MODE 0x8E79 -#define GL_ISOLINES 0x8E7A -#define GL_QUADS 0x0007 -#define GL_FRACTIONAL_ODD 0x8E7B -#define GL_FRACTIONAL_EVEN 0x8E7C -#define GL_MAX_PATCH_VERTICES 0x8E7D -#define GL_MAX_TESS_GEN_LEVEL 0x8E7E -#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F -#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 -#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 -#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 -#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 -#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 -#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 -#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 -#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 -#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A -#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C -#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D -#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E -#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 -#define GL_TESS_EVALUATION_SHADER 0x8E87 -#define GL_TESS_CONTROL_SHADER 0x8E88 -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 -#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 -#define GL_FIXED 0x140C -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 -#define GL_SHADER_COMPILER 0x8DFA -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_RGB565 0x8D62 -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF -#define GL_VERTEX_SHADER_BIT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT 0x00000002 -#define GL_GEOMETRY_SHADER_BIT 0x00000004 -#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 -#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 -#define GL_ALL_SHADER_BITS 0xFFFFFFFF -#define GL_PROGRAM_SEPARABLE 0x8258 -#define GL_ACTIVE_PROGRAM 0x8259 -#define GL_PROGRAM_PIPELINE_BINDING 0x825A -#define GL_MAX_VIEWPORTS 0x825B -#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C -#define GL_VIEWPORT_BOUNDS_RANGE 0x825D -#define GL_LAYER_PROVOKING_VERTEX 0x825E -#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F -#define GL_UNDEFINED_VERTEX 0x8260 -#ifndef GL_VERSION_1_0 -#define GL_VERSION_1_0 1 -GLAPI int GLAD_GL_VERSION_1_0; -typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); -GLAPI PFNGLCULLFACEPROC glad_glCullFace; -#define glCullFace glad_glCullFace -typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); -GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; -#define glFrontFace glad_glFrontFace -typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); -GLAPI PFNGLHINTPROC glad_glHint; -#define glHint glad_glHint -typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); -GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; -#define glLineWidth glad_glLineWidth -typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); -GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; -#define glPointSize glad_glPointSize -typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); -GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; -#define glPolygonMode glad_glPolygonMode -typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLSCISSORPROC glad_glScissor; -#define glScissor glad_glScissor -typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); -GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; -#define glTexParameterf glad_glTexParameterf -typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); -GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; -#define glTexParameterfv glad_glTexParameterfv -typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); -GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; -#define glTexParameteri glad_glTexParameteri -typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); -GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; -#define glTexParameteriv glad_glTexParameteriv -typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; -#define glTexImage1D glad_glTexImage1D -typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; -#define glTexImage2D glad_glTexImage2D -typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); -GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; -#define glDrawBuffer glad_glDrawBuffer -typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); -GLAPI PFNGLCLEARPROC glad_glClear; -#define glClear glad_glClear -typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; -#define glClearColor glad_glClearColor -typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); -GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; -#define glClearStencil glad_glClearStencil -typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); -GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; -#define glClearDepth glad_glClearDepth -typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); -GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; -#define glStencilMask glad_glStencilMask -typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI PFNGLCOLORMASKPROC glad_glColorMask; -#define glColorMask glad_glColorMask -typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); -GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; -#define glDepthMask glad_glDepthMask -typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); -GLAPI PFNGLDISABLEPROC glad_glDisable; -#define glDisable glad_glDisable -typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); -GLAPI PFNGLENABLEPROC glad_glEnable; -#define glEnable glad_glEnable -typedef void (APIENTRYP PFNGLFINISHPROC)(void); -GLAPI PFNGLFINISHPROC glad_glFinish; -#define glFinish glad_glFinish -typedef void (APIENTRYP PFNGLFLUSHPROC)(void); -GLAPI PFNGLFLUSHPROC glad_glFlush; -#define glFlush glad_glFlush -typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); -GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; -#define glBlendFunc glad_glBlendFunc -typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); -GLAPI PFNGLLOGICOPPROC glad_glLogicOp; -#define glLogicOp glad_glLogicOp -typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); -GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; -#define glStencilFunc glad_glStencilFunc -typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); -GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; -#define glStencilOp glad_glStencilOp -typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); -GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; -#define glDepthFunc glad_glDepthFunc -typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); -GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; -#define glPixelStoref glad_glPixelStoref -typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); -GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; -#define glPixelStorei glad_glPixelStorei -typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); -GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; -#define glReadBuffer glad_glReadBuffer -typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); -GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; -#define glReadPixels glad_glReadPixels -typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); -GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; -#define glGetBooleanv glad_glGetBooleanv -typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); -GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; -#define glGetDoublev glad_glGetDoublev -typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); -GLAPI PFNGLGETERRORPROC glad_glGetError; -#define glGetError glad_glGetError -typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); -GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; -#define glGetFloatv glad_glGetFloatv -typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); -GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; -#define glGetIntegerv glad_glGetIntegerv -typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); -GLAPI PFNGLGETSTRINGPROC glad_glGetString; -#define glGetString glad_glGetString -typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); -GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; -#define glGetTexImage glad_glGetTexImage -typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; -#define glGetTexParameterfv glad_glGetTexParameterfv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; -#define glGetTexParameteriv glad_glGetTexParameteriv -typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; -#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv -typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; -#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv -typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); -GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; -#define glIsEnabled glad_glIsEnabled -typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); -GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; -#define glDepthRange glad_glDepthRange -typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLVIEWPORTPROC glad_glViewport; -#define glViewport glad_glViewport -#endif -#ifndef GL_VERSION_1_1 -#define GL_VERSION_1_1 1 -GLAPI int GLAD_GL_VERSION_1_1; -typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); -GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; -#define glDrawArrays glad_glDrawArrays -typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); -GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; -#define glDrawElements glad_glDrawElements -typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); -GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; -#define glPolygonOffset glad_glPolygonOffset -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; -#define glCopyTexImage1D glad_glCopyTexImage1D -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; -#define glCopyTexImage2D glad_glCopyTexImage2D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; -#define glCopyTexSubImage1D glad_glCopyTexSubImage1D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; -#define glCopyTexSubImage2D glad_glCopyTexSubImage2D -typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; -#define glTexSubImage1D glad_glTexSubImage1D -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; -#define glTexSubImage2D glad_glTexSubImage2D -typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); -GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; -#define glBindTexture glad_glBindTexture -typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); -GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; -#define glDeleteTextures glad_glDeleteTextures -typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); -GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; -#define glGenTextures glad_glGenTextures -typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); -GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; -#define glIsTexture glad_glIsTexture -#endif -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 -GLAPI int GLAD_GL_VERSION_1_2; -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); -GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; -#define glDrawRangeElements glad_glDrawRangeElements -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; -#define glTexImage3D glad_glTexImage3D -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); -GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; -#define glTexSubImage3D glad_glTexSubImage3D -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; -#define glCopyTexSubImage3D glad_glCopyTexSubImage3D -#endif -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 -GLAPI int GLAD_GL_VERSION_1_3; -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); -GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; -#define glActiveTexture glad_glActiveTexture -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); -GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; -#define glSampleCoverage glad_glSampleCoverage -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; -#define glCompressedTexImage3D glad_glCompressedTexImage3D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; -#define glCompressedTexImage2D glad_glCompressedTexImage2D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; -#define glCompressedTexImage1D glad_glCompressedTexImage1D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; -#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; -#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); -GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; -#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); -GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; -#define glGetCompressedTexImage glad_glGetCompressedTexImage -#endif -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 -GLAPI int GLAD_GL_VERSION_1_4; -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; -#define glBlendFuncSeparate glad_glBlendFuncSeparate -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); -GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; -#define glMultiDrawArrays glad_glMultiDrawArrays -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); -GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; -#define glMultiDrawElements glad_glMultiDrawElements -typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); -GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; -#define glPointParameterf glad_glPointParameterf -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); -GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; -#define glPointParameterfv glad_glPointParameterfv -typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); -GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; -#define glPointParameteri glad_glPointParameteri -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); -GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; -#define glPointParameteriv glad_glPointParameteriv -typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; -#define glBlendColor glad_glBlendColor -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); -GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; -#define glBlendEquation glad_glBlendEquation -#endif -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 -GLAPI int GLAD_GL_VERSION_1_5; -typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); -GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; -#define glGenQueries glad_glGenQueries -typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); -GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; -#define glDeleteQueries glad_glDeleteQueries -typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id); -GLAPI PFNGLISQUERYPROC glad_glIsQuery; -#define glIsQuery glad_glIsQuery -typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); -GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; -#define glBeginQuery glad_glBeginQuery -typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target); -GLAPI PFNGLENDQUERYPROC glad_glEndQuery; -#define glEndQuery glad_glEndQuery -typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; -#define glGetQueryiv glad_glGetQueryiv -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); -GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; -#define glGetQueryObjectiv glad_glGetQueryObjectiv -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); -GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; -#define glGetQueryObjectuiv glad_glGetQueryObjectuiv -typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); -GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; -#define glBindBuffer glad_glBindBuffer -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); -GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; -#define glDeleteBuffers glad_glDeleteBuffers -typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); -GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; -#define glGenBuffers glad_glGenBuffers -typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); -GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; -#define glIsBuffer glad_glIsBuffer -typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); -GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; -#define glBufferData glad_glBufferData -typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); -GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; -#define glBufferSubData glad_glBufferSubData -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); -GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; -#define glGetBufferSubData glad_glGetBufferSubData -typedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); -GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; -#define glMapBuffer glad_glMapBuffer -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); -GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; -#define glUnmapBuffer glad_glUnmapBuffer -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; -#define glGetBufferParameteriv glad_glGetBufferParameteriv -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); -GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; -#define glGetBufferPointerv glad_glGetBufferPointerv -#endif -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 -GLAPI int GLAD_GL_VERSION_2_0; -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); -GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; -#define glBlendEquationSeparate glad_glBlendEquationSeparate -typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); -GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; -#define glDrawBuffers glad_glDrawBuffers -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; -#define glStencilOpSeparate glad_glStencilOpSeparate -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); -GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; -#define glStencilFuncSeparate glad_glStencilFuncSeparate -typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); -GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; -#define glStencilMaskSeparate glad_glStencilMaskSeparate -typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); -GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; -#define glAttachShader glad_glAttachShader -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); -GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; -#define glBindAttribLocation glad_glBindAttribLocation -typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); -GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; -#define glCompileShader glad_glCompileShader -typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); -GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; -#define glCreateProgram glad_glCreateProgram -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); -GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; -#define glCreateShader glad_glCreateShader -typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); -GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; -#define glDeleteProgram glad_glDeleteProgram -typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); -GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; -#define glDeleteShader glad_glDeleteShader -typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); -GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; -#define glDetachShader glad_glDetachShader -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); -GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; -#define glDisableVertexAttribArray glad_glDisableVertexAttribArray -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); -GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; -#define glEnableVertexAttribArray glad_glEnableVertexAttribArray -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; -#define glGetActiveAttrib glad_glGetActiveAttrib -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; -#define glGetActiveUniform glad_glGetActiveUniform -typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); -GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; -#define glGetAttachedShaders glad_glGetAttachedShaders -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; -#define glGetAttribLocation glad_glGetAttribLocation -typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); -GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; -#define glGetProgramiv glad_glGetProgramiv -typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; -#define glGetProgramInfoLog glad_glGetProgramInfoLog -typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); -GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; -#define glGetShaderiv glad_glGetShaderiv -typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; -#define glGetShaderInfoLog glad_glGetShaderInfoLog -typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; -#define glGetShaderSource glad_glGetShaderSource -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; -#define glGetUniformLocation glad_glGetUniformLocation -typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); -GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; -#define glGetUniformfv glad_glGetUniformfv -typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); -GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; -#define glGetUniformiv glad_glGetUniformiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); -GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; -#define glGetVertexAttribdv glad_glGetVertexAttribdv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); -GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; -#define glGetVertexAttribfv glad_glGetVertexAttribfv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; -#define glGetVertexAttribiv glad_glGetVertexAttribiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); -GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; -#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); -GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; -#define glIsProgram glad_glIsProgram -typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); -GLAPI PFNGLISSHADERPROC glad_glIsShader; -#define glIsShader glad_glIsShader -typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); -GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; -#define glLinkProgram glad_glLinkProgram -typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); -GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; -#define glShaderSource glad_glShaderSource -typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); -GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; -#define glUseProgram glad_glUseProgram -typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); -GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; -#define glUniform1f glad_glUniform1f -typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); -GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; -#define glUniform2f glad_glUniform2f -typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; -#define glUniform3f glad_glUniform3f -typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; -#define glUniform4f glad_glUniform4f -typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); -GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; -#define glUniform1i glad_glUniform1i -typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); -GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; -#define glUniform2i glad_glUniform2i -typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); -GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; -#define glUniform3i glad_glUniform3i -typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; -#define glUniform4i glad_glUniform4i -typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; -#define glUniform1fv glad_glUniform1fv -typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; -#define glUniform2fv glad_glUniform2fv -typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; -#define glUniform3fv glad_glUniform3fv -typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; -#define glUniform4fv glad_glUniform4fv -typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; -#define glUniform1iv glad_glUniform1iv -typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; -#define glUniform2iv glad_glUniform2iv -typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; -#define glUniform3iv glad_glUniform3iv -typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; -#define glUniform4iv glad_glUniform4iv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; -#define glUniformMatrix2fv glad_glUniformMatrix2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; -#define glUniformMatrix3fv glad_glUniformMatrix3fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; -#define glUniformMatrix4fv glad_glUniformMatrix4fv -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); -GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; -#define glValidateProgram glad_glValidateProgram -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); -GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; -#define glVertexAttrib1d glad_glVertexAttrib1d -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; -#define glVertexAttrib1dv glad_glVertexAttrib1dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); -GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; -#define glVertexAttrib1f glad_glVertexAttrib1f -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; -#define glVertexAttrib1fv glad_glVertexAttrib1fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); -GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; -#define glVertexAttrib1s glad_glVertexAttrib1s -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; -#define glVertexAttrib1sv glad_glVertexAttrib1sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); -GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; -#define glVertexAttrib2d glad_glVertexAttrib2d -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; -#define glVertexAttrib2dv glad_glVertexAttrib2dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); -GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; -#define glVertexAttrib2f glad_glVertexAttrib2f -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; -#define glVertexAttrib2fv glad_glVertexAttrib2fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); -GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; -#define glVertexAttrib2s glad_glVertexAttrib2s -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; -#define glVertexAttrib2sv glad_glVertexAttrib2sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; -#define glVertexAttrib3d glad_glVertexAttrib3d -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; -#define glVertexAttrib3dv glad_glVertexAttrib3dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); -GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; -#define glVertexAttrib3f glad_glVertexAttrib3f -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; -#define glVertexAttrib3fv glad_glVertexAttrib3fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); -GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; -#define glVertexAttrib3s glad_glVertexAttrib3s -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; -#define glVertexAttrib3sv glad_glVertexAttrib3sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); -GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; -#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; -#define glVertexAttrib4Niv glad_glVertexAttrib4Niv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; -#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; -#define glVertexAttrib4Nub glad_glVertexAttrib4Nub -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); -GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; -#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; -#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); -GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; -#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); -GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; -#define glVertexAttrib4bv glad_glVertexAttrib4bv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; -#define glVertexAttrib4d glad_glVertexAttrib4d -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; -#define glVertexAttrib4dv glad_glVertexAttrib4dv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; -#define glVertexAttrib4f glad_glVertexAttrib4f -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; -#define glVertexAttrib4fv glad_glVertexAttrib4fv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; -#define glVertexAttrib4iv glad_glVertexAttrib4iv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; -#define glVertexAttrib4s glad_glVertexAttrib4s -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; -#define glVertexAttrib4sv glad_glVertexAttrib4sv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); -GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; -#define glVertexAttrib4ubv glad_glVertexAttrib4ubv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; -#define glVertexAttrib4uiv glad_glVertexAttrib4uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); -GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; -#define glVertexAttrib4usv glad_glVertexAttrib4usv -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; -#define glVertexAttribPointer glad_glVertexAttribPointer -#endif -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 -GLAPI int GLAD_GL_VERSION_2_1; -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; -#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; -#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; -#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; -#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; -#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; -#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv -#endif -#ifndef GL_VERSION_3_0 -#define GL_VERSION_3_0 1 -GLAPI int GLAD_GL_VERSION_3_0; -typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; -#define glColorMaski glad_glColorMaski -typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); -GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; -#define glGetBooleani_v glad_glGetBooleani_v -typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); -GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; -#define glGetIntegeri_v glad_glGetIntegeri_v -typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); -GLAPI PFNGLENABLEIPROC glad_glEnablei; -#define glEnablei glad_glEnablei -typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); -GLAPI PFNGLDISABLEIPROC glad_glDisablei; -#define glDisablei glad_glDisablei -typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); -GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; -#define glIsEnabledi glad_glIsEnabledi -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); -GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; -#define glBeginTransformFeedback glad_glBeginTransformFeedback -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); -GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; -#define glEndTransformFeedback glad_glEndTransformFeedback -typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; -#define glBindBufferRange glad_glBindBufferRange -typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); -GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; -#define glBindBufferBase glad_glBindBufferBase -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); -GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; -#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; -#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying -typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); -GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; -#define glClampColor glad_glClampColor -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); -GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; -#define glBeginConditionalRender glad_glBeginConditionalRender -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); -GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; -#define glEndConditionalRender glad_glEndConditionalRender -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; -#define glVertexAttribIPointer glad_glVertexAttribIPointer -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; -#define glGetVertexAttribIiv glad_glGetVertexAttribIiv -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); -GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; -#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); -GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; -#define glVertexAttribI1i glad_glVertexAttribI1i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); -GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; -#define glVertexAttribI2i glad_glVertexAttribI2i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); -GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; -#define glVertexAttribI3i glad_glVertexAttribI3i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); -GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; -#define glVertexAttribI4i glad_glVertexAttribI4i -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); -GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; -#define glVertexAttribI1ui glad_glVertexAttribI1ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); -GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; -#define glVertexAttribI2ui glad_glVertexAttribI2ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); -GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; -#define glVertexAttribI3ui glad_glVertexAttribI3ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; -#define glVertexAttribI4ui glad_glVertexAttribI4ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; -#define glVertexAttribI1iv glad_glVertexAttribI1iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; -#define glVertexAttribI2iv glad_glVertexAttribI2iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; -#define glVertexAttribI3iv glad_glVertexAttribI3iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; -#define glVertexAttribI4iv glad_glVertexAttribI4iv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; -#define glVertexAttribI1uiv glad_glVertexAttribI1uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; -#define glVertexAttribI2uiv glad_glVertexAttribI2uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; -#define glVertexAttribI3uiv glad_glVertexAttribI3uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); -GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; -#define glVertexAttribI4uiv glad_glVertexAttribI4uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); -GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; -#define glVertexAttribI4bv glad_glVertexAttribI4bv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); -GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; -#define glVertexAttribI4sv glad_glVertexAttribI4sv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); -GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; -#define glVertexAttribI4ubv glad_glVertexAttribI4ubv -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); -GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; -#define glVertexAttribI4usv glad_glVertexAttribI4usv -typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); -GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; -#define glGetUniformuiv glad_glGetUniformuiv -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); -GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; -#define glBindFragDataLocation glad_glBindFragDataLocation -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; -#define glGetFragDataLocation glad_glGetFragDataLocation -typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); -GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; -#define glUniform1ui glad_glUniform1ui -typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); -GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; -#define glUniform2ui glad_glUniform2ui -typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; -#define glUniform3ui glad_glUniform3ui -typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; -#define glUniform4ui glad_glUniform4ui -typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; -#define glUniform1uiv glad_glUniform1uiv -typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; -#define glUniform2uiv glad_glUniform2uiv -typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; -#define glUniform3uiv glad_glUniform3uiv -typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; -#define glUniform4uiv glad_glUniform4uiv -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); -GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; -#define glTexParameterIiv glad_glTexParameterIiv -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); -GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; -#define glTexParameterIuiv glad_glTexParameterIuiv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; -#define glGetTexParameterIiv glad_glGetTexParameterIiv -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); -GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; -#define glGetTexParameterIuiv glad_glGetTexParameterIuiv -typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); -GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; -#define glClearBufferiv glad_glClearBufferiv -typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); -GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; -#define glClearBufferuiv glad_glClearBufferuiv -typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); -GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; -#define glClearBufferfv glad_glClearBufferfv -typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; -#define glClearBufferfi glad_glClearBufferfi -typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); -GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; -#define glGetStringi glad_glGetStringi -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); -GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; -#define glIsRenderbuffer glad_glIsRenderbuffer -typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); -GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; -#define glBindRenderbuffer glad_glBindRenderbuffer -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); -GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; -#define glDeleteRenderbuffers glad_glDeleteRenderbuffers -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); -GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; -#define glGenRenderbuffers glad_glGenRenderbuffers -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; -#define glRenderbufferStorage glad_glRenderbufferStorage -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); -GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; -#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); -GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; -#define glIsFramebuffer glad_glIsFramebuffer -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); -GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; -#define glBindFramebuffer glad_glBindFramebuffer -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); -GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; -#define glDeleteFramebuffers glad_glDeleteFramebuffers -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); -GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; -#define glGenFramebuffers glad_glGenFramebuffers -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); -GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; -#define glCheckFramebufferStatus glad_glCheckFramebufferStatus -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; -#define glFramebufferTexture1D glad_glFramebufferTexture1D -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; -#define glFramebufferTexture2D glad_glFramebufferTexture2D -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; -#define glFramebufferTexture3D glad_glFramebufferTexture3D -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; -#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); -GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; -#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv -typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); -GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; -#define glGenerateMipmap glad_glGenerateMipmap -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; -#define glBlitFramebuffer glad_glBlitFramebuffer -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; -#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; -#define glFramebufferTextureLayer glad_glFramebufferTextureLayer -typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; -#define glMapBufferRange glad_glMapBufferRange -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); -GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; -#define glFlushMappedBufferRange glad_glFlushMappedBufferRange -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); -GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; -#define glBindVertexArray glad_glBindVertexArray -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); -GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; -#define glDeleteVertexArrays glad_glDeleteVertexArrays -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); -GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; -#define glGenVertexArrays glad_glGenVertexArrays -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); -GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; -#define glIsVertexArray glad_glIsVertexArray -#endif -#ifndef GL_VERSION_3_1 -#define GL_VERSION_3_1 1 -GLAPI int GLAD_GL_VERSION_3_1; -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; -#define glDrawArraysInstanced glad_glDrawArraysInstanced -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); -GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; -#define glDrawElementsInstanced glad_glDrawElementsInstanced -typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); -GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; -#define glTexBuffer glad_glTexBuffer -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); -GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; -#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex -typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; -#define glCopyBufferSubData glad_glCopyBufferSubData -typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); -GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; -#define glGetUniformIndices glad_glGetUniformIndices -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; -#define glGetActiveUniformsiv glad_glGetActiveUniformsiv -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; -#define glGetActiveUniformName glad_glGetActiveUniformName -typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); -GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; -#define glGetUniformBlockIndex glad_glGetUniformBlockIndex -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; -#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; -#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName -typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; -#define glUniformBlockBinding glad_glUniformBlockBinding -#endif -#ifndef GL_VERSION_3_2 -#define GL_VERSION_3_2 1 -GLAPI int GLAD_GL_VERSION_3_2; -typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); -GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; -#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); -GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; -#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; -#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); -GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; -#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); -GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; -#define glProvokingVertex glad_glProvokingVertex -typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); -GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; -#define glFenceSync glad_glFenceSync -typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); -GLAPI PFNGLISSYNCPROC glad_glIsSync; -#define glIsSync glad_glIsSync -typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); -GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; -#define glDeleteSync glad_glDeleteSync -typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; -#define glClientWaitSync glad_glClientWaitSync -typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; -#define glWaitSync glad_glWaitSync -typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); -GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; -#define glGetInteger64v glad_glGetInteger64v -typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); -GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; -#define glGetSynciv glad_glGetSynciv -typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); -GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; -#define glGetInteger64i_v glad_glGetInteger64i_v -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); -GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; -#define glGetBufferParameteri64v glad_glGetBufferParameteri64v -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; -#define glFramebufferTexture glad_glFramebufferTexture -typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; -#define glTexImage2DMultisample glad_glTexImage2DMultisample -typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; -#define glTexImage3DMultisample glad_glTexImage3DMultisample -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); -GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; -#define glGetMultisamplefv glad_glGetMultisamplefv -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); -GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; -#define glSampleMaski glad_glSampleMaski -#endif -#ifndef GL_VERSION_3_3 -#define GL_VERSION_3_3 1 -GLAPI int GLAD_GL_VERSION_3_3; -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); -GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; -#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed -typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; -#define glGetFragDataIndex glad_glGetFragDataIndex -typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); -GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; -#define glGenSamplers glad_glGenSamplers -typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); -GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; -#define glDeleteSamplers glad_glDeleteSamplers -typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); -GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; -#define glIsSampler glad_glIsSampler -typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); -GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; -#define glBindSampler glad_glBindSampler -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); -GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; -#define glSamplerParameteri glad_glSamplerParameteri -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); -GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; -#define glSamplerParameteriv glad_glSamplerParameteriv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); -GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; -#define glSamplerParameterf glad_glSamplerParameterf -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); -GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; -#define glSamplerParameterfv glad_glSamplerParameterfv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); -GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; -#define glSamplerParameterIiv glad_glSamplerParameterIiv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); -GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; -#define glSamplerParameterIuiv glad_glSamplerParameterIuiv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; -#define glGetSamplerParameteriv glad_glGetSamplerParameteriv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; -#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); -GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; -#define glGetSamplerParameterfv glad_glGetSamplerParameterfv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; -#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv -typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); -GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; -#define glQueryCounter glad_glQueryCounter -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); -GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; -#define glGetQueryObjecti64v glad_glGetQueryObjecti64v -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); -GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; -#define glGetQueryObjectui64v glad_glGetQueryObjectui64v -typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); -GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; -#define glVertexAttribDivisor glad_glVertexAttribDivisor -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; -#define glVertexAttribP1ui glad_glVertexAttribP1ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; -#define glVertexAttribP1uiv glad_glVertexAttribP1uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; -#define glVertexAttribP2ui glad_glVertexAttribP2ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; -#define glVertexAttribP2uiv glad_glVertexAttribP2uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; -#define glVertexAttribP3ui glad_glVertexAttribP3ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; -#define glVertexAttribP3uiv glad_glVertexAttribP3uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; -#define glVertexAttribP4ui glad_glVertexAttribP4ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; -#define glVertexAttribP4uiv glad_glVertexAttribP4uiv -typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; -#define glVertexP2ui glad_glVertexP2ui -typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; -#define glVertexP2uiv glad_glVertexP2uiv -typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; -#define glVertexP3ui glad_glVertexP3ui -typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; -#define glVertexP3uiv glad_glVertexP3uiv -typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; -#define glVertexP4ui glad_glVertexP4ui -typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; -#define glVertexP4uiv glad_glVertexP4uiv -typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; -#define glTexCoordP1ui glad_glTexCoordP1ui -typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; -#define glTexCoordP1uiv glad_glTexCoordP1uiv -typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; -#define glTexCoordP2ui glad_glTexCoordP2ui -typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; -#define glTexCoordP2uiv glad_glTexCoordP2uiv -typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; -#define glTexCoordP3ui glad_glTexCoordP3ui -typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; -#define glTexCoordP3uiv glad_glTexCoordP3uiv -typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; -#define glTexCoordP4ui glad_glTexCoordP4ui -typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; -#define glTexCoordP4uiv glad_glTexCoordP4uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; -#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; -#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; -#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; -#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; -#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; -#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; -#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; -#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv -typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; -#define glNormalP3ui glad_glNormalP3ui -typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; -#define glNormalP3uiv glad_glNormalP3uiv -typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; -#define glColorP3ui glad_glColorP3ui -typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; -#define glColorP3uiv glad_glColorP3uiv -typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; -#define glColorP4ui glad_glColorP4ui -typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; -#define glColorP4uiv glad_glColorP4uiv -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; -#define glSecondaryColorP3ui glad_glSecondaryColorP3ui -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; -#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv -#endif -#ifndef GL_VERSION_4_0 -#define GL_VERSION_4_0 1 -GLAPI int GLAD_GL_VERSION_4_0; -typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); -GLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; -#define glMinSampleShading glad_glMinSampleShading -typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); -GLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; -#define glBlendEquationi glad_glBlendEquationi -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); -GLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; -#define glBlendEquationSeparatei glad_glBlendEquationSeparatei -typedef void (APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); -GLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci; -#define glBlendFunci glad_glBlendFunci -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -GLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; -#define glBlendFuncSeparatei glad_glBlendFuncSeparatei -typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); -GLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; -#define glDrawArraysIndirect glad_glDrawArraysIndirect -typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect); -GLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; -#define glDrawElementsIndirect glad_glDrawElementsIndirect -typedef void (APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); -GLAPI PFNGLUNIFORM1DPROC glad_glUniform1d; -#define glUniform1d glad_glUniform1d -typedef void (APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); -GLAPI PFNGLUNIFORM2DPROC glad_glUniform2d; -#define glUniform2d glad_glUniform2d -typedef void (APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); -GLAPI PFNGLUNIFORM3DPROC glad_glUniform3d; -#define glUniform3d glad_glUniform3d -typedef void (APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI PFNGLUNIFORM4DPROC glad_glUniform4d; -#define glUniform4d glad_glUniform4d -typedef void (APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv; -#define glUniform1dv glad_glUniform1dv -typedef void (APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv; -#define glUniform2dv glad_glUniform2dv -typedef void (APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv; -#define glUniform3dv glad_glUniform3dv -typedef void (APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv; -#define glUniform4dv glad_glUniform4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; -#define glUniformMatrix2dv glad_glUniformMatrix2dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; -#define glUniformMatrix3dv glad_glUniformMatrix3dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; -#define glUniformMatrix4dv glad_glUniformMatrix4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; -#define glUniformMatrix2x3dv glad_glUniformMatrix2x3dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; -#define glUniformMatrix2x4dv glad_glUniformMatrix2x4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; -#define glUniformMatrix3x2dv glad_glUniformMatrix3x2dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; -#define glUniformMatrix3x4dv glad_glUniformMatrix3x4dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; -#define glUniformMatrix4x2dv glad_glUniformMatrix4x2dv -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; -#define glUniformMatrix4x3dv glad_glUniformMatrix4x3dv -typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); -GLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; -#define glGetUniformdv glad_glGetUniformdv -typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name); -GLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; -#define glGetSubroutineUniformLocation glad_glGetSubroutineUniformLocation -typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name); -GLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; -#define glGetSubroutineIndex glad_glGetSubroutineIndex -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); -GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; -#define glGetActiveSubroutineUniformiv glad_glGetActiveSubroutineUniformiv -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; -#define glGetActiveSubroutineUniformName glad_glGetActiveSubroutineUniformName -typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); -GLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; -#define glGetActiveSubroutineName glad_glGetActiveSubroutineName -typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices); -GLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; -#define glUniformSubroutinesuiv glad_glUniformSubroutinesuiv -typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params); -GLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; -#define glGetUniformSubroutineuiv glad_glGetUniformSubroutineuiv -typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); -GLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; -#define glGetProgramStageiv glad_glGetProgramStageiv -typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); -GLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; -#define glPatchParameteri glad_glPatchParameteri -typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); -GLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; -#define glPatchParameterfv glad_glPatchParameterfv -typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); -GLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; -#define glBindTransformFeedback glad_glBindTransformFeedback -typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); -GLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; -#define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks -typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); -GLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; -#define glGenTransformFeedbacks glad_glGenTransformFeedbacks -typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); -GLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; -#define glIsTransformFeedback glad_glIsTransformFeedback -typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); -GLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; -#define glPauseTransformFeedback glad_glPauseTransformFeedback -typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); -GLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; -#define glResumeTransformFeedback glad_glResumeTransformFeedback -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); -GLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; -#define glDrawTransformFeedback glad_glDrawTransformFeedback -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); -GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; -#define glDrawTransformFeedbackStream glad_glDrawTransformFeedbackStream -typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); -GLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; -#define glBeginQueryIndexed glad_glBeginQueryIndexed -typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); -GLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; -#define glEndQueryIndexed glad_glEndQueryIndexed -typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); -GLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; -#define glGetQueryIndexediv glad_glGetQueryIndexediv -#endif -#ifndef GL_VERSION_4_1 -#define GL_VERSION_4_1 1 -GLAPI int GLAD_GL_VERSION_4_1; -typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); -GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; -#define glReleaseShaderCompiler glad_glReleaseShaderCompiler -typedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); -GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; -#define glShaderBinary glad_glShaderBinary -typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); -GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; -#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat -typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); -GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; -#define glDepthRangef glad_glDepthRangef -typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); -GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; -#define glClearDepthf glad_glClearDepthf -typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); -GLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; -#define glGetProgramBinary glad_glGetProgramBinary -typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); -GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary; -#define glProgramBinary glad_glProgramBinary -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); -GLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; -#define glProgramParameteri glad_glProgramParameteri -typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); -GLAPI PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; -#define glUseProgramStages glad_glUseProgramStages -typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); -GLAPI PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; -#define glActiveShaderProgram glad_glActiveShaderProgram -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const*strings); -GLAPI PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; -#define glCreateShaderProgramv glad_glCreateShaderProgramv -typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); -GLAPI PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; -#define glBindProgramPipeline glad_glBindProgramPipeline -typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); -GLAPI PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; -#define glDeleteProgramPipelines glad_glDeleteProgramPipelines -typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); -GLAPI PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; -#define glGenProgramPipelines glad_glGenProgramPipelines -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); -GLAPI PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; -#define glIsProgramPipeline glad_glIsProgramPipeline -typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint *params); -GLAPI PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; -#define glGetProgramPipelineiv glad_glGetProgramPipelineiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); -GLAPI PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; -#define glProgramUniform1i glad_glProgramUniform1i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; -#define glProgramUniform1iv glad_glProgramUniform1iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); -GLAPI PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; -#define glProgramUniform1f glad_glProgramUniform1f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; -#define glProgramUniform1fv glad_glProgramUniform1fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); -GLAPI PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; -#define glProgramUniform1d glad_glProgramUniform1d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; -#define glProgramUniform1dv glad_glProgramUniform1dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); -GLAPI PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; -#define glProgramUniform1ui glad_glProgramUniform1ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; -#define glProgramUniform1uiv glad_glProgramUniform1uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); -GLAPI PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; -#define glProgramUniform2i glad_glProgramUniform2i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; -#define glProgramUniform2iv glad_glProgramUniform2iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); -GLAPI PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; -#define glProgramUniform2f glad_glProgramUniform2f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; -#define glProgramUniform2fv glad_glProgramUniform2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); -GLAPI PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; -#define glProgramUniform2d glad_glProgramUniform2d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; -#define glProgramUniform2dv glad_glProgramUniform2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); -GLAPI PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; -#define glProgramUniform2ui glad_glProgramUniform2ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; -#define glProgramUniform2uiv glad_glProgramUniform2uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -GLAPI PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; -#define glProgramUniform3i glad_glProgramUniform3i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; -#define glProgramUniform3iv glad_glProgramUniform3iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -GLAPI PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; -#define glProgramUniform3f glad_glProgramUniform3f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; -#define glProgramUniform3fv glad_glProgramUniform3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); -GLAPI PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; -#define glProgramUniform3d glad_glProgramUniform3d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; -#define glProgramUniform3dv glad_glProgramUniform3dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -GLAPI PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; -#define glProgramUniform3ui glad_glProgramUniform3ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; -#define glProgramUniform3uiv glad_glProgramUniform3uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -GLAPI PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; -#define glProgramUniform4i glad_glProgramUniform4i -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); -GLAPI PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; -#define glProgramUniform4iv glad_glProgramUniform4iv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -GLAPI PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; -#define glProgramUniform4f glad_glProgramUniform4f -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; -#define glProgramUniform4fv glad_glProgramUniform4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); -GLAPI PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; -#define glProgramUniform4d glad_glProgramUniform4d -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; -#define glProgramUniform4dv glad_glProgramUniform4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GLAPI PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; -#define glProgramUniform4ui glad_glProgramUniform4ui -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); -GLAPI PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; -#define glProgramUniform4uiv glad_glProgramUniform4uiv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; -#define glProgramUniformMatrix2fv glad_glProgramUniformMatrix2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; -#define glProgramUniformMatrix3fv glad_glProgramUniformMatrix3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; -#define glProgramUniformMatrix4fv glad_glProgramUniformMatrix4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; -#define glProgramUniformMatrix2dv glad_glProgramUniformMatrix2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; -#define glProgramUniformMatrix3dv glad_glProgramUniformMatrix3dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; -#define glProgramUniformMatrix4dv glad_glProgramUniformMatrix4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; -#define glProgramUniformMatrix2x3fv glad_glProgramUniformMatrix2x3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; -#define glProgramUniformMatrix3x2fv glad_glProgramUniformMatrix3x2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; -#define glProgramUniformMatrix2x4fv glad_glProgramUniformMatrix2x4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; -#define glProgramUniformMatrix4x2fv glad_glProgramUniformMatrix4x2fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; -#define glProgramUniformMatrix3x4fv glad_glProgramUniformMatrix3x4fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; -#define glProgramUniformMatrix4x3fv glad_glProgramUniformMatrix4x3fv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; -#define glProgramUniformMatrix2x3dv glad_glProgramUniformMatrix2x3dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; -#define glProgramUniformMatrix3x2dv glad_glProgramUniformMatrix3x2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; -#define glProgramUniformMatrix2x4dv glad_glProgramUniformMatrix2x4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; -#define glProgramUniformMatrix4x2dv glad_glProgramUniformMatrix4x2dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; -#define glProgramUniformMatrix3x4dv glad_glProgramUniformMatrix3x4dv -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); -GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; -#define glProgramUniformMatrix4x3dv glad_glProgramUniformMatrix4x3dv -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); -GLAPI PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; -#define glValidateProgramPipeline glad_glValidateProgramPipeline -typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; -#define glGetProgramPipelineInfoLog glad_glGetProgramPipelineInfoLog -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); -GLAPI PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; -#define glVertexAttribL1d glad_glVertexAttribL1d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); -GLAPI PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; -#define glVertexAttribL2d glad_glVertexAttribL2d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); -GLAPI PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; -#define glVertexAttribL3d glad_glVertexAttribL3d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; -#define glVertexAttribL4d glad_glVertexAttribL4d -typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; -#define glVertexAttribL1dv glad_glVertexAttribL1dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; -#define glVertexAttribL2dv glad_glVertexAttribL2dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; -#define glVertexAttribL3dv glad_glVertexAttribL3dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); -GLAPI PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; -#define glVertexAttribL4dv glad_glVertexAttribL4dv -typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); -GLAPI PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; -#define glVertexAttribLPointer glad_glVertexAttribLPointer -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble *params); -GLAPI PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; -#define glGetVertexAttribLdv glad_glGetVertexAttribLdv -typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); -GLAPI PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; -#define glViewportArrayv glad_glViewportArrayv -typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); -GLAPI PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; -#define glViewportIndexedf glad_glViewportIndexedf -typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); -GLAPI PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; -#define glViewportIndexedfv glad_glViewportIndexedfv -typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); -GLAPI PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; -#define glScissorArrayv glad_glScissorArrayv -typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); -GLAPI PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; -#define glScissorIndexed glad_glScissorIndexed -typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); -GLAPI PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; -#define glScissorIndexedv glad_glScissorIndexedv -typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble *v); -GLAPI PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; -#define glDepthRangeArrayv glad_glDepthRangeArrayv -typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); -GLAPI PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; -#define glDepthRangeIndexed glad_glDepthRangeIndexed -typedef void (APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); -GLAPI PFNGLGETFLOATI_VPROC glad_glGetFloati_v; -#define glGetFloati_v glad_glGetFloati_v -typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); -GLAPI PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; -#define glGetDoublei_v glad_glGetDoublei_v -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/c.zig b/src/c.zig index ed017c8..e06c923 100644 --- a/src/c.zig +++ b/src/c.zig @@ -1,4 +1,3 @@ -pub usingnamespace @cImport({ - @cInclude("glad/glad.h"); - @cInclude("SDL2/SDL.h"); -}); +pub usingnamespace @cImport({ + @cInclude("SDL2/SDL.h"); +}); diff --git a/src/game.zig b/src/game.zig index 0e30d7b..94a0004 100644 --- a/src/game.zig +++ b/src/game.zig @@ -1,234 +1,242 @@ -const std = @import("std"); -const c = @import("c.zig"); - -const DEFAULT_WIDTH = 800; -const DEFAULT_HEIGHT = 600; - -pub const InitMemory = struct { - global_allocator: std.mem.Allocator, - window: *c.SDL_Window, - context: ?*anyopaque, - width: c_int, - height: c_int, -}; - -pub const GameMemory = struct { - global_allocator: std.mem.Allocator, - counter: i32 = 0, - triangle_vao: c.GLuint = 0, - triangle_vbo: c.GLuint = 0, - shader_program: c.GLuint = 0, -}; - -var g_init_exists = false; -var g_init: *InitMemory = undefined; -var g_mem: *GameMemory = undefined; - -fn game_init_window_err(global_allocator: std.mem.Allocator) !void { - try sdl_try(c.SDL_Init(c.SDL_INIT_EVERYTHING)); - - try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_DOUBLEBUFFER, 1)); - try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_CONTEXT_MAJOR_VERSION, 4)); - try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_CONTEXT_MINOR_VERSION, 1)); - try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_CONTEXT_PROFILE_MASK, c.SDL_GL_CONTEXT_PROFILE_CORE)); - - const maybe_window = c.SDL_CreateWindow( - "Learn OpenGL with Zig!", - c.SDL_WINDOWPOS_CENTERED, - c.SDL_WINDOWPOS_CENTERED, - DEFAULT_WIDTH, - DEFAULT_HEIGHT, - c.SDL_WINDOW_SHOWN | c.SDL_WINDOW_OPENGL | c.SDL_WINDOW_RESIZABLE, - ); - if (maybe_window == null) { - std.log.err("SDL Error: {s}", .{c.SDL_GetError()}); - return error.SDLWindowError; - } - const window = maybe_window.?; - - const context = c.SDL_GL_CreateContext(window); - - if (c.gladLoadGLLoader(c.SDL_GL_GetProcAddress) == 0) { - return error.GladInitError; - } - - c.glViewport(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT); - - std.log.debug("OpenGL Version: {}.{}", .{ c.GLVersion.major, c.GLVersion.minor }); - - g_init = try global_allocator.create(InitMemory); - g_init_exists = true; - g_init.* = .{ - .global_allocator = global_allocator, - .window = window, - .context = context, - .width = DEFAULT_WIDTH, - .height = DEFAULT_HEIGHT, - }; -} - -export fn game_init_window(global_allocator: *std.mem.Allocator) void { - std.log.debug("game_init_window\n", .{}); - game_init_window_err(global_allocator.*) catch |err| { - std.log.err("Failed to init window {}\n", .{err}); - @panic("Failed to init window"); - }; -} - -export fn game_init(global_allocator: *std.mem.Allocator) void { - std.log.debug("game_init\n", .{}); - g_mem = global_allocator.create(GameMemory) catch @panic("OOM"); - g_mem.* = .{ - .global_allocator = global_allocator.*, - }; - - c.glGenBuffers(1, &g_mem.triangle_vbo); - c.glGenVertexArrays(1, &g_mem.triangle_vao); - - c.glBindVertexArray(g_mem.triangle_vao); - - c.glBindBuffer(c.GL_ARRAY_BUFFER, g_mem.triangle_vbo); - c.glBufferData(c.GL_ARRAY_BUFFER, @sizeOf(@TypeOf(vertices)), &vertices, c.GL_STATIC_DRAW); - c.glVertexAttribPointer(0, 3, c.GL_FLOAT, c.GL_FALSE, @sizeOf(f32) * 3, @ptrFromInt(0)); - c.glEnableVertexAttribArray(0); - - const vertex_shader = c.glCreateShader(c.GL_VERTEX_SHADER); - defer c.glDeleteShader(vertex_shader); - - c.glShaderSource(vertex_shader, 1, &[_][*c]const u8{vertex_shader_code}, null); - c.glCompileShader(vertex_shader); - var success: c_int = 0; - c.glGetShaderiv(vertex_shader, c.GL_COMPILE_STATUS, &success); - if (success == 0) { - var info_log: [512:0]u8 = undefined; - c.glGetShaderInfoLog(vertex_shader, info_log.len, null, &info_log); - std.log.err("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n{s}\n", .{@as([:0]const u8, &info_log)}); - } - - const fragment_shader = c.glCreateShader(c.GL_FRAGMENT_SHADER); - defer c.glDeleteShader(fragment_shader); - - c.glShaderSource(fragment_shader, 1, &[_][*c]const u8{fragment_shader_code}, null); - c.glCompileShader(fragment_shader); - success = 0; - c.glGetShaderiv(fragment_shader, c.GL_COMPILE_STATUS, &success); - if (success == 0) { - var info_log: [512:0]u8 = undefined; - c.glGetShaderInfoLog(fragment_shader, info_log.len, null, &info_log); - std.log.err("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n{s}\n", .{@as([:0]const u8, &info_log)}); - } - - g_mem.shader_program = c.glCreateProgram(); - c.glAttachShader(g_mem.shader_program, vertex_shader); - c.glAttachShader(g_mem.shader_program, fragment_shader); - c.glLinkProgram(g_mem.shader_program); - - success = 0; - c.glGetProgramiv(g_mem.shader_program, c.GL_LINK_STATUS, &success); - if (success == 0) { - var info_log: [512:0]u8 = undefined; - c.glGetProgramInfoLog(g_mem.shader_program, info_log.len, null, &info_log); - std.log.err("ERROR::SHADER::PROGRAM::LINK_FAILED\n{s}\n", .{@as([:0]const u8, &info_log)}); - } -} - -const vertex_shader_code = @embedFile("shaders/vert.glsl"); -const fragment_shader_code = @embedFile("shaders/frag.glsl"); -const vertices = [_]f32{ - -0.5, -0.5, 0.0, - 0.5, -0.5, 0.0, - 0, 0.5, 0.0, -}; - -export fn game_update() bool { - var event: c.SDL_Event = undefined; - - while (c.SDL_PollEvent(&event) != 0) { - switch (event.type) { - c.SDL_QUIT => { - return false; - }, - c.SDL_KEYUP => { - if (event.key.keysym.sym == c.SDLK_ESCAPE) { - return false; - } - }, - c.SDL_WINDOWEVENT => { - switch (event.window.type) { - c.SDL_WINDOWEVENT_SIZE_CHANGED => { - g_init.width = event.window.data1; - g_init.height = event.window.data2; - - c.glViewport(0, 0, g_init.width, g_init.height); - }, - else => {}, - } - }, - else => {}, - } - g_mem.counter += 1; - - c.glClearColor(0.0, 0.0, 0.0, 1.0); - c.glClear(c.GL_COLOR_BUFFER_BIT); - - c.glUseProgram(g_mem.shader_program); - c.glBindVertexArray(g_mem.triangle_vao); - c.glDrawArrays(c.GL_TRIANGLES, 0, 3); - - c.SDL_GL_SwapWindow(g_init.window); - c.SDL_Delay(1); - } - - return true; -} - -export fn game_shutdown() void { - std.log.debug("game_shutdown\n", .{}); - g_mem.global_allocator.destroy(g_mem); -} - -export fn game_shutdown_window() void { - std.log.debug("game_shutdown_window\n", .{}); - c.SDL_GL_DeleteContext(g_init.context); - c.SDL_DestroyWindow(g_init.window); - g_init.global_allocator.destroy(g_init); - g_init_exists = false; - c.SDL_Quit(); -} - -export fn game_hot_reload(init_memory: ?*anyopaque, gmemory: ?*anyopaque) void { - std.log.debug("game_hot_reload {any} {any}\n", .{ init_memory, gmemory }); - if (init_memory) |init_mem| { - g_init = @alignCast(@ptrCast(init_mem)); - g_init_exists = true; - } - if (gmemory) |gmem| { - g_mem = @alignCast(@ptrCast(gmem)); - } - if (g_init_exists) { - c.SDL_RaiseWindow(g_init.window); - } -} - -export fn game_memory() *anyopaque { - return @ptrCast(g_mem); -} - -export fn game_init_memory() *anyopaque { - return @ptrCast(g_init); -} - -export fn game_memory_size() usize { - return @sizeOf(GameMemory); -} - -export fn game_init_memory_size() usize { - return @sizeOf(InitMemory); -} - -fn sdl_try(result: c_int) !void { - if (result < 0) { - std.log.err("SDL Error: {s}", .{c.SDL_GetError()}); - return error.SDLError; - } -} +const std = @import("std"); +const c = @import("c.zig"); +const gl = @import("gl.zig"); + +const DEFAULT_WIDTH = 800; +const DEFAULT_HEIGHT = 600; + +pub const InitMemory = struct { + global_allocator: std.mem.Allocator, + window: *c.SDL_Window, + context: ?*anyopaque, + width: c_int, + height: c_int, +}; + +pub const GameMemory = struct { + global_allocator: std.mem.Allocator, + counter: i32 = 0, + triangle_vao: gl.GLuint = 0, + triangle_vbo: gl.GLuint = 0, + shader_program: gl.GLuint = 0, +}; + +var g_init_exists = false; +var g_init: *InitMemory = undefined; +var g_mem: *GameMemory = undefined; + +fn game_init_window_err(global_allocator: std.mem.Allocator) !void { + try sdl_try(c.SDL_Init(c.SDL_INIT_EVERYTHING)); + + try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_DOUBLEBUFFER, 1)); + try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_CONTEXT_MAJOR_VERSION, 4)); + try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_CONTEXT_MINOR_VERSION, 5)); + try sdl_try(c.SDL_GL_SetAttribute(c.SDL_GL_CONTEXT_PROFILE_MASK, c.SDL_GL_CONTEXT_PROFILE_CORE)); + + const maybe_window = c.SDL_CreateWindow( + "Learn OpenGL with Zig!", + c.SDL_WINDOWPOS_CENTERED, + c.SDL_WINDOWPOS_CENTERED, + DEFAULT_WIDTH, + DEFAULT_HEIGHT, + c.SDL_WINDOW_SHOWN | c.SDL_WINDOW_OPENGL | c.SDL_WINDOW_RESIZABLE, + ); + if (maybe_window == null) { + std.log.err("SDL Error: {s}", .{c.SDL_GetError()}); + return error.SDLWindowError; + } + const window = maybe_window.?; + + const context = c.SDL_GL_CreateContext(window); + + try gl.load(null, struct { + fn getProcAddress(ctx: @TypeOf(null), proc: [:0]const u8) ?gl.FunctionPointer { + _ = ctx; + return @ptrCast(c.SDL_GL_GetProcAddress(proc)); + } + }.getProcAddress); + + gl.viewport(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT); + + var majorVer: gl.GLint = 0; + var minorVer: gl.GLint = 0; + gl.getIntegerv(gl.MAJOR_VERSION, &majorVer); + gl.getIntegerv(gl.MINOR_VERSION, &minorVer); + std.log.debug("OpenGL Version: {}.{}", .{ majorVer, minorVer }); + + g_init = try global_allocator.create(InitMemory); + g_init_exists = true; + g_init.* = .{ + .global_allocator = global_allocator, + .window = window, + .context = context, + .width = DEFAULT_WIDTH, + .height = DEFAULT_HEIGHT, + }; +} + +export fn game_init_window(global_allocator: *std.mem.Allocator) void { + std.log.debug("game_init_window\n", .{}); + game_init_window_err(global_allocator.*) catch |err| { + std.log.err("Failed to init window {}\n", .{err}); + @panic("Failed to init window"); + }; +} + +export fn game_init(global_allocator: *std.mem.Allocator) void { + std.log.debug("game_init\n", .{}); + g_mem = global_allocator.create(GameMemory) catch @panic("OOM"); + g_mem.* = .{ + .global_allocator = global_allocator.*, + }; + + gl.genBuffers(1, &g_mem.triangle_vbo); + gl.genVertexArrays(1, &g_mem.triangle_vao); + + gl.bindVertexArray(g_mem.triangle_vao); + + gl.bindBuffer(gl.ARRAY_BUFFER, g_mem.triangle_vbo); + gl.bufferData(gl.ARRAY_BUFFER, @sizeOf(@TypeOf(vertices)), &vertices, gl.STATIC_DRAW); + gl.vertexAttribPointer(0, 3, gl.FLOAT, gl.FALSE, @sizeOf(f32) * 3, @ptrFromInt(0)); + gl.enableVertexAttribArray(0); + + const vertex_shader = gl.createShader(gl.VERTEX_SHADER); + defer gl.deleteShader(vertex_shader); + + gl.shaderSource(vertex_shader, 1, &[_][*c]const u8{vertex_shader_code}, null); + gl.compileShader(vertex_shader); + var success: c_int = 0; + gl.getShaderiv(vertex_shader, gl.COMPILE_STATUS, &success); + if (success == 0) { + var info_log: [512:0]u8 = undefined; + gl.getShaderInfoLog(vertex_shader, info_log.len, null, &info_log); + std.log.err("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n{s}\n", .{@as([:0]const u8, &info_log)}); + } + + const fragment_shader = gl.createShader(gl.FRAGMENT_SHADER); + defer gl.deleteShader(fragment_shader); + + gl.shaderSource(fragment_shader, 1, &[_][*c]const u8{fragment_shader_code}, null); + gl.compileShader(fragment_shader); + success = 0; + gl.getShaderiv(fragment_shader, gl.COMPILE_STATUS, &success); + if (success == 0) { + var info_log: [512:0]u8 = undefined; + gl.getShaderInfoLog(fragment_shader, info_log.len, null, &info_log); + std.log.err("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n{s}\n", .{@as([:0]const u8, &info_log)}); + } + + g_mem.shader_program = gl.createProgram(); + gl.attachShader(g_mem.shader_program, vertex_shader); + gl.attachShader(g_mem.shader_program, fragment_shader); + gl.linkProgram(g_mem.shader_program); + + success = 0; + gl.getProgramiv(g_mem.shader_program, gl.LINK_STATUS, &success); + if (success == 0) { + var info_log: [512:0]u8 = undefined; + gl.getProgramInfoLog(g_mem.shader_program, info_log.len, null, &info_log); + std.log.err("ERROR::SHADER::PROGRAM::LINK_FAILED\n{s}\n", .{@as([:0]const u8, &info_log)}); + } +} + +const vertex_shader_code = @embedFile("shaders/vert.glsl"); +const fragment_shader_code = @embedFile("shaders/frag.glsl"); +const vertices = [_]f32{ + -0.5, -0.5, 0.0, + 0.5, -0.5, 0.0, + 0, 0.5, 0.0, +}; + +export fn game_update() bool { + var event: c.SDL_Event = undefined; + + while (c.SDL_PollEvent(&event) != 0) { + switch (event.type) { + c.SDL_QUIT => { + return false; + }, + c.SDL_KEYUP => { + if (event.key.keysym.sym == c.SDLK_ESCAPE) { + return false; + } + }, + c.SDL_WINDOWEVENT => { + switch (event.window.type) { + c.SDL_WINDOWEVENT_SIZE_CHANGED => { + g_init.width = event.window.data1; + g_init.height = event.window.data2; + + gl.viewport(0, 0, g_init.width, g_init.height); + }, + else => {}, + } + }, + else => {}, + } + g_mem.counter += 1; + + gl.clearColor(0.0, 0.0, 0.0, 1.0); + gl.clear(gl.COLOR_BUFFER_BIT); + + gl.useProgram(g_mem.shader_program); + gl.bindVertexArray(g_mem.triangle_vao); + gl.drawArrays(gl.TRIANGLES, 0, 3); + + c.SDL_GL_SwapWindow(g_init.window); + c.SDL_Delay(1); + } + + return true; +} + +export fn game_shutdown() void { + std.log.debug("game_shutdown\n", .{}); + g_mem.global_allocator.destroy(g_mem); +} + +export fn game_shutdown_window() void { + std.log.debug("game_shutdown_window\n", .{}); + c.SDL_GL_DeleteContext(g_init.context); + c.SDL_DestroyWindow(g_init.window); + g_init.global_allocator.destroy(g_init); + g_init_exists = false; + c.SDL_Quit(); +} + +export fn game_hot_reload(init_memory: ?*anyopaque, gmemory: ?*anyopaque) void { + std.log.debug("game_hot_reload {any} {any}\n", .{ init_memory, gmemory }); + if (init_memory) |init_mem| { + g_init = @alignCast(@ptrCast(init_mem)); + g_init_exists = true; + } + if (gmemory) |gmem| { + g_mem = @alignCast(@ptrCast(gmem)); + } + if (g_init_exists) { + c.SDL_RaiseWindow(g_init.window); + } +} + +export fn game_memory() *anyopaque { + return @ptrCast(g_mem); +} + +export fn game_init_memory() *anyopaque { + return @ptrCast(g_init); +} + +export fn game_memory_size() usize { + return @sizeOf(GameMemory); +} + +export fn game_init_memory_size() usize { + return @sizeOf(InitMemory); +} + +fn sdl_try(result: c_int) !void { + if (result < 0) { + std.log.err("SDL Error: {s}", .{c.SDL_GetError()}); + return error.SDLError; + } +} diff --git a/src/gl.zig b/src/gl.zig new file mode 100644 index 0000000..4eef366 --- /dev/null +++ b/src/gl.zig @@ -0,0 +1,9275 @@ +// +// This code file is licenced under any of Public Domain, WTFPL or CC0. +// There are no restrictions in the use of this file. +// + +// +// Generation parameters: +// API: GL_VERSION_4_5 +// Profile: core +// Extensions: +// + +// +// This file was generated with the following command line: +// generator C:\Users\Серега\git\zig-opengl\bin\Debug\net7.0\generator.dll OpenGL-Registry/xml/gl.xml gl.zig GL_VERSION_4_5 +// + +const std = @import("std"); +const builtin = @import("builtin"); +const log = std.log.scoped(.OpenGL); + +pub const FunctionPointer: type = *align(@alignOf(fn (u32) callconv(.C) u32)) const anyopaque; + +pub const GLenum = c_uint; +pub const GLboolean = u8; +pub const GLbitfield = c_uint; +pub const GLbyte = i8; +pub const GLubyte = u8; +pub const GLshort = i16; +pub const GLushort = u16; +pub const GLint = c_int; +pub const GLuint = c_uint; +pub const GLclampx = i32; +pub const GLsizei = c_int; +pub const GLfloat = f32; +pub const GLclampf = f32; +pub const GLdouble = f64; +pub const GLclampd = f64; +pub const GLeglClientBufferEXT = void; +pub const GLeglImageOES = void; +pub const GLchar = u8; +pub const GLcharARB = u8; + +pub const GLhandleARB = if (builtin.os.tag == .macos) *anyopaque else c_uint; + +pub const GLhalf = u16; +pub const GLhalfARB = u16; +pub const GLfixed = i32; +pub const GLintptr = usize; +pub const GLintptrARB = usize; +pub const GLsizeiptr = isize; +pub const GLsizeiptrARB = isize; +pub const GLint64 = i64; +pub const GLint64EXT = i64; +pub const GLuint64 = u64; +pub const GLuint64EXT = u64; + +pub const GLsync = *opaque {}; + +pub const _cl_context = opaque {}; +pub const _cl_event = opaque {}; + +pub const GLDEBUGPROC = *const fn (source: GLenum, _type: GLenum, id: GLuint, severity: GLenum, length: GLsizei, message: [*:0]const u8, userParam: ?*anyopaque) callconv(.C) void; +pub const GLDEBUGPROCARB = *const fn (source: GLenum, _type: GLenum, id: GLuint, severity: GLenum, length: GLsizei, message: [*:0]const u8, userParam: ?*anyopaque) callconv(.C) void; +pub const GLDEBUGPROCKHR = *const fn (source: GLenum, _type: GLenum, id: GLuint, severity: GLenum, length: GLsizei, message: [*:0]const u8, userParam: ?*anyopaque) callconv(.C) void; + +pub const GLDEBUGPROCAMD = *const fn (id: GLuint, category: GLenum, severity: GLenum, length: GLsizei, message: [*:0]const u8, userParam: ?*anyopaque) callconv(.C) void; + +pub const GLhalfNV = u16; +pub const GLvdpauSurfaceNV = GLintptr; +pub const GLVULKANPROCNV = *const fn () callconv(.C) void; + + +pub const DEPTH_BUFFER_BIT = 0x00000100; +pub const STENCIL_BUFFER_BIT = 0x00000400; +pub const COLOR_BUFFER_BIT = 0x00004000; +pub const FALSE = 0; +pub const TRUE = 1; +pub const POINTS = 0x0000; +pub const LINES = 0x0001; +pub const LINE_LOOP = 0x0002; +pub const LINE_STRIP = 0x0003; +pub const TRIANGLES = 0x0004; +pub const TRIANGLE_STRIP = 0x0005; +pub const TRIANGLE_FAN = 0x0006; +pub const COMPRESSED_SRGB8_ETC2 = 0x9275; +pub const NEVER = 0x0200; +pub const LESS = 0x0201; +pub const EQUAL = 0x0202; +pub const LEQUAL = 0x0203; +pub const GREATER = 0x0204; +pub const NOTEQUAL = 0x0205; +pub const GEQUAL = 0x0206; +pub const ALWAYS = 0x0207; +pub const ZERO = 0; +pub const ONE = 1; +pub const SRC_COLOR = 0x0300; +pub const ONE_MINUS_SRC_COLOR = 0x0301; +pub const SRC_ALPHA = 0x0302; +pub const ONE_MINUS_SRC_ALPHA = 0x0303; +pub const DST_ALPHA = 0x0304; +pub const ONE_MINUS_DST_ALPHA = 0x0305; +pub const DST_COLOR = 0x0306; +pub const ONE_MINUS_DST_COLOR = 0x0307; +pub const SRC_ALPHA_SATURATE = 0x0308; +pub const NONE = 0; +pub const FRONT_LEFT = 0x0400; +pub const FRONT_RIGHT = 0x0401; +pub const BACK_LEFT = 0x0402; +pub const BACK_RIGHT = 0x0403; +pub const FRONT = 0x0404; +pub const BACK = 0x0405; +pub const LEFT = 0x0406; +pub const RIGHT = 0x0407; +pub const FRONT_AND_BACK = 0x0408; +pub const NO_ERROR = 0; +pub const INVALID_ENUM = 0x0500; +pub const INVALID_VALUE = 0x0501; +pub const INVALID_OPERATION = 0x0502; +pub const OUT_OF_MEMORY = 0x0505; +pub const CW = 0x0900; +pub const CCW = 0x0901; +pub const POINT_SIZE = 0x0B11; +pub const POINT_SIZE_RANGE = 0x0B12; +pub const POINT_SIZE_GRANULARITY = 0x0B13; +pub const LINE_SMOOTH = 0x0B20; +pub const LINE_WIDTH = 0x0B21; +pub const LINE_WIDTH_RANGE = 0x0B22; +pub const LINE_WIDTH_GRANULARITY = 0x0B23; +pub const POLYGON_MODE = 0x0B40; +pub const POLYGON_SMOOTH = 0x0B41; +pub const CULL_FACE = 0x0B44; +pub const CULL_FACE_MODE = 0x0B45; +pub const FRONT_FACE = 0x0B46; +pub const DEPTH_RANGE = 0x0B70; +pub const DEPTH_TEST = 0x0B71; +pub const DEPTH_WRITEMASK = 0x0B72; +pub const DEPTH_CLEAR_VALUE = 0x0B73; +pub const DEPTH_FUNC = 0x0B74; +pub const STENCIL_TEST = 0x0B90; +pub const STENCIL_CLEAR_VALUE = 0x0B91; +pub const STENCIL_FUNC = 0x0B92; +pub const STENCIL_VALUE_MASK = 0x0B93; +pub const STENCIL_FAIL = 0x0B94; +pub const STENCIL_PASS_DEPTH_FAIL = 0x0B95; +pub const STENCIL_PASS_DEPTH_PASS = 0x0B96; +pub const STENCIL_REF = 0x0B97; +pub const STENCIL_WRITEMASK = 0x0B98; +pub const VIEWPORT = 0x0BA2; +pub const DITHER = 0x0BD0; +pub const BLEND_DST = 0x0BE0; +pub const BLEND_SRC = 0x0BE1; +pub const BLEND = 0x0BE2; +pub const LOGIC_OP_MODE = 0x0BF0; +pub const DRAW_BUFFER = 0x0C01; +pub const READ_BUFFER = 0x0C02; +pub const SCISSOR_BOX = 0x0C10; +pub const SCISSOR_TEST = 0x0C11; +pub const COLOR_CLEAR_VALUE = 0x0C22; +pub const COLOR_WRITEMASK = 0x0C23; +pub const DOUBLEBUFFER = 0x0C32; +pub const STEREO = 0x0C33; +pub const LINE_SMOOTH_HINT = 0x0C52; +pub const POLYGON_SMOOTH_HINT = 0x0C53; +pub const UNPACK_SWAP_BYTES = 0x0CF0; +pub const UNPACK_LSB_FIRST = 0x0CF1; +pub const UNPACK_ROW_LENGTH = 0x0CF2; +pub const UNPACK_SKIP_ROWS = 0x0CF3; +pub const UNPACK_SKIP_PIXELS = 0x0CF4; +pub const UNPACK_ALIGNMENT = 0x0CF5; +pub const PACK_SWAP_BYTES = 0x0D00; +pub const PACK_LSB_FIRST = 0x0D01; +pub const PACK_ROW_LENGTH = 0x0D02; +pub const PACK_SKIP_ROWS = 0x0D03; +pub const PACK_SKIP_PIXELS = 0x0D04; +pub const PACK_ALIGNMENT = 0x0D05; +pub const MAX_TEXTURE_SIZE = 0x0D33; +pub const MAX_VIEWPORT_DIMS = 0x0D3A; +pub const SUBPIXEL_BITS = 0x0D50; +pub const TEXTURE_1D = 0x0DE0; +pub const TEXTURE_2D = 0x0DE1; +pub const TEXTURE_WIDTH = 0x1000; +pub const TEXTURE_HEIGHT = 0x1001; +pub const TEXTURE_BORDER_COLOR = 0x1004; +pub const DONT_CARE = 0x1100; +pub const FASTEST = 0x1101; +pub const NICEST = 0x1102; +pub const BYTE = 0x1400; +pub const UNSIGNED_BYTE = 0x1401; +pub const SHORT = 0x1402; +pub const UNSIGNED_SHORT = 0x1403; +pub const INT = 0x1404; +pub const UNSIGNED_INT = 0x1405; +pub const FLOAT = 0x1406; +pub const CLEAR = 0x1500; +pub const AND = 0x1501; +pub const AND_REVERSE = 0x1502; +pub const COPY = 0x1503; +pub const AND_INVERTED = 0x1504; +pub const NOOP = 0x1505; +pub const XOR = 0x1506; +pub const OR = 0x1507; +pub const NOR = 0x1508; +pub const EQUIV = 0x1509; +pub const INVERT = 0x150A; +pub const OR_REVERSE = 0x150B; +pub const COPY_INVERTED = 0x150C; +pub const OR_INVERTED = 0x150D; +pub const NAND = 0x150E; +pub const SET = 0x150F; +pub const TEXTURE = 0x1702; +pub const COLOR = 0x1800; +pub const DEPTH = 0x1801; +pub const STENCIL = 0x1802; +pub const STENCIL_INDEX = 0x1901; +pub const DEPTH_COMPONENT = 0x1902; +pub const RED = 0x1903; +pub const GREEN = 0x1904; +pub const BLUE = 0x1905; +pub const ALPHA = 0x1906; +pub const RGB = 0x1907; +pub const RGBA = 0x1908; +pub const POINT = 0x1B00; +pub const LINE = 0x1B01; +pub const FILL = 0x1B02; +pub const KEEP = 0x1E00; +pub const REPLACE = 0x1E01; +pub const INCR = 0x1E02; +pub const DECR = 0x1E03; +pub const VENDOR = 0x1F00; +pub const RENDERER = 0x1F01; +pub const VERSION = 0x1F02; +pub const EXTENSIONS = 0x1F03; +pub const NEAREST = 0x2600; +pub const LINEAR = 0x2601; +pub const NEAREST_MIPMAP_NEAREST = 0x2700; +pub const LINEAR_MIPMAP_NEAREST = 0x2701; +pub const NEAREST_MIPMAP_LINEAR = 0x2702; +pub const LINEAR_MIPMAP_LINEAR = 0x2703; +pub const TEXTURE_MAG_FILTER = 0x2800; +pub const TEXTURE_MIN_FILTER = 0x2801; +pub const TEXTURE_WRAP_S = 0x2802; +pub const TEXTURE_WRAP_T = 0x2803; +pub const REPEAT = 0x2901; +pub const MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE; +pub const MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB; +pub const MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266; +pub const MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265; +pub const MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264; +pub const MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263; +pub const MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262; +pub const MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD; +pub const MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC; +pub const MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB; +pub const COMPUTE_SHADER = 0x91B9; +pub const MAX_ELEMENT_INDEX = 0x8D6B; +pub const ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; +pub const PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69; +pub const COMPRESSED_SIGNED_RG11_EAC = 0x9273; +pub const COMPRESSED_RG11_EAC = 0x9272; +pub const COMPRESSED_SIGNED_R11_EAC = 0x9271; +pub const COMPRESSED_R11_EAC = 0x9270; +pub const COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; +pub const COMPRESSED_RGB8_ETC2 = 0x9274; +pub const VERTEX_ATTRIB_ARRAY_LONG = 0x874E; +pub const NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9; +pub const TEXTURE_IMMUTABLE_FORMAT = 0x912F; +pub const COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F; +pub const COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E; +pub const COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D; +pub const COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C; +pub const MAX_COMBINED_IMAGE_UNIFORMS = 0x90CF; +pub const MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE; +pub const MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD; +pub const MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC; +pub const MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB; +pub const MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA; +pub const IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x90C9; +pub const IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x90C8; +pub const IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7; +pub const IMAGE_BINDING_FORMAT = 0x906E; +pub const MAX_IMAGE_SAMPLES = 0x906D; +pub const UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x906C; +pub const UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x906B; +pub const UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x906A; +pub const UNSIGNED_INT_IMAGE_2D_ARRAY = 0x9069; +pub const UNSIGNED_INT_IMAGE_1D_ARRAY = 0x9068; +pub const UNSIGNED_INT_IMAGE_BUFFER = 0x9067; +pub const UNSIGNED_INT_IMAGE_CUBE = 0x9066; +pub const UNSIGNED_INT_IMAGE_2D_RECT = 0x9065; +pub const UNSIGNED_INT_IMAGE_3D = 0x9064; +pub const INT_IMAGE_CUBE = 0x905B; +pub const INT_IMAGE_2D_RECT = 0x905A; +pub const INT_IMAGE_3D = 0x9059; +pub const INT_IMAGE_2D = 0x9058; +pub const INT_IMAGE_1D = 0x9057; +pub const IMAGE_2D_MULTISAMPLE_ARRAY = 0x9056; +pub const IMAGE_2D_MULTISAMPLE = 0x9055; +pub const IMAGE_CUBE_MAP_ARRAY = 0x9054; +pub const IMAGE_2D_ARRAY = 0x9053; +pub const IMAGE_1D_ARRAY = 0x9052; +pub const IMAGE_BUFFER = 0x9051; +pub const IMAGE_CUBE = 0x9050; +pub const IMAGE_2D_RECT = 0x904F; +pub const IMAGE_3D = 0x904E; +pub const IMAGE_2D = 0x904D; +pub const IMAGE_1D = 0x904C; +pub const IMAGE_BINDING_ACCESS = 0x8F3E; +pub const IMAGE_BINDING_LAYER = 0x8F3D; +pub const IMAGE_BINDING_LAYERED = 0x8F3C; +pub const IMAGE_BINDING_LEVEL = 0x8F3B; +pub const IMAGE_BINDING_NAME = 0x8F3A; +pub const MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39; +pub const MAX_IMAGE_UNITS = 0x8F38; +pub const ALL_BARRIER_BITS = 0xFFFFFFFF; +pub const ATOMIC_COUNTER_BARRIER_BIT = 0x00001000; +pub const TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800; +pub const FRAMEBUFFER_BARRIER_BIT = 0x00000400; +pub const BUFFER_UPDATE_BARRIER_BIT = 0x00000200; +pub const TEXTURE_UPDATE_BARRIER_BIT = 0x00000100; +pub const PIXEL_BUFFER_BARRIER_BIT = 0x00000080; +pub const COMMAND_BARRIER_BIT = 0x00000040; +pub const SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020; +pub const TEXTURE_FETCH_BARRIER_BIT = 0x00000008; +pub const UNIFORM_BARRIER_BIT = 0x00000004; +pub const ELEMENT_ARRAY_BARRIER_BIT = 0x00000002; +pub const VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001; +pub const UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB; +pub const UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA; +pub const ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9; +pub const MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x92DC; +pub const MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x92D8; +pub const MAX_COMBINED_ATOMIC_COUNTERS = 0x92D7; +pub const MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6; +pub const MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5; +pub const MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4; +pub const MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2; +pub const MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x92D1; +pub const MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0; +pub const MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE; +pub const MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD; +pub const MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC; +pub const ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x92CB; +pub const ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x92CA; +pub const ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9; +pub const ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x92C8; +pub const ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x92C7; +pub const ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x92C6; +pub const ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x92C5; +pub const ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x92C4; +pub const ATOMIC_COUNTER_BUFFER_SIZE = 0x92C3; +pub const ATOMIC_COUNTER_BUFFER_START = 0x92C2; +pub const ATOMIC_COUNTER_BUFFER_BINDING = 0x92C1; +pub const ATOMIC_COUNTER_BUFFER = 0x92C0; +pub const MIN_MAP_BUFFER_ALIGNMENT = 0x90BC; +pub const NUM_SAMPLE_COUNTS = 0x9380; +pub const PACK_COMPRESSED_BLOCK_SIZE = 0x912E; +pub const PACK_COMPRESSED_BLOCK_DEPTH = 0x912D; +pub const PACK_COMPRESSED_BLOCK_HEIGHT = 0x912C; +pub const PACK_COMPRESSED_BLOCK_WIDTH = 0x912B; +pub const UNPACK_COMPRESSED_BLOCK_SIZE = 0x912A; +pub const UNPACK_COMPRESSED_BLOCK_DEPTH = 0x9129; +pub const UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x9128; +pub const UNPACK_COMPRESSED_BLOCK_WIDTH = 0x9127; +pub const TRANSFORM_FEEDBACK_PAUSED = 0x8E23; +pub const TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; +pub const COPY_WRITE_BUFFER_BINDING = 0x8F37; +pub const COPY_READ_BUFFER_BINDING = 0x8F36; +pub const UNDEFINED_VERTEX = 0x8260; +pub const VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F; +pub const LAYER_PROVOKING_VERTEX = 0x825E; +pub const VIEWPORT_BOUNDS_RANGE = 0x825D; +pub const VIEWPORT_SUBPIXEL_BITS = 0x825C; +pub const MAX_VIEWPORTS = 0x825B; +pub const PROGRAM_PIPELINE_BINDING = 0x825A; +pub const ACTIVE_PROGRAM = 0x8259; +pub const PROGRAM_SEPARABLE = 0x8258; +pub const ALL_SHADER_BITS = 0xFFFFFFFF; +pub const TESS_EVALUATION_SHADER_BIT = 0x00000010; +pub const TESS_CONTROL_SHADER_BIT = 0x00000008; +pub const GEOMETRY_SHADER_BIT = 0x00000004; +pub const FRAGMENT_SHADER_BIT = 0x00000002; +pub const VERTEX_SHADER_BIT = 0x00000001; +pub const PROGRAM_BINARY_FORMATS = 0x87FF; +pub const NUM_PROGRAM_BINARY_FORMATS = 0x87FE; +pub const PROGRAM_BINARY_LENGTH = 0x8741; +pub const PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257; +pub const RGB565 = 0x8D62; +pub const MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; +pub const MAX_VARYING_VECTORS = 0x8DFC; +pub const MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; +pub const NUM_SHADER_BINARY_FORMATS = 0x8DF9; +pub const SHADER_BINARY_FORMATS = 0x8DF8; +pub const SHADER_COMPILER = 0x8DFA; +pub const HIGH_INT = 0x8DF5; +pub const MEDIUM_INT = 0x8DF4; +pub const LOW_INT = 0x8DF3; +pub const HIGH_FLOAT = 0x8DF2; +pub const MEDIUM_FLOAT = 0x8DF1; +pub const LOW_FLOAT = 0x8DF0; +pub const IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; +pub const IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; +pub const FIXED = 0x140C; +pub const MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70; +pub const ISOLINES = 0x8E7A; +pub const TESS_GEN_POINT_MODE = 0x8E79; +pub const TESS_GEN_VERTEX_ORDER = 0x8E78; +pub const TESS_GEN_SPACING = 0x8E77; +pub const TESS_GEN_MODE = 0x8E76; +pub const TESS_CONTROL_OUTPUT_VERTICES = 0x8E75; +pub const PATCH_DEFAULT_OUTER_LEVEL = 0x8E74; +pub const PATCH_DEFAULT_INNER_LEVEL = 0x8E73; +pub const PATCH_VERTICES = 0x8E72; +pub const PATCHES = 0x000E; +pub const VERTEX_BINDING_BUFFER = 0x8F4F; +pub const MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA; +pub const MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9; +pub const VERTEX_BINDING_STRIDE = 0x82D8; +pub const VERTEX_BINDING_OFFSET = 0x82D7; +pub const VERTEX_BINDING_DIVISOR = 0x82D6; +pub const VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5; +pub const VERTEX_ATTRIB_BINDING = 0x82D4; +pub const TEXTURE_IMMUTABLE_LEVELS = 0x82DF; +pub const TEXTURE_VIEW_NUM_LAYERS = 0x82DE; +pub const TEXTURE_VIEW_MIN_LAYER = 0x82DD; +pub const TEXTURE_VIEW_NUM_LEVELS = 0x82DC; +pub const TEXTURE_VIEW_MIN_LEVEL = 0x82DB; +pub const TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F; +pub const TEXTURE_BUFFER_SIZE = 0x919E; +pub const TEXTURE_BUFFER_OFFSET = 0x919D; +pub const DEPTH_STENCIL_TEXTURE_MODE = 0x90EA; +pub const MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39; +pub const SHADER_STORAGE_BARRIER_BIT = 0x00002000; +pub const SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF; +pub const MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE; +pub const MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD; +pub const MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC; +pub const MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB; +pub const MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA; +pub const MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9; +pub const MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8; +pub const MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7; +pub const MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6; +pub const SHADER_STORAGE_BUFFER_SIZE = 0x90D5; +pub const SHADER_STORAGE_BUFFER_START = 0x90D4; +pub const SHADER_STORAGE_BUFFER_BINDING = 0x90D3; +pub const SHADER_STORAGE_BUFFER = 0x90D2; +pub const IS_PER_PATCH = 0x92E7; +pub const LOCATION_INDEX = 0x930F; +pub const LOCATION = 0x930E; +pub const TOP_LEVEL_ARRAY_STRIDE = 0x930D; +pub const TOP_LEVEL_ARRAY_SIZE = 0x930C; +pub const REFERENCED_BY_COMPUTE_SHADER = 0x930B; +pub const REFERENCED_BY_FRAGMENT_SHADER = 0x930A; +pub const REFERENCED_BY_GEOMETRY_SHADER = 0x9309; +pub const REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308; +pub const REFERENCED_BY_TESS_CONTROL_SHADER = 0x9307; +pub const REFERENCED_BY_VERTEX_SHADER = 0x9306; +pub const ACTIVE_VARIABLES = 0x9305; +pub const NUM_ACTIVE_VARIABLES = 0x9304; +pub const BUFFER_DATA_SIZE = 0x9303; +pub const BUFFER_BINDING = 0x9302; +pub const ATOMIC_COUNTER_BUFFER_INDEX = 0x9301; +pub const IS_ROW_MAJOR = 0x9300; +pub const MATRIX_STRIDE = 0x92FF; +pub const ARRAY_STRIDE = 0x92FE; +pub const BLOCK_INDEX = 0x92FD; +pub const OFFSET = 0x92FC; +pub const ARRAY_SIZE = 0x92FB; +pub const TYPE = 0x92FA; +pub const NAME_LENGTH = 0x92F9; +pub const MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8; +pub const MAX_NUM_ACTIVE_VARIABLES = 0x92F7; +pub const MAX_NAME_LENGTH = 0x92F6; +pub const ACTIVE_RESOURCES = 0x92F5; +pub const TRANSFORM_FEEDBACK_VARYING = 0x92F4; +pub const COMPUTE_SUBROUTINE_UNIFORM = 0x92F3; +pub const FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2; +pub const GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1; +pub const TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0; +pub const TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF; +pub const VERTEX_SUBROUTINE_UNIFORM = 0x92EE; +pub const COMPUTE_SUBROUTINE = 0x92ED; +pub const FRAGMENT_SUBROUTINE = 0x92EC; +pub const GEOMETRY_SUBROUTINE = 0x92EB; +pub const TESS_EVALUATION_SUBROUTINE = 0x92EA; +pub const TESS_CONTROL_SUBROUTINE = 0x92E9; +pub const VERTEX_SUBROUTINE = 0x92E8; +pub const SHADER_STORAGE_BLOCK = 0x92E6; +pub const BUFFER_VARIABLE = 0x92E5; +pub const PROGRAM_OUTPUT = 0x92E4; +pub const PROGRAM_INPUT = 0x92E3; +pub const UNIFORM_BLOCK = 0x92E2; +pub const UNIFORM = 0x92E1; +pub const VIEW_CLASS_BPTC_FLOAT = 0x82D3; +pub const VIEW_CLASS_BPTC_UNORM = 0x82D2; +pub const VIEW_CLASS_RGTC2_RG = 0x82D1; +pub const VIEW_CLASS_RGTC1_RED = 0x82D0; +pub const VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF; +pub const VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE; +pub const VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD; +pub const VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC; +pub const VIEW_CLASS_8_BITS = 0x82CB; +pub const VIEW_CLASS_16_BITS = 0x82CA; +pub const VIEW_CLASS_24_BITS = 0x82C9; +pub const VIEW_CLASS_32_BITS = 0x82C8; +pub const VIEW_CLASS_48_BITS = 0x82C7; +pub const VIEW_CLASS_64_BITS = 0x82C6; +pub const VIEW_CLASS_96_BITS = 0x82C5; +pub const VIEW_CLASS_128_BITS = 0x82C4; +pub const IMAGE_CLASS_10_10_10_2 = 0x82C3; +pub const IMAGE_CLASS_11_11_10 = 0x82C2; +pub const IMAGE_CLASS_1_X_8 = 0x82C1; +pub const IMAGE_CLASS_2_X_8 = 0x82C0; +pub const IMAGE_CLASS_4_X_8 = 0x82BF; +pub const IMAGE_CLASS_1_X_16 = 0x82BE; +pub const IMAGE_CLASS_2_X_16 = 0x82BD; +pub const IMAGE_CLASS_4_X_16 = 0x82BC; +pub const IMAGE_CLASS_1_X_32 = 0x82BB; +pub const IMAGE_CLASS_2_X_32 = 0x82BA; +pub const IMAGE_CLASS_4_X_32 = 0x82B9; +pub const CAVEAT_SUPPORT = 0x82B8; +pub const FULL_SUPPORT = 0x82B7; +pub const VIEW_COMPATIBILITY_CLASS = 0x82B6; +pub const TEXTURE_VIEW = 0x82B5; +pub const CLEAR_BUFFER = 0x82B4; +pub const TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3; +pub const TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2; +pub const TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1; +pub const SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF; +pub const SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE; +pub const SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD; +pub const SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC; +pub const IMAGE_PIXEL_TYPE = 0x82AA; +pub const IMAGE_PIXEL_FORMAT = 0x82A9; +pub const IMAGE_COMPATIBILITY_CLASS = 0x82A8; +pub const IMAGE_TEXEL_SIZE = 0x82A7; +pub const SHADER_IMAGE_ATOMIC = 0x82A6; +pub const SHADER_IMAGE_STORE = 0x82A5; +pub const SHADER_IMAGE_LOAD = 0x82A4; +pub const TEXTURE_GATHER_SHADOW = 0x82A3; +pub const TEXTURE_GATHER = 0x82A2; +pub const TEXTURE_SHADOW = 0x82A1; +pub const COMPUTE_TEXTURE = 0x82A0; +pub const FRAGMENT_TEXTURE = 0x829F; +pub const GEOMETRY_TEXTURE = 0x829E; +pub const TESS_EVALUATION_TEXTURE = 0x829D; +pub const TESS_CONTROL_TEXTURE = 0x829C; +pub const VERTEX_TEXTURE = 0x829B; +pub const FILTER = 0x829A; +pub const SRGB_WRITE = 0x8298; +pub const SRGB_READ = 0x8297; +pub const COLOR_ENCODING = 0x8296; +pub const AUTO_GENERATE_MIPMAP = 0x8295; +pub const MANUAL_GENERATE_MIPMAP = 0x8294; +pub const MIPMAP = 0x8293; +pub const GET_TEXTURE_IMAGE_TYPE = 0x8292; +pub const GET_TEXTURE_IMAGE_FORMAT = 0x8291; +pub const TEXTURE_IMAGE_TYPE = 0x8290; +pub const TEXTURE_IMAGE_FORMAT = 0x828F; +pub const READ_PIXELS_TYPE = 0x828E; +pub const READ_PIXELS_FORMAT = 0x828D; +pub const READ_PIXELS = 0x828C; +pub const FRAMEBUFFER_BLEND = 0x828B; +pub const FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A; +pub const FRAMEBUFFER_RENDERABLE = 0x8289; +pub const STENCIL_RENDERABLE = 0x8288; +pub const DEPTH_RENDERABLE = 0x8287; +pub const COLOR_RENDERABLE = 0x8286; +pub const STENCIL_COMPONENTS = 0x8285; +pub const DEPTH_COMPONENTS = 0x8284; +pub const COLOR_COMPONENTS = 0x8283; +pub const MAX_COMBINED_DIMENSIONS = 0x8282; +pub const MAX_LAYERS = 0x8281; +pub const MAX_DEPTH = 0x8280; +pub const MAX_HEIGHT = 0x827F; +pub const MAX_WIDTH = 0x827E; +pub const INTERNALFORMAT_STENCIL_TYPE = 0x827D; +pub const INTERNALFORMAT_DEPTH_TYPE = 0x827C; +pub const INTERNALFORMAT_ALPHA_TYPE = 0x827B; +pub const INTERNALFORMAT_BLUE_TYPE = 0x827A; +pub const INTERNALFORMAT_GREEN_TYPE = 0x8279; +pub const INTERNALFORMAT_RED_TYPE = 0x8278; +pub const INTERNALFORMAT_SHARED_SIZE = 0x8277; +pub const INTERNALFORMAT_STENCIL_SIZE = 0x8276; +pub const INTERNALFORMAT_DEPTH_SIZE = 0x8275; +pub const INTERNALFORMAT_ALPHA_SIZE = 0x8274; +pub const INTERNALFORMAT_BLUE_SIZE = 0x8273; +pub const INTERNALFORMAT_GREEN_SIZE = 0x8272; +pub const INTERNALFORMAT_RED_SIZE = 0x8271; +pub const INTERNALFORMAT_PREFERRED = 0x8270; +pub const INTERNALFORMAT_SUPPORTED = 0x826F; +pub const MAX_FRAMEBUFFER_SAMPLES = 0x9318; +pub const MAX_FRAMEBUFFER_LAYERS = 0x9317; +pub const MAX_FRAMEBUFFER_HEIGHT = 0x9316; +pub const MAX_FRAMEBUFFER_WIDTH = 0x9315; +pub const FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314; +pub const FRAMEBUFFER_DEFAULT_SAMPLES = 0x9313; +pub const FRAMEBUFFER_DEFAULT_LAYERS = 0x9312; +pub const FRAMEBUFFER_DEFAULT_HEIGHT = 0x9311; +pub const FRAMEBUFFER_DEFAULT_WIDTH = 0x9310; +pub const MAX_UNIFORM_LOCATIONS = 0x826E; +pub const CONTEXT_FLAG_DEBUG_BIT = 0x00000002; +pub const DEBUG_OUTPUT = 0x92E0; +pub const MAX_LABEL_LENGTH = 0x82E8; +pub const SAMPLER = 0x82E6; +pub const PROGRAM_PIPELINE = 0x82E4; +pub const QUERY = 0x82E3; +pub const VERTEX_ARRAY = 0x8074; +pub const PROGRAM = 0x82E2; +pub const SHADER = 0x82E1; +pub const BUFFER = 0x82E0; +pub const DEBUG_GROUP_STACK_DEPTH = 0x826D; +pub const MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C; +pub const DEBUG_SEVERITY_NOTIFICATION = 0x826B; +pub const DEBUG_TYPE_POP_GROUP = 0x826A; +pub const DEBUG_TYPE_PUSH_GROUP = 0x8269; +pub const DEBUG_TYPE_MARKER = 0x8268; +pub const DEBUG_SEVERITY_LOW = 0x9148; +pub const DEBUG_SEVERITY_MEDIUM = 0x9147; +pub const DEBUG_SEVERITY_HIGH = 0x9146; +pub const DEBUG_LOGGED_MESSAGES = 0x9145; +pub const MAX_DEBUG_LOGGED_MESSAGES = 0x9144; +pub const MAX_DEBUG_MESSAGE_LENGTH = 0x9143; +pub const DEBUG_TYPE_OTHER = 0x8251; +pub const DEBUG_TYPE_PERFORMANCE = 0x8250; +pub const DEBUG_TYPE_PORTABILITY = 0x824F; +pub const DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824E; +pub const DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D; +pub const DEBUG_TYPE_ERROR = 0x824C; +pub const DEBUG_SOURCE_OTHER = 0x824B; +pub const DEBUG_SOURCE_APPLICATION = 0x824A; +pub const DEBUG_SOURCE_THIRD_PARTY = 0x8249; +pub const DEBUG_SOURCE_SHADER_COMPILER = 0x8248; +pub const DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247; +pub const DEBUG_SOURCE_API = 0x8246; +pub const DEBUG_CALLBACK_USER_PARAM = 0x8245; +pub const DEBUG_CALLBACK_FUNCTION = 0x8244; +pub const DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243; +pub const DEBUG_OUTPUT_SYNCHRONOUS = 0x8242; +pub const COMPUTE_SHADER_BIT = 0x00000020; +pub const DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF; +pub const DISPATCH_INDIRECT_BUFFER = 0x90EE; +pub const ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED; +pub const UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC; +pub const COMPUTE_WORK_GROUP_SIZE = 0x8267; +pub const MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF; +pub const COLOR_LOGIC_OP = 0x0BF2; +pub const POLYGON_OFFSET_UNITS = 0x2A00; +pub const POLYGON_OFFSET_POINT = 0x2A01; +pub const POLYGON_OFFSET_LINE = 0x2A02; +pub const POLYGON_OFFSET_FILL = 0x8037; +pub const POLYGON_OFFSET_FACTOR = 0x8038; +pub const TEXTURE_BINDING_1D = 0x8068; +pub const TEXTURE_BINDING_2D = 0x8069; +pub const TEXTURE_INTERNAL_FORMAT = 0x1003; +pub const TEXTURE_RED_SIZE = 0x805C; +pub const TEXTURE_GREEN_SIZE = 0x805D; +pub const TEXTURE_BLUE_SIZE = 0x805E; +pub const TEXTURE_ALPHA_SIZE = 0x805F; +pub const DOUBLE = 0x140A; +pub const PROXY_TEXTURE_1D = 0x8063; +pub const PROXY_TEXTURE_2D = 0x8064; +pub const R3_G3_B2 = 0x2A10; +pub const RGB4 = 0x804F; +pub const RGB5 = 0x8050; +pub const RGB8 = 0x8051; +pub const RGB10 = 0x8052; +pub const RGB12 = 0x8053; +pub const RGB16 = 0x8054; +pub const RGBA2 = 0x8055; +pub const RGBA4 = 0x8056; +pub const RGB5_A1 = 0x8057; +pub const RGBA8 = 0x8058; +pub const RGB10_A2 = 0x8059; +pub const RGBA12 = 0x805A; +pub const RGBA16 = 0x805B; +pub const COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; +pub const COMPRESSED_RGBA8_ETC2_EAC = 0x9278; +pub const COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; +pub const UNSIGNED_INT_IMAGE_2D = 0x9063; +pub const UNSIGNED_INT_IMAGE_1D = 0x9062; +pub const INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9061; +pub const INT_IMAGE_2D_MULTISAMPLE = 0x9060; +pub const INT_IMAGE_CUBE_MAP_ARRAY = 0x905F; +pub const INT_IMAGE_2D_ARRAY = 0x905E; +pub const INT_IMAGE_1D_ARRAY = 0x905D; +pub const INT_IMAGE_BUFFER = 0x905C; +pub const MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3; +pub const MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF; +pub const TRANSFORM_FEEDBACK_BINDING = 0x8E25; +pub const TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24; +pub const TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23; +pub const TRANSFORM_FEEDBACK = 0x8E22; +pub const TESS_CONTROL_SHADER = 0x8E88; +pub const TESS_EVALUATION_SHADER = 0x8E87; +pub const UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1; +pub const UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0; +pub const MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F; +pub const MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E; +pub const MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D; +pub const MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C; +pub const MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A; +pub const MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89; +pub const MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86; +pub const MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85; +pub const MAX_TESS_PATCH_COMPONENTS = 0x8E84; +pub const MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83; +pub const MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82; +pub const MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81; +pub const MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80; +pub const MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F; +pub const MAX_TESS_GEN_LEVEL = 0x8E7E; +pub const MAX_PATCH_VERTICES = 0x8E7D; +pub const FRACTIONAL_EVEN = 0x8E7C; +pub const FRACTIONAL_ODD = 0x8E7B; +pub const QUADS = 0x0007; +pub const MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8; +pub const COMPATIBLE_SUBROUTINES = 0x8E4B; +pub const NUM_COMPATIBLE_SUBROUTINES = 0x8E4A; +pub const MAX_SUBROUTINES = 0x8DE7; +pub const ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49; +pub const ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48; +pub const ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47; +pub const ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6; +pub const ACTIVE_SUBROUTINES = 0x8DE5; +pub const UNSIGNED_BYTE_3_3_2 = 0x8032; +pub const UNSIGNED_SHORT_4_4_4_4 = 0x8033; +pub const UNSIGNED_SHORT_5_5_5_1 = 0x8034; +pub const UNSIGNED_INT_8_8_8_8 = 0x8035; +pub const UNSIGNED_INT_10_10_10_2 = 0x8036; +pub const TEXTURE_BINDING_3D = 0x806A; +pub const PACK_SKIP_IMAGES = 0x806B; +pub const PACK_IMAGE_HEIGHT = 0x806C; +pub const UNPACK_SKIP_IMAGES = 0x806D; +pub const UNPACK_IMAGE_HEIGHT = 0x806E; +pub const TEXTURE_3D = 0x806F; +pub const PROXY_TEXTURE_3D = 0x8070; +pub const TEXTURE_DEPTH = 0x8071; +pub const TEXTURE_WRAP_R = 0x8072; +pub const MAX_3D_TEXTURE_SIZE = 0x8073; +pub const UNSIGNED_BYTE_2_3_3_REV = 0x8362; +pub const UNSIGNED_SHORT_5_6_5 = 0x8363; +pub const UNSIGNED_SHORT_5_6_5_REV = 0x8364; +pub const UNSIGNED_SHORT_4_4_4_4_REV = 0x8365; +pub const UNSIGNED_SHORT_1_5_5_5_REV = 0x8366; +pub const UNSIGNED_INT_8_8_8_8_REV = 0x8367; +pub const UNSIGNED_INT_2_10_10_10_REV = 0x8368; +pub const BGR = 0x80E0; +pub const BGRA = 0x80E1; +pub const MAX_ELEMENTS_VERTICES = 0x80E8; +pub const MAX_ELEMENTS_INDICES = 0x80E9; +pub const CLAMP_TO_EDGE = 0x812F; +pub const TEXTURE_MIN_LOD = 0x813A; +pub const TEXTURE_MAX_LOD = 0x813B; +pub const TEXTURE_BASE_LEVEL = 0x813C; +pub const TEXTURE_MAX_LEVEL = 0x813D; +pub const SMOOTH_POINT_SIZE_RANGE = 0x0B12; +pub const SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13; +pub const SMOOTH_LINE_WIDTH_RANGE = 0x0B22; +pub const SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23; +pub const ALIASED_LINE_WIDTH_RANGE = 0x846E; +pub const TEXTURE0 = 0x84C0; +pub const TEXTURE1 = 0x84C1; +pub const TEXTURE2 = 0x84C2; +pub const TEXTURE3 = 0x84C3; +pub const TEXTURE4 = 0x84C4; +pub const TEXTURE5 = 0x84C5; +pub const TEXTURE6 = 0x84C6; +pub const TEXTURE7 = 0x84C7; +pub const TEXTURE8 = 0x84C8; +pub const TEXTURE9 = 0x84C9; +pub const TEXTURE10 = 0x84CA; +pub const TEXTURE11 = 0x84CB; +pub const TEXTURE12 = 0x84CC; +pub const TEXTURE13 = 0x84CD; +pub const TEXTURE14 = 0x84CE; +pub const TEXTURE15 = 0x84CF; +pub const TEXTURE16 = 0x84D0; +pub const TEXTURE17 = 0x84D1; +pub const TEXTURE18 = 0x84D2; +pub const TEXTURE19 = 0x84D3; +pub const TEXTURE20 = 0x84D4; +pub const TEXTURE21 = 0x84D5; +pub const TEXTURE22 = 0x84D6; +pub const TEXTURE23 = 0x84D7; +pub const TEXTURE24 = 0x84D8; +pub const TEXTURE25 = 0x84D9; +pub const TEXTURE26 = 0x84DA; +pub const TEXTURE27 = 0x84DB; +pub const TEXTURE28 = 0x84DC; +pub const TEXTURE29 = 0x84DD; +pub const TEXTURE30 = 0x84DE; +pub const TEXTURE31 = 0x84DF; +pub const ACTIVE_TEXTURE = 0x84E0; +pub const MULTISAMPLE = 0x809D; +pub const SAMPLE_ALPHA_TO_COVERAGE = 0x809E; +pub const SAMPLE_ALPHA_TO_ONE = 0x809F; +pub const SAMPLE_COVERAGE = 0x80A0; +pub const SAMPLE_BUFFERS = 0x80A8; +pub const SAMPLES = 0x80A9; +pub const SAMPLE_COVERAGE_VALUE = 0x80AA; +pub const SAMPLE_COVERAGE_INVERT = 0x80AB; +pub const TEXTURE_CUBE_MAP = 0x8513; +pub const TEXTURE_BINDING_CUBE_MAP = 0x8514; +pub const TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; +pub const TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; +pub const TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; +pub const TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; +pub const TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; +pub const TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; +pub const PROXY_TEXTURE_CUBE_MAP = 0x851B; +pub const MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; +pub const COMPRESSED_RGB = 0x84ED; +pub const COMPRESSED_RGBA = 0x84EE; +pub const TEXTURE_COMPRESSION_HINT = 0x84EF; +pub const TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0; +pub const TEXTURE_COMPRESSED = 0x86A1; +pub const NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; +pub const COMPRESSED_TEXTURE_FORMATS = 0x86A3; +pub const CLAMP_TO_BORDER = 0x812D; +pub const DOUBLE_MAT4x3 = 0x8F4E; +pub const DOUBLE_MAT4x2 = 0x8F4D; +pub const DOUBLE_MAT3x4 = 0x8F4C; +pub const DOUBLE_MAT3x2 = 0x8F4B; +pub const DOUBLE_MAT2x4 = 0x8F4A; +pub const DOUBLE_MAT2x3 = 0x8F49; +pub const DOUBLE_MAT4 = 0x8F48; +pub const DOUBLE_MAT3 = 0x8F47; +pub const DOUBLE_MAT2 = 0x8F46; +pub const DOUBLE_VEC4 = 0x8FFE; +pub const DOUBLE_VEC3 = 0x8FFD; +pub const DOUBLE_VEC2 = 0x8FFC; +pub const MAX_VERTEX_STREAMS = 0x8E71; +pub const FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D; +pub const MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C; +pub const MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B; +pub const MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A; +pub const GEOMETRY_SHADER_INVOCATIONS = 0x887F; +pub const DRAW_INDIRECT_BUFFER_BINDING = 0x8F43; +pub const DRAW_INDIRECT_BUFFER = 0x8F3F; +pub const UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F; +pub const INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E; +pub const SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D; +pub const SAMPLER_CUBE_MAP_ARRAY = 0x900C; +pub const PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B; +pub const TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A; +pub const TEXTURE_CUBE_MAP_ARRAY = 0x9009; +pub const MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F; +pub const MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E; +pub const MIN_SAMPLE_SHADING_VALUE = 0x8C37; +pub const SAMPLE_SHADING = 0x8C36; +pub const INT_2_10_10_10_REV = 0x8D9F; +pub const TIMESTAMP = 0x8E28; +pub const TIME_ELAPSED = 0x88BF; +pub const TEXTURE_SWIZZLE_RGBA = 0x8E46; +pub const TEXTURE_SWIZZLE_A = 0x8E45; +pub const TEXTURE_SWIZZLE_B = 0x8E44; +pub const TEXTURE_SWIZZLE_G = 0x8E43; +pub const TEXTURE_SWIZZLE_R = 0x8E42; +pub const RGB10_A2UI = 0x906F; +pub const BLEND_DST_RGB = 0x80C8; +pub const BLEND_SRC_RGB = 0x80C9; +pub const BLEND_DST_ALPHA = 0x80CA; +pub const BLEND_SRC_ALPHA = 0x80CB; +pub const POINT_FADE_THRESHOLD_SIZE = 0x8128; +pub const DEPTH_COMPONENT16 = 0x81A5; +pub const DEPTH_COMPONENT24 = 0x81A6; +pub const DEPTH_COMPONENT32 = 0x81A7; +pub const MIRRORED_REPEAT = 0x8370; +pub const MAX_TEXTURE_LOD_BIAS = 0x84FD; +pub const TEXTURE_LOD_BIAS = 0x8501; +pub const INCR_WRAP = 0x8507; +pub const DECR_WRAP = 0x8508; +pub const TEXTURE_DEPTH_SIZE = 0x884A; +pub const TEXTURE_COMPARE_MODE = 0x884C; +pub const TEXTURE_COMPARE_FUNC = 0x884D; +pub const SAMPLER_BINDING = 0x8919; +pub const ANY_SAMPLES_PASSED = 0x8C2F; +pub const MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC; +pub const ONE_MINUS_SRC1_ALPHA = 0x88FB; +pub const ONE_MINUS_SRC1_COLOR = 0x88FA; +pub const SRC1_COLOR = 0x88F9; +pub const VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; +pub const MAX_INTEGER_SAMPLES = 0x9110; +pub const MAX_DEPTH_TEXTURE_SAMPLES = 0x910F; +pub const MAX_COLOR_TEXTURE_SAMPLES = 0x910E; +pub const UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D; +pub const INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C; +pub const SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B; +pub const UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A; +pub const INT_SAMPLER_2D_MULTISAMPLE = 0x9109; +pub const SAMPLER_2D_MULTISAMPLE = 0x9108; +pub const TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107; +pub const TEXTURE_SAMPLES = 0x9106; +pub const TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105; +pub const TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104; +pub const PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103; +pub const TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102; +pub const PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101; +pub const TEXTURE_2D_MULTISAMPLE = 0x9100; +pub const MAX_SAMPLE_MASK_WORDS = 0x8E59; +pub const SAMPLE_MASK_VALUE = 0x8E52; +pub const SAMPLE_MASK = 0x8E51; +pub const SAMPLE_POSITION = 0x8E50; +pub const SYNC_FLUSH_COMMANDS_BIT = 0x00000001; +pub const TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF; +pub const WAIT_FAILED = 0x911D; +pub const CONDITION_SATISFIED = 0x911C; +pub const TIMEOUT_EXPIRED = 0x911B; +pub const ALREADY_SIGNALED = 0x911A; +pub const SIGNALED = 0x9119; +pub const UNSIGNALED = 0x9118; +pub const SYNC_GPU_COMMANDS_COMPLETE = 0x9117; +pub const BLEND_COLOR = 0x8005; +pub const BLEND_EQUATION = 0x8009; +pub const CONSTANT_COLOR = 0x8001; +pub const ONE_MINUS_CONSTANT_COLOR = 0x8002; +pub const CONSTANT_ALPHA = 0x8003; +pub const ONE_MINUS_CONSTANT_ALPHA = 0x8004; +pub const FUNC_ADD = 0x8006; +pub const FUNC_REVERSE_SUBTRACT = 0x800B; +pub const FUNC_SUBTRACT = 0x800A; +pub const MIN = 0x8007; +pub const MAX = 0x8008; +pub const BUFFER_SIZE = 0x8764; +pub const BUFFER_USAGE = 0x8765; +pub const QUERY_COUNTER_BITS = 0x8864; +pub const CURRENT_QUERY = 0x8865; +pub const QUERY_RESULT = 0x8866; +pub const QUERY_RESULT_AVAILABLE = 0x8867; +pub const ARRAY_BUFFER = 0x8892; +pub const ELEMENT_ARRAY_BUFFER = 0x8893; +pub const ARRAY_BUFFER_BINDING = 0x8894; +pub const ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; +pub const VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; +pub const READ_ONLY = 0x88B8; +pub const WRITE_ONLY = 0x88B9; +pub const READ_WRITE = 0x88BA; +pub const BUFFER_ACCESS = 0x88BB; +pub const BUFFER_MAPPED = 0x88BC; +pub const BUFFER_MAP_POINTER = 0x88BD; +pub const STREAM_DRAW = 0x88E0; +pub const STREAM_READ = 0x88E1; +pub const STREAM_COPY = 0x88E2; +pub const STATIC_DRAW = 0x88E4; +pub const STATIC_READ = 0x88E5; +pub const STATIC_COPY = 0x88E6; +pub const DYNAMIC_DRAW = 0x88E8; +pub const DYNAMIC_READ = 0x88E9; +pub const DYNAMIC_COPY = 0x88EA; +pub const SAMPLES_PASSED = 0x8914; +pub const SRC1_ALPHA = 0x8589; +pub const SYNC_FENCE = 0x9116; +pub const SYNC_FLAGS = 0x9115; +pub const SYNC_STATUS = 0x9114; +pub const SYNC_CONDITION = 0x9113; +pub const OBJECT_TYPE = 0x9112; +pub const MAX_SERVER_WAIT_TIMEOUT = 0x9111; +pub const TEXTURE_CUBE_MAP_SEAMLESS = 0x884F; +pub const PROVOKING_VERTEX = 0x8E4F; +pub const LAST_VERTEX_CONVENTION = 0x8E4E; +pub const FIRST_VERTEX_CONVENTION = 0x8E4D; +pub const QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C; +pub const DEPTH_CLAMP = 0x864F; +pub const CONTEXT_PROFILE_MASK = 0x9126; +pub const MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; +pub const MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124; +pub const MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123; +pub const MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; +pub const BLEND_EQUATION_RGB = 0x8009; +pub const VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; +pub const VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; +pub const VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; +pub const VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; +pub const CURRENT_VERTEX_ATTRIB = 0x8626; +pub const VERTEX_PROGRAM_POINT_SIZE = 0x8642; +pub const VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; +pub const STENCIL_BACK_FUNC = 0x8800; +pub const STENCIL_BACK_FAIL = 0x8801; +pub const STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; +pub const STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; +pub const MAX_DRAW_BUFFERS = 0x8824; +pub const DRAW_BUFFER0 = 0x8825; +pub const DRAW_BUFFER1 = 0x8826; +pub const DRAW_BUFFER2 = 0x8827; +pub const DRAW_BUFFER3 = 0x8828; +pub const DRAW_BUFFER4 = 0x8829; +pub const DRAW_BUFFER5 = 0x882A; +pub const DRAW_BUFFER6 = 0x882B; +pub const DRAW_BUFFER7 = 0x882C; +pub const DRAW_BUFFER8 = 0x882D; +pub const DRAW_BUFFER9 = 0x882E; +pub const DRAW_BUFFER10 = 0x882F; +pub const DRAW_BUFFER11 = 0x8830; +pub const DRAW_BUFFER12 = 0x8831; +pub const DRAW_BUFFER13 = 0x8832; +pub const DRAW_BUFFER14 = 0x8833; +pub const DRAW_BUFFER15 = 0x8834; +pub const BLEND_EQUATION_ALPHA = 0x883D; +pub const MAX_VERTEX_ATTRIBS = 0x8869; +pub const VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; +pub const MAX_TEXTURE_IMAGE_UNITS = 0x8872; +pub const FRAGMENT_SHADER = 0x8B30; +pub const VERTEX_SHADER = 0x8B31; +pub const MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; +pub const MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; +pub const MAX_VARYING_FLOATS = 0x8B4B; +pub const MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; +pub const MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; +pub const SHADER_TYPE = 0x8B4F; +pub const FLOAT_VEC2 = 0x8B50; +pub const FLOAT_VEC3 = 0x8B51; +pub const FLOAT_VEC4 = 0x8B52; +pub const INT_VEC2 = 0x8B53; +pub const INT_VEC3 = 0x8B54; +pub const INT_VEC4 = 0x8B55; +pub const BOOL = 0x8B56; +pub const BOOL_VEC2 = 0x8B57; +pub const BOOL_VEC3 = 0x8B58; +pub const BOOL_VEC4 = 0x8B59; +pub const FLOAT_MAT2 = 0x8B5A; +pub const FLOAT_MAT3 = 0x8B5B; +pub const FLOAT_MAT4 = 0x8B5C; +pub const SAMPLER_1D = 0x8B5D; +pub const SAMPLER_2D = 0x8B5E; +pub const SAMPLER_3D = 0x8B5F; +pub const SAMPLER_CUBE = 0x8B60; +pub const SAMPLER_1D_SHADOW = 0x8B61; +pub const SAMPLER_2D_SHADOW = 0x8B62; +pub const DELETE_STATUS = 0x8B80; +pub const COMPILE_STATUS = 0x8B81; +pub const LINK_STATUS = 0x8B82; +pub const VALIDATE_STATUS = 0x8B83; +pub const INFO_LOG_LENGTH = 0x8B84; +pub const ATTACHED_SHADERS = 0x8B85; +pub const ACTIVE_UNIFORMS = 0x8B86; +pub const ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; +pub const SHADER_SOURCE_LENGTH = 0x8B88; +pub const ACTIVE_ATTRIBUTES = 0x8B89; +pub const ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; +pub const FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; +pub const SHADING_LANGUAGE_VERSION = 0x8B8C; +pub const CURRENT_PROGRAM = 0x8B8D; +pub const POINT_SPRITE_COORD_ORIGIN = 0x8CA0; +pub const LOWER_LEFT = 0x8CA1; +pub const UPPER_LEFT = 0x8CA2; +pub const STENCIL_BACK_REF = 0x8CA3; +pub const STENCIL_BACK_VALUE_MASK = 0x8CA4; +pub const STENCIL_BACK_WRITEMASK = 0x8CA5; +pub const MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1; +pub const MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0; +pub const MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF; +pub const GEOMETRY_OUTPUT_TYPE = 0x8918; +pub const PIXEL_PACK_BUFFER = 0x88EB; +pub const PIXEL_UNPACK_BUFFER = 0x88EC; +pub const PIXEL_PACK_BUFFER_BINDING = 0x88ED; +pub const PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; +pub const FLOAT_MAT2x3 = 0x8B65; +pub const FLOAT_MAT2x4 = 0x8B66; +pub const FLOAT_MAT3x2 = 0x8B67; +pub const FLOAT_MAT3x4 = 0x8B68; +pub const FLOAT_MAT4x2 = 0x8B69; +pub const FLOAT_MAT4x3 = 0x8B6A; +pub const SRGB = 0x8C40; +pub const SRGB8 = 0x8C41; +pub const SRGB_ALPHA = 0x8C42; +pub const SRGB8_ALPHA8 = 0x8C43; +pub const COMPRESSED_SRGB = 0x8C48; +pub const COMPRESSED_SRGB_ALPHA = 0x8C49; +pub const GEOMETRY_INPUT_TYPE = 0x8917; +pub const GEOMETRY_VERTICES_OUT = 0x8916; +pub const GEOMETRY_SHADER = 0x8DD9; +pub const FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8; +pub const FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7; +pub const MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29; +pub const PROGRAM_POINT_SIZE = 0x8642; +pub const COMPARE_REF_TO_TEXTURE = 0x884E; +pub const CLIP_DISTANCE0 = 0x3000; +pub const CLIP_DISTANCE1 = 0x3001; +pub const CLIP_DISTANCE2 = 0x3002; +pub const CLIP_DISTANCE3 = 0x3003; +pub const CLIP_DISTANCE4 = 0x3004; +pub const CLIP_DISTANCE5 = 0x3005; +pub const CLIP_DISTANCE6 = 0x3006; +pub const CLIP_DISTANCE7 = 0x3007; +pub const MAX_CLIP_DISTANCES = 0x0D32; +pub const MAJOR_VERSION = 0x821B; +pub const MINOR_VERSION = 0x821C; +pub const NUM_EXTENSIONS = 0x821D; +pub const CONTEXT_FLAGS = 0x821E; +pub const COMPRESSED_RED = 0x8225; +pub const COMPRESSED_RG = 0x8226; +pub const CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001; +pub const RGBA32F = 0x8814; +pub const RGB32F = 0x8815; +pub const RGBA16F = 0x881A; +pub const RGB16F = 0x881B; +pub const VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; +pub const MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; +pub const MIN_PROGRAM_TEXEL_OFFSET = 0x8904; +pub const MAX_PROGRAM_TEXEL_OFFSET = 0x8905; +pub const CLAMP_READ_COLOR = 0x891C; +pub const FIXED_ONLY = 0x891D; +pub const MAX_VARYING_COMPONENTS = 0x8B4B; +pub const TEXTURE_1D_ARRAY = 0x8C18; +pub const PROXY_TEXTURE_1D_ARRAY = 0x8C19; +pub const TEXTURE_2D_ARRAY = 0x8C1A; +pub const PROXY_TEXTURE_2D_ARRAY = 0x8C1B; +pub const TEXTURE_BINDING_1D_ARRAY = 0x8C1C; +pub const TEXTURE_BINDING_2D_ARRAY = 0x8C1D; +pub const R11F_G11F_B10F = 0x8C3A; +pub const UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; +pub const RGB9_E5 = 0x8C3D; +pub const UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; +pub const TEXTURE_SHARED_SIZE = 0x8C3F; +pub const TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76; +pub const TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; +pub const MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; +pub const TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; +pub const TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; +pub const TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; +pub const PRIMITIVES_GENERATED = 0x8C87; +pub const TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; +pub const RASTERIZER_DISCARD = 0x8C89; +pub const MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; +pub const MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; +pub const INTERLEAVED_ATTRIBS = 0x8C8C; +pub const SEPARATE_ATTRIBS = 0x8C8D; +pub const TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; +pub const TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; +pub const RGBA32UI = 0x8D70; +pub const RGB32UI = 0x8D71; +pub const RGBA16UI = 0x8D76; +pub const RGB16UI = 0x8D77; +pub const RGBA8UI = 0x8D7C; +pub const RGB8UI = 0x8D7D; +pub const RGBA32I = 0x8D82; +pub const RGB32I = 0x8D83; +pub const RGBA16I = 0x8D88; +pub const RGB16I = 0x8D89; +pub const RGBA8I = 0x8D8E; +pub const RGB8I = 0x8D8F; +pub const RED_INTEGER = 0x8D94; +pub const GREEN_INTEGER = 0x8D95; +pub const BLUE_INTEGER = 0x8D96; +pub const RGB_INTEGER = 0x8D98; +pub const RGBA_INTEGER = 0x8D99; +pub const BGR_INTEGER = 0x8D9A; +pub const BGRA_INTEGER = 0x8D9B; +pub const SAMPLER_1D_ARRAY = 0x8DC0; +pub const SAMPLER_2D_ARRAY = 0x8DC1; +pub const SAMPLER_1D_ARRAY_SHADOW = 0x8DC3; +pub const SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; +pub const SAMPLER_CUBE_SHADOW = 0x8DC5; +pub const UNSIGNED_INT_VEC2 = 0x8DC6; +pub const UNSIGNED_INT_VEC3 = 0x8DC7; +pub const UNSIGNED_INT_VEC4 = 0x8DC8; +pub const INT_SAMPLER_1D = 0x8DC9; +pub const INT_SAMPLER_2D = 0x8DCA; +pub const INT_SAMPLER_3D = 0x8DCB; +pub const INT_SAMPLER_CUBE = 0x8DCC; +pub const INT_SAMPLER_1D_ARRAY = 0x8DCE; +pub const INT_SAMPLER_2D_ARRAY = 0x8DCF; +pub const UNSIGNED_INT_SAMPLER_1D = 0x8DD1; +pub const UNSIGNED_INT_SAMPLER_2D = 0x8DD2; +pub const UNSIGNED_INT_SAMPLER_3D = 0x8DD3; +pub const UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; +pub const UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6; +pub const UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; +pub const QUERY_WAIT = 0x8E13; +pub const QUERY_NO_WAIT = 0x8E14; +pub const QUERY_BY_REGION_WAIT = 0x8E15; +pub const QUERY_BY_REGION_NO_WAIT = 0x8E16; +pub const BUFFER_ACCESS_FLAGS = 0x911F; +pub const BUFFER_MAP_LENGTH = 0x9120; +pub const BUFFER_MAP_OFFSET = 0x9121; +pub const DEPTH_COMPONENT32F = 0x8CAC; +pub const DEPTH32F_STENCIL8 = 0x8CAD; +pub const FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; +pub const INVALID_FRAMEBUFFER_OPERATION = 0x0506; +pub const FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; +pub const FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; +pub const FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; +pub const FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; +pub const FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; +pub const FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; +pub const FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; +pub const FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; +pub const FRAMEBUFFER_DEFAULT = 0x8218; +pub const FRAMEBUFFER_UNDEFINED = 0x8219; +pub const DEPTH_STENCIL_ATTACHMENT = 0x821A; +pub const MAX_RENDERBUFFER_SIZE = 0x84E8; +pub const DEPTH_STENCIL = 0x84F9; +pub const UNSIGNED_INT_24_8 = 0x84FA; +pub const DEPTH24_STENCIL8 = 0x88F0; +pub const TEXTURE_STENCIL_SIZE = 0x88F1; +pub const TEXTURE_RED_TYPE = 0x8C10; +pub const TEXTURE_GREEN_TYPE = 0x8C11; +pub const TEXTURE_BLUE_TYPE = 0x8C12; +pub const TEXTURE_ALPHA_TYPE = 0x8C13; +pub const TEXTURE_DEPTH_TYPE = 0x8C16; +pub const UNSIGNED_NORMALIZED = 0x8C17; +pub const FRAMEBUFFER_BINDING = 0x8CA6; +pub const DRAW_FRAMEBUFFER_BINDING = 0x8CA6; +pub const RENDERBUFFER_BINDING = 0x8CA7; +pub const READ_FRAMEBUFFER = 0x8CA8; +pub const DRAW_FRAMEBUFFER = 0x8CA9; +pub const READ_FRAMEBUFFER_BINDING = 0x8CAA; +pub const RENDERBUFFER_SAMPLES = 0x8CAB; +pub const FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; +pub const FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; +pub const FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; +pub const FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; +pub const FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; +pub const FRAMEBUFFER_COMPLETE = 0x8CD5; +pub const FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; +pub const FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; +pub const FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB; +pub const FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC; +pub const FRAMEBUFFER_UNSUPPORTED = 0x8CDD; +pub const MAX_COLOR_ATTACHMENTS = 0x8CDF; +pub const COLOR_ATTACHMENT0 = 0x8CE0; +pub const COLOR_ATTACHMENT1 = 0x8CE1; +pub const COLOR_ATTACHMENT2 = 0x8CE2; +pub const COLOR_ATTACHMENT3 = 0x8CE3; +pub const COLOR_ATTACHMENT4 = 0x8CE4; +pub const COLOR_ATTACHMENT5 = 0x8CE5; +pub const COLOR_ATTACHMENT6 = 0x8CE6; +pub const COLOR_ATTACHMENT7 = 0x8CE7; +pub const COLOR_ATTACHMENT8 = 0x8CE8; +pub const COLOR_ATTACHMENT9 = 0x8CE9; +pub const COLOR_ATTACHMENT10 = 0x8CEA; +pub const COLOR_ATTACHMENT11 = 0x8CEB; +pub const COLOR_ATTACHMENT12 = 0x8CEC; +pub const COLOR_ATTACHMENT13 = 0x8CED; +pub const COLOR_ATTACHMENT14 = 0x8CEE; +pub const COLOR_ATTACHMENT15 = 0x8CEF; +pub const COLOR_ATTACHMENT16 = 0x8CF0; +pub const COLOR_ATTACHMENT17 = 0x8CF1; +pub const COLOR_ATTACHMENT18 = 0x8CF2; +pub const COLOR_ATTACHMENT19 = 0x8CF3; +pub const COLOR_ATTACHMENT20 = 0x8CF4; +pub const COLOR_ATTACHMENT21 = 0x8CF5; +pub const COLOR_ATTACHMENT22 = 0x8CF6; +pub const COLOR_ATTACHMENT23 = 0x8CF7; +pub const COLOR_ATTACHMENT24 = 0x8CF8; +pub const COLOR_ATTACHMENT25 = 0x8CF9; +pub const COLOR_ATTACHMENT26 = 0x8CFA; +pub const COLOR_ATTACHMENT27 = 0x8CFB; +pub const COLOR_ATTACHMENT28 = 0x8CFC; +pub const COLOR_ATTACHMENT29 = 0x8CFD; +pub const COLOR_ATTACHMENT30 = 0x8CFE; +pub const COLOR_ATTACHMENT31 = 0x8CFF; +pub const DEPTH_ATTACHMENT = 0x8D00; +pub const STENCIL_ATTACHMENT = 0x8D20; +pub const FRAMEBUFFER = 0x8D40; +pub const RENDERBUFFER = 0x8D41; +pub const RENDERBUFFER_WIDTH = 0x8D42; +pub const RENDERBUFFER_HEIGHT = 0x8D43; +pub const RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; +pub const STENCIL_INDEX1 = 0x8D46; +pub const STENCIL_INDEX4 = 0x8D47; +pub const STENCIL_INDEX8 = 0x8D48; +pub const STENCIL_INDEX16 = 0x8D49; +pub const RENDERBUFFER_RED_SIZE = 0x8D50; +pub const RENDERBUFFER_GREEN_SIZE = 0x8D51; +pub const RENDERBUFFER_BLUE_SIZE = 0x8D52; +pub const RENDERBUFFER_ALPHA_SIZE = 0x8D53; +pub const RENDERBUFFER_DEPTH_SIZE = 0x8D54; +pub const RENDERBUFFER_STENCIL_SIZE = 0x8D55; +pub const FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; +pub const MAX_SAMPLES = 0x8D57; +pub const LINES_ADJACENCY = 0x000A; +pub const CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002; +pub const CONTEXT_CORE_PROFILE_BIT = 0x00000001; +pub const FRAMEBUFFER_SRGB = 0x8DB9; +pub const HALF_FLOAT = 0x140B; +pub const MAP_READ_BIT = 0x0001; +pub const MAP_WRITE_BIT = 0x0002; +pub const MAP_INVALIDATE_RANGE_BIT = 0x0004; +pub const MAP_INVALIDATE_BUFFER_BIT = 0x0008; +pub const MAP_FLUSH_EXPLICIT_BIT = 0x0010; +pub const MAP_UNSYNCHRONIZED_BIT = 0x0020; +pub const COMPRESSED_RED_RGTC1 = 0x8DBB; +pub const COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC; +pub const COMPRESSED_RG_RGTC2 = 0x8DBD; +pub const COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE; +pub const RG = 0x8227; +pub const RG_INTEGER = 0x8228; +pub const R8 = 0x8229; +pub const R16 = 0x822A; +pub const RG8 = 0x822B; +pub const RG16 = 0x822C; +pub const R16F = 0x822D; +pub const R32F = 0x822E; +pub const RG16F = 0x822F; +pub const RG32F = 0x8230; +pub const R8I = 0x8231; +pub const R8UI = 0x8232; +pub const R16I = 0x8233; +pub const R16UI = 0x8234; +pub const R32I = 0x8235; +pub const R32UI = 0x8236; +pub const RG8I = 0x8237; +pub const RG8UI = 0x8238; +pub const RG16I = 0x8239; +pub const RG16UI = 0x823A; +pub const RG32I = 0x823B; +pub const RG32UI = 0x823C; +pub const VERTEX_ARRAY_BINDING = 0x85B5; +pub const TRIANGLE_STRIP_ADJACENCY = 0x000D; +pub const TRIANGLES_ADJACENCY = 0x000C; +pub const LINE_STRIP_ADJACENCY = 0x000B; +pub const SAMPLER_2D_RECT = 0x8B63; +pub const SAMPLER_2D_RECT_SHADOW = 0x8B64; +pub const SAMPLER_BUFFER = 0x8DC2; +pub const INT_SAMPLER_2D_RECT = 0x8DCD; +pub const INT_SAMPLER_BUFFER = 0x8DD0; +pub const UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5; +pub const UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8; +pub const TEXTURE_BUFFER = 0x8C2A; +pub const MAX_TEXTURE_BUFFER_SIZE = 0x8C2B; +pub const TEXTURE_BINDING_BUFFER = 0x8C2C; +pub const TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D; +pub const TEXTURE_RECTANGLE = 0x84F5; +pub const TEXTURE_BINDING_RECTANGLE = 0x84F6; +pub const PROXY_TEXTURE_RECTANGLE = 0x84F7; +pub const MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8; +pub const R8_SNORM = 0x8F94; +pub const RG8_SNORM = 0x8F95; +pub const RGB8_SNORM = 0x8F96; +pub const RGBA8_SNORM = 0x8F97; +pub const R16_SNORM = 0x8F98; +pub const RG16_SNORM = 0x8F99; +pub const RGB16_SNORM = 0x8F9A; +pub const RGBA16_SNORM = 0x8F9B; +pub const SIGNED_NORMALIZED = 0x8F9C; +pub const PRIMITIVE_RESTART = 0x8F9D; +pub const PRIMITIVE_RESTART_INDEX = 0x8F9E; +pub const COPY_READ_BUFFER = 0x8F36; +pub const COPY_WRITE_BUFFER = 0x8F37; +pub const UNIFORM_BUFFER = 0x8A11; +pub const UNIFORM_BUFFER_BINDING = 0x8A28; +pub const UNIFORM_BUFFER_START = 0x8A29; +pub const UNIFORM_BUFFER_SIZE = 0x8A2A; +pub const MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; +pub const MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C; +pub const MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; +pub const MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; +pub const MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; +pub const MAX_UNIFORM_BLOCK_SIZE = 0x8A30; +pub const MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; +pub const MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32; +pub const MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; +pub const UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; +pub const ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35; +pub const ACTIVE_UNIFORM_BLOCKS = 0x8A36; +pub const UNIFORM_TYPE = 0x8A37; +pub const UNIFORM_SIZE = 0x8A38; +pub const UNIFORM_NAME_LENGTH = 0x8A39; +pub const UNIFORM_BLOCK_INDEX = 0x8A3A; +pub const UNIFORM_OFFSET = 0x8A3B; +pub const UNIFORM_ARRAY_STRIDE = 0x8A3C; +pub const UNIFORM_MATRIX_STRIDE = 0x8A3D; +pub const UNIFORM_IS_ROW_MAJOR = 0x8A3E; +pub const UNIFORM_BLOCK_BINDING = 0x8A3F; +pub const UNIFORM_BLOCK_DATA_SIZE = 0x8A40; +pub const UNIFORM_BLOCK_NAME_LENGTH = 0x8A41; +pub const UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; +pub const UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; +pub const UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; +pub const UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45; +pub const UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; +pub const INVALID_INDEX = 0xFFFFFFFF; +pub const STACK_UNDERFLOW = 0x0504; +pub const STACK_OVERFLOW = 0x0503; +pub const MAX_VERTEX_ATTRIB_STRIDE = 0x82E5; +pub const PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221; +pub const TEXTURE_BUFFER_BINDING = 0x8C2A; +pub const MAP_PERSISTENT_BIT = 0x0040; +pub const MAP_COHERENT_BIT = 0x0080; +pub const DYNAMIC_STORAGE_BIT = 0x0100; +pub const CLIENT_STORAGE_BIT = 0x0200; +pub const CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000; +pub const BUFFER_IMMUTABLE_STORAGE = 0x821F; +pub const BUFFER_STORAGE_FLAGS = 0x8220; +pub const CLEAR_TEXTURE = 0x9365; +pub const LOCATION_COMPONENT = 0x934A; +pub const TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B; +pub const TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C; +pub const QUERY_BUFFER = 0x9192; +pub const QUERY_BUFFER_BARRIER_BIT = 0x00008000; +pub const QUERY_BUFFER_BINDING = 0x9193; +pub const QUERY_RESULT_NO_WAIT = 0x9194; +pub const MIRROR_CLAMP_TO_EDGE = 0x8743; +pub const CONTEXT_LOST = 0x0507; +pub const NEGATIVE_ONE_TO_ONE = 0x935E; +pub const ZERO_TO_ONE = 0x935F; +pub const CLIP_ORIGIN = 0x935C; +pub const CLIP_DEPTH_MODE = 0x935D; +pub const QUERY_WAIT_INVERTED = 0x8E17; +pub const QUERY_NO_WAIT_INVERTED = 0x8E18; +pub const QUERY_BY_REGION_WAIT_INVERTED = 0x8E19; +pub const QUERY_BY_REGION_NO_WAIT_INVERTED = 0x8E1A; +pub const MAX_CULL_DISTANCES = 0x82F9; +pub const MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA; +pub const TEXTURE_TARGET = 0x1006; +pub const QUERY_TARGET = 0x82EA; +pub const GUILTY_CONTEXT_RESET = 0x8253; +pub const INNOCENT_CONTEXT_RESET = 0x8254; +pub const UNKNOWN_CONTEXT_RESET = 0x8255; +pub const RESET_NOTIFICATION_STRATEGY = 0x8256; +pub const LOSE_CONTEXT_ON_RESET = 0x8252; +pub const NO_RESET_NOTIFICATION = 0x8261; +pub const CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004; +pub const CONTEXT_RELEASE_BEHAVIOR = 0x82FB; +pub const CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC; + + +pub fn texStorage2D(_target: GLenum, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexStorage2D, .{_target, _levels, _internalformat, _width, _height}); +} + +pub fn texStorage1D(_target: GLenum, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexStorage1D, .{_target, _levels, _internalformat, _width}); +} + +pub fn drawTransformFeedbackStreamInstanced(_mode: GLenum, _id: GLuint, _stream: GLuint, _instancecount: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawTransformFeedbackStreamInstanced, .{_mode, _id, _stream, _instancecount}); +} + +pub fn drawTransformFeedbackInstanced(_mode: GLenum, _id: GLuint, _instancecount: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawTransformFeedbackInstanced, .{_mode, _id, _instancecount}); +} + +pub fn texStorage3D(_target: GLenum, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexStorage3D, .{_target, _levels, _internalformat, _width, _height, _depth}); +} + +pub fn memoryBarrier(_barriers: GLbitfield) callconv(.C) void { + return @call(.always_tail, function_pointers.glMemoryBarrier, .{_barriers}); +} + +pub fn bindImageTexture(_unit: GLuint, _texture: GLuint, _level: GLint, _layered: GLboolean, _layer: GLint, _access: GLenum, _format: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindImageTexture, .{_unit, _texture, _level, _layered, _layer, _access, _format}); +} + +pub fn getActiveAtomicCounterBufferiv(_program: GLuint, _bufferIndex: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveAtomicCounterBufferiv, .{_program, _bufferIndex, _pname, _params}); +} + +pub fn getInternalformativ(_target: GLenum, _internalformat: GLenum, _pname: GLenum, _count: GLsizei, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetInternalformativ, .{_target, _internalformat, _pname, _count, _params}); +} + +pub fn drawElementsInstancedBaseVertexBaseInstance(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei, _basevertex: GLint, _baseinstance: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElementsInstancedBaseVertexBaseInstance, .{_mode, _count, _type, _indices, _instancecount, _basevertex, _baseinstance}); +} + +pub fn drawElementsInstancedBaseInstance(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei, _baseinstance: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElementsInstancedBaseInstance, .{_mode, _count, _type, _indices, _instancecount, _baseinstance}); +} + +pub fn drawArraysInstancedBaseInstance(_mode: GLenum, _first: GLint, _count: GLsizei, _instancecount: GLsizei, _baseinstance: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawArraysInstancedBaseInstance, .{_mode, _first, _count, _instancecount, _baseinstance}); +} + +pub fn getDoublei_v(_target: GLenum, _index: GLuint, _data: [*c]GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetDoublei_v, .{_target, _index, _data}); +} + +pub fn getFloati_v(_target: GLenum, _index: GLuint, _data: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetFloati_v, .{_target, _index, _data}); +} + +pub fn depthRangeIndexed(_index: GLuint, _n: GLdouble, _f: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glDepthRangeIndexed, .{_index, _n, _f}); +} + +pub fn depthRangeArrayv(_first: GLuint, _count: GLsizei, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glDepthRangeArrayv, .{_first, _count, _v}); +} + +pub fn scissorIndexedv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glScissorIndexedv, .{_index, _v}); +} + +pub fn scissorIndexed(_index: GLuint, _left: GLint, _bottom: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glScissorIndexed, .{_index, _left, _bottom, _width, _height}); +} + +pub fn scissorArrayv(_first: GLuint, _count: GLsizei, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glScissorArrayv, .{_first, _count, _v}); +} + +pub fn viewportIndexedfv(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glViewportIndexedfv, .{_index, _v}); +} + +pub fn viewportIndexedf(_index: GLuint, _x: GLfloat, _y: GLfloat, _w: GLfloat, _h: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glViewportIndexedf, .{_index, _x, _y, _w, _h}); +} + +pub fn viewportArrayv(_first: GLuint, _count: GLsizei, _v: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glViewportArrayv, .{_first, _count, _v}); +} + +pub fn getVertexAttribLdv(_index: GLuint, _pname: GLenum, _params: [*c]GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribLdv, .{_index, _pname, _params}); +} + +pub fn vertexAttribLPointer(_index: GLuint, _size: GLint, _type: GLenum, _stride: GLsizei, _pointer: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribLPointer, .{_index, _size, _type, _stride, _pointer}); +} + +pub fn vertexAttribL4dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL4dv, .{_index, _v}); +} + +pub fn vertexAttribL3dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL3dv, .{_index, _v}); +} + +pub fn vertexAttribL2dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL2dv, .{_index, _v}); +} + +pub fn vertexAttribL1dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL1dv, .{_index, _v}); +} + +pub fn vertexAttribL4d(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble, _w: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL4d, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttribL3d(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL3d, .{_index, _x, _y, _z}); +} + +pub fn vertexAttribL2d(_index: GLuint, _x: GLdouble, _y: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL2d, .{_index, _x, _y}); +} + +pub fn vertexAttribL1d(_index: GLuint, _x: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribL1d, .{_index, _x}); +} + +pub fn validateProgramPipeline(_pipeline: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glValidateProgramPipeline, .{_pipeline}); +} + +pub fn programUniformMatrix4x3dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix4x3dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix3x4dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix3x4dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix4x2dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix4x2dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix2x4dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix2x4dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix3x2dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix3x2dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix2x3dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix2x3dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix4x3fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix4x3fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix3x4fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix3x4fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix4x2fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix4x2fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix2x4fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix2x4fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix3x2fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix3x2fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix2x3fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix2x3fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix4dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix4dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix3dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix3dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix2dv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix2dv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix4fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix4fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix3fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix3fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniformMatrix2fv(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniformMatrix2fv, .{_program, _location, _count, _transpose, _value}); +} + +pub fn programUniform4uiv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4uiv, .{_program, _location, _count, _value}); +} + +pub fn programUniform4ui(_program: GLuint, _location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint, _v3: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4ui, .{_program, _location, _v0, _v1, _v2, _v3}); +} + +pub fn programUniform4dv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4dv, .{_program, _location, _count, _value}); +} + +pub fn programUniform4d(_program: GLuint, _location: GLint, _v0: GLdouble, _v1: GLdouble, _v2: GLdouble, _v3: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4d, .{_program, _location, _v0, _v1, _v2, _v3}); +} + +pub fn programUniform4fv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4fv, .{_program, _location, _count, _value}); +} + +pub fn programUniform4f(_program: GLuint, _location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat, _v3: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4f, .{_program, _location, _v0, _v1, _v2, _v3}); +} + +pub fn programUniform4iv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4iv, .{_program, _location, _count, _value}); +} + +pub fn programUniform4i(_program: GLuint, _location: GLint, _v0: GLint, _v1: GLint, _v2: GLint, _v3: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform4i, .{_program, _location, _v0, _v1, _v2, _v3}); +} + +pub fn programUniform3uiv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3uiv, .{_program, _location, _count, _value}); +} + +pub fn programUniform3ui(_program: GLuint, _location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3ui, .{_program, _location, _v0, _v1, _v2}); +} + +pub fn programUniform3dv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3dv, .{_program, _location, _count, _value}); +} + +pub fn programUniform3d(_program: GLuint, _location: GLint, _v0: GLdouble, _v1: GLdouble, _v2: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3d, .{_program, _location, _v0, _v1, _v2}); +} + +pub fn programUniform3fv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3fv, .{_program, _location, _count, _value}); +} + +pub fn programUniform3f(_program: GLuint, _location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3f, .{_program, _location, _v0, _v1, _v2}); +} + +pub fn programUniform3iv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3iv, .{_program, _location, _count, _value}); +} + +pub fn programUniform3i(_program: GLuint, _location: GLint, _v0: GLint, _v1: GLint, _v2: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform3i, .{_program, _location, _v0, _v1, _v2}); +} + +pub fn useProgramStages(_pipeline: GLuint, _stages: GLbitfield, _program: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUseProgramStages, .{_pipeline, _stages, _program}); +} + +pub fn programParameteri(_program: GLuint, _pname: GLenum, _value: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramParameteri, .{_program, _pname, _value}); +} + +pub fn getShaderPrecisionFormat(_shadertype: GLenum, _precisiontype: GLenum, _range: [*c]GLint, _precision: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetShaderPrecisionFormat, .{_shadertype, _precisiontype, _range, _precision}); +} + +pub fn shaderBinary(_count: GLsizei, _shaders: [*c]const GLuint, _binaryFormat: GLenum, _binary: ?*const anyopaque, _length: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glShaderBinary, .{_count, _shaders, _binaryFormat, _binary, _length}); +} + +pub fn releaseShaderCompiler() callconv(.C) void { + return @call(.always_tail, function_pointers.glReleaseShaderCompiler, .{}); +} + +pub fn getQueryIndexediv(_target: GLenum, _index: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryIndexediv, .{_target, _index, _pname, _params}); +} + +pub fn endQueryIndexed(_target: GLenum, _index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glEndQueryIndexed, .{_target, _index}); +} + +pub fn beginQueryIndexed(_target: GLenum, _index: GLuint, _id: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBeginQueryIndexed, .{_target, _index, _id}); +} + +pub fn drawTransformFeedbackStream(_mode: GLenum, _id: GLuint, _stream: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawTransformFeedbackStream, .{_mode, _id, _stream}); +} + +pub fn drawTransformFeedback(_mode: GLenum, _id: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawTransformFeedback, .{_mode, _id}); +} + +pub fn resumeTransformFeedback() callconv(.C) void { + return @call(.always_tail, function_pointers.glResumeTransformFeedback, .{}); +} + +pub fn pauseTransformFeedback() callconv(.C) void { + return @call(.always_tail, function_pointers.glPauseTransformFeedback, .{}); +} + +pub fn getProgramStageiv(_program: GLuint, _shadertype: GLenum, _pname: GLenum, _values: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramStageiv, .{_program, _shadertype, _pname, _values}); +} + +pub fn getUniformSubroutineuiv(_shadertype: GLenum, _location: GLint, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetUniformSubroutineuiv, .{_shadertype, _location, _params}); +} + +pub fn uniformSubroutinesuiv(_shadertype: GLenum, _count: GLsizei, _indices: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformSubroutinesuiv, .{_shadertype, _count, _indices}); +} + +pub fn getActiveSubroutineName(_program: GLuint, _shadertype: GLenum, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _name: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveSubroutineName, .{_program, _shadertype, _index, _bufSize, _length, _name}); +} + +pub fn cullFace(_mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glCullFace, .{_mode}); +} + +pub fn frontFace(_mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glFrontFace, .{_mode}); +} + +pub fn hint(_target: GLenum, _mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glHint, .{_target, _mode}); +} + +pub fn lineWidth(_width: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glLineWidth, .{_width}); +} + +pub fn pointSize(_size: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glPointSize, .{_size}); +} + +pub fn polygonMode(_face: GLenum, _mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glPolygonMode, .{_face, _mode}); +} + +pub fn scissor(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glScissor, .{_x, _y, _width, _height}); +} + +pub fn texParameterf(_target: GLenum, _pname: GLenum, _param: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexParameterf, .{_target, _pname, _param}); +} + +pub fn texParameterfv(_target: GLenum, _pname: GLenum, _params: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexParameterfv, .{_target, _pname, _params}); +} + +pub fn texParameteri(_target: GLenum, _pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexParameteri, .{_target, _pname, _param}); +} + +pub fn texParameteriv(_target: GLenum, _pname: GLenum, _params: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexParameteriv, .{_target, _pname, _params}); +} + +pub fn texImage1D(_target: GLenum, _level: GLint, _internalformat: GLint, _width: GLsizei, _border: GLint, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexImage1D, .{_target, _level, _internalformat, _width, _border, _format, _type, _pixels}); +} + +pub fn texImage2D(_target: GLenum, _level: GLint, _internalformat: GLint, _width: GLsizei, _height: GLsizei, _border: GLint, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexImage2D, .{_target, _level, _internalformat, _width, _height, _border, _format, _type, _pixels}); +} + +pub fn drawBuffer(_buf: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawBuffer, .{_buf}); +} + +pub fn clear(_mask: GLbitfield) callconv(.C) void { + return @call(.always_tail, function_pointers.glClear, .{_mask}); +} + +pub fn clearColor(_red: GLfloat, _green: GLfloat, _blue: GLfloat, _alpha: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearColor, .{_red, _green, _blue, _alpha}); +} + +pub fn clearStencil(_s: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearStencil, .{_s}); +} + +pub fn clearDepth(_depth: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearDepth, .{_depth}); +} + +pub fn stencilMask(_mask: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glStencilMask, .{_mask}); +} + +pub fn colorMask(_red: GLboolean, _green: GLboolean, _blue: GLboolean, _alpha: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glColorMask, .{_red, _green, _blue, _alpha}); +} + +pub fn depthMask(_flag: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glDepthMask, .{_flag}); +} + +pub fn disable(_cap: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glDisable, .{_cap}); +} + +pub fn enable(_cap: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glEnable, .{_cap}); +} + +pub fn finish() callconv(.C) void { + return @call(.always_tail, function_pointers.glFinish, .{}); +} + +pub fn flush() callconv(.C) void { + return @call(.always_tail, function_pointers.glFlush, .{}); +} + +pub fn blendFunc(_sfactor: GLenum, _dfactor: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendFunc, .{_sfactor, _dfactor}); +} + +pub fn logicOp(_opcode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glLogicOp, .{_opcode}); +} + +pub fn stencilFunc(_func: GLenum, _ref: GLint, _mask: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glStencilFunc, .{_func, _ref, _mask}); +} + +pub fn stencilOp(_fail: GLenum, _zfail: GLenum, _zpass: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glStencilOp, .{_fail, _zfail, _zpass}); +} + +pub fn depthFunc(_func: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glDepthFunc, .{_func}); +} + +pub fn pixelStoref(_pname: GLenum, _param: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glPixelStoref, .{_pname, _param}); +} + +pub fn pixelStorei(_pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glPixelStorei, .{_pname, _param}); +} + +pub fn readBuffer(_src: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glReadBuffer, .{_src}); +} + +pub fn readPixels(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glReadPixels, .{_x, _y, _width, _height, _format, _type, _pixels}); +} + +pub fn getBooleanv(_pname: GLenum, _data: [*c]GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetBooleanv, .{_pname, _data}); +} + +pub fn getDoublev(_pname: GLenum, _data: [*c]GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetDoublev, .{_pname, _data}); +} + +pub fn getError() callconv(.C) GLenum { + return @call(.always_tail, function_pointers.glGetError, .{}); +} + +pub fn getFloatv(_pname: GLenum, _data: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetFloatv, .{_pname, _data}); +} + +pub fn getIntegerv(_pname: GLenum, _data: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetIntegerv, .{_pname, _data}); +} + +pub fn getString(_name: GLenum) callconv(.C) ?[*:0]const GLubyte { + return @call(.always_tail, function_pointers.glGetString, .{_name}); +} + +pub fn getTexImage(_target: GLenum, _level: GLint, _format: GLenum, _type: GLenum, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexImage, .{_target, _level, _format, _type, _pixels}); +} + +pub fn getTexParameterfv(_target: GLenum, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexParameterfv, .{_target, _pname, _params}); +} + +pub fn getTexParameteriv(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexParameteriv, .{_target, _pname, _params}); +} + +pub fn getTexLevelParameterfv(_target: GLenum, _level: GLint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexLevelParameterfv, .{_target, _level, _pname, _params}); +} + +pub fn getTexLevelParameteriv(_target: GLenum, _level: GLint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexLevelParameteriv, .{_target, _level, _pname, _params}); +} + +pub fn isEnabled(_cap: GLenum) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsEnabled, .{_cap}); +} + +pub fn depthRange(_n: GLdouble, _f: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glDepthRange, .{_n, _f}); +} + +pub fn viewport(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glViewport, .{_x, _y, _width, _height}); +} + +pub fn texStorage2DMultisample(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexStorage2DMultisample, .{_target, _samples, _internalformat, _width, _height, _fixedsamplelocations}); +} + +pub fn texBufferRange(_target: GLenum, _internalformat: GLenum, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexBufferRange, .{_target, _internalformat, _buffer, _offset, _size}); +} + +pub fn shaderStorageBlockBinding(_program: GLuint, _storageBlockIndex: GLuint, _storageBlockBinding: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glShaderStorageBlockBinding, .{_program, _storageBlockIndex, _storageBlockBinding}); +} + +pub fn getProgramResourceLocationIndex(_program: GLuint, _programInterface: GLenum, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetProgramResourceLocationIndex, .{_program, _programInterface, _name}); +} + +pub fn getProgramResourceLocation(_program: GLuint, _programInterface: GLenum, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetProgramResourceLocation, .{_program, _programInterface, _name}); +} + +pub fn getProgramResourceiv(_program: GLuint, _programInterface: GLenum, _index: GLuint, _propCount: GLsizei, _props: [*c]const GLenum, _count: GLsizei, _length: [*c]GLsizei, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramResourceiv, .{_program, _programInterface, _index, _propCount, _props, _count, _length, _params}); +} + +pub fn getProgramResourceName(_program: GLuint, _programInterface: GLenum, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _name: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramResourceName, .{_program, _programInterface, _index, _bufSize, _length, _name}); +} + +pub fn getProgramResourceIndex(_program: GLuint, _programInterface: GLenum, _name: [*c]const GLchar) callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glGetProgramResourceIndex, .{_program, _programInterface, _name}); +} + +pub fn getProgramInterfaceiv(_program: GLuint, _programInterface: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramInterfaceiv, .{_program, _programInterface, _pname, _params}); +} + +pub fn multiDrawElementsIndirect(_mode: GLenum, _type: GLenum, _indirect: ?*const anyopaque, _drawcount: GLsizei, _stride: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glMultiDrawElementsIndirect, .{_mode, _type, _indirect, _drawcount, _stride}); +} + +pub fn multiDrawArraysIndirect(_mode: GLenum, _indirect: ?*const anyopaque, _drawcount: GLsizei, _stride: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glMultiDrawArraysIndirect, .{_mode, _indirect, _drawcount, _stride}); +} + +pub fn invalidateSubFramebuffer(_target: GLenum, _numAttachments: GLsizei, _attachments: [*c]const GLenum, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateSubFramebuffer, .{_target, _numAttachments, _attachments, _x, _y, _width, _height}); +} + +pub fn invalidateFramebuffer(_target: GLenum, _numAttachments: GLsizei, _attachments: [*c]const GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateFramebuffer, .{_target, _numAttachments, _attachments}); +} + +pub fn invalidateBufferData(_buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateBufferData, .{_buffer}); +} + +pub fn invalidateBufferSubData(_buffer: GLuint, _offset: GLintptr, _length: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateBufferSubData, .{_buffer, _offset, _length}); +} + +pub fn invalidateTexImage(_texture: GLuint, _level: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateTexImage, .{_texture, _level}); +} + +pub fn invalidateTexSubImage(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateTexSubImage, .{_texture, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth}); +} + +pub fn getInternalformati64v(_target: GLenum, _internalformat: GLenum, _pname: GLenum, _count: GLsizei, _params: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetInternalformati64v, .{_target, _internalformat, _pname, _count, _params}); +} + +pub fn getFramebufferParameteriv(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetFramebufferParameteriv, .{_target, _pname, _params}); +} + +pub fn framebufferParameteri(_target: GLenum, _pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferParameteri, .{_target, _pname, _param}); +} + +pub fn copyImageSubData(_srcName: GLuint, _srcTarget: GLenum, _srcLevel: GLint, _srcX: GLint, _srcY: GLint, _srcZ: GLint, _dstName: GLuint, _dstTarget: GLenum, _dstLevel: GLint, _dstX: GLint, _dstY: GLint, _dstZ: GLint, _srcWidth: GLsizei, _srcHeight: GLsizei, _srcDepth: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyImageSubData, .{_srcName, _srcTarget, _srcLevel, _srcX, _srcY, _srcZ, _dstName, _dstTarget, _dstLevel, _dstX, _dstY, _dstZ, _srcWidth, _srcHeight, _srcDepth}); +} + +pub fn dispatchComputeIndirect(_indirect: GLintptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glDispatchComputeIndirect, .{_indirect}); +} + +pub fn dispatchCompute(_num_groups_x: GLuint, _num_groups_y: GLuint, _num_groups_z: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDispatchCompute, .{_num_groups_x, _num_groups_y, _num_groups_z}); +} + +pub fn clearBufferSubData(_target: GLenum, _internalformat: GLenum, _offset: GLintptr, _size: GLsizeiptr, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearBufferSubData, .{_target, _internalformat, _offset, _size, _format, _type, _data}); +} + +pub fn clearBufferData(_target: GLenum, _internalformat: GLenum, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearBufferData, .{_target, _internalformat, _format, _type, _data}); +} + +pub fn getProgramPipelineInfoLog(_pipeline: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _infoLog: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramPipelineInfoLog, .{_pipeline, _bufSize, _length, _infoLog}); +} + +pub fn programUniform2uiv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2uiv, .{_program, _location, _count, _value}); +} + +pub fn programUniform2ui(_program: GLuint, _location: GLint, _v0: GLuint, _v1: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2ui, .{_program, _location, _v0, _v1}); +} + +pub fn programUniform2dv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2dv, .{_program, _location, _count, _value}); +} + +pub fn programUniform2d(_program: GLuint, _location: GLint, _v0: GLdouble, _v1: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2d, .{_program, _location, _v0, _v1}); +} + +pub fn programUniform2fv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2fv, .{_program, _location, _count, _value}); +} + +pub fn programUniform2f(_program: GLuint, _location: GLint, _v0: GLfloat, _v1: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2f, .{_program, _location, _v0, _v1}); +} + +pub fn programUniform2iv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2iv, .{_program, _location, _count, _value}); +} + +pub fn programUniform2i(_program: GLuint, _location: GLint, _v0: GLint, _v1: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform2i, .{_program, _location, _v0, _v1}); +} + +pub fn programUniform1uiv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1uiv, .{_program, _location, _count, _value}); +} + +pub fn programUniform1ui(_program: GLuint, _location: GLint, _v0: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1ui, .{_program, _location, _v0}); +} + +pub fn programUniform1dv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1dv, .{_program, _location, _count, _value}); +} + +pub fn programUniform1d(_program: GLuint, _location: GLint, _v0: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1d, .{_program, _location, _v0}); +} + +pub fn programUniform1fv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1fv, .{_program, _location, _count, _value}); +} + +pub fn programUniform1f(_program: GLuint, _location: GLint, _v0: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1f, .{_program, _location, _v0}); +} + +pub fn programUniform1iv(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1iv, .{_program, _location, _count, _value}); +} + +pub fn programUniform1i(_program: GLuint, _location: GLint, _v0: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramUniform1i, .{_program, _location, _v0}); +} + +pub fn getProgramPipelineiv(_pipeline: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramPipelineiv, .{_pipeline, _pname, _params}); +} + +pub fn isProgramPipeline(_pipeline: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsProgramPipeline, .{_pipeline}); +} + +pub fn genProgramPipelines(_n: GLsizei, _pipelines: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenProgramPipelines, .{_n, _pipelines}); +} + +pub fn deleteProgramPipelines(_n: GLsizei, _pipelines: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteProgramPipelines, .{_n, _pipelines}); +} + +pub fn bindProgramPipeline(_pipeline: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindProgramPipeline, .{_pipeline}); +} + +pub fn createShaderProgramv(_type: GLenum, _count: GLsizei, _strings: [*c]const [*c]const GLchar) callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glCreateShaderProgramv, .{_type, _count, _strings}); +} + +pub fn activeShaderProgram(_pipeline: GLuint, _program: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glActiveShaderProgram, .{_pipeline, _program}); +} + +pub fn programBinary(_program: GLuint, _binaryFormat: GLenum, _binary: ?*const anyopaque, _length: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glProgramBinary, .{_program, _binaryFormat, _binary, _length}); +} + +pub fn getProgramBinary(_program: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _binaryFormat: [*c]GLenum, _binary: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramBinary, .{_program, _bufSize, _length, _binaryFormat, _binary}); +} + +pub fn clearDepthf(_d: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearDepthf, .{_d}); +} + +pub fn depthRangef(_n: GLfloat, _f: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glDepthRangef, .{_n, _f}); +} + +pub fn isTransformFeedback(_id: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsTransformFeedback, .{_id}); +} + +pub fn genTransformFeedbacks(_n: GLsizei, _ids: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenTransformFeedbacks, .{_n, _ids}); +} + +pub fn deleteTransformFeedbacks(_n: GLsizei, _ids: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteTransformFeedbacks, .{_n, _ids}); +} + +pub fn bindTransformFeedback(_target: GLenum, _id: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindTransformFeedback, .{_target, _id}); +} + +pub fn patchParameterfv(_pname: GLenum, _values: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glPatchParameterfv, .{_pname, _values}); +} + +pub fn patchParameteri(_pname: GLenum, _value: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glPatchParameteri, .{_pname, _value}); +} + +pub fn drawArrays(_mode: GLenum, _first: GLint, _count: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawArrays, .{_mode, _first, _count}); +} + +pub fn drawElements(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElements, .{_mode, _count, _type, _indices}); +} + +pub fn polygonOffset(_factor: GLfloat, _units: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glPolygonOffset, .{_factor, _units}); +} + +pub fn copyTexImage1D(_target: GLenum, _level: GLint, _internalformat: GLenum, _x: GLint, _y: GLint, _width: GLsizei, _border: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTexImage1D, .{_target, _level, _internalformat, _x, _y, _width, _border}); +} + +pub fn copyTexImage2D(_target: GLenum, _level: GLint, _internalformat: GLenum, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei, _border: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTexImage2D, .{_target, _level, _internalformat, _x, _y, _width, _height, _border}); +} + +pub fn copyTexSubImage1D(_target: GLenum, _level: GLint, _xoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTexSubImage1D, .{_target, _level, _xoffset, _x, _y, _width}); +} + +pub fn copyTexSubImage2D(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTexSubImage2D, .{_target, _level, _xoffset, _yoffset, _x, _y, _width, _height}); +} + +pub fn texSubImage1D(_target: GLenum, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexSubImage1D, .{_target, _level, _xoffset, _width, _format, _type, _pixels}); +} + +pub fn texSubImage2D(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexSubImage2D, .{_target, _level, _xoffset, _yoffset, _width, _height, _format, _type, _pixels}); +} + +pub fn bindTexture(_target: GLenum, _texture: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindTexture, .{_target, _texture}); +} + +pub fn deleteTextures(_n: GLsizei, _textures: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteTextures, .{_n, _textures}); +} + +pub fn genTextures(_n: GLsizei, _textures: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenTextures, .{_n, _textures}); +} + +pub fn isTexture(_texture: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsTexture, .{_texture}); +} + +pub fn getActiveSubroutineUniformName(_program: GLuint, _shadertype: GLenum, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _name: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveSubroutineUniformName, .{_program, _shadertype, _index, _bufSize, _length, _name}); +} + +pub fn getActiveSubroutineUniformiv(_program: GLuint, _shadertype: GLenum, _index: GLuint, _pname: GLenum, _values: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveSubroutineUniformiv, .{_program, _shadertype, _index, _pname, _values}); +} + +pub fn getSubroutineIndex(_program: GLuint, _shadertype: GLenum, _name: [*c]const GLchar) callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glGetSubroutineIndex, .{_program, _shadertype, _name}); +} + +pub fn getSubroutineUniformLocation(_program: GLuint, _shadertype: GLenum, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetSubroutineUniformLocation, .{_program, _shadertype, _name}); +} + +pub fn getUniformdv(_program: GLuint, _location: GLint, _params: [*c]GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetUniformdv, .{_program, _location, _params}); +} + +pub fn uniformMatrix4x3dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix4x3dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix4x2dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix4x2dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix3x4dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix3x4dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix3x2dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix3x2dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix2x4dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix2x4dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix2x3dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix2x3dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix4dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix4dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix3dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix3dv, .{_location, _count, _transpose, _value}); +} + +pub fn drawRangeElements(_mode: GLenum, _start: GLuint, _end: GLuint, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawRangeElements, .{_mode, _start, _end, _count, _type, _indices}); +} + +pub fn texImage3D(_target: GLenum, _level: GLint, _internalformat: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _border: GLint, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexImage3D, .{_target, _level, _internalformat, _width, _height, _depth, _border, _format, _type, _pixels}); +} + +pub fn texSubImage3D(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexSubImage3D, .{_target, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _format, _type, _pixels}); +} + +pub fn copyTexSubImage3D(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTexSubImage3D, .{_target, _level, _xoffset, _yoffset, _zoffset, _x, _y, _width, _height}); +} + +pub fn uniformMatrix2dv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix2dv, .{_location, _count, _transpose, _value}); +} + +pub fn uniform4dv(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4dv, .{_location, _count, _value}); +} + +pub fn uniform3dv(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3dv, .{_location, _count, _value}); +} + +pub fn uniform2dv(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2dv, .{_location, _count, _value}); +} + +pub fn uniform1dv(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1dv, .{_location, _count, _value}); +} + +pub fn uniform4d(_location: GLint, _x: GLdouble, _y: GLdouble, _z: GLdouble, _w: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4d, .{_location, _x, _y, _z, _w}); +} + +pub fn uniform3d(_location: GLint, _x: GLdouble, _y: GLdouble, _z: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3d, .{_location, _x, _y, _z}); +} + +pub fn uniform2d(_location: GLint, _x: GLdouble, _y: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2d, .{_location, _x, _y}); +} + +pub fn uniform1d(_location: GLint, _x: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1d, .{_location, _x}); +} + +pub fn drawElementsIndirect(_mode: GLenum, _type: GLenum, _indirect: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElementsIndirect, .{_mode, _type, _indirect}); +} + +pub fn drawArraysIndirect(_mode: GLenum, _indirect: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawArraysIndirect, .{_mode, _indirect}); +} + +pub fn blendFuncSeparatei(_buf: GLuint, _srcRGB: GLenum, _dstRGB: GLenum, _srcAlpha: GLenum, _dstAlpha: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendFuncSeparatei, .{_buf, _srcRGB, _dstRGB, _srcAlpha, _dstAlpha}); +} + +pub fn blendFunci(_buf: GLuint, _src: GLenum, _dst: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendFunci, .{_buf, _src, _dst}); +} + +pub fn blendEquationSeparatei(_buf: GLuint, _modeRGB: GLenum, _modeAlpha: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendEquationSeparatei, .{_buf, _modeRGB, _modeAlpha}); +} + +pub fn blendEquationi(_buf: GLuint, _mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendEquationi, .{_buf, _mode}); +} + +pub fn minSampleShading(_value: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glMinSampleShading, .{_value}); +} + +pub fn activeTexture(_texture: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glActiveTexture, .{_texture}); +} + +pub fn sampleCoverage(_value: GLfloat, _invert: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glSampleCoverage, .{_value, _invert}); +} + +pub fn compressedTexImage3D(_target: GLenum, _level: GLint, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _border: GLint, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTexImage3D, .{_target, _level, _internalformat, _width, _height, _depth, _border, _imageSize, _data}); +} + +pub fn compressedTexImage2D(_target: GLenum, _level: GLint, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _border: GLint, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTexImage2D, .{_target, _level, _internalformat, _width, _height, _border, _imageSize, _data}); +} + +pub fn compressedTexImage1D(_target: GLenum, _level: GLint, _internalformat: GLenum, _width: GLsizei, _border: GLint, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTexImage1D, .{_target, _level, _internalformat, _width, _border, _imageSize, _data}); +} + +pub fn compressedTexSubImage3D(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTexSubImage3D, .{_target, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _format, _imageSize, _data}); +} + +pub fn compressedTexSubImage2D(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTexSubImage2D, .{_target, _level, _xoffset, _yoffset, _width, _height, _format, _imageSize, _data}); +} + +pub fn compressedTexSubImage1D(_target: GLenum, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTexSubImage1D, .{_target, _level, _xoffset, _width, _format, _imageSize, _data}); +} + +pub fn getCompressedTexImage(_target: GLenum, _level: GLint, _img: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetCompressedTexImage, .{_target, _level, _img}); +} + +pub fn vertexAttribP4uiv(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP4uiv, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP4ui(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP4ui, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP3uiv(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP3uiv, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP3ui(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP3ui, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP2uiv(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP2uiv, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP2ui(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP2ui, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP1uiv(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP1uiv, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribP1ui(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribP1ui, .{_index, _type, _normalized, _value}); +} + +pub fn vertexAttribDivisor(_index: GLuint, _divisor: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribDivisor, .{_index, _divisor}); +} + +pub fn getQueryObjectui64v(_id: GLuint, _pname: GLenum, _params: [*c]GLuint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryObjectui64v, .{_id, _pname, _params}); +} + +pub fn getQueryObjecti64v(_id: GLuint, _pname: GLenum, _params: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryObjecti64v, .{_id, _pname, _params}); +} + +pub fn queryCounter(_id: GLuint, _target: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glQueryCounter, .{_id, _target}); +} + +pub fn getSamplerParameterIuiv(_sampler: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetSamplerParameterIuiv, .{_sampler, _pname, _params}); +} + +pub fn getSamplerParameterfv(_sampler: GLuint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetSamplerParameterfv, .{_sampler, _pname, _params}); +} + +pub fn getSamplerParameterIiv(_sampler: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetSamplerParameterIiv, .{_sampler, _pname, _params}); +} + +pub fn getSamplerParameteriv(_sampler: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetSamplerParameteriv, .{_sampler, _pname, _params}); +} + +pub fn samplerParameterIuiv(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glSamplerParameterIuiv, .{_sampler, _pname, _param}); +} + +pub fn samplerParameterIiv(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glSamplerParameterIiv, .{_sampler, _pname, _param}); +} + +pub fn samplerParameterfv(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glSamplerParameterfv, .{_sampler, _pname, _param}); +} + +pub fn samplerParameterf(_sampler: GLuint, _pname: GLenum, _param: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glSamplerParameterf, .{_sampler, _pname, _param}); +} + +pub fn samplerParameteriv(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glSamplerParameteriv, .{_sampler, _pname, _param}); +} + +pub fn samplerParameteri(_sampler: GLuint, _pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glSamplerParameteri, .{_sampler, _pname, _param}); +} + +pub fn bindSampler(_unit: GLuint, _sampler: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindSampler, .{_unit, _sampler}); +} + +pub fn isSampler(_sampler: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsSampler, .{_sampler}); +} + +pub fn deleteSamplers(_count: GLsizei, _samplers: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteSamplers, .{_count, _samplers}); +} + +pub fn genSamplers(_count: GLsizei, _samplers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenSamplers, .{_count, _samplers}); +} + +pub fn getFragDataIndex(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetFragDataIndex, .{_program, _name}); +} + +pub fn bindFragDataLocationIndexed(_program: GLuint, _colorNumber: GLuint, _index: GLuint, _name: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindFragDataLocationIndexed, .{_program, _colorNumber, _index, _name}); +} + +pub fn sampleMaski(_maskNumber: GLuint, _mask: GLbitfield) callconv(.C) void { + return @call(.always_tail, function_pointers.glSampleMaski, .{_maskNumber, _mask}); +} + +pub fn getMultisamplefv(_pname: GLenum, _index: GLuint, _val: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetMultisamplefv, .{_pname, _index, _val}); +} + +pub fn texImage3DMultisample(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexImage3DMultisample, .{_target, _samples, _internalformat, _width, _height, _depth, _fixedsamplelocations}); +} + +pub fn texImage2DMultisample(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexImage2DMultisample, .{_target, _samples, _internalformat, _width, _height, _fixedsamplelocations}); +} + +pub fn framebufferTexture(_target: GLenum, _attachment: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferTexture, .{_target, _attachment, _texture, _level}); +} + +pub fn getBufferParameteri64v(_target: GLenum, _pname: GLenum, _params: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetBufferParameteri64v, .{_target, _pname, _params}); +} + +pub fn blendFuncSeparate(_sfactorRGB: GLenum, _dfactorRGB: GLenum, _sfactorAlpha: GLenum, _dfactorAlpha: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendFuncSeparate, .{_sfactorRGB, _dfactorRGB, _sfactorAlpha, _dfactorAlpha}); +} + +pub fn multiDrawArrays(_mode: GLenum, _first: [*c]const GLint, _count: [*c]const GLsizei, _drawcount: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glMultiDrawArrays, .{_mode, _first, _count, _drawcount}); +} + +pub fn multiDrawElements(_mode: GLenum, _count: [*c]const GLsizei, _type: GLenum, _indices: [*c]const ?*const anyopaque, _drawcount: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glMultiDrawElements, .{_mode, _count, _type, _indices, _drawcount}); +} + +pub fn pointParameterf(_pname: GLenum, _param: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glPointParameterf, .{_pname, _param}); +} + +pub fn pointParameterfv(_pname: GLenum, _params: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glPointParameterfv, .{_pname, _params}); +} + +pub fn pointParameteri(_pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glPointParameteri, .{_pname, _param}); +} + +pub fn pointParameteriv(_pname: GLenum, _params: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glPointParameteriv, .{_pname, _params}); +} + +pub fn getInteger64i_v(_target: GLenum, _index: GLuint, _data: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetInteger64i_v, .{_target, _index, _data}); +} + +pub fn getSynciv(_sync: GLsync, _pname: GLenum, _count: GLsizei, _length: [*c]GLsizei, _values: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetSynciv, .{_sync, _pname, _count, _length, _values}); +} + +pub fn getInteger64v(_pname: GLenum, _data: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetInteger64v, .{_pname, _data}); +} + +pub fn waitSync(_sync: GLsync, _flags: GLbitfield, _timeout: GLuint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glWaitSync, .{_sync, _flags, _timeout}); +} + +pub fn clientWaitSync(_sync: GLsync, _flags: GLbitfield, _timeout: GLuint64) callconv(.C) GLenum { + return @call(.always_tail, function_pointers.glClientWaitSync, .{_sync, _flags, _timeout}); +} + +pub fn deleteSync(_sync: GLsync) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteSync, .{_sync}); +} + +pub fn isSync(_sync: GLsync) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsSync, .{_sync}); +} + +pub fn fenceSync(_condition: GLenum, _flags: GLbitfield) callconv(.C) GLsync { + return @call(.always_tail, function_pointers.glFenceSync, .{_condition, _flags}); +} + +pub fn blendColor(_red: GLfloat, _green: GLfloat, _blue: GLfloat, _alpha: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendColor, .{_red, _green, _blue, _alpha}); +} + +pub fn blendEquation(_mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendEquation, .{_mode}); +} + +pub fn provokingVertex(_mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glProvokingVertex, .{_mode}); +} + +pub fn multiDrawElementsBaseVertex(_mode: GLenum, _count: [*c]const GLsizei, _type: GLenum, _indices: [*c]const ?*const anyopaque, _drawcount: GLsizei, _basevertex: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glMultiDrawElementsBaseVertex, .{_mode, _count, _type, _indices, _drawcount, _basevertex}); +} + +pub fn drawElementsInstancedBaseVertex(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei, _basevertex: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElementsInstancedBaseVertex, .{_mode, _count, _type, _indices, _instancecount, _basevertex}); +} + +pub fn drawRangeElementsBaseVertex(_mode: GLenum, _start: GLuint, _end: GLuint, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _basevertex: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawRangeElementsBaseVertex, .{_mode, _start, _end, _count, _type, _indices, _basevertex}); +} + +pub fn drawElementsBaseVertex(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _basevertex: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElementsBaseVertex, .{_mode, _count, _type, _indices, _basevertex}); +} + +pub fn genQueries(_n: GLsizei, _ids: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenQueries, .{_n, _ids}); +} + +pub fn deleteQueries(_n: GLsizei, _ids: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteQueries, .{_n, _ids}); +} + +pub fn isQuery(_id: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsQuery, .{_id}); +} + +pub fn beginQuery(_target: GLenum, _id: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBeginQuery, .{_target, _id}); +} + +pub fn endQuery(_target: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glEndQuery, .{_target}); +} + +pub fn getQueryiv(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryiv, .{_target, _pname, _params}); +} + +pub fn getQueryObjectiv(_id: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryObjectiv, .{_id, _pname, _params}); +} + +pub fn getQueryObjectuiv(_id: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryObjectuiv, .{_id, _pname, _params}); +} + +pub fn bindBuffer(_target: GLenum, _buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindBuffer, .{_target, _buffer}); +} + +pub fn deleteBuffers(_n: GLsizei, _buffers: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteBuffers, .{_n, _buffers}); +} + +pub fn genBuffers(_n: GLsizei, _buffers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenBuffers, .{_n, _buffers}); +} + +pub fn isBuffer(_buffer: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsBuffer, .{_buffer}); +} + +pub fn bufferData(_target: GLenum, _size: GLsizeiptr, _data: ?*const anyopaque, _usage: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBufferData, .{_target, _size, _data, _usage}); +} + +pub fn bufferSubData(_target: GLenum, _offset: GLintptr, _size: GLsizeiptr, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glBufferSubData, .{_target, _offset, _size, _data}); +} + +pub fn getBufferSubData(_target: GLenum, _offset: GLintptr, _size: GLsizeiptr, _data: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetBufferSubData, .{_target, _offset, _size, _data}); +} + +pub fn mapBuffer(_target: GLenum, _access: GLenum) callconv(.C) ?*anyopaque { + return @call(.always_tail, function_pointers.glMapBuffer, .{_target, _access}); +} + +pub fn unmapBuffer(_target: GLenum) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glUnmapBuffer, .{_target}); +} + +pub fn getBufferParameteriv(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetBufferParameteriv, .{_target, _pname, _params}); +} + +pub fn getBufferPointerv(_target: GLenum, _pname: GLenum, _params: ?*?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetBufferPointerv, .{_target, _pname, _params}); +} + +pub fn blendEquationSeparate(_modeRGB: GLenum, _modeAlpha: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlendEquationSeparate, .{_modeRGB, _modeAlpha}); +} + +pub fn drawBuffers(_n: GLsizei, _bufs: [*c]const GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawBuffers, .{_n, _bufs}); +} + +pub fn stencilOpSeparate(_face: GLenum, _sfail: GLenum, _dpfail: GLenum, _dppass: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glStencilOpSeparate, .{_face, _sfail, _dpfail, _dppass}); +} + +pub fn stencilFuncSeparate(_face: GLenum, _func: GLenum, _ref: GLint, _mask: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glStencilFuncSeparate, .{_face, _func, _ref, _mask}); +} + +pub fn stencilMaskSeparate(_face: GLenum, _mask: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glStencilMaskSeparate, .{_face, _mask}); +} + +pub fn attachShader(_program: GLuint, _shader: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glAttachShader, .{_program, _shader}); +} + +pub fn bindAttribLocation(_program: GLuint, _index: GLuint, _name: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindAttribLocation, .{_program, _index, _name}); +} + +pub fn compileShader(_shader: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompileShader, .{_shader}); +} + +pub fn createProgram() callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glCreateProgram, .{}); +} + +pub fn createShader(_type: GLenum) callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glCreateShader, .{_type}); +} + +pub fn deleteProgram(_program: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteProgram, .{_program}); +} + +pub fn deleteShader(_shader: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteShader, .{_shader}); +} + +pub fn detachShader(_program: GLuint, _shader: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDetachShader, .{_program, _shader}); +} + +pub fn disableVertexAttribArray(_index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDisableVertexAttribArray, .{_index}); +} + +pub fn enableVertexAttribArray(_index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glEnableVertexAttribArray, .{_index}); +} + +pub fn getActiveAttrib(_program: GLuint, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _size: [*c]GLint, _type: [*c]GLenum, _name: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveAttrib, .{_program, _index, _bufSize, _length, _size, _type, _name}); +} + +pub fn getActiveUniform(_program: GLuint, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _size: [*c]GLint, _type: [*c]GLenum, _name: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveUniform, .{_program, _index, _bufSize, _length, _size, _type, _name}); +} + +pub fn getAttachedShaders(_program: GLuint, _maxCount: GLsizei, _count: [*c]GLsizei, _shaders: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetAttachedShaders, .{_program, _maxCount, _count, _shaders}); +} + +pub fn getAttribLocation(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetAttribLocation, .{_program, _name}); +} + +pub fn getProgramiv(_program: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramiv, .{_program, _pname, _params}); +} + +pub fn getProgramInfoLog(_program: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _infoLog: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetProgramInfoLog, .{_program, _bufSize, _length, _infoLog}); +} + +pub fn getShaderiv(_shader: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetShaderiv, .{_shader, _pname, _params}); +} + +pub fn getShaderInfoLog(_shader: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _infoLog: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetShaderInfoLog, .{_shader, _bufSize, _length, _infoLog}); +} + +pub fn getShaderSource(_shader: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _source: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetShaderSource, .{_shader, _bufSize, _length, _source}); +} + +pub fn getUniformLocation(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetUniformLocation, .{_program, _name}); +} + +pub fn getUniformfv(_program: GLuint, _location: GLint, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetUniformfv, .{_program, _location, _params}); +} + +pub fn getUniformiv(_program: GLuint, _location: GLint, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetUniformiv, .{_program, _location, _params}); +} + +pub fn getVertexAttribdv(_index: GLuint, _pname: GLenum, _params: [*c]GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribdv, .{_index, _pname, _params}); +} + +pub fn getVertexAttribfv(_index: GLuint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribfv, .{_index, _pname, _params}); +} + +pub fn getVertexAttribiv(_index: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribiv, .{_index, _pname, _params}); +} + +pub fn getVertexAttribPointerv(_index: GLuint, _pname: GLenum, _pointer: ?*?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribPointerv, .{_index, _pname, _pointer}); +} + +pub fn isProgram(_program: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsProgram, .{_program}); +} + +pub fn isShader(_shader: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsShader, .{_shader}); +} + +pub fn linkProgram(_program: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glLinkProgram, .{_program}); +} + +pub fn shaderSource(_shader: GLuint, _count: GLsizei, _string: [*c]const [*c]const GLchar, _length: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glShaderSource, .{_shader, _count, _string, _length}); +} + +pub fn useProgram(_program: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUseProgram, .{_program}); +} + +pub fn uniform1f(_location: GLint, _v0: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1f, .{_location, _v0}); +} + +pub fn uniform2f(_location: GLint, _v0: GLfloat, _v1: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2f, .{_location, _v0, _v1}); +} + +pub fn uniform3f(_location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3f, .{_location, _v0, _v1, _v2}); +} + +pub fn uniform4f(_location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat, _v3: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4f, .{_location, _v0, _v1, _v2, _v3}); +} + +pub fn uniform1i(_location: GLint, _v0: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1i, .{_location, _v0}); +} + +pub fn uniform2i(_location: GLint, _v0: GLint, _v1: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2i, .{_location, _v0, _v1}); +} + +pub fn uniform3i(_location: GLint, _v0: GLint, _v1: GLint, _v2: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3i, .{_location, _v0, _v1, _v2}); +} + +pub fn uniform4i(_location: GLint, _v0: GLint, _v1: GLint, _v2: GLint, _v3: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4i, .{_location, _v0, _v1, _v2, _v3}); +} + +pub fn uniform1fv(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1fv, .{_location, _count, _value}); +} + +pub fn uniform2fv(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2fv, .{_location, _count, _value}); +} + +pub fn uniform3fv(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3fv, .{_location, _count, _value}); +} + +pub fn uniform4fv(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4fv, .{_location, _count, _value}); +} + +pub fn uniform1iv(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1iv, .{_location, _count, _value}); +} + +pub fn uniform2iv(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2iv, .{_location, _count, _value}); +} + +pub fn uniform3iv(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3iv, .{_location, _count, _value}); +} + +pub fn uniform4iv(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4iv, .{_location, _count, _value}); +} + +pub fn uniformMatrix2fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix2fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix3fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix3fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix4fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix4fv, .{_location, _count, _transpose, _value}); +} + +pub fn validateProgram(_program: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glValidateProgram, .{_program}); +} + +pub fn vertexAttrib1d(_index: GLuint, _x: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib1d, .{_index, _x}); +} + +pub fn vertexAttrib1dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib1dv, .{_index, _v}); +} + +pub fn vertexAttrib1f(_index: GLuint, _x: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib1f, .{_index, _x}); +} + +pub fn vertexAttrib1fv(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib1fv, .{_index, _v}); +} + +pub fn vertexAttrib1s(_index: GLuint, _x: GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib1s, .{_index, _x}); +} + +pub fn vertexAttrib1sv(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib1sv, .{_index, _v}); +} + +pub fn vertexAttrib2d(_index: GLuint, _x: GLdouble, _y: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib2d, .{_index, _x, _y}); +} + +pub fn vertexAttrib2dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib2dv, .{_index, _v}); +} + +pub fn vertexAttrib2f(_index: GLuint, _x: GLfloat, _y: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib2f, .{_index, _x, _y}); +} + +pub fn vertexAttrib2fv(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib2fv, .{_index, _v}); +} + +pub fn vertexAttrib2s(_index: GLuint, _x: GLshort, _y: GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib2s, .{_index, _x, _y}); +} + +pub fn vertexAttrib2sv(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib2sv, .{_index, _v}); +} + +pub fn vertexAttrib3d(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib3d, .{_index, _x, _y, _z}); +} + +pub fn vertexAttrib3dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib3dv, .{_index, _v}); +} + +pub fn vertexAttrib3f(_index: GLuint, _x: GLfloat, _y: GLfloat, _z: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib3f, .{_index, _x, _y, _z}); +} + +pub fn vertexAttrib3fv(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib3fv, .{_index, _v}); +} + +pub fn vertexAttrib3s(_index: GLuint, _x: GLshort, _y: GLshort, _z: GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib3s, .{_index, _x, _y, _z}); +} + +pub fn vertexAttrib3sv(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib3sv, .{_index, _v}); +} + +pub fn vertexAttrib4Nbv(_index: GLuint, _v: [*c]const GLbyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Nbv, .{_index, _v}); +} + +pub fn vertexAttrib4Niv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Niv, .{_index, _v}); +} + +pub fn vertexAttrib4Nsv(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Nsv, .{_index, _v}); +} + +pub fn vertexAttrib4Nub(_index: GLuint, _x: GLubyte, _y: GLubyte, _z: GLubyte, _w: GLubyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Nub, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttrib4Nubv(_index: GLuint, _v: ?[*:0]const GLubyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Nubv, .{_index, _v}); +} + +pub fn vertexAttrib4Nuiv(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Nuiv, .{_index, _v}); +} + +pub fn vertexAttrib4Nusv(_index: GLuint, _v: [*c]const GLushort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4Nusv, .{_index, _v}); +} + +pub fn vertexAttrib4bv(_index: GLuint, _v: [*c]const GLbyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4bv, .{_index, _v}); +} + +pub fn vertexAttrib4d(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble, _w: GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4d, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttrib4dv(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4dv, .{_index, _v}); +} + +pub fn vertexAttrib4f(_index: GLuint, _x: GLfloat, _y: GLfloat, _z: GLfloat, _w: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4f, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttrib4fv(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4fv, .{_index, _v}); +} + +pub fn vertexAttrib4iv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4iv, .{_index, _v}); +} + +pub fn vertexAttrib4s(_index: GLuint, _x: GLshort, _y: GLshort, _z: GLshort, _w: GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4s, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttrib4sv(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4sv, .{_index, _v}); +} + +pub fn vertexAttrib4ubv(_index: GLuint, _v: ?[*:0]const GLubyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4ubv, .{_index, _v}); +} + +pub fn vertexAttrib4uiv(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4uiv, .{_index, _v}); +} + +pub fn vertexAttrib4usv(_index: GLuint, _v: [*c]const GLushort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttrib4usv, .{_index, _v}); +} + +pub fn vertexAttribPointer(_index: GLuint, _size: GLint, _type: GLenum, _normalized: GLboolean, _stride: GLsizei, _pointer: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribPointer, .{_index, _size, _type, _normalized, _stride, _pointer}); +} + +pub fn uniformMatrix2x3fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix2x3fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix3x2fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix3x2fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix2x4fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix2x4fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix4x2fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix4x2fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix3x4fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix3x4fv, .{_location, _count, _transpose, _value}); +} + +pub fn uniformMatrix4x3fv(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformMatrix4x3fv, .{_location, _count, _transpose, _value}); +} + +pub fn colorMaski(_index: GLuint, _r: GLboolean, _g: GLboolean, _b: GLboolean, _a: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glColorMaski, .{_index, _r, _g, _b, _a}); +} + +pub fn getBooleani_v(_target: GLenum, _index: GLuint, _data: [*c]GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetBooleani_v, .{_target, _index, _data}); +} + +pub fn getIntegeri_v(_target: GLenum, _index: GLuint, _data: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetIntegeri_v, .{_target, _index, _data}); +} + +pub fn enablei(_target: GLenum, _index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glEnablei, .{_target, _index}); +} + +pub fn disablei(_target: GLenum, _index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDisablei, .{_target, _index}); +} + +pub fn isEnabledi(_target: GLenum, _index: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsEnabledi, .{_target, _index}); +} + +pub fn beginTransformFeedback(_primitiveMode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBeginTransformFeedback, .{_primitiveMode}); +} + +pub fn endTransformFeedback() callconv(.C) void { + return @call(.always_tail, function_pointers.glEndTransformFeedback, .{}); +} + +pub fn bindBufferRange(_target: GLenum, _index: GLuint, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindBufferRange, .{_target, _index, _buffer, _offset, _size}); +} + +pub fn bindBufferBase(_target: GLenum, _index: GLuint, _buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindBufferBase, .{_target, _index, _buffer}); +} + +pub fn transformFeedbackVaryings(_program: GLuint, _count: GLsizei, _varyings: [*c]const [*c]const GLchar, _bufferMode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glTransformFeedbackVaryings, .{_program, _count, _varyings, _bufferMode}); +} + +pub fn getTransformFeedbackVarying(_program: GLuint, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _size: [*c]GLsizei, _type: [*c]GLenum, _name: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTransformFeedbackVarying, .{_program, _index, _bufSize, _length, _size, _type, _name}); +} + +pub fn clampColor(_target: GLenum, _clamp: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glClampColor, .{_target, _clamp}); +} + +pub fn beginConditionalRender(_id: GLuint, _mode: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBeginConditionalRender, .{_id, _mode}); +} + +pub fn endConditionalRender() callconv(.C) void { + return @call(.always_tail, function_pointers.glEndConditionalRender, .{}); +} + +pub fn vertexAttribIPointer(_index: GLuint, _size: GLint, _type: GLenum, _stride: GLsizei, _pointer: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribIPointer, .{_index, _size, _type, _stride, _pointer}); +} + +pub fn getVertexAttribIiv(_index: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribIiv, .{_index, _pname, _params}); +} + +pub fn getVertexAttribIuiv(_index: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexAttribIuiv, .{_index, _pname, _params}); +} + +pub fn vertexAttribI1i(_index: GLuint, _x: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI1i, .{_index, _x}); +} + +pub fn vertexAttribI2i(_index: GLuint, _x: GLint, _y: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI2i, .{_index, _x, _y}); +} + +pub fn vertexAttribI3i(_index: GLuint, _x: GLint, _y: GLint, _z: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI3i, .{_index, _x, _y, _z}); +} + +pub fn vertexAttribI4i(_index: GLuint, _x: GLint, _y: GLint, _z: GLint, _w: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4i, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttribI1ui(_index: GLuint, _x: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI1ui, .{_index, _x}); +} + +pub fn vertexAttribI2ui(_index: GLuint, _x: GLuint, _y: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI2ui, .{_index, _x, _y}); +} + +pub fn vertexAttribI3ui(_index: GLuint, _x: GLuint, _y: GLuint, _z: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI3ui, .{_index, _x, _y, _z}); +} + +pub fn vertexAttribI4ui(_index: GLuint, _x: GLuint, _y: GLuint, _z: GLuint, _w: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4ui, .{_index, _x, _y, _z, _w}); +} + +pub fn vertexAttribI1iv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI1iv, .{_index, _v}); +} + +pub fn vertexAttribI2iv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI2iv, .{_index, _v}); +} + +pub fn vertexAttribI3iv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI3iv, .{_index, _v}); +} + +pub fn vertexAttribI4iv(_index: GLuint, _v: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4iv, .{_index, _v}); +} + +pub fn vertexAttribI1uiv(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI1uiv, .{_index, _v}); +} + +pub fn vertexAttribI2uiv(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI2uiv, .{_index, _v}); +} + +pub fn vertexAttribI3uiv(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI3uiv, .{_index, _v}); +} + +pub fn vertexAttribI4uiv(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4uiv, .{_index, _v}); +} + +pub fn vertexAttribI4bv(_index: GLuint, _v: [*c]const GLbyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4bv, .{_index, _v}); +} + +pub fn vertexAttribI4sv(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4sv, .{_index, _v}); +} + +pub fn vertexAttribI4ubv(_index: GLuint, _v: ?[*:0]const GLubyte) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4ubv, .{_index, _v}); +} + +pub fn vertexAttribI4usv(_index: GLuint, _v: [*c]const GLushort) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribI4usv, .{_index, _v}); +} + +pub fn getUniformuiv(_program: GLuint, _location: GLint, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetUniformuiv, .{_program, _location, _params}); +} + +pub fn bindFragDataLocation(_program: GLuint, _color: GLuint, _name: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindFragDataLocation, .{_program, _color, _name}); +} + +pub fn getFragDataLocation(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint { + return @call(.always_tail, function_pointers.glGetFragDataLocation, .{_program, _name}); +} + +pub fn uniform1ui(_location: GLint, _v0: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1ui, .{_location, _v0}); +} + +pub fn uniform2ui(_location: GLint, _v0: GLuint, _v1: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2ui, .{_location, _v0, _v1}); +} + +pub fn uniform3ui(_location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3ui, .{_location, _v0, _v1, _v2}); +} + +pub fn uniform4ui(_location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint, _v3: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4ui, .{_location, _v0, _v1, _v2, _v3}); +} + +pub fn uniform1uiv(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform1uiv, .{_location, _count, _value}); +} + +pub fn uniform2uiv(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform2uiv, .{_location, _count, _value}); +} + +pub fn uniform3uiv(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform3uiv, .{_location, _count, _value}); +} + +pub fn uniform4uiv(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniform4uiv, .{_location, _count, _value}); +} + +pub fn texParameterIiv(_target: GLenum, _pname: GLenum, _params: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexParameterIiv, .{_target, _pname, _params}); +} + +pub fn texParameterIuiv(_target: GLenum, _pname: GLenum, _params: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexParameterIuiv, .{_target, _pname, _params}); +} + +pub fn getTexParameterIiv(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexParameterIiv, .{_target, _pname, _params}); +} + +pub fn getTexParameterIuiv(_target: GLenum, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTexParameterIuiv, .{_target, _pname, _params}); +} + +pub fn clearBufferiv(_buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearBufferiv, .{_buffer, _drawbuffer, _value}); +} + +pub fn clearBufferuiv(_buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearBufferuiv, .{_buffer, _drawbuffer, _value}); +} + +pub fn clearBufferfv(_buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearBufferfv, .{_buffer, _drawbuffer, _value}); +} + +pub fn clearBufferfi(_buffer: GLenum, _drawbuffer: GLint, _depth: GLfloat, _stencil: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearBufferfi, .{_buffer, _drawbuffer, _depth, _stencil}); +} + +pub fn getStringi(_name: GLenum, _index: GLuint) callconv(.C) ?[*:0]const GLubyte { + return @call(.always_tail, function_pointers.glGetStringi, .{_name, _index}); +} + +pub fn isRenderbuffer(_renderbuffer: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsRenderbuffer, .{_renderbuffer}); +} + +pub fn bindRenderbuffer(_target: GLenum, _renderbuffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindRenderbuffer, .{_target, _renderbuffer}); +} + +pub fn deleteRenderbuffers(_n: GLsizei, _renderbuffers: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteRenderbuffers, .{_n, _renderbuffers}); +} + +pub fn genRenderbuffers(_n: GLsizei, _renderbuffers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenRenderbuffers, .{_n, _renderbuffers}); +} + +pub fn renderbufferStorage(_target: GLenum, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glRenderbufferStorage, .{_target, _internalformat, _width, _height}); +} + +pub fn getRenderbufferParameteriv(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetRenderbufferParameteriv, .{_target, _pname, _params}); +} + +pub fn isFramebuffer(_framebuffer: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsFramebuffer, .{_framebuffer}); +} + +pub fn bindFramebuffer(_target: GLenum, _framebuffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindFramebuffer, .{_target, _framebuffer}); +} + +pub fn deleteFramebuffers(_n: GLsizei, _framebuffers: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteFramebuffers, .{_n, _framebuffers}); +} + +pub fn genFramebuffers(_n: GLsizei, _framebuffers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenFramebuffers, .{_n, _framebuffers}); +} + +pub fn checkFramebufferStatus(_target: GLenum) callconv(.C) GLenum { + return @call(.always_tail, function_pointers.glCheckFramebufferStatus, .{_target}); +} + +pub fn framebufferTexture1D(_target: GLenum, _attachment: GLenum, _textarget: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferTexture1D, .{_target, _attachment, _textarget, _texture, _level}); +} + +pub fn framebufferTexture2D(_target: GLenum, _attachment: GLenum, _textarget: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferTexture2D, .{_target, _attachment, _textarget, _texture, _level}); +} + +pub fn framebufferTexture3D(_target: GLenum, _attachment: GLenum, _textarget: GLenum, _texture: GLuint, _level: GLint, _zoffset: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferTexture3D, .{_target, _attachment, _textarget, _texture, _level, _zoffset}); +} + +pub fn framebufferRenderbuffer(_target: GLenum, _attachment: GLenum, _renderbuffertarget: GLenum, _renderbuffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferRenderbuffer, .{_target, _attachment, _renderbuffertarget, _renderbuffer}); +} + +pub fn getFramebufferAttachmentParameteriv(_target: GLenum, _attachment: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetFramebufferAttachmentParameteriv, .{_target, _attachment, _pname, _params}); +} + +pub fn generateMipmap(_target: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenerateMipmap, .{_target}); +} + +pub fn blitFramebuffer(_srcX0: GLint, _srcY0: GLint, _srcX1: GLint, _srcY1: GLint, _dstX0: GLint, _dstY0: GLint, _dstX1: GLint, _dstY1: GLint, _mask: GLbitfield, _filter: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlitFramebuffer, .{_srcX0, _srcY0, _srcX1, _srcY1, _dstX0, _dstY0, _dstX1, _dstY1, _mask, _filter}); +} + +pub fn renderbufferStorageMultisample(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glRenderbufferStorageMultisample, .{_target, _samples, _internalformat, _width, _height}); +} + +pub fn framebufferTextureLayer(_target: GLenum, _attachment: GLenum, _texture: GLuint, _level: GLint, _layer: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glFramebufferTextureLayer, .{_target, _attachment, _texture, _level, _layer}); +} + +pub fn mapBufferRange(_target: GLenum, _offset: GLintptr, _length: GLsizeiptr, _access: GLbitfield) callconv(.C) ?*anyopaque { + return @call(.always_tail, function_pointers.glMapBufferRange, .{_target, _offset, _length, _access}); +} + +pub fn flushMappedBufferRange(_target: GLenum, _offset: GLintptr, _length: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glFlushMappedBufferRange, .{_target, _offset, _length}); +} + +pub fn bindVertexArray(_array: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindVertexArray, .{_array}); +} + +pub fn deleteVertexArrays(_n: GLsizei, _arrays: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDeleteVertexArrays, .{_n, _arrays}); +} + +pub fn genVertexArrays(_n: GLsizei, _arrays: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenVertexArrays, .{_n, _arrays}); +} + +pub fn isVertexArray(_array: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glIsVertexArray, .{_array}); +} + +pub fn drawArraysInstanced(_mode: GLenum, _first: GLint, _count: GLsizei, _instancecount: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawArraysInstanced, .{_mode, _first, _count, _instancecount}); +} + +pub fn drawElementsInstanced(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glDrawElementsInstanced, .{_mode, _count, _type, _indices, _instancecount}); +} + +pub fn texBuffer(_target: GLenum, _internalformat: GLenum, _buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexBuffer, .{_target, _internalformat, _buffer}); +} + +pub fn primitiveRestartIndex(_index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glPrimitiveRestartIndex, .{_index}); +} + +pub fn copyBufferSubData(_readTarget: GLenum, _writeTarget: GLenum, _readOffset: GLintptr, _writeOffset: GLintptr, _size: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyBufferSubData, .{_readTarget, _writeTarget, _readOffset, _writeOffset, _size}); +} + +pub fn getUniformIndices(_program: GLuint, _uniformCount: GLsizei, _uniformNames: [*c]const [*c]const GLchar, _uniformIndices: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetUniformIndices, .{_program, _uniformCount, _uniformNames, _uniformIndices}); +} + +pub fn getActiveUniformsiv(_program: GLuint, _uniformCount: GLsizei, _uniformIndices: [*c]const GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveUniformsiv, .{_program, _uniformCount, _uniformIndices, _pname, _params}); +} + +pub fn getActiveUniformName(_program: GLuint, _uniformIndex: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _uniformName: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveUniformName, .{_program, _uniformIndex, _bufSize, _length, _uniformName}); +} + +pub fn getUniformBlockIndex(_program: GLuint, _uniformBlockName: [*c]const GLchar) callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glGetUniformBlockIndex, .{_program, _uniformBlockName}); +} + +pub fn getActiveUniformBlockiv(_program: GLuint, _uniformBlockIndex: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveUniformBlockiv, .{_program, _uniformBlockIndex, _pname, _params}); +} + +pub fn getActiveUniformBlockName(_program: GLuint, _uniformBlockIndex: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _uniformBlockName: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetActiveUniformBlockName, .{_program, _uniformBlockIndex, _bufSize, _length, _uniformBlockName}); +} + +pub fn uniformBlockBinding(_program: GLuint, _uniformBlockIndex: GLuint, _uniformBlockBinding: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glUniformBlockBinding, .{_program, _uniformBlockIndex, _uniformBlockBinding}); +} + +pub fn texStorage3DMultisample(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glTexStorage3DMultisample, .{_target, _samples, _internalformat, _width, _height, _depth, _fixedsamplelocations}); +} + +pub fn textureView(_texture: GLuint, _target: GLenum, _origtexture: GLuint, _internalformat: GLenum, _minlevel: GLuint, _numlevels: GLuint, _minlayer: GLuint, _numlayers: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureView, .{_texture, _target, _origtexture, _internalformat, _minlevel, _numlevels, _minlayer, _numlayers}); +} + +pub fn bindVertexBuffer(_bindingindex: GLuint, _buffer: GLuint, _offset: GLintptr, _stride: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindVertexBuffer, .{_bindingindex, _buffer, _offset, _stride}); +} + +pub fn vertexAttribFormat(_attribindex: GLuint, _size: GLint, _type: GLenum, _normalized: GLboolean, _relativeoffset: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribFormat, .{_attribindex, _size, _type, _normalized, _relativeoffset}); +} + +pub fn vertexAttribIFormat(_attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribIFormat, .{_attribindex, _size, _type, _relativeoffset}); +} + +pub fn vertexAttribLFormat(_attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribLFormat, .{_attribindex, _size, _type, _relativeoffset}); +} + +pub fn vertexAttribBinding(_attribindex: GLuint, _bindingindex: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexAttribBinding, .{_attribindex, _bindingindex}); +} + +pub fn vertexBindingDivisor(_bindingindex: GLuint, _divisor: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexBindingDivisor, .{_bindingindex, _divisor}); +} + +pub fn debugMessageControl(_source: GLenum, _type: GLenum, _severity: GLenum, _count: GLsizei, _ids: [*c]const GLuint, _enabled: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glDebugMessageControl, .{_source, _type, _severity, _count, _ids, _enabled}); +} + +pub fn debugMessageInsert(_source: GLenum, _type: GLenum, _id: GLuint, _severity: GLenum, _length: GLsizei, _buf: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glDebugMessageInsert, .{_source, _type, _id, _severity, _length, _buf}); +} + +pub fn debugMessageCallback(_callback: GLDEBUGPROC, _userParam: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glDebugMessageCallback, .{_callback, _userParam}); +} + +pub fn getDebugMessageLog(_count: GLuint, _bufSize: GLsizei, _sources: [*c]GLenum, _types: [*c]GLenum, _ids: [*c]GLuint, _severities: [*c]GLenum, _lengths: [*c]GLsizei, _messageLog: [*c]GLchar) callconv(.C) GLuint { + return @call(.always_tail, function_pointers.glGetDebugMessageLog, .{_count, _bufSize, _sources, _types, _ids, _severities, _lengths, _messageLog}); +} + +pub fn pushDebugGroup(_source: GLenum, _id: GLuint, _length: GLsizei, _message: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glPushDebugGroup, .{_source, _id, _length, _message}); +} + +pub fn popDebugGroup() callconv(.C) void { + return @call(.always_tail, function_pointers.glPopDebugGroup, .{}); +} + +pub fn objectLabel(_identifier: GLenum, _name: GLuint, _length: GLsizei, _label: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glObjectLabel, .{_identifier, _name, _length, _label}); +} + +pub fn getObjectLabel(_identifier: GLenum, _name: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _label: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetObjectLabel, .{_identifier, _name, _bufSize, _length, _label}); +} + +pub fn objectPtrLabel(_ptr: ?*const anyopaque, _length: GLsizei, _label: [*c]const GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glObjectPtrLabel, .{_ptr, _length, _label}); +} + +pub fn getObjectPtrLabel(_ptr: ?*const anyopaque, _bufSize: GLsizei, _length: [*c]GLsizei, _label: [*c]GLchar) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetObjectPtrLabel, .{_ptr, _bufSize, _length, _label}); +} + +pub fn getPointerv(_pname: GLenum, _params: ?*?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetPointerv, .{_pname, _params}); +} + +pub fn bufferStorage(_target: GLenum, _size: GLsizeiptr, _data: ?*const anyopaque, _flags: GLbitfield) callconv(.C) void { + return @call(.always_tail, function_pointers.glBufferStorage, .{_target, _size, _data, _flags}); +} + +pub fn clearTexImage(_texture: GLuint, _level: GLint, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearTexImage, .{_texture, _level, _format, _type, _data}); +} + +pub fn clearTexSubImage(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearTexSubImage, .{_texture, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _format, _type, _data}); +} + +pub fn bindBuffersBase(_target: GLenum, _first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindBuffersBase, .{_target, _first, _count, _buffers}); +} + +pub fn bindBuffersRange(_target: GLenum, _first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint, _offsets: [*c]const GLintptr, _sizes: [*c]const GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindBuffersRange, .{_target, _first, _count, _buffers, _offsets, _sizes}); +} + +pub fn bindTextures(_first: GLuint, _count: GLsizei, _textures: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindTextures, .{_first, _count, _textures}); +} + +pub fn bindSamplers(_first: GLuint, _count: GLsizei, _samplers: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindSamplers, .{_first, _count, _samplers}); +} + +pub fn bindImageTextures(_first: GLuint, _count: GLsizei, _textures: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindImageTextures, .{_first, _count, _textures}); +} + +pub fn bindVertexBuffers(_first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint, _offsets: [*c]const GLintptr, _strides: [*c]const GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindVertexBuffers, .{_first, _count, _buffers, _offsets, _strides}); +} + +pub fn clipControl(_origin: GLenum, _depth: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glClipControl, .{_origin, _depth}); +} + +pub fn createTransformFeedbacks(_n: GLsizei, _ids: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateTransformFeedbacks, .{_n, _ids}); +} + +pub fn transformFeedbackBufferBase(_xfb: GLuint, _index: GLuint, _buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTransformFeedbackBufferBase, .{_xfb, _index, _buffer}); +} + +pub fn transformFeedbackBufferRange(_xfb: GLuint, _index: GLuint, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glTransformFeedbackBufferRange, .{_xfb, _index, _buffer, _offset, _size}); +} + +pub fn getTransformFeedbackiv(_xfb: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTransformFeedbackiv, .{_xfb, _pname, _param}); +} + +pub fn getTransformFeedbacki_v(_xfb: GLuint, _pname: GLenum, _index: GLuint, _param: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTransformFeedbacki_v, .{_xfb, _pname, _index, _param}); +} + +pub fn getTransformFeedbacki64_v(_xfb: GLuint, _pname: GLenum, _index: GLuint, _param: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTransformFeedbacki64_v, .{_xfb, _pname, _index, _param}); +} + +pub fn createBuffers(_n: GLsizei, _buffers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateBuffers, .{_n, _buffers}); +} + +pub fn namedBufferStorage(_buffer: GLuint, _size: GLsizeiptr, _data: ?*const anyopaque, _flags: GLbitfield) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedBufferStorage, .{_buffer, _size, _data, _flags}); +} + +pub fn namedBufferData(_buffer: GLuint, _size: GLsizeiptr, _data: ?*const anyopaque, _usage: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedBufferData, .{_buffer, _size, _data, _usage}); +} + +pub fn namedBufferSubData(_buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedBufferSubData, .{_buffer, _offset, _size, _data}); +} + +pub fn copyNamedBufferSubData(_readBuffer: GLuint, _writeBuffer: GLuint, _readOffset: GLintptr, _writeOffset: GLintptr, _size: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyNamedBufferSubData, .{_readBuffer, _writeBuffer, _readOffset, _writeOffset, _size}); +} + +pub fn clearNamedBufferData(_buffer: GLuint, _internalformat: GLenum, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearNamedBufferData, .{_buffer, _internalformat, _format, _type, _data}); +} + +pub fn clearNamedBufferSubData(_buffer: GLuint, _internalformat: GLenum, _offset: GLintptr, _size: GLsizeiptr, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearNamedBufferSubData, .{_buffer, _internalformat, _offset, _size, _format, _type, _data}); +} + +pub fn mapNamedBuffer(_buffer: GLuint, _access: GLenum) callconv(.C) ?*anyopaque { + return @call(.always_tail, function_pointers.glMapNamedBuffer, .{_buffer, _access}); +} + +pub fn mapNamedBufferRange(_buffer: GLuint, _offset: GLintptr, _length: GLsizeiptr, _access: GLbitfield) callconv(.C) ?*anyopaque { + return @call(.always_tail, function_pointers.glMapNamedBufferRange, .{_buffer, _offset, _length, _access}); +} + +pub fn unmapNamedBuffer(_buffer: GLuint) callconv(.C) GLboolean { + return @call(.always_tail, function_pointers.glUnmapNamedBuffer, .{_buffer}); +} + +pub fn flushMappedNamedBufferRange(_buffer: GLuint, _offset: GLintptr, _length: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glFlushMappedNamedBufferRange, .{_buffer, _offset, _length}); +} + +pub fn getNamedBufferParameteriv(_buffer: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedBufferParameteriv, .{_buffer, _pname, _params}); +} + +pub fn getNamedBufferParameteri64v(_buffer: GLuint, _pname: GLenum, _params: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedBufferParameteri64v, .{_buffer, _pname, _params}); +} + +pub fn getNamedBufferPointerv(_buffer: GLuint, _pname: GLenum, _params: ?*?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedBufferPointerv, .{_buffer, _pname, _params}); +} + +pub fn getNamedBufferSubData(_buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr, _data: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedBufferSubData, .{_buffer, _offset, _size, _data}); +} + +pub fn createFramebuffers(_n: GLsizei, _framebuffers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateFramebuffers, .{_n, _framebuffers}); +} + +pub fn namedFramebufferRenderbuffer(_framebuffer: GLuint, _attachment: GLenum, _renderbuffertarget: GLenum, _renderbuffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferRenderbuffer, .{_framebuffer, _attachment, _renderbuffertarget, _renderbuffer}); +} + +pub fn namedFramebufferParameteri(_framebuffer: GLuint, _pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferParameteri, .{_framebuffer, _pname, _param}); +} + +pub fn namedFramebufferTexture(_framebuffer: GLuint, _attachment: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferTexture, .{_framebuffer, _attachment, _texture, _level}); +} + +pub fn namedFramebufferTextureLayer(_framebuffer: GLuint, _attachment: GLenum, _texture: GLuint, _level: GLint, _layer: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferTextureLayer, .{_framebuffer, _attachment, _texture, _level, _layer}); +} + +pub fn namedFramebufferDrawBuffer(_framebuffer: GLuint, _buf: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferDrawBuffer, .{_framebuffer, _buf}); +} + +pub fn namedFramebufferDrawBuffers(_framebuffer: GLuint, _n: GLsizei, _bufs: [*c]const GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferDrawBuffers, .{_framebuffer, _n, _bufs}); +} + +pub fn namedFramebufferReadBuffer(_framebuffer: GLuint, _src: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedFramebufferReadBuffer, .{_framebuffer, _src}); +} + +pub fn invalidateNamedFramebufferData(_framebuffer: GLuint, _numAttachments: GLsizei, _attachments: [*c]const GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateNamedFramebufferData, .{_framebuffer, _numAttachments, _attachments}); +} + +pub fn invalidateNamedFramebufferSubData(_framebuffer: GLuint, _numAttachments: GLsizei, _attachments: [*c]const GLenum, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glInvalidateNamedFramebufferSubData, .{_framebuffer, _numAttachments, _attachments, _x, _y, _width, _height}); +} + +pub fn clearNamedFramebufferiv(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearNamedFramebufferiv, .{_framebuffer, _buffer, _drawbuffer, _value}); +} + +pub fn clearNamedFramebufferuiv(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearNamedFramebufferuiv, .{_framebuffer, _buffer, _drawbuffer, _value}); +} + +pub fn clearNamedFramebufferfv(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearNamedFramebufferfv, .{_framebuffer, _buffer, _drawbuffer, _value}); +} + +pub fn clearNamedFramebufferfi(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _depth: GLfloat, _stencil: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glClearNamedFramebufferfi, .{_framebuffer, _buffer, _drawbuffer, _depth, _stencil}); +} + +pub fn blitNamedFramebuffer(_readFramebuffer: GLuint, _drawFramebuffer: GLuint, _srcX0: GLint, _srcY0: GLint, _srcX1: GLint, _srcY1: GLint, _dstX0: GLint, _dstY0: GLint, _dstX1: GLint, _dstY1: GLint, _mask: GLbitfield, _filter: GLenum) callconv(.C) void { + return @call(.always_tail, function_pointers.glBlitNamedFramebuffer, .{_readFramebuffer, _drawFramebuffer, _srcX0, _srcY0, _srcX1, _srcY1, _dstX0, _dstY0, _dstX1, _dstY1, _mask, _filter}); +} + +pub fn checkNamedFramebufferStatus(_framebuffer: GLuint, _target: GLenum) callconv(.C) GLenum { + return @call(.always_tail, function_pointers.glCheckNamedFramebufferStatus, .{_framebuffer, _target}); +} + +pub fn getNamedFramebufferParameteriv(_framebuffer: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedFramebufferParameteriv, .{_framebuffer, _pname, _param}); +} + +pub fn getNamedFramebufferAttachmentParameteriv(_framebuffer: GLuint, _attachment: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedFramebufferAttachmentParameteriv, .{_framebuffer, _attachment, _pname, _params}); +} + +pub fn createRenderbuffers(_n: GLsizei, _renderbuffers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateRenderbuffers, .{_n, _renderbuffers}); +} + +pub fn namedRenderbufferStorage(_renderbuffer: GLuint, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedRenderbufferStorage, .{_renderbuffer, _internalformat, _width, _height}); +} + +pub fn namedRenderbufferStorageMultisample(_renderbuffer: GLuint, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glNamedRenderbufferStorageMultisample, .{_renderbuffer, _samples, _internalformat, _width, _height}); +} + +pub fn getNamedRenderbufferParameteriv(_renderbuffer: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetNamedRenderbufferParameteriv, .{_renderbuffer, _pname, _params}); +} + +pub fn createTextures(_target: GLenum, _n: GLsizei, _textures: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateTextures, .{_target, _n, _textures}); +} + +pub fn textureBuffer(_texture: GLuint, _internalformat: GLenum, _buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureBuffer, .{_texture, _internalformat, _buffer}); +} + +pub fn textureBufferRange(_texture: GLuint, _internalformat: GLenum, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureBufferRange, .{_texture, _internalformat, _buffer, _offset, _size}); +} + +pub fn textureStorage1D(_texture: GLuint, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureStorage1D, .{_texture, _levels, _internalformat, _width}); +} + +pub fn textureStorage2D(_texture: GLuint, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureStorage2D, .{_texture, _levels, _internalformat, _width, _height}); +} + +pub fn textureStorage3D(_texture: GLuint, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureStorage3D, .{_texture, _levels, _internalformat, _width, _height, _depth}); +} + +pub fn textureStorage2DMultisample(_texture: GLuint, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureStorage2DMultisample, .{_texture, _samples, _internalformat, _width, _height, _fixedsamplelocations}); +} + +pub fn textureStorage3DMultisample(_texture: GLuint, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureStorage3DMultisample, .{_texture, _samples, _internalformat, _width, _height, _depth, _fixedsamplelocations}); +} + +pub fn textureSubImage1D(_texture: GLuint, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureSubImage1D, .{_texture, _level, _xoffset, _width, _format, _type, _pixels}); +} + +pub fn textureSubImage2D(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureSubImage2D, .{_texture, _level, _xoffset, _yoffset, _width, _height, _format, _type, _pixels}); +} + +pub fn textureSubImage3D(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureSubImage3D, .{_texture, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _format, _type, _pixels}); +} + +pub fn compressedTextureSubImage1D(_texture: GLuint, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTextureSubImage1D, .{_texture, _level, _xoffset, _width, _format, _imageSize, _data}); +} + +pub fn compressedTextureSubImage2D(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTextureSubImage2D, .{_texture, _level, _xoffset, _yoffset, _width, _height, _format, _imageSize, _data}); +} + +pub fn compressedTextureSubImage3D(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glCompressedTextureSubImage3D, .{_texture, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _format, _imageSize, _data}); +} + +pub fn copyTextureSubImage1D(_texture: GLuint, _level: GLint, _xoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTextureSubImage1D, .{_texture, _level, _xoffset, _x, _y, _width}); +} + +pub fn copyTextureSubImage2D(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTextureSubImage2D, .{_texture, _level, _xoffset, _yoffset, _x, _y, _width, _height}); +} + +pub fn copyTextureSubImage3D(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glCopyTextureSubImage3D, .{_texture, _level, _xoffset, _yoffset, _zoffset, _x, _y, _width, _height}); +} + +pub fn textureParameterf(_texture: GLuint, _pname: GLenum, _param: GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureParameterf, .{_texture, _pname, _param}); +} + +pub fn textureParameterfv(_texture: GLuint, _pname: GLenum, _param: [*c]const GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureParameterfv, .{_texture, _pname, _param}); +} + +pub fn textureParameteri(_texture: GLuint, _pname: GLenum, _param: GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureParameteri, .{_texture, _pname, _param}); +} + +pub fn textureParameterIiv(_texture: GLuint, _pname: GLenum, _params: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureParameterIiv, .{_texture, _pname, _params}); +} + +pub fn textureParameterIuiv(_texture: GLuint, _pname: GLenum, _params: [*c]const GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureParameterIuiv, .{_texture, _pname, _params}); +} + +pub fn textureParameteriv(_texture: GLuint, _pname: GLenum, _param: [*c]const GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureParameteriv, .{_texture, _pname, _param}); +} + +pub fn generateTextureMipmap(_texture: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGenerateTextureMipmap, .{_texture}); +} + +pub fn bindTextureUnit(_unit: GLuint, _texture: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glBindTextureUnit, .{_unit, _texture}); +} + +pub fn getTextureImage(_texture: GLuint, _level: GLint, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureImage, .{_texture, _level, _format, _type, _bufSize, _pixels}); +} + +pub fn getCompressedTextureImage(_texture: GLuint, _level: GLint, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetCompressedTextureImage, .{_texture, _level, _bufSize, _pixels}); +} + +pub fn getTextureLevelParameterfv(_texture: GLuint, _level: GLint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureLevelParameterfv, .{_texture, _level, _pname, _params}); +} + +pub fn getTextureLevelParameteriv(_texture: GLuint, _level: GLint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureLevelParameteriv, .{_texture, _level, _pname, _params}); +} + +pub fn getTextureParameterfv(_texture: GLuint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureParameterfv, .{_texture, _pname, _params}); +} + +pub fn getTextureParameterIiv(_texture: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureParameterIiv, .{_texture, _pname, _params}); +} + +pub fn getTextureParameterIuiv(_texture: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureParameterIuiv, .{_texture, _pname, _params}); +} + +pub fn getTextureParameteriv(_texture: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureParameteriv, .{_texture, _pname, _params}); +} + +pub fn createVertexArrays(_n: GLsizei, _arrays: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateVertexArrays, .{_n, _arrays}); +} + +pub fn disableVertexArrayAttrib(_vaobj: GLuint, _index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glDisableVertexArrayAttrib, .{_vaobj, _index}); +} + +pub fn enableVertexArrayAttrib(_vaobj: GLuint, _index: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glEnableVertexArrayAttrib, .{_vaobj, _index}); +} + +pub fn vertexArrayElementBuffer(_vaobj: GLuint, _buffer: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayElementBuffer, .{_vaobj, _buffer}); +} + +pub fn vertexArrayVertexBuffer(_vaobj: GLuint, _bindingindex: GLuint, _buffer: GLuint, _offset: GLintptr, _stride: GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayVertexBuffer, .{_vaobj, _bindingindex, _buffer, _offset, _stride}); +} + +pub fn vertexArrayVertexBuffers(_vaobj: GLuint, _first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint, _offsets: [*c]const GLintptr, _strides: [*c]const GLsizei) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayVertexBuffers, .{_vaobj, _first, _count, _buffers, _offsets, _strides}); +} + +pub fn vertexArrayAttribBinding(_vaobj: GLuint, _attribindex: GLuint, _bindingindex: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayAttribBinding, .{_vaobj, _attribindex, _bindingindex}); +} + +pub fn vertexArrayAttribFormat(_vaobj: GLuint, _attribindex: GLuint, _size: GLint, _type: GLenum, _normalized: GLboolean, _relativeoffset: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayAttribFormat, .{_vaobj, _attribindex, _size, _type, _normalized, _relativeoffset}); +} + +pub fn vertexArrayAttribIFormat(_vaobj: GLuint, _attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayAttribIFormat, .{_vaobj, _attribindex, _size, _type, _relativeoffset}); +} + +pub fn vertexArrayAttribLFormat(_vaobj: GLuint, _attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayAttribLFormat, .{_vaobj, _attribindex, _size, _type, _relativeoffset}); +} + +pub fn vertexArrayBindingDivisor(_vaobj: GLuint, _bindingindex: GLuint, _divisor: GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glVertexArrayBindingDivisor, .{_vaobj, _bindingindex, _divisor}); +} + +pub fn getVertexArrayiv(_vaobj: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexArrayiv, .{_vaobj, _pname, _param}); +} + +pub fn getVertexArrayIndexediv(_vaobj: GLuint, _index: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexArrayIndexediv, .{_vaobj, _index, _pname, _param}); +} + +pub fn getVertexArrayIndexed64iv(_vaobj: GLuint, _index: GLuint, _pname: GLenum, _param: [*c]GLint64) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetVertexArrayIndexed64iv, .{_vaobj, _index, _pname, _param}); +} + +pub fn createSamplers(_n: GLsizei, _samplers: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateSamplers, .{_n, _samplers}); +} + +pub fn createProgramPipelines(_n: GLsizei, _pipelines: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateProgramPipelines, .{_n, _pipelines}); +} + +pub fn createQueries(_target: GLenum, _n: GLsizei, _ids: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glCreateQueries, .{_target, _n, _ids}); +} + +pub fn getQueryBufferObjecti64v(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryBufferObjecti64v, .{_id, _buffer, _pname, _offset}); +} + +pub fn getQueryBufferObjectiv(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryBufferObjectiv, .{_id, _buffer, _pname, _offset}); +} + +pub fn getQueryBufferObjectui64v(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryBufferObjectui64v, .{_id, _buffer, _pname, _offset}); +} + +pub fn getQueryBufferObjectuiv(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetQueryBufferObjectuiv, .{_id, _buffer, _pname, _offset}); +} + +pub fn memoryBarrierByRegion(_barriers: GLbitfield) callconv(.C) void { + return @call(.always_tail, function_pointers.glMemoryBarrierByRegion, .{_barriers}); +} + +pub fn getTextureSubImage(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetTextureSubImage, .{_texture, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _format, _type, _bufSize, _pixels}); +} + +pub fn getCompressedTextureSubImage(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetCompressedTextureSubImage, .{_texture, _level, _xoffset, _yoffset, _zoffset, _width, _height, _depth, _bufSize, _pixels}); +} + +pub fn getGraphicsResetStatus() callconv(.C) GLenum { + return @call(.always_tail, function_pointers.glGetGraphicsResetStatus, .{}); +} + +pub fn getnCompressedTexImage(_target: GLenum, _lod: GLint, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetnCompressedTexImage, .{_target, _lod, _bufSize, _pixels}); +} + +pub fn getnTexImage(_target: GLenum, _level: GLint, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetnTexImage, .{_target, _level, _format, _type, _bufSize, _pixels}); +} + +pub fn getnUniformdv(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLdouble) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetnUniformdv, .{_program, _location, _bufSize, _params}); +} + +pub fn getnUniformfv(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLfloat) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetnUniformfv, .{_program, _location, _bufSize, _params}); +} + +pub fn getnUniformiv(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetnUniformiv, .{_program, _location, _bufSize, _params}); +} + +pub fn getnUniformuiv(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLuint) callconv(.C) void { + return @call(.always_tail, function_pointers.glGetnUniformuiv, .{_program, _location, _bufSize, _params}); +} + +pub fn readnPixels(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _data: ?*anyopaque) callconv(.C) void { + return @call(.always_tail, function_pointers.glReadnPixels, .{_x, _y, _width, _height, _format, _type, _bufSize, _data}); +} + +pub fn textureBarrier() callconv(.C) void { + return @call(.always_tail, function_pointers.glTextureBarrier, .{}); +} +// Extensions: + +// Loader API: +pub fn load(load_ctx: anytype, get_proc_address: fn(@TypeOf(load_ctx), [:0]const u8) ?FunctionPointer) !void { + var success = true; + if(get_proc_address(load_ctx, "glTexStorage2D")) |proc| { + function_pointers.glTexStorage2D = @ptrCast(proc); + } else { + log.err("entry point glTexStorage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexStorage1D")) |proc| { + function_pointers.glTexStorage1D = @ptrCast(proc); + } else { + log.err("entry point glTexStorage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawTransformFeedbackStreamInstanced")) |proc| { + function_pointers.glDrawTransformFeedbackStreamInstanced = @ptrCast(proc); + } else { + log.err("entry point glDrawTransformFeedbackStreamInstanced not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawTransformFeedbackInstanced")) |proc| { + function_pointers.glDrawTransformFeedbackInstanced = @ptrCast(proc); + } else { + log.err("entry point glDrawTransformFeedbackInstanced not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexStorage3D")) |proc| { + function_pointers.glTexStorage3D = @ptrCast(proc); + } else { + log.err("entry point glTexStorage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMemoryBarrier")) |proc| { + function_pointers.glMemoryBarrier = @ptrCast(proc); + } else { + log.err("entry point glMemoryBarrier not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindImageTexture")) |proc| { + function_pointers.glBindImageTexture = @ptrCast(proc); + } else { + log.err("entry point glBindImageTexture not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveAtomicCounterBufferiv")) |proc| { + function_pointers.glGetActiveAtomicCounterBufferiv = @ptrCast(proc); + } else { + log.err("entry point glGetActiveAtomicCounterBufferiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetInternalformativ")) |proc| { + function_pointers.glGetInternalformativ = @ptrCast(proc); + } else { + log.err("entry point glGetInternalformativ not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElementsInstancedBaseVertexBaseInstance")) |proc| { + function_pointers.glDrawElementsInstancedBaseVertexBaseInstance = @ptrCast(proc); + } else { + log.err("entry point glDrawElementsInstancedBaseVertexBaseInstance not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElementsInstancedBaseInstance")) |proc| { + function_pointers.glDrawElementsInstancedBaseInstance = @ptrCast(proc); + } else { + log.err("entry point glDrawElementsInstancedBaseInstance not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawArraysInstancedBaseInstance")) |proc| { + function_pointers.glDrawArraysInstancedBaseInstance = @ptrCast(proc); + } else { + log.err("entry point glDrawArraysInstancedBaseInstance not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetDoublei_v")) |proc| { + function_pointers.glGetDoublei_v = @ptrCast(proc); + } else { + log.err("entry point glGetDoublei_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetFloati_v")) |proc| { + function_pointers.glGetFloati_v = @ptrCast(proc); + } else { + log.err("entry point glGetFloati_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDepthRangeIndexed")) |proc| { + function_pointers.glDepthRangeIndexed = @ptrCast(proc); + } else { + log.err("entry point glDepthRangeIndexed not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDepthRangeArrayv")) |proc| { + function_pointers.glDepthRangeArrayv = @ptrCast(proc); + } else { + log.err("entry point glDepthRangeArrayv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glScissorIndexedv")) |proc| { + function_pointers.glScissorIndexedv = @ptrCast(proc); + } else { + log.err("entry point glScissorIndexedv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glScissorIndexed")) |proc| { + function_pointers.glScissorIndexed = @ptrCast(proc); + } else { + log.err("entry point glScissorIndexed not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glScissorArrayv")) |proc| { + function_pointers.glScissorArrayv = @ptrCast(proc); + } else { + log.err("entry point glScissorArrayv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glViewportIndexedfv")) |proc| { + function_pointers.glViewportIndexedfv = @ptrCast(proc); + } else { + log.err("entry point glViewportIndexedfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glViewportIndexedf")) |proc| { + function_pointers.glViewportIndexedf = @ptrCast(proc); + } else { + log.err("entry point glViewportIndexedf not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glViewportArrayv")) |proc| { + function_pointers.glViewportArrayv = @ptrCast(proc); + } else { + log.err("entry point glViewportArrayv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribLdv")) |proc| { + function_pointers.glGetVertexAttribLdv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribLdv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribLPointer")) |proc| { + function_pointers.glVertexAttribLPointer = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribLPointer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL4dv")) |proc| { + function_pointers.glVertexAttribL4dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL3dv")) |proc| { + function_pointers.glVertexAttribL3dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL2dv")) |proc| { + function_pointers.glVertexAttribL2dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL1dv")) |proc| { + function_pointers.glVertexAttribL1dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL1dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL4d")) |proc| { + function_pointers.glVertexAttribL4d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL4d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL3d")) |proc| { + function_pointers.glVertexAttribL3d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL3d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL2d")) |proc| { + function_pointers.glVertexAttribL2d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL2d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribL1d")) |proc| { + function_pointers.glVertexAttribL1d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribL1d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glValidateProgramPipeline")) |proc| { + function_pointers.glValidateProgramPipeline = @ptrCast(proc); + } else { + log.err("entry point glValidateProgramPipeline not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix4x3dv")) |proc| { + function_pointers.glProgramUniformMatrix4x3dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix4x3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix3x4dv")) |proc| { + function_pointers.glProgramUniformMatrix3x4dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix3x4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix4x2dv")) |proc| { + function_pointers.glProgramUniformMatrix4x2dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix4x2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix2x4dv")) |proc| { + function_pointers.glProgramUniformMatrix2x4dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix2x4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix3x2dv")) |proc| { + function_pointers.glProgramUniformMatrix3x2dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix3x2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix2x3dv")) |proc| { + function_pointers.glProgramUniformMatrix2x3dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix2x3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix4x3fv")) |proc| { + function_pointers.glProgramUniformMatrix4x3fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix4x3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix3x4fv")) |proc| { + function_pointers.glProgramUniformMatrix3x4fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix3x4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix4x2fv")) |proc| { + function_pointers.glProgramUniformMatrix4x2fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix4x2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix2x4fv")) |proc| { + function_pointers.glProgramUniformMatrix2x4fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix2x4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix3x2fv")) |proc| { + function_pointers.glProgramUniformMatrix3x2fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix3x2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix2x3fv")) |proc| { + function_pointers.glProgramUniformMatrix2x3fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix2x3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix4dv")) |proc| { + function_pointers.glProgramUniformMatrix4dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix3dv")) |proc| { + function_pointers.glProgramUniformMatrix3dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix2dv")) |proc| { + function_pointers.glProgramUniformMatrix2dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix4fv")) |proc| { + function_pointers.glProgramUniformMatrix4fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix3fv")) |proc| { + function_pointers.glProgramUniformMatrix3fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniformMatrix2fv")) |proc| { + function_pointers.glProgramUniformMatrix2fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniformMatrix2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4uiv")) |proc| { + function_pointers.glProgramUniform4uiv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4ui")) |proc| { + function_pointers.glProgramUniform4ui = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4dv")) |proc| { + function_pointers.glProgramUniform4dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4d")) |proc| { + function_pointers.glProgramUniform4d = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4fv")) |proc| { + function_pointers.glProgramUniform4fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4f")) |proc| { + function_pointers.glProgramUniform4f = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4iv")) |proc| { + function_pointers.glProgramUniform4iv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform4i")) |proc| { + function_pointers.glProgramUniform4i = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform4i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3uiv")) |proc| { + function_pointers.glProgramUniform3uiv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3ui")) |proc| { + function_pointers.glProgramUniform3ui = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3dv")) |proc| { + function_pointers.glProgramUniform3dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3d")) |proc| { + function_pointers.glProgramUniform3d = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3fv")) |proc| { + function_pointers.glProgramUniform3fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3f")) |proc| { + function_pointers.glProgramUniform3f = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3iv")) |proc| { + function_pointers.glProgramUniform3iv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform3i")) |proc| { + function_pointers.glProgramUniform3i = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform3i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUseProgramStages")) |proc| { + function_pointers.glUseProgramStages = @ptrCast(proc); + } else { + log.err("entry point glUseProgramStages not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramParameteri")) |proc| { + function_pointers.glProgramParameteri = @ptrCast(proc); + } else { + log.err("entry point glProgramParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetShaderPrecisionFormat")) |proc| { + function_pointers.glGetShaderPrecisionFormat = @ptrCast(proc); + } else { + log.err("entry point glGetShaderPrecisionFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glShaderBinary")) |proc| { + function_pointers.glShaderBinary = @ptrCast(proc); + } else { + log.err("entry point glShaderBinary not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glReleaseShaderCompiler")) |proc| { + function_pointers.glReleaseShaderCompiler = @ptrCast(proc); + } else { + log.err("entry point glReleaseShaderCompiler not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryIndexediv")) |proc| { + function_pointers.glGetQueryIndexediv = @ptrCast(proc); + } else { + log.err("entry point glGetQueryIndexediv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEndQueryIndexed")) |proc| { + function_pointers.glEndQueryIndexed = @ptrCast(proc); + } else { + log.err("entry point glEndQueryIndexed not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBeginQueryIndexed")) |proc| { + function_pointers.glBeginQueryIndexed = @ptrCast(proc); + } else { + log.err("entry point glBeginQueryIndexed not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawTransformFeedbackStream")) |proc| { + function_pointers.glDrawTransformFeedbackStream = @ptrCast(proc); + } else { + log.err("entry point glDrawTransformFeedbackStream not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawTransformFeedback")) |proc| { + function_pointers.glDrawTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glDrawTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glResumeTransformFeedback")) |proc| { + function_pointers.glResumeTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glResumeTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPauseTransformFeedback")) |proc| { + function_pointers.glPauseTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glPauseTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramStageiv")) |proc| { + function_pointers.glGetProgramStageiv = @ptrCast(proc); + } else { + log.err("entry point glGetProgramStageiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformSubroutineuiv")) |proc| { + function_pointers.glGetUniformSubroutineuiv = @ptrCast(proc); + } else { + log.err("entry point glGetUniformSubroutineuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformSubroutinesuiv")) |proc| { + function_pointers.glUniformSubroutinesuiv = @ptrCast(proc); + } else { + log.err("entry point glUniformSubroutinesuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveSubroutineName")) |proc| { + function_pointers.glGetActiveSubroutineName = @ptrCast(proc); + } else { + log.err("entry point glGetActiveSubroutineName not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCullFace")) |proc| { + function_pointers.glCullFace = @ptrCast(proc); + } else { + log.err("entry point glCullFace not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFrontFace")) |proc| { + function_pointers.glFrontFace = @ptrCast(proc); + } else { + log.err("entry point glFrontFace not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glHint")) |proc| { + function_pointers.glHint = @ptrCast(proc); + } else { + log.err("entry point glHint not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glLineWidth")) |proc| { + function_pointers.glLineWidth = @ptrCast(proc); + } else { + log.err("entry point glLineWidth not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPointSize")) |proc| { + function_pointers.glPointSize = @ptrCast(proc); + } else { + log.err("entry point glPointSize not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPolygonMode")) |proc| { + function_pointers.glPolygonMode = @ptrCast(proc); + } else { + log.err("entry point glPolygonMode not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glScissor")) |proc| { + function_pointers.glScissor = @ptrCast(proc); + } else { + log.err("entry point glScissor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexParameterf")) |proc| { + function_pointers.glTexParameterf = @ptrCast(proc); + } else { + log.err("entry point glTexParameterf not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexParameterfv")) |proc| { + function_pointers.glTexParameterfv = @ptrCast(proc); + } else { + log.err("entry point glTexParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexParameteri")) |proc| { + function_pointers.glTexParameteri = @ptrCast(proc); + } else { + log.err("entry point glTexParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexParameteriv")) |proc| { + function_pointers.glTexParameteriv = @ptrCast(proc); + } else { + log.err("entry point glTexParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexImage1D")) |proc| { + function_pointers.glTexImage1D = @ptrCast(proc); + } else { + log.err("entry point glTexImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexImage2D")) |proc| { + function_pointers.glTexImage2D = @ptrCast(proc); + } else { + log.err("entry point glTexImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawBuffer")) |proc| { + function_pointers.glDrawBuffer = @ptrCast(proc); + } else { + log.err("entry point glDrawBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClear")) |proc| { + function_pointers.glClear = @ptrCast(proc); + } else { + log.err("entry point glClear not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearColor")) |proc| { + function_pointers.glClearColor = @ptrCast(proc); + } else { + log.err("entry point glClearColor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearStencil")) |proc| { + function_pointers.glClearStencil = @ptrCast(proc); + } else { + log.err("entry point glClearStencil not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearDepth")) |proc| { + function_pointers.glClearDepth = @ptrCast(proc); + } else { + log.err("entry point glClearDepth not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glStencilMask")) |proc| { + function_pointers.glStencilMask = @ptrCast(proc); + } else { + log.err("entry point glStencilMask not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glColorMask")) |proc| { + function_pointers.glColorMask = @ptrCast(proc); + } else { + log.err("entry point glColorMask not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDepthMask")) |proc| { + function_pointers.glDepthMask = @ptrCast(proc); + } else { + log.err("entry point glDepthMask not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDisable")) |proc| { + function_pointers.glDisable = @ptrCast(proc); + } else { + log.err("entry point glDisable not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEnable")) |proc| { + function_pointers.glEnable = @ptrCast(proc); + } else { + log.err("entry point glEnable not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFinish")) |proc| { + function_pointers.glFinish = @ptrCast(proc); + } else { + log.err("entry point glFinish not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFlush")) |proc| { + function_pointers.glFlush = @ptrCast(proc); + } else { + log.err("entry point glFlush not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendFunc")) |proc| { + function_pointers.glBlendFunc = @ptrCast(proc); + } else { + log.err("entry point glBlendFunc not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glLogicOp")) |proc| { + function_pointers.glLogicOp = @ptrCast(proc); + } else { + log.err("entry point glLogicOp not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glStencilFunc")) |proc| { + function_pointers.glStencilFunc = @ptrCast(proc); + } else { + log.err("entry point glStencilFunc not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glStencilOp")) |proc| { + function_pointers.glStencilOp = @ptrCast(proc); + } else { + log.err("entry point glStencilOp not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDepthFunc")) |proc| { + function_pointers.glDepthFunc = @ptrCast(proc); + } else { + log.err("entry point glDepthFunc not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPixelStoref")) |proc| { + function_pointers.glPixelStoref = @ptrCast(proc); + } else { + log.err("entry point glPixelStoref not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPixelStorei")) |proc| { + function_pointers.glPixelStorei = @ptrCast(proc); + } else { + log.err("entry point glPixelStorei not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glReadBuffer")) |proc| { + function_pointers.glReadBuffer = @ptrCast(proc); + } else { + log.err("entry point glReadBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glReadPixels")) |proc| { + function_pointers.glReadPixels = @ptrCast(proc); + } else { + log.err("entry point glReadPixels not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetBooleanv")) |proc| { + function_pointers.glGetBooleanv = @ptrCast(proc); + } else { + log.err("entry point glGetBooleanv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetDoublev")) |proc| { + function_pointers.glGetDoublev = @ptrCast(proc); + } else { + log.err("entry point glGetDoublev not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetError")) |proc| { + function_pointers.glGetError = @ptrCast(proc); + } else { + log.err("entry point glGetError not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetFloatv")) |proc| { + function_pointers.glGetFloatv = @ptrCast(proc); + } else { + log.err("entry point glGetFloatv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetIntegerv")) |proc| { + function_pointers.glGetIntegerv = @ptrCast(proc); + } else { + log.err("entry point glGetIntegerv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetString")) |proc| { + function_pointers.glGetString = @ptrCast(proc); + } else { + log.err("entry point glGetString not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexImage")) |proc| { + function_pointers.glGetTexImage = @ptrCast(proc); + } else { + log.err("entry point glGetTexImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexParameterfv")) |proc| { + function_pointers.glGetTexParameterfv = @ptrCast(proc); + } else { + log.err("entry point glGetTexParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexParameteriv")) |proc| { + function_pointers.glGetTexParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetTexParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexLevelParameterfv")) |proc| { + function_pointers.glGetTexLevelParameterfv = @ptrCast(proc); + } else { + log.err("entry point glGetTexLevelParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexLevelParameteriv")) |proc| { + function_pointers.glGetTexLevelParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetTexLevelParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsEnabled")) |proc| { + function_pointers.glIsEnabled = @ptrCast(proc); + } else { + log.err("entry point glIsEnabled not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDepthRange")) |proc| { + function_pointers.glDepthRange = @ptrCast(proc); + } else { + log.err("entry point glDepthRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glViewport")) |proc| { + function_pointers.glViewport = @ptrCast(proc); + } else { + log.err("entry point glViewport not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexStorage2DMultisample")) |proc| { + function_pointers.glTexStorage2DMultisample = @ptrCast(proc); + } else { + log.err("entry point glTexStorage2DMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexBufferRange")) |proc| { + function_pointers.glTexBufferRange = @ptrCast(proc); + } else { + log.err("entry point glTexBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glShaderStorageBlockBinding")) |proc| { + function_pointers.glShaderStorageBlockBinding = @ptrCast(proc); + } else { + log.err("entry point glShaderStorageBlockBinding not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramResourceLocationIndex")) |proc| { + function_pointers.glGetProgramResourceLocationIndex = @ptrCast(proc); + } else { + log.err("entry point glGetProgramResourceLocationIndex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramResourceLocation")) |proc| { + function_pointers.glGetProgramResourceLocation = @ptrCast(proc); + } else { + log.err("entry point glGetProgramResourceLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramResourceiv")) |proc| { + function_pointers.glGetProgramResourceiv = @ptrCast(proc); + } else { + log.err("entry point glGetProgramResourceiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramResourceName")) |proc| { + function_pointers.glGetProgramResourceName = @ptrCast(proc); + } else { + log.err("entry point glGetProgramResourceName not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramResourceIndex")) |proc| { + function_pointers.glGetProgramResourceIndex = @ptrCast(proc); + } else { + log.err("entry point glGetProgramResourceIndex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramInterfaceiv")) |proc| { + function_pointers.glGetProgramInterfaceiv = @ptrCast(proc); + } else { + log.err("entry point glGetProgramInterfaceiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMultiDrawElementsIndirect")) |proc| { + function_pointers.glMultiDrawElementsIndirect = @ptrCast(proc); + } else { + log.err("entry point glMultiDrawElementsIndirect not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMultiDrawArraysIndirect")) |proc| { + function_pointers.glMultiDrawArraysIndirect = @ptrCast(proc); + } else { + log.err("entry point glMultiDrawArraysIndirect not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateSubFramebuffer")) |proc| { + function_pointers.glInvalidateSubFramebuffer = @ptrCast(proc); + } else { + log.err("entry point glInvalidateSubFramebuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateFramebuffer")) |proc| { + function_pointers.glInvalidateFramebuffer = @ptrCast(proc); + } else { + log.err("entry point glInvalidateFramebuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateBufferData")) |proc| { + function_pointers.glInvalidateBufferData = @ptrCast(proc); + } else { + log.err("entry point glInvalidateBufferData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateBufferSubData")) |proc| { + function_pointers.glInvalidateBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glInvalidateBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateTexImage")) |proc| { + function_pointers.glInvalidateTexImage = @ptrCast(proc); + } else { + log.err("entry point glInvalidateTexImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateTexSubImage")) |proc| { + function_pointers.glInvalidateTexSubImage = @ptrCast(proc); + } else { + log.err("entry point glInvalidateTexSubImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetInternalformati64v")) |proc| { + function_pointers.glGetInternalformati64v = @ptrCast(proc); + } else { + log.err("entry point glGetInternalformati64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetFramebufferParameteriv")) |proc| { + function_pointers.glGetFramebufferParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetFramebufferParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferParameteri")) |proc| { + function_pointers.glFramebufferParameteri = @ptrCast(proc); + } else { + log.err("entry point glFramebufferParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyImageSubData")) |proc| { + function_pointers.glCopyImageSubData = @ptrCast(proc); + } else { + log.err("entry point glCopyImageSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDispatchComputeIndirect")) |proc| { + function_pointers.glDispatchComputeIndirect = @ptrCast(proc); + } else { + log.err("entry point glDispatchComputeIndirect not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDispatchCompute")) |proc| { + function_pointers.glDispatchCompute = @ptrCast(proc); + } else { + log.err("entry point glDispatchCompute not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearBufferSubData")) |proc| { + function_pointers.glClearBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glClearBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearBufferData")) |proc| { + function_pointers.glClearBufferData = @ptrCast(proc); + } else { + log.err("entry point glClearBufferData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramPipelineInfoLog")) |proc| { + function_pointers.glGetProgramPipelineInfoLog = @ptrCast(proc); + } else { + log.err("entry point glGetProgramPipelineInfoLog not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2uiv")) |proc| { + function_pointers.glProgramUniform2uiv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2ui")) |proc| { + function_pointers.glProgramUniform2ui = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2dv")) |proc| { + function_pointers.glProgramUniform2dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2d")) |proc| { + function_pointers.glProgramUniform2d = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2fv")) |proc| { + function_pointers.glProgramUniform2fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2f")) |proc| { + function_pointers.glProgramUniform2f = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2iv")) |proc| { + function_pointers.glProgramUniform2iv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform2i")) |proc| { + function_pointers.glProgramUniform2i = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform2i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1uiv")) |proc| { + function_pointers.glProgramUniform1uiv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1ui")) |proc| { + function_pointers.glProgramUniform1ui = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1dv")) |proc| { + function_pointers.glProgramUniform1dv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1d")) |proc| { + function_pointers.glProgramUniform1d = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1fv")) |proc| { + function_pointers.glProgramUniform1fv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1f")) |proc| { + function_pointers.glProgramUniform1f = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1iv")) |proc| { + function_pointers.glProgramUniform1iv = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramUniform1i")) |proc| { + function_pointers.glProgramUniform1i = @ptrCast(proc); + } else { + log.err("entry point glProgramUniform1i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramPipelineiv")) |proc| { + function_pointers.glGetProgramPipelineiv = @ptrCast(proc); + } else { + log.err("entry point glGetProgramPipelineiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsProgramPipeline")) |proc| { + function_pointers.glIsProgramPipeline = @ptrCast(proc); + } else { + log.err("entry point glIsProgramPipeline not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenProgramPipelines")) |proc| { + function_pointers.glGenProgramPipelines = @ptrCast(proc); + } else { + log.err("entry point glGenProgramPipelines not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteProgramPipelines")) |proc| { + function_pointers.glDeleteProgramPipelines = @ptrCast(proc); + } else { + log.err("entry point glDeleteProgramPipelines not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindProgramPipeline")) |proc| { + function_pointers.glBindProgramPipeline = @ptrCast(proc); + } else { + log.err("entry point glBindProgramPipeline not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateShaderProgramv")) |proc| { + function_pointers.glCreateShaderProgramv = @ptrCast(proc); + } else { + log.err("entry point glCreateShaderProgramv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glActiveShaderProgram")) |proc| { + function_pointers.glActiveShaderProgram = @ptrCast(proc); + } else { + log.err("entry point glActiveShaderProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProgramBinary")) |proc| { + function_pointers.glProgramBinary = @ptrCast(proc); + } else { + log.err("entry point glProgramBinary not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramBinary")) |proc| { + function_pointers.glGetProgramBinary = @ptrCast(proc); + } else { + log.err("entry point glGetProgramBinary not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearDepthf")) |proc| { + function_pointers.glClearDepthf = @ptrCast(proc); + } else { + log.err("entry point glClearDepthf not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDepthRangef")) |proc| { + function_pointers.glDepthRangef = @ptrCast(proc); + } else { + log.err("entry point glDepthRangef not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsTransformFeedback")) |proc| { + function_pointers.glIsTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glIsTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenTransformFeedbacks")) |proc| { + function_pointers.glGenTransformFeedbacks = @ptrCast(proc); + } else { + log.err("entry point glGenTransformFeedbacks not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteTransformFeedbacks")) |proc| { + function_pointers.glDeleteTransformFeedbacks = @ptrCast(proc); + } else { + log.err("entry point glDeleteTransformFeedbacks not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindTransformFeedback")) |proc| { + function_pointers.glBindTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glBindTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPatchParameterfv")) |proc| { + function_pointers.glPatchParameterfv = @ptrCast(proc); + } else { + log.err("entry point glPatchParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPatchParameteri")) |proc| { + function_pointers.glPatchParameteri = @ptrCast(proc); + } else { + log.err("entry point glPatchParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawArrays")) |proc| { + function_pointers.glDrawArrays = @ptrCast(proc); + } else { + log.err("entry point glDrawArrays not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElements")) |proc| { + function_pointers.glDrawElements = @ptrCast(proc); + } else { + log.err("entry point glDrawElements not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPolygonOffset")) |proc| { + function_pointers.glPolygonOffset = @ptrCast(proc); + } else { + log.err("entry point glPolygonOffset not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTexImage1D")) |proc| { + function_pointers.glCopyTexImage1D = @ptrCast(proc); + } else { + log.err("entry point glCopyTexImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTexImage2D")) |proc| { + function_pointers.glCopyTexImage2D = @ptrCast(proc); + } else { + log.err("entry point glCopyTexImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTexSubImage1D")) |proc| { + function_pointers.glCopyTexSubImage1D = @ptrCast(proc); + } else { + log.err("entry point glCopyTexSubImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTexSubImage2D")) |proc| { + function_pointers.glCopyTexSubImage2D = @ptrCast(proc); + } else { + log.err("entry point glCopyTexSubImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexSubImage1D")) |proc| { + function_pointers.glTexSubImage1D = @ptrCast(proc); + } else { + log.err("entry point glTexSubImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexSubImage2D")) |proc| { + function_pointers.glTexSubImage2D = @ptrCast(proc); + } else { + log.err("entry point glTexSubImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindTexture")) |proc| { + function_pointers.glBindTexture = @ptrCast(proc); + } else { + log.err("entry point glBindTexture not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteTextures")) |proc| { + function_pointers.glDeleteTextures = @ptrCast(proc); + } else { + log.err("entry point glDeleteTextures not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenTextures")) |proc| { + function_pointers.glGenTextures = @ptrCast(proc); + } else { + log.err("entry point glGenTextures not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsTexture")) |proc| { + function_pointers.glIsTexture = @ptrCast(proc); + } else { + log.err("entry point glIsTexture not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveSubroutineUniformName")) |proc| { + function_pointers.glGetActiveSubroutineUniformName = @ptrCast(proc); + } else { + log.err("entry point glGetActiveSubroutineUniformName not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveSubroutineUniformiv")) |proc| { + function_pointers.glGetActiveSubroutineUniformiv = @ptrCast(proc); + } else { + log.err("entry point glGetActiveSubroutineUniformiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSubroutineIndex")) |proc| { + function_pointers.glGetSubroutineIndex = @ptrCast(proc); + } else { + log.err("entry point glGetSubroutineIndex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSubroutineUniformLocation")) |proc| { + function_pointers.glGetSubroutineUniformLocation = @ptrCast(proc); + } else { + log.err("entry point glGetSubroutineUniformLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformdv")) |proc| { + function_pointers.glGetUniformdv = @ptrCast(proc); + } else { + log.err("entry point glGetUniformdv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix4x3dv")) |proc| { + function_pointers.glUniformMatrix4x3dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix4x3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix4x2dv")) |proc| { + function_pointers.glUniformMatrix4x2dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix4x2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix3x4dv")) |proc| { + function_pointers.glUniformMatrix3x4dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix3x4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix3x2dv")) |proc| { + function_pointers.glUniformMatrix3x2dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix3x2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix2x4dv")) |proc| { + function_pointers.glUniformMatrix2x4dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix2x4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix2x3dv")) |proc| { + function_pointers.glUniformMatrix2x3dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix2x3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix4dv")) |proc| { + function_pointers.glUniformMatrix4dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix3dv")) |proc| { + function_pointers.glUniformMatrix3dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawRangeElements")) |proc| { + function_pointers.glDrawRangeElements = @ptrCast(proc); + } else { + log.err("entry point glDrawRangeElements not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexImage3D")) |proc| { + function_pointers.glTexImage3D = @ptrCast(proc); + } else { + log.err("entry point glTexImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexSubImage3D")) |proc| { + function_pointers.glTexSubImage3D = @ptrCast(proc); + } else { + log.err("entry point glTexSubImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTexSubImage3D")) |proc| { + function_pointers.glCopyTexSubImage3D = @ptrCast(proc); + } else { + log.err("entry point glCopyTexSubImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix2dv")) |proc| { + function_pointers.glUniformMatrix2dv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4dv")) |proc| { + function_pointers.glUniform4dv = @ptrCast(proc); + } else { + log.err("entry point glUniform4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3dv")) |proc| { + function_pointers.glUniform3dv = @ptrCast(proc); + } else { + log.err("entry point glUniform3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2dv")) |proc| { + function_pointers.glUniform2dv = @ptrCast(proc); + } else { + log.err("entry point glUniform2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1dv")) |proc| { + function_pointers.glUniform1dv = @ptrCast(proc); + } else { + log.err("entry point glUniform1dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4d")) |proc| { + function_pointers.glUniform4d = @ptrCast(proc); + } else { + log.err("entry point glUniform4d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3d")) |proc| { + function_pointers.glUniform3d = @ptrCast(proc); + } else { + log.err("entry point glUniform3d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2d")) |proc| { + function_pointers.glUniform2d = @ptrCast(proc); + } else { + log.err("entry point glUniform2d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1d")) |proc| { + function_pointers.glUniform1d = @ptrCast(proc); + } else { + log.err("entry point glUniform1d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElementsIndirect")) |proc| { + function_pointers.glDrawElementsIndirect = @ptrCast(proc); + } else { + log.err("entry point glDrawElementsIndirect not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawArraysIndirect")) |proc| { + function_pointers.glDrawArraysIndirect = @ptrCast(proc); + } else { + log.err("entry point glDrawArraysIndirect not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendFuncSeparatei")) |proc| { + function_pointers.glBlendFuncSeparatei = @ptrCast(proc); + } else { + log.err("entry point glBlendFuncSeparatei not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendFunci")) |proc| { + function_pointers.glBlendFunci = @ptrCast(proc); + } else { + log.err("entry point glBlendFunci not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendEquationSeparatei")) |proc| { + function_pointers.glBlendEquationSeparatei = @ptrCast(proc); + } else { + log.err("entry point glBlendEquationSeparatei not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendEquationi")) |proc| { + function_pointers.glBlendEquationi = @ptrCast(proc); + } else { + log.err("entry point glBlendEquationi not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMinSampleShading")) |proc| { + function_pointers.glMinSampleShading = @ptrCast(proc); + } else { + log.err("entry point glMinSampleShading not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glActiveTexture")) |proc| { + function_pointers.glActiveTexture = @ptrCast(proc); + } else { + log.err("entry point glActiveTexture not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSampleCoverage")) |proc| { + function_pointers.glSampleCoverage = @ptrCast(proc); + } else { + log.err("entry point glSampleCoverage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTexImage3D")) |proc| { + function_pointers.glCompressedTexImage3D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTexImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTexImage2D")) |proc| { + function_pointers.glCompressedTexImage2D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTexImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTexImage1D")) |proc| { + function_pointers.glCompressedTexImage1D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTexImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTexSubImage3D")) |proc| { + function_pointers.glCompressedTexSubImage3D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTexSubImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTexSubImage2D")) |proc| { + function_pointers.glCompressedTexSubImage2D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTexSubImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTexSubImage1D")) |proc| { + function_pointers.glCompressedTexSubImage1D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTexSubImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetCompressedTexImage")) |proc| { + function_pointers.glGetCompressedTexImage = @ptrCast(proc); + } else { + log.err("entry point glGetCompressedTexImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP4uiv")) |proc| { + function_pointers.glVertexAttribP4uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP4uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP4ui")) |proc| { + function_pointers.glVertexAttribP4ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP4ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP3uiv")) |proc| { + function_pointers.glVertexAttribP3uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP3uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP3ui")) |proc| { + function_pointers.glVertexAttribP3ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP3ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP2uiv")) |proc| { + function_pointers.glVertexAttribP2uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP2uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP2ui")) |proc| { + function_pointers.glVertexAttribP2ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP2ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP1uiv")) |proc| { + function_pointers.glVertexAttribP1uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP1uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribP1ui")) |proc| { + function_pointers.glVertexAttribP1ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribP1ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribDivisor")) |proc| { + function_pointers.glVertexAttribDivisor = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribDivisor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryObjectui64v")) |proc| { + function_pointers.glGetQueryObjectui64v = @ptrCast(proc); + } else { + log.err("entry point glGetQueryObjectui64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryObjecti64v")) |proc| { + function_pointers.glGetQueryObjecti64v = @ptrCast(proc); + } else { + log.err("entry point glGetQueryObjecti64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glQueryCounter")) |proc| { + function_pointers.glQueryCounter = @ptrCast(proc); + } else { + log.err("entry point glQueryCounter not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSamplerParameterIuiv")) |proc| { + function_pointers.glGetSamplerParameterIuiv = @ptrCast(proc); + } else { + log.err("entry point glGetSamplerParameterIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSamplerParameterfv")) |proc| { + function_pointers.glGetSamplerParameterfv = @ptrCast(proc); + } else { + log.err("entry point glGetSamplerParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSamplerParameterIiv")) |proc| { + function_pointers.glGetSamplerParameterIiv = @ptrCast(proc); + } else { + log.err("entry point glGetSamplerParameterIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSamplerParameteriv")) |proc| { + function_pointers.glGetSamplerParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetSamplerParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSamplerParameterIuiv")) |proc| { + function_pointers.glSamplerParameterIuiv = @ptrCast(proc); + } else { + log.err("entry point glSamplerParameterIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSamplerParameterIiv")) |proc| { + function_pointers.glSamplerParameterIiv = @ptrCast(proc); + } else { + log.err("entry point glSamplerParameterIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSamplerParameterfv")) |proc| { + function_pointers.glSamplerParameterfv = @ptrCast(proc); + } else { + log.err("entry point glSamplerParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSamplerParameterf")) |proc| { + function_pointers.glSamplerParameterf = @ptrCast(proc); + } else { + log.err("entry point glSamplerParameterf not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSamplerParameteriv")) |proc| { + function_pointers.glSamplerParameteriv = @ptrCast(proc); + } else { + log.err("entry point glSamplerParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSamplerParameteri")) |proc| { + function_pointers.glSamplerParameteri = @ptrCast(proc); + } else { + log.err("entry point glSamplerParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindSampler")) |proc| { + function_pointers.glBindSampler = @ptrCast(proc); + } else { + log.err("entry point glBindSampler not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsSampler")) |proc| { + function_pointers.glIsSampler = @ptrCast(proc); + } else { + log.err("entry point glIsSampler not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteSamplers")) |proc| { + function_pointers.glDeleteSamplers = @ptrCast(proc); + } else { + log.err("entry point glDeleteSamplers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenSamplers")) |proc| { + function_pointers.glGenSamplers = @ptrCast(proc); + } else { + log.err("entry point glGenSamplers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetFragDataIndex")) |proc| { + function_pointers.glGetFragDataIndex = @ptrCast(proc); + } else { + log.err("entry point glGetFragDataIndex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindFragDataLocationIndexed")) |proc| { + function_pointers.glBindFragDataLocationIndexed = @ptrCast(proc); + } else { + log.err("entry point glBindFragDataLocationIndexed not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glSampleMaski")) |proc| { + function_pointers.glSampleMaski = @ptrCast(proc); + } else { + log.err("entry point glSampleMaski not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetMultisamplefv")) |proc| { + function_pointers.glGetMultisamplefv = @ptrCast(proc); + } else { + log.err("entry point glGetMultisamplefv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexImage3DMultisample")) |proc| { + function_pointers.glTexImage3DMultisample = @ptrCast(proc); + } else { + log.err("entry point glTexImage3DMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexImage2DMultisample")) |proc| { + function_pointers.glTexImage2DMultisample = @ptrCast(proc); + } else { + log.err("entry point glTexImage2DMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferTexture")) |proc| { + function_pointers.glFramebufferTexture = @ptrCast(proc); + } else { + log.err("entry point glFramebufferTexture not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetBufferParameteri64v")) |proc| { + function_pointers.glGetBufferParameteri64v = @ptrCast(proc); + } else { + log.err("entry point glGetBufferParameteri64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendFuncSeparate")) |proc| { + function_pointers.glBlendFuncSeparate = @ptrCast(proc); + } else { + log.err("entry point glBlendFuncSeparate not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMultiDrawArrays")) |proc| { + function_pointers.glMultiDrawArrays = @ptrCast(proc); + } else { + log.err("entry point glMultiDrawArrays not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMultiDrawElements")) |proc| { + function_pointers.glMultiDrawElements = @ptrCast(proc); + } else { + log.err("entry point glMultiDrawElements not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPointParameterf")) |proc| { + function_pointers.glPointParameterf = @ptrCast(proc); + } else { + log.err("entry point glPointParameterf not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPointParameterfv")) |proc| { + function_pointers.glPointParameterfv = @ptrCast(proc); + } else { + log.err("entry point glPointParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPointParameteri")) |proc| { + function_pointers.glPointParameteri = @ptrCast(proc); + } else { + log.err("entry point glPointParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPointParameteriv")) |proc| { + function_pointers.glPointParameteriv = @ptrCast(proc); + } else { + log.err("entry point glPointParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetInteger64i_v")) |proc| { + function_pointers.glGetInteger64i_v = @ptrCast(proc); + } else { + log.err("entry point glGetInteger64i_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetSynciv")) |proc| { + function_pointers.glGetSynciv = @ptrCast(proc); + } else { + log.err("entry point glGetSynciv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetInteger64v")) |proc| { + function_pointers.glGetInteger64v = @ptrCast(proc); + } else { + log.err("entry point glGetInteger64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glWaitSync")) |proc| { + function_pointers.glWaitSync = @ptrCast(proc); + } else { + log.err("entry point glWaitSync not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClientWaitSync")) |proc| { + function_pointers.glClientWaitSync = @ptrCast(proc); + } else { + log.err("entry point glClientWaitSync not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteSync")) |proc| { + function_pointers.glDeleteSync = @ptrCast(proc); + } else { + log.err("entry point glDeleteSync not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsSync")) |proc| { + function_pointers.glIsSync = @ptrCast(proc); + } else { + log.err("entry point glIsSync not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFenceSync")) |proc| { + function_pointers.glFenceSync = @ptrCast(proc); + } else { + log.err("entry point glFenceSync not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendColor")) |proc| { + function_pointers.glBlendColor = @ptrCast(proc); + } else { + log.err("entry point glBlendColor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendEquation")) |proc| { + function_pointers.glBlendEquation = @ptrCast(proc); + } else { + log.err("entry point glBlendEquation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glProvokingVertex")) |proc| { + function_pointers.glProvokingVertex = @ptrCast(proc); + } else { + log.err("entry point glProvokingVertex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMultiDrawElementsBaseVertex")) |proc| { + function_pointers.glMultiDrawElementsBaseVertex = @ptrCast(proc); + } else { + log.err("entry point glMultiDrawElementsBaseVertex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElementsInstancedBaseVertex")) |proc| { + function_pointers.glDrawElementsInstancedBaseVertex = @ptrCast(proc); + } else { + log.err("entry point glDrawElementsInstancedBaseVertex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawRangeElementsBaseVertex")) |proc| { + function_pointers.glDrawRangeElementsBaseVertex = @ptrCast(proc); + } else { + log.err("entry point glDrawRangeElementsBaseVertex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElementsBaseVertex")) |proc| { + function_pointers.glDrawElementsBaseVertex = @ptrCast(proc); + } else { + log.err("entry point glDrawElementsBaseVertex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenQueries")) |proc| { + function_pointers.glGenQueries = @ptrCast(proc); + } else { + log.err("entry point glGenQueries not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteQueries")) |proc| { + function_pointers.glDeleteQueries = @ptrCast(proc); + } else { + log.err("entry point glDeleteQueries not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsQuery")) |proc| { + function_pointers.glIsQuery = @ptrCast(proc); + } else { + log.err("entry point glIsQuery not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBeginQuery")) |proc| { + function_pointers.glBeginQuery = @ptrCast(proc); + } else { + log.err("entry point glBeginQuery not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEndQuery")) |proc| { + function_pointers.glEndQuery = @ptrCast(proc); + } else { + log.err("entry point glEndQuery not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryiv")) |proc| { + function_pointers.glGetQueryiv = @ptrCast(proc); + } else { + log.err("entry point glGetQueryiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryObjectiv")) |proc| { + function_pointers.glGetQueryObjectiv = @ptrCast(proc); + } else { + log.err("entry point glGetQueryObjectiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryObjectuiv")) |proc| { + function_pointers.glGetQueryObjectuiv = @ptrCast(proc); + } else { + log.err("entry point glGetQueryObjectuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindBuffer")) |proc| { + function_pointers.glBindBuffer = @ptrCast(proc); + } else { + log.err("entry point glBindBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteBuffers")) |proc| { + function_pointers.glDeleteBuffers = @ptrCast(proc); + } else { + log.err("entry point glDeleteBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenBuffers")) |proc| { + function_pointers.glGenBuffers = @ptrCast(proc); + } else { + log.err("entry point glGenBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsBuffer")) |proc| { + function_pointers.glIsBuffer = @ptrCast(proc); + } else { + log.err("entry point glIsBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBufferData")) |proc| { + function_pointers.glBufferData = @ptrCast(proc); + } else { + log.err("entry point glBufferData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBufferSubData")) |proc| { + function_pointers.glBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetBufferSubData")) |proc| { + function_pointers.glGetBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glGetBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMapBuffer")) |proc| { + function_pointers.glMapBuffer = @ptrCast(proc); + } else { + log.err("entry point glMapBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUnmapBuffer")) |proc| { + function_pointers.glUnmapBuffer = @ptrCast(proc); + } else { + log.err("entry point glUnmapBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetBufferParameteriv")) |proc| { + function_pointers.glGetBufferParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetBufferParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetBufferPointerv")) |proc| { + function_pointers.glGetBufferPointerv = @ptrCast(proc); + } else { + log.err("entry point glGetBufferPointerv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlendEquationSeparate")) |proc| { + function_pointers.glBlendEquationSeparate = @ptrCast(proc); + } else { + log.err("entry point glBlendEquationSeparate not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawBuffers")) |proc| { + function_pointers.glDrawBuffers = @ptrCast(proc); + } else { + log.err("entry point glDrawBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glStencilOpSeparate")) |proc| { + function_pointers.glStencilOpSeparate = @ptrCast(proc); + } else { + log.err("entry point glStencilOpSeparate not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glStencilFuncSeparate")) |proc| { + function_pointers.glStencilFuncSeparate = @ptrCast(proc); + } else { + log.err("entry point glStencilFuncSeparate not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glStencilMaskSeparate")) |proc| { + function_pointers.glStencilMaskSeparate = @ptrCast(proc); + } else { + log.err("entry point glStencilMaskSeparate not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glAttachShader")) |proc| { + function_pointers.glAttachShader = @ptrCast(proc); + } else { + log.err("entry point glAttachShader not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindAttribLocation")) |proc| { + function_pointers.glBindAttribLocation = @ptrCast(proc); + } else { + log.err("entry point glBindAttribLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompileShader")) |proc| { + function_pointers.glCompileShader = @ptrCast(proc); + } else { + log.err("entry point glCompileShader not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateProgram")) |proc| { + function_pointers.glCreateProgram = @ptrCast(proc); + } else { + log.err("entry point glCreateProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateShader")) |proc| { + function_pointers.glCreateShader = @ptrCast(proc); + } else { + log.err("entry point glCreateShader not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteProgram")) |proc| { + function_pointers.glDeleteProgram = @ptrCast(proc); + } else { + log.err("entry point glDeleteProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteShader")) |proc| { + function_pointers.glDeleteShader = @ptrCast(proc); + } else { + log.err("entry point glDeleteShader not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDetachShader")) |proc| { + function_pointers.glDetachShader = @ptrCast(proc); + } else { + log.err("entry point glDetachShader not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDisableVertexAttribArray")) |proc| { + function_pointers.glDisableVertexAttribArray = @ptrCast(proc); + } else { + log.err("entry point glDisableVertexAttribArray not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEnableVertexAttribArray")) |proc| { + function_pointers.glEnableVertexAttribArray = @ptrCast(proc); + } else { + log.err("entry point glEnableVertexAttribArray not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveAttrib")) |proc| { + function_pointers.glGetActiveAttrib = @ptrCast(proc); + } else { + log.err("entry point glGetActiveAttrib not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveUniform")) |proc| { + function_pointers.glGetActiveUniform = @ptrCast(proc); + } else { + log.err("entry point glGetActiveUniform not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetAttachedShaders")) |proc| { + function_pointers.glGetAttachedShaders = @ptrCast(proc); + } else { + log.err("entry point glGetAttachedShaders not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetAttribLocation")) |proc| { + function_pointers.glGetAttribLocation = @ptrCast(proc); + } else { + log.err("entry point glGetAttribLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramiv")) |proc| { + function_pointers.glGetProgramiv = @ptrCast(proc); + } else { + log.err("entry point glGetProgramiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetProgramInfoLog")) |proc| { + function_pointers.glGetProgramInfoLog = @ptrCast(proc); + } else { + log.err("entry point glGetProgramInfoLog not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetShaderiv")) |proc| { + function_pointers.glGetShaderiv = @ptrCast(proc); + } else { + log.err("entry point glGetShaderiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetShaderInfoLog")) |proc| { + function_pointers.glGetShaderInfoLog = @ptrCast(proc); + } else { + log.err("entry point glGetShaderInfoLog not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetShaderSource")) |proc| { + function_pointers.glGetShaderSource = @ptrCast(proc); + } else { + log.err("entry point glGetShaderSource not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformLocation")) |proc| { + function_pointers.glGetUniformLocation = @ptrCast(proc); + } else { + log.err("entry point glGetUniformLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformfv")) |proc| { + function_pointers.glGetUniformfv = @ptrCast(proc); + } else { + log.err("entry point glGetUniformfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformiv")) |proc| { + function_pointers.glGetUniformiv = @ptrCast(proc); + } else { + log.err("entry point glGetUniformiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribdv")) |proc| { + function_pointers.glGetVertexAttribdv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribdv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribfv")) |proc| { + function_pointers.glGetVertexAttribfv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribiv")) |proc| { + function_pointers.glGetVertexAttribiv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribPointerv")) |proc| { + function_pointers.glGetVertexAttribPointerv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribPointerv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsProgram")) |proc| { + function_pointers.glIsProgram = @ptrCast(proc); + } else { + log.err("entry point glIsProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsShader")) |proc| { + function_pointers.glIsShader = @ptrCast(proc); + } else { + log.err("entry point glIsShader not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glLinkProgram")) |proc| { + function_pointers.glLinkProgram = @ptrCast(proc); + } else { + log.err("entry point glLinkProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glShaderSource")) |proc| { + function_pointers.glShaderSource = @ptrCast(proc); + } else { + log.err("entry point glShaderSource not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUseProgram")) |proc| { + function_pointers.glUseProgram = @ptrCast(proc); + } else { + log.err("entry point glUseProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1f")) |proc| { + function_pointers.glUniform1f = @ptrCast(proc); + } else { + log.err("entry point glUniform1f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2f")) |proc| { + function_pointers.glUniform2f = @ptrCast(proc); + } else { + log.err("entry point glUniform2f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3f")) |proc| { + function_pointers.glUniform3f = @ptrCast(proc); + } else { + log.err("entry point glUniform3f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4f")) |proc| { + function_pointers.glUniform4f = @ptrCast(proc); + } else { + log.err("entry point glUniform4f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1i")) |proc| { + function_pointers.glUniform1i = @ptrCast(proc); + } else { + log.err("entry point glUniform1i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2i")) |proc| { + function_pointers.glUniform2i = @ptrCast(proc); + } else { + log.err("entry point glUniform2i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3i")) |proc| { + function_pointers.glUniform3i = @ptrCast(proc); + } else { + log.err("entry point glUniform3i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4i")) |proc| { + function_pointers.glUniform4i = @ptrCast(proc); + } else { + log.err("entry point glUniform4i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1fv")) |proc| { + function_pointers.glUniform1fv = @ptrCast(proc); + } else { + log.err("entry point glUniform1fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2fv")) |proc| { + function_pointers.glUniform2fv = @ptrCast(proc); + } else { + log.err("entry point glUniform2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3fv")) |proc| { + function_pointers.glUniform3fv = @ptrCast(proc); + } else { + log.err("entry point glUniform3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4fv")) |proc| { + function_pointers.glUniform4fv = @ptrCast(proc); + } else { + log.err("entry point glUniform4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1iv")) |proc| { + function_pointers.glUniform1iv = @ptrCast(proc); + } else { + log.err("entry point glUniform1iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2iv")) |proc| { + function_pointers.glUniform2iv = @ptrCast(proc); + } else { + log.err("entry point glUniform2iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3iv")) |proc| { + function_pointers.glUniform3iv = @ptrCast(proc); + } else { + log.err("entry point glUniform3iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4iv")) |proc| { + function_pointers.glUniform4iv = @ptrCast(proc); + } else { + log.err("entry point glUniform4iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix2fv")) |proc| { + function_pointers.glUniformMatrix2fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix3fv")) |proc| { + function_pointers.glUniformMatrix3fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix4fv")) |proc| { + function_pointers.glUniformMatrix4fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glValidateProgram")) |proc| { + function_pointers.glValidateProgram = @ptrCast(proc); + } else { + log.err("entry point glValidateProgram not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib1d")) |proc| { + function_pointers.glVertexAttrib1d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib1d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib1dv")) |proc| { + function_pointers.glVertexAttrib1dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib1dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib1f")) |proc| { + function_pointers.glVertexAttrib1f = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib1f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib1fv")) |proc| { + function_pointers.glVertexAttrib1fv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib1fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib1s")) |proc| { + function_pointers.glVertexAttrib1s = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib1s not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib1sv")) |proc| { + function_pointers.glVertexAttrib1sv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib1sv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib2d")) |proc| { + function_pointers.glVertexAttrib2d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib2d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib2dv")) |proc| { + function_pointers.glVertexAttrib2dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib2dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib2f")) |proc| { + function_pointers.glVertexAttrib2f = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib2f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib2fv")) |proc| { + function_pointers.glVertexAttrib2fv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib2s")) |proc| { + function_pointers.glVertexAttrib2s = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib2s not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib2sv")) |proc| { + function_pointers.glVertexAttrib2sv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib2sv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib3d")) |proc| { + function_pointers.glVertexAttrib3d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib3d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib3dv")) |proc| { + function_pointers.glVertexAttrib3dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib3dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib3f")) |proc| { + function_pointers.glVertexAttrib3f = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib3f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib3fv")) |proc| { + function_pointers.glVertexAttrib3fv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib3s")) |proc| { + function_pointers.glVertexAttrib3s = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib3s not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib3sv")) |proc| { + function_pointers.glVertexAttrib3sv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib3sv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Nbv")) |proc| { + function_pointers.glVertexAttrib4Nbv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Nbv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Niv")) |proc| { + function_pointers.glVertexAttrib4Niv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Niv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Nsv")) |proc| { + function_pointers.glVertexAttrib4Nsv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Nsv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Nub")) |proc| { + function_pointers.glVertexAttrib4Nub = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Nub not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Nubv")) |proc| { + function_pointers.glVertexAttrib4Nubv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Nubv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Nuiv")) |proc| { + function_pointers.glVertexAttrib4Nuiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Nuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4Nusv")) |proc| { + function_pointers.glVertexAttrib4Nusv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4Nusv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4bv")) |proc| { + function_pointers.glVertexAttrib4bv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4bv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4d")) |proc| { + function_pointers.glVertexAttrib4d = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4d not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4dv")) |proc| { + function_pointers.glVertexAttrib4dv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4dv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4f")) |proc| { + function_pointers.glVertexAttrib4f = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4f not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4fv")) |proc| { + function_pointers.glVertexAttrib4fv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4iv")) |proc| { + function_pointers.glVertexAttrib4iv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4s")) |proc| { + function_pointers.glVertexAttrib4s = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4s not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4sv")) |proc| { + function_pointers.glVertexAttrib4sv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4sv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4ubv")) |proc| { + function_pointers.glVertexAttrib4ubv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4ubv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4uiv")) |proc| { + function_pointers.glVertexAttrib4uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttrib4usv")) |proc| { + function_pointers.glVertexAttrib4usv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttrib4usv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribPointer")) |proc| { + function_pointers.glVertexAttribPointer = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribPointer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix2x3fv")) |proc| { + function_pointers.glUniformMatrix2x3fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix2x3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix3x2fv")) |proc| { + function_pointers.glUniformMatrix3x2fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix3x2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix2x4fv")) |proc| { + function_pointers.glUniformMatrix2x4fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix2x4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix4x2fv")) |proc| { + function_pointers.glUniformMatrix4x2fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix4x2fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix3x4fv")) |proc| { + function_pointers.glUniformMatrix3x4fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix3x4fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformMatrix4x3fv")) |proc| { + function_pointers.glUniformMatrix4x3fv = @ptrCast(proc); + } else { + log.err("entry point glUniformMatrix4x3fv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glColorMaski")) |proc| { + function_pointers.glColorMaski = @ptrCast(proc); + } else { + log.err("entry point glColorMaski not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetBooleani_v")) |proc| { + function_pointers.glGetBooleani_v = @ptrCast(proc); + } else { + log.err("entry point glGetBooleani_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetIntegeri_v")) |proc| { + function_pointers.glGetIntegeri_v = @ptrCast(proc); + } else { + log.err("entry point glGetIntegeri_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEnablei")) |proc| { + function_pointers.glEnablei = @ptrCast(proc); + } else { + log.err("entry point glEnablei not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDisablei")) |proc| { + function_pointers.glDisablei = @ptrCast(proc); + } else { + log.err("entry point glDisablei not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsEnabledi")) |proc| { + function_pointers.glIsEnabledi = @ptrCast(proc); + } else { + log.err("entry point glIsEnabledi not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBeginTransformFeedback")) |proc| { + function_pointers.glBeginTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glBeginTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEndTransformFeedback")) |proc| { + function_pointers.glEndTransformFeedback = @ptrCast(proc); + } else { + log.err("entry point glEndTransformFeedback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindBufferRange")) |proc| { + function_pointers.glBindBufferRange = @ptrCast(proc); + } else { + log.err("entry point glBindBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindBufferBase")) |proc| { + function_pointers.glBindBufferBase = @ptrCast(proc); + } else { + log.err("entry point glBindBufferBase not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTransformFeedbackVaryings")) |proc| { + function_pointers.glTransformFeedbackVaryings = @ptrCast(proc); + } else { + log.err("entry point glTransformFeedbackVaryings not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTransformFeedbackVarying")) |proc| { + function_pointers.glGetTransformFeedbackVarying = @ptrCast(proc); + } else { + log.err("entry point glGetTransformFeedbackVarying not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClampColor")) |proc| { + function_pointers.glClampColor = @ptrCast(proc); + } else { + log.err("entry point glClampColor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBeginConditionalRender")) |proc| { + function_pointers.glBeginConditionalRender = @ptrCast(proc); + } else { + log.err("entry point glBeginConditionalRender not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEndConditionalRender")) |proc| { + function_pointers.glEndConditionalRender = @ptrCast(proc); + } else { + log.err("entry point glEndConditionalRender not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribIPointer")) |proc| { + function_pointers.glVertexAttribIPointer = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribIPointer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribIiv")) |proc| { + function_pointers.glGetVertexAttribIiv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexAttribIuiv")) |proc| { + function_pointers.glGetVertexAttribIuiv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexAttribIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI1i")) |proc| { + function_pointers.glVertexAttribI1i = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI1i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI2i")) |proc| { + function_pointers.glVertexAttribI2i = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI2i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI3i")) |proc| { + function_pointers.glVertexAttribI3i = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI3i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4i")) |proc| { + function_pointers.glVertexAttribI4i = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4i not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI1ui")) |proc| { + function_pointers.glVertexAttribI1ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI1ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI2ui")) |proc| { + function_pointers.glVertexAttribI2ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI2ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI3ui")) |proc| { + function_pointers.glVertexAttribI3ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI3ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4ui")) |proc| { + function_pointers.glVertexAttribI4ui = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI1iv")) |proc| { + function_pointers.glVertexAttribI1iv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI1iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI2iv")) |proc| { + function_pointers.glVertexAttribI2iv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI2iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI3iv")) |proc| { + function_pointers.glVertexAttribI3iv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI3iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4iv")) |proc| { + function_pointers.glVertexAttribI4iv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI1uiv")) |proc| { + function_pointers.glVertexAttribI1uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI1uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI2uiv")) |proc| { + function_pointers.glVertexAttribI2uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI2uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI3uiv")) |proc| { + function_pointers.glVertexAttribI3uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI3uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4uiv")) |proc| { + function_pointers.glVertexAttribI4uiv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4bv")) |proc| { + function_pointers.glVertexAttribI4bv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4bv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4sv")) |proc| { + function_pointers.glVertexAttribI4sv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4sv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4ubv")) |proc| { + function_pointers.glVertexAttribI4ubv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4ubv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribI4usv")) |proc| { + function_pointers.glVertexAttribI4usv = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribI4usv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformuiv")) |proc| { + function_pointers.glGetUniformuiv = @ptrCast(proc); + } else { + log.err("entry point glGetUniformuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindFragDataLocation")) |proc| { + function_pointers.glBindFragDataLocation = @ptrCast(proc); + } else { + log.err("entry point glBindFragDataLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetFragDataLocation")) |proc| { + function_pointers.glGetFragDataLocation = @ptrCast(proc); + } else { + log.err("entry point glGetFragDataLocation not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1ui")) |proc| { + function_pointers.glUniform1ui = @ptrCast(proc); + } else { + log.err("entry point glUniform1ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2ui")) |proc| { + function_pointers.glUniform2ui = @ptrCast(proc); + } else { + log.err("entry point glUniform2ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3ui")) |proc| { + function_pointers.glUniform3ui = @ptrCast(proc); + } else { + log.err("entry point glUniform3ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4ui")) |proc| { + function_pointers.glUniform4ui = @ptrCast(proc); + } else { + log.err("entry point glUniform4ui not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform1uiv")) |proc| { + function_pointers.glUniform1uiv = @ptrCast(proc); + } else { + log.err("entry point glUniform1uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform2uiv")) |proc| { + function_pointers.glUniform2uiv = @ptrCast(proc); + } else { + log.err("entry point glUniform2uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform3uiv")) |proc| { + function_pointers.glUniform3uiv = @ptrCast(proc); + } else { + log.err("entry point glUniform3uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniform4uiv")) |proc| { + function_pointers.glUniform4uiv = @ptrCast(proc); + } else { + log.err("entry point glUniform4uiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexParameterIiv")) |proc| { + function_pointers.glTexParameterIiv = @ptrCast(proc); + } else { + log.err("entry point glTexParameterIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexParameterIuiv")) |proc| { + function_pointers.glTexParameterIuiv = @ptrCast(proc); + } else { + log.err("entry point glTexParameterIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexParameterIiv")) |proc| { + function_pointers.glGetTexParameterIiv = @ptrCast(proc); + } else { + log.err("entry point glGetTexParameterIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTexParameterIuiv")) |proc| { + function_pointers.glGetTexParameterIuiv = @ptrCast(proc); + } else { + log.err("entry point glGetTexParameterIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearBufferiv")) |proc| { + function_pointers.glClearBufferiv = @ptrCast(proc); + } else { + log.err("entry point glClearBufferiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearBufferuiv")) |proc| { + function_pointers.glClearBufferuiv = @ptrCast(proc); + } else { + log.err("entry point glClearBufferuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearBufferfv")) |proc| { + function_pointers.glClearBufferfv = @ptrCast(proc); + } else { + log.err("entry point glClearBufferfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearBufferfi")) |proc| { + function_pointers.glClearBufferfi = @ptrCast(proc); + } else { + log.err("entry point glClearBufferfi not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetStringi")) |proc| { + function_pointers.glGetStringi = @ptrCast(proc); + } else { + log.err("entry point glGetStringi not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsRenderbuffer")) |proc| { + function_pointers.glIsRenderbuffer = @ptrCast(proc); + } else { + log.err("entry point glIsRenderbuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindRenderbuffer")) |proc| { + function_pointers.glBindRenderbuffer = @ptrCast(proc); + } else { + log.err("entry point glBindRenderbuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteRenderbuffers")) |proc| { + function_pointers.glDeleteRenderbuffers = @ptrCast(proc); + } else { + log.err("entry point glDeleteRenderbuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenRenderbuffers")) |proc| { + function_pointers.glGenRenderbuffers = @ptrCast(proc); + } else { + log.err("entry point glGenRenderbuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glRenderbufferStorage")) |proc| { + function_pointers.glRenderbufferStorage = @ptrCast(proc); + } else { + log.err("entry point glRenderbufferStorage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetRenderbufferParameteriv")) |proc| { + function_pointers.glGetRenderbufferParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetRenderbufferParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsFramebuffer")) |proc| { + function_pointers.glIsFramebuffer = @ptrCast(proc); + } else { + log.err("entry point glIsFramebuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindFramebuffer")) |proc| { + function_pointers.glBindFramebuffer = @ptrCast(proc); + } else { + log.err("entry point glBindFramebuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteFramebuffers")) |proc| { + function_pointers.glDeleteFramebuffers = @ptrCast(proc); + } else { + log.err("entry point glDeleteFramebuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenFramebuffers")) |proc| { + function_pointers.glGenFramebuffers = @ptrCast(proc); + } else { + log.err("entry point glGenFramebuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCheckFramebufferStatus")) |proc| { + function_pointers.glCheckFramebufferStatus = @ptrCast(proc); + } else { + log.err("entry point glCheckFramebufferStatus not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferTexture1D")) |proc| { + function_pointers.glFramebufferTexture1D = @ptrCast(proc); + } else { + log.err("entry point glFramebufferTexture1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferTexture2D")) |proc| { + function_pointers.glFramebufferTexture2D = @ptrCast(proc); + } else { + log.err("entry point glFramebufferTexture2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferTexture3D")) |proc| { + function_pointers.glFramebufferTexture3D = @ptrCast(proc); + } else { + log.err("entry point glFramebufferTexture3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferRenderbuffer")) |proc| { + function_pointers.glFramebufferRenderbuffer = @ptrCast(proc); + } else { + log.err("entry point glFramebufferRenderbuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetFramebufferAttachmentParameteriv")) |proc| { + function_pointers.glGetFramebufferAttachmentParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetFramebufferAttachmentParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenerateMipmap")) |proc| { + function_pointers.glGenerateMipmap = @ptrCast(proc); + } else { + log.err("entry point glGenerateMipmap not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlitFramebuffer")) |proc| { + function_pointers.glBlitFramebuffer = @ptrCast(proc); + } else { + log.err("entry point glBlitFramebuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glRenderbufferStorageMultisample")) |proc| { + function_pointers.glRenderbufferStorageMultisample = @ptrCast(proc); + } else { + log.err("entry point glRenderbufferStorageMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFramebufferTextureLayer")) |proc| { + function_pointers.glFramebufferTextureLayer = @ptrCast(proc); + } else { + log.err("entry point glFramebufferTextureLayer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMapBufferRange")) |proc| { + function_pointers.glMapBufferRange = @ptrCast(proc); + } else { + log.err("entry point glMapBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFlushMappedBufferRange")) |proc| { + function_pointers.glFlushMappedBufferRange = @ptrCast(proc); + } else { + log.err("entry point glFlushMappedBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindVertexArray")) |proc| { + function_pointers.glBindVertexArray = @ptrCast(proc); + } else { + log.err("entry point glBindVertexArray not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDeleteVertexArrays")) |proc| { + function_pointers.glDeleteVertexArrays = @ptrCast(proc); + } else { + log.err("entry point glDeleteVertexArrays not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenVertexArrays")) |proc| { + function_pointers.glGenVertexArrays = @ptrCast(proc); + } else { + log.err("entry point glGenVertexArrays not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glIsVertexArray")) |proc| { + function_pointers.glIsVertexArray = @ptrCast(proc); + } else { + log.err("entry point glIsVertexArray not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawArraysInstanced")) |proc| { + function_pointers.glDrawArraysInstanced = @ptrCast(proc); + } else { + log.err("entry point glDrawArraysInstanced not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDrawElementsInstanced")) |proc| { + function_pointers.glDrawElementsInstanced = @ptrCast(proc); + } else { + log.err("entry point glDrawElementsInstanced not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexBuffer")) |proc| { + function_pointers.glTexBuffer = @ptrCast(proc); + } else { + log.err("entry point glTexBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPrimitiveRestartIndex")) |proc| { + function_pointers.glPrimitiveRestartIndex = @ptrCast(proc); + } else { + log.err("entry point glPrimitiveRestartIndex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyBufferSubData")) |proc| { + function_pointers.glCopyBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glCopyBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformIndices")) |proc| { + function_pointers.glGetUniformIndices = @ptrCast(proc); + } else { + log.err("entry point glGetUniformIndices not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveUniformsiv")) |proc| { + function_pointers.glGetActiveUniformsiv = @ptrCast(proc); + } else { + log.err("entry point glGetActiveUniformsiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveUniformName")) |proc| { + function_pointers.glGetActiveUniformName = @ptrCast(proc); + } else { + log.err("entry point glGetActiveUniformName not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetUniformBlockIndex")) |proc| { + function_pointers.glGetUniformBlockIndex = @ptrCast(proc); + } else { + log.err("entry point glGetUniformBlockIndex not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveUniformBlockiv")) |proc| { + function_pointers.glGetActiveUniformBlockiv = @ptrCast(proc); + } else { + log.err("entry point glGetActiveUniformBlockiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetActiveUniformBlockName")) |proc| { + function_pointers.glGetActiveUniformBlockName = @ptrCast(proc); + } else { + log.err("entry point glGetActiveUniformBlockName not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUniformBlockBinding")) |proc| { + function_pointers.glUniformBlockBinding = @ptrCast(proc); + } else { + log.err("entry point glUniformBlockBinding not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTexStorage3DMultisample")) |proc| { + function_pointers.glTexStorage3DMultisample = @ptrCast(proc); + } else { + log.err("entry point glTexStorage3DMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureView")) |proc| { + function_pointers.glTextureView = @ptrCast(proc); + } else { + log.err("entry point glTextureView not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindVertexBuffer")) |proc| { + function_pointers.glBindVertexBuffer = @ptrCast(proc); + } else { + log.err("entry point glBindVertexBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribFormat")) |proc| { + function_pointers.glVertexAttribFormat = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribIFormat")) |proc| { + function_pointers.glVertexAttribIFormat = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribIFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribLFormat")) |proc| { + function_pointers.glVertexAttribLFormat = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribLFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexAttribBinding")) |proc| { + function_pointers.glVertexAttribBinding = @ptrCast(proc); + } else { + log.err("entry point glVertexAttribBinding not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexBindingDivisor")) |proc| { + function_pointers.glVertexBindingDivisor = @ptrCast(proc); + } else { + log.err("entry point glVertexBindingDivisor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDebugMessageControl")) |proc| { + function_pointers.glDebugMessageControl = @ptrCast(proc); + } else { + log.err("entry point glDebugMessageControl not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDebugMessageInsert")) |proc| { + function_pointers.glDebugMessageInsert = @ptrCast(proc); + } else { + log.err("entry point glDebugMessageInsert not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDebugMessageCallback")) |proc| { + function_pointers.glDebugMessageCallback = @ptrCast(proc); + } else { + log.err("entry point glDebugMessageCallback not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetDebugMessageLog")) |proc| { + function_pointers.glGetDebugMessageLog = @ptrCast(proc); + } else { + log.err("entry point glGetDebugMessageLog not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPushDebugGroup")) |proc| { + function_pointers.glPushDebugGroup = @ptrCast(proc); + } else { + log.err("entry point glPushDebugGroup not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glPopDebugGroup")) |proc| { + function_pointers.glPopDebugGroup = @ptrCast(proc); + } else { + log.err("entry point glPopDebugGroup not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glObjectLabel")) |proc| { + function_pointers.glObjectLabel = @ptrCast(proc); + } else { + log.err("entry point glObjectLabel not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetObjectLabel")) |proc| { + function_pointers.glGetObjectLabel = @ptrCast(proc); + } else { + log.err("entry point glGetObjectLabel not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glObjectPtrLabel")) |proc| { + function_pointers.glObjectPtrLabel = @ptrCast(proc); + } else { + log.err("entry point glObjectPtrLabel not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetObjectPtrLabel")) |proc| { + function_pointers.glGetObjectPtrLabel = @ptrCast(proc); + } else { + log.err("entry point glGetObjectPtrLabel not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetPointerv")) |proc| { + function_pointers.glGetPointerv = @ptrCast(proc); + } else { + log.err("entry point glGetPointerv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBufferStorage")) |proc| { + function_pointers.glBufferStorage = @ptrCast(proc); + } else { + log.err("entry point glBufferStorage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearTexImage")) |proc| { + function_pointers.glClearTexImage = @ptrCast(proc); + } else { + log.err("entry point glClearTexImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearTexSubImage")) |proc| { + function_pointers.glClearTexSubImage = @ptrCast(proc); + } else { + log.err("entry point glClearTexSubImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindBuffersBase")) |proc| { + function_pointers.glBindBuffersBase = @ptrCast(proc); + } else { + log.err("entry point glBindBuffersBase not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindBuffersRange")) |proc| { + function_pointers.glBindBuffersRange = @ptrCast(proc); + } else { + log.err("entry point glBindBuffersRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindTextures")) |proc| { + function_pointers.glBindTextures = @ptrCast(proc); + } else { + log.err("entry point glBindTextures not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindSamplers")) |proc| { + function_pointers.glBindSamplers = @ptrCast(proc); + } else { + log.err("entry point glBindSamplers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindImageTextures")) |proc| { + function_pointers.glBindImageTextures = @ptrCast(proc); + } else { + log.err("entry point glBindImageTextures not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindVertexBuffers")) |proc| { + function_pointers.glBindVertexBuffers = @ptrCast(proc); + } else { + log.err("entry point glBindVertexBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClipControl")) |proc| { + function_pointers.glClipControl = @ptrCast(proc); + } else { + log.err("entry point glClipControl not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateTransformFeedbacks")) |proc| { + function_pointers.glCreateTransformFeedbacks = @ptrCast(proc); + } else { + log.err("entry point glCreateTransformFeedbacks not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTransformFeedbackBufferBase")) |proc| { + function_pointers.glTransformFeedbackBufferBase = @ptrCast(proc); + } else { + log.err("entry point glTransformFeedbackBufferBase not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTransformFeedbackBufferRange")) |proc| { + function_pointers.glTransformFeedbackBufferRange = @ptrCast(proc); + } else { + log.err("entry point glTransformFeedbackBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTransformFeedbackiv")) |proc| { + function_pointers.glGetTransformFeedbackiv = @ptrCast(proc); + } else { + log.err("entry point glGetTransformFeedbackiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTransformFeedbacki_v")) |proc| { + function_pointers.glGetTransformFeedbacki_v = @ptrCast(proc); + } else { + log.err("entry point glGetTransformFeedbacki_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTransformFeedbacki64_v")) |proc| { + function_pointers.glGetTransformFeedbacki64_v = @ptrCast(proc); + } else { + log.err("entry point glGetTransformFeedbacki64_v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateBuffers")) |proc| { + function_pointers.glCreateBuffers = @ptrCast(proc); + } else { + log.err("entry point glCreateBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedBufferStorage")) |proc| { + function_pointers.glNamedBufferStorage = @ptrCast(proc); + } else { + log.err("entry point glNamedBufferStorage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedBufferData")) |proc| { + function_pointers.glNamedBufferData = @ptrCast(proc); + } else { + log.err("entry point glNamedBufferData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedBufferSubData")) |proc| { + function_pointers.glNamedBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glNamedBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyNamedBufferSubData")) |proc| { + function_pointers.glCopyNamedBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glCopyNamedBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearNamedBufferData")) |proc| { + function_pointers.glClearNamedBufferData = @ptrCast(proc); + } else { + log.err("entry point glClearNamedBufferData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearNamedBufferSubData")) |proc| { + function_pointers.glClearNamedBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glClearNamedBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMapNamedBuffer")) |proc| { + function_pointers.glMapNamedBuffer = @ptrCast(proc); + } else { + log.err("entry point glMapNamedBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMapNamedBufferRange")) |proc| { + function_pointers.glMapNamedBufferRange = @ptrCast(proc); + } else { + log.err("entry point glMapNamedBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glUnmapNamedBuffer")) |proc| { + function_pointers.glUnmapNamedBuffer = @ptrCast(proc); + } else { + log.err("entry point glUnmapNamedBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glFlushMappedNamedBufferRange")) |proc| { + function_pointers.glFlushMappedNamedBufferRange = @ptrCast(proc); + } else { + log.err("entry point glFlushMappedNamedBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedBufferParameteriv")) |proc| { + function_pointers.glGetNamedBufferParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetNamedBufferParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedBufferParameteri64v")) |proc| { + function_pointers.glGetNamedBufferParameteri64v = @ptrCast(proc); + } else { + log.err("entry point glGetNamedBufferParameteri64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedBufferPointerv")) |proc| { + function_pointers.glGetNamedBufferPointerv = @ptrCast(proc); + } else { + log.err("entry point glGetNamedBufferPointerv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedBufferSubData")) |proc| { + function_pointers.glGetNamedBufferSubData = @ptrCast(proc); + } else { + log.err("entry point glGetNamedBufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateFramebuffers")) |proc| { + function_pointers.glCreateFramebuffers = @ptrCast(proc); + } else { + log.err("entry point glCreateFramebuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferRenderbuffer")) |proc| { + function_pointers.glNamedFramebufferRenderbuffer = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferRenderbuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferParameteri")) |proc| { + function_pointers.glNamedFramebufferParameteri = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferTexture")) |proc| { + function_pointers.glNamedFramebufferTexture = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferTexture not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferTextureLayer")) |proc| { + function_pointers.glNamedFramebufferTextureLayer = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferTextureLayer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferDrawBuffer")) |proc| { + function_pointers.glNamedFramebufferDrawBuffer = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferDrawBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferDrawBuffers")) |proc| { + function_pointers.glNamedFramebufferDrawBuffers = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferDrawBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedFramebufferReadBuffer")) |proc| { + function_pointers.glNamedFramebufferReadBuffer = @ptrCast(proc); + } else { + log.err("entry point glNamedFramebufferReadBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateNamedFramebufferData")) |proc| { + function_pointers.glInvalidateNamedFramebufferData = @ptrCast(proc); + } else { + log.err("entry point glInvalidateNamedFramebufferData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glInvalidateNamedFramebufferSubData")) |proc| { + function_pointers.glInvalidateNamedFramebufferSubData = @ptrCast(proc); + } else { + log.err("entry point glInvalidateNamedFramebufferSubData not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearNamedFramebufferiv")) |proc| { + function_pointers.glClearNamedFramebufferiv = @ptrCast(proc); + } else { + log.err("entry point glClearNamedFramebufferiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearNamedFramebufferuiv")) |proc| { + function_pointers.glClearNamedFramebufferuiv = @ptrCast(proc); + } else { + log.err("entry point glClearNamedFramebufferuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearNamedFramebufferfv")) |proc| { + function_pointers.glClearNamedFramebufferfv = @ptrCast(proc); + } else { + log.err("entry point glClearNamedFramebufferfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glClearNamedFramebufferfi")) |proc| { + function_pointers.glClearNamedFramebufferfi = @ptrCast(proc); + } else { + log.err("entry point glClearNamedFramebufferfi not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBlitNamedFramebuffer")) |proc| { + function_pointers.glBlitNamedFramebuffer = @ptrCast(proc); + } else { + log.err("entry point glBlitNamedFramebuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCheckNamedFramebufferStatus")) |proc| { + function_pointers.glCheckNamedFramebufferStatus = @ptrCast(proc); + } else { + log.err("entry point glCheckNamedFramebufferStatus not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedFramebufferParameteriv")) |proc| { + function_pointers.glGetNamedFramebufferParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetNamedFramebufferParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedFramebufferAttachmentParameteriv")) |proc| { + function_pointers.glGetNamedFramebufferAttachmentParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetNamedFramebufferAttachmentParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateRenderbuffers")) |proc| { + function_pointers.glCreateRenderbuffers = @ptrCast(proc); + } else { + log.err("entry point glCreateRenderbuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedRenderbufferStorage")) |proc| { + function_pointers.glNamedRenderbufferStorage = @ptrCast(proc); + } else { + log.err("entry point glNamedRenderbufferStorage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glNamedRenderbufferStorageMultisample")) |proc| { + function_pointers.glNamedRenderbufferStorageMultisample = @ptrCast(proc); + } else { + log.err("entry point glNamedRenderbufferStorageMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetNamedRenderbufferParameteriv")) |proc| { + function_pointers.glGetNamedRenderbufferParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetNamedRenderbufferParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateTextures")) |proc| { + function_pointers.glCreateTextures = @ptrCast(proc); + } else { + log.err("entry point glCreateTextures not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureBuffer")) |proc| { + function_pointers.glTextureBuffer = @ptrCast(proc); + } else { + log.err("entry point glTextureBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureBufferRange")) |proc| { + function_pointers.glTextureBufferRange = @ptrCast(proc); + } else { + log.err("entry point glTextureBufferRange not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureStorage1D")) |proc| { + function_pointers.glTextureStorage1D = @ptrCast(proc); + } else { + log.err("entry point glTextureStorage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureStorage2D")) |proc| { + function_pointers.glTextureStorage2D = @ptrCast(proc); + } else { + log.err("entry point glTextureStorage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureStorage3D")) |proc| { + function_pointers.glTextureStorage3D = @ptrCast(proc); + } else { + log.err("entry point glTextureStorage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureStorage2DMultisample")) |proc| { + function_pointers.glTextureStorage2DMultisample = @ptrCast(proc); + } else { + log.err("entry point glTextureStorage2DMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureStorage3DMultisample")) |proc| { + function_pointers.glTextureStorage3DMultisample = @ptrCast(proc); + } else { + log.err("entry point glTextureStorage3DMultisample not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureSubImage1D")) |proc| { + function_pointers.glTextureSubImage1D = @ptrCast(proc); + } else { + log.err("entry point glTextureSubImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureSubImage2D")) |proc| { + function_pointers.glTextureSubImage2D = @ptrCast(proc); + } else { + log.err("entry point glTextureSubImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureSubImage3D")) |proc| { + function_pointers.glTextureSubImage3D = @ptrCast(proc); + } else { + log.err("entry point glTextureSubImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTextureSubImage1D")) |proc| { + function_pointers.glCompressedTextureSubImage1D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTextureSubImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTextureSubImage2D")) |proc| { + function_pointers.glCompressedTextureSubImage2D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTextureSubImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCompressedTextureSubImage3D")) |proc| { + function_pointers.glCompressedTextureSubImage3D = @ptrCast(proc); + } else { + log.err("entry point glCompressedTextureSubImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTextureSubImage1D")) |proc| { + function_pointers.glCopyTextureSubImage1D = @ptrCast(proc); + } else { + log.err("entry point glCopyTextureSubImage1D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTextureSubImage2D")) |proc| { + function_pointers.glCopyTextureSubImage2D = @ptrCast(proc); + } else { + log.err("entry point glCopyTextureSubImage2D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCopyTextureSubImage3D")) |proc| { + function_pointers.glCopyTextureSubImage3D = @ptrCast(proc); + } else { + log.err("entry point glCopyTextureSubImage3D not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureParameterf")) |proc| { + function_pointers.glTextureParameterf = @ptrCast(proc); + } else { + log.err("entry point glTextureParameterf not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureParameterfv")) |proc| { + function_pointers.glTextureParameterfv = @ptrCast(proc); + } else { + log.err("entry point glTextureParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureParameteri")) |proc| { + function_pointers.glTextureParameteri = @ptrCast(proc); + } else { + log.err("entry point glTextureParameteri not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureParameterIiv")) |proc| { + function_pointers.glTextureParameterIiv = @ptrCast(proc); + } else { + log.err("entry point glTextureParameterIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureParameterIuiv")) |proc| { + function_pointers.glTextureParameterIuiv = @ptrCast(proc); + } else { + log.err("entry point glTextureParameterIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureParameteriv")) |proc| { + function_pointers.glTextureParameteriv = @ptrCast(proc); + } else { + log.err("entry point glTextureParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGenerateTextureMipmap")) |proc| { + function_pointers.glGenerateTextureMipmap = @ptrCast(proc); + } else { + log.err("entry point glGenerateTextureMipmap not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glBindTextureUnit")) |proc| { + function_pointers.glBindTextureUnit = @ptrCast(proc); + } else { + log.err("entry point glBindTextureUnit not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureImage")) |proc| { + function_pointers.glGetTextureImage = @ptrCast(proc); + } else { + log.err("entry point glGetTextureImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetCompressedTextureImage")) |proc| { + function_pointers.glGetCompressedTextureImage = @ptrCast(proc); + } else { + log.err("entry point glGetCompressedTextureImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureLevelParameterfv")) |proc| { + function_pointers.glGetTextureLevelParameterfv = @ptrCast(proc); + } else { + log.err("entry point glGetTextureLevelParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureLevelParameteriv")) |proc| { + function_pointers.glGetTextureLevelParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetTextureLevelParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureParameterfv")) |proc| { + function_pointers.glGetTextureParameterfv = @ptrCast(proc); + } else { + log.err("entry point glGetTextureParameterfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureParameterIiv")) |proc| { + function_pointers.glGetTextureParameterIiv = @ptrCast(proc); + } else { + log.err("entry point glGetTextureParameterIiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureParameterIuiv")) |proc| { + function_pointers.glGetTextureParameterIuiv = @ptrCast(proc); + } else { + log.err("entry point glGetTextureParameterIuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureParameteriv")) |proc| { + function_pointers.glGetTextureParameteriv = @ptrCast(proc); + } else { + log.err("entry point glGetTextureParameteriv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateVertexArrays")) |proc| { + function_pointers.glCreateVertexArrays = @ptrCast(proc); + } else { + log.err("entry point glCreateVertexArrays not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glDisableVertexArrayAttrib")) |proc| { + function_pointers.glDisableVertexArrayAttrib = @ptrCast(proc); + } else { + log.err("entry point glDisableVertexArrayAttrib not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glEnableVertexArrayAttrib")) |proc| { + function_pointers.glEnableVertexArrayAttrib = @ptrCast(proc); + } else { + log.err("entry point glEnableVertexArrayAttrib not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayElementBuffer")) |proc| { + function_pointers.glVertexArrayElementBuffer = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayElementBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayVertexBuffer")) |proc| { + function_pointers.glVertexArrayVertexBuffer = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayVertexBuffer not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayVertexBuffers")) |proc| { + function_pointers.glVertexArrayVertexBuffers = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayVertexBuffers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayAttribBinding")) |proc| { + function_pointers.glVertexArrayAttribBinding = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayAttribBinding not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayAttribFormat")) |proc| { + function_pointers.glVertexArrayAttribFormat = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayAttribFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayAttribIFormat")) |proc| { + function_pointers.glVertexArrayAttribIFormat = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayAttribIFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayAttribLFormat")) |proc| { + function_pointers.glVertexArrayAttribLFormat = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayAttribLFormat not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glVertexArrayBindingDivisor")) |proc| { + function_pointers.glVertexArrayBindingDivisor = @ptrCast(proc); + } else { + log.err("entry point glVertexArrayBindingDivisor not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexArrayiv")) |proc| { + function_pointers.glGetVertexArrayiv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexArrayiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexArrayIndexediv")) |proc| { + function_pointers.glGetVertexArrayIndexediv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexArrayIndexediv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetVertexArrayIndexed64iv")) |proc| { + function_pointers.glGetVertexArrayIndexed64iv = @ptrCast(proc); + } else { + log.err("entry point glGetVertexArrayIndexed64iv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateSamplers")) |proc| { + function_pointers.glCreateSamplers = @ptrCast(proc); + } else { + log.err("entry point glCreateSamplers not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateProgramPipelines")) |proc| { + function_pointers.glCreateProgramPipelines = @ptrCast(proc); + } else { + log.err("entry point glCreateProgramPipelines not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glCreateQueries")) |proc| { + function_pointers.glCreateQueries = @ptrCast(proc); + } else { + log.err("entry point glCreateQueries not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryBufferObjecti64v")) |proc| { + function_pointers.glGetQueryBufferObjecti64v = @ptrCast(proc); + } else { + log.err("entry point glGetQueryBufferObjecti64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryBufferObjectiv")) |proc| { + function_pointers.glGetQueryBufferObjectiv = @ptrCast(proc); + } else { + log.err("entry point glGetQueryBufferObjectiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryBufferObjectui64v")) |proc| { + function_pointers.glGetQueryBufferObjectui64v = @ptrCast(proc); + } else { + log.err("entry point glGetQueryBufferObjectui64v not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetQueryBufferObjectuiv")) |proc| { + function_pointers.glGetQueryBufferObjectuiv = @ptrCast(proc); + } else { + log.err("entry point glGetQueryBufferObjectuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glMemoryBarrierByRegion")) |proc| { + function_pointers.glMemoryBarrierByRegion = @ptrCast(proc); + } else { + log.err("entry point glMemoryBarrierByRegion not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetTextureSubImage")) |proc| { + function_pointers.glGetTextureSubImage = @ptrCast(proc); + } else { + log.err("entry point glGetTextureSubImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetCompressedTextureSubImage")) |proc| { + function_pointers.glGetCompressedTextureSubImage = @ptrCast(proc); + } else { + log.err("entry point glGetCompressedTextureSubImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetGraphicsResetStatus")) |proc| { + function_pointers.glGetGraphicsResetStatus = @ptrCast(proc); + } else { + log.err("entry point glGetGraphicsResetStatus not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetnCompressedTexImage")) |proc| { + function_pointers.glGetnCompressedTexImage = @ptrCast(proc); + } else { + log.err("entry point glGetnCompressedTexImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetnTexImage")) |proc| { + function_pointers.glGetnTexImage = @ptrCast(proc); + } else { + log.err("entry point glGetnTexImage not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetnUniformdv")) |proc| { + function_pointers.glGetnUniformdv = @ptrCast(proc); + } else { + log.err("entry point glGetnUniformdv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetnUniformfv")) |proc| { + function_pointers.glGetnUniformfv = @ptrCast(proc); + } else { + log.err("entry point glGetnUniformfv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetnUniformiv")) |proc| { + function_pointers.glGetnUniformiv = @ptrCast(proc); + } else { + log.err("entry point glGetnUniformiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glGetnUniformuiv")) |proc| { + function_pointers.glGetnUniformuiv = @ptrCast(proc); + } else { + log.err("entry point glGetnUniformuiv not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glReadnPixels")) |proc| { + function_pointers.glReadnPixels = @ptrCast(proc); + } else { + log.err("entry point glReadnPixels not found!", .{}); + success = false; + } + if(get_proc_address(load_ctx, "glTextureBarrier")) |proc| { + function_pointers.glTextureBarrier = @ptrCast(proc); + } else { + log.err("entry point glTextureBarrier not found!", .{}); + success = false; + } + if(!success) + return error.EntryPointNotFound; +} + +const function_signatures = struct { + const glTexStorage2D = fn(_target: GLenum, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glTexStorage1D = fn(_target: GLenum, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei) callconv(.C) void; + const glDrawTransformFeedbackStreamInstanced = fn(_mode: GLenum, _id: GLuint, _stream: GLuint, _instancecount: GLsizei) callconv(.C) void; + const glDrawTransformFeedbackInstanced = fn(_mode: GLenum, _id: GLuint, _instancecount: GLsizei) callconv(.C) void; + const glTexStorage3D = fn(_target: GLenum, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei) callconv(.C) void; + const glMemoryBarrier = fn(_barriers: GLbitfield) callconv(.C) void; + const glBindImageTexture = fn(_unit: GLuint, _texture: GLuint, _level: GLint, _layered: GLboolean, _layer: GLint, _access: GLenum, _format: GLenum) callconv(.C) void; + const glGetActiveAtomicCounterBufferiv = fn(_program: GLuint, _bufferIndex: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetInternalformativ = fn(_target: GLenum, _internalformat: GLenum, _pname: GLenum, _count: GLsizei, _params: [*c]GLint) callconv(.C) void; + const glDrawElementsInstancedBaseVertexBaseInstance = fn(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei, _basevertex: GLint, _baseinstance: GLuint) callconv(.C) void; + const glDrawElementsInstancedBaseInstance = fn(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei, _baseinstance: GLuint) callconv(.C) void; + const glDrawArraysInstancedBaseInstance = fn(_mode: GLenum, _first: GLint, _count: GLsizei, _instancecount: GLsizei, _baseinstance: GLuint) callconv(.C) void; + const glGetDoublei_v = fn(_target: GLenum, _index: GLuint, _data: [*c]GLdouble) callconv(.C) void; + const glGetFloati_v = fn(_target: GLenum, _index: GLuint, _data: [*c]GLfloat) callconv(.C) void; + const glDepthRangeIndexed = fn(_index: GLuint, _n: GLdouble, _f: GLdouble) callconv(.C) void; + const glDepthRangeArrayv = fn(_first: GLuint, _count: GLsizei, _v: [*c]const GLdouble) callconv(.C) void; + const glScissorIndexedv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glScissorIndexed = fn(_index: GLuint, _left: GLint, _bottom: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glScissorArrayv = fn(_first: GLuint, _count: GLsizei, _v: [*c]const GLint) callconv(.C) void; + const glViewportIndexedfv = fn(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void; + const glViewportIndexedf = fn(_index: GLuint, _x: GLfloat, _y: GLfloat, _w: GLfloat, _h: GLfloat) callconv(.C) void; + const glViewportArrayv = fn(_first: GLuint, _count: GLsizei, _v: [*c]const GLfloat) callconv(.C) void; + const glGetVertexAttribLdv = fn(_index: GLuint, _pname: GLenum, _params: [*c]GLdouble) callconv(.C) void; + const glVertexAttribLPointer = fn(_index: GLuint, _size: GLint, _type: GLenum, _stride: GLsizei, _pointer: ?*const anyopaque) callconv(.C) void; + const glVertexAttribL4dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttribL3dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttribL2dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttribL1dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttribL4d = fn(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble, _w: GLdouble) callconv(.C) void; + const glVertexAttribL3d = fn(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble) callconv(.C) void; + const glVertexAttribL2d = fn(_index: GLuint, _x: GLdouble, _y: GLdouble) callconv(.C) void; + const glVertexAttribL1d = fn(_index: GLuint, _x: GLdouble) callconv(.C) void; + const glValidateProgramPipeline = fn(_pipeline: GLuint) callconv(.C) void; + const glProgramUniformMatrix4x3dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix3x4dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix4x2dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix2x4dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix3x2dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix2x3dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix4x3fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix3x4fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix4x2fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix2x4fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix3x2fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix2x3fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix4dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix3dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix2dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniformMatrix4fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix3fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniformMatrix2fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniform4uiv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glProgramUniform4ui = fn(_program: GLuint, _location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint, _v3: GLuint) callconv(.C) void; + const glProgramUniform4dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniform4d = fn(_program: GLuint, _location: GLint, _v0: GLdouble, _v1: GLdouble, _v2: GLdouble, _v3: GLdouble) callconv(.C) void; + const glProgramUniform4fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniform4f = fn(_program: GLuint, _location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat, _v3: GLfloat) callconv(.C) void; + const glProgramUniform4iv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glProgramUniform4i = fn(_program: GLuint, _location: GLint, _v0: GLint, _v1: GLint, _v2: GLint, _v3: GLint) callconv(.C) void; + const glProgramUniform3uiv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glProgramUniform3ui = fn(_program: GLuint, _location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint) callconv(.C) void; + const glProgramUniform3dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniform3d = fn(_program: GLuint, _location: GLint, _v0: GLdouble, _v1: GLdouble, _v2: GLdouble) callconv(.C) void; + const glProgramUniform3fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniform3f = fn(_program: GLuint, _location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat) callconv(.C) void; + const glProgramUniform3iv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glProgramUniform3i = fn(_program: GLuint, _location: GLint, _v0: GLint, _v1: GLint, _v2: GLint) callconv(.C) void; + const glUseProgramStages = fn(_pipeline: GLuint, _stages: GLbitfield, _program: GLuint) callconv(.C) void; + const glProgramParameteri = fn(_program: GLuint, _pname: GLenum, _value: GLint) callconv(.C) void; + const glGetShaderPrecisionFormat = fn(_shadertype: GLenum, _precisiontype: GLenum, _range: [*c]GLint, _precision: [*c]GLint) callconv(.C) void; + const glShaderBinary = fn(_count: GLsizei, _shaders: [*c]const GLuint, _binaryFormat: GLenum, _binary: ?*const anyopaque, _length: GLsizei) callconv(.C) void; + const glReleaseShaderCompiler = fn() callconv(.C) void; + const glGetQueryIndexediv = fn(_target: GLenum, _index: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glEndQueryIndexed = fn(_target: GLenum, _index: GLuint) callconv(.C) void; + const glBeginQueryIndexed = fn(_target: GLenum, _index: GLuint, _id: GLuint) callconv(.C) void; + const glDrawTransformFeedbackStream = fn(_mode: GLenum, _id: GLuint, _stream: GLuint) callconv(.C) void; + const glDrawTransformFeedback = fn(_mode: GLenum, _id: GLuint) callconv(.C) void; + const glResumeTransformFeedback = fn() callconv(.C) void; + const glPauseTransformFeedback = fn() callconv(.C) void; + const glGetProgramStageiv = fn(_program: GLuint, _shadertype: GLenum, _pname: GLenum, _values: [*c]GLint) callconv(.C) void; + const glGetUniformSubroutineuiv = fn(_shadertype: GLenum, _location: GLint, _params: [*c]GLuint) callconv(.C) void; + const glUniformSubroutinesuiv = fn(_shadertype: GLenum, _count: GLsizei, _indices: [*c]const GLuint) callconv(.C) void; + const glGetActiveSubroutineName = fn(_program: GLuint, _shadertype: GLenum, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _name: [*c]GLchar) callconv(.C) void; + const glCullFace = fn(_mode: GLenum) callconv(.C) void; + const glFrontFace = fn(_mode: GLenum) callconv(.C) void; + const glHint = fn(_target: GLenum, _mode: GLenum) callconv(.C) void; + const glLineWidth = fn(_width: GLfloat) callconv(.C) void; + const glPointSize = fn(_size: GLfloat) callconv(.C) void; + const glPolygonMode = fn(_face: GLenum, _mode: GLenum) callconv(.C) void; + const glScissor = fn(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glTexParameterf = fn(_target: GLenum, _pname: GLenum, _param: GLfloat) callconv(.C) void; + const glTexParameterfv = fn(_target: GLenum, _pname: GLenum, _params: [*c]const GLfloat) callconv(.C) void; + const glTexParameteri = fn(_target: GLenum, _pname: GLenum, _param: GLint) callconv(.C) void; + const glTexParameteriv = fn(_target: GLenum, _pname: GLenum, _params: [*c]const GLint) callconv(.C) void; + const glTexImage1D = fn(_target: GLenum, _level: GLint, _internalformat: GLint, _width: GLsizei, _border: GLint, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glTexImage2D = fn(_target: GLenum, _level: GLint, _internalformat: GLint, _width: GLsizei, _height: GLsizei, _border: GLint, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glDrawBuffer = fn(_buf: GLenum) callconv(.C) void; + const glClear = fn(_mask: GLbitfield) callconv(.C) void; + const glClearColor = fn(_red: GLfloat, _green: GLfloat, _blue: GLfloat, _alpha: GLfloat) callconv(.C) void; + const glClearStencil = fn(_s: GLint) callconv(.C) void; + const glClearDepth = fn(_depth: GLdouble) callconv(.C) void; + const glStencilMask = fn(_mask: GLuint) callconv(.C) void; + const glColorMask = fn(_red: GLboolean, _green: GLboolean, _blue: GLboolean, _alpha: GLboolean) callconv(.C) void; + const glDepthMask = fn(_flag: GLboolean) callconv(.C) void; + const glDisable = fn(_cap: GLenum) callconv(.C) void; + const glEnable = fn(_cap: GLenum) callconv(.C) void; + const glFinish = fn() callconv(.C) void; + const glFlush = fn() callconv(.C) void; + const glBlendFunc = fn(_sfactor: GLenum, _dfactor: GLenum) callconv(.C) void; + const glLogicOp = fn(_opcode: GLenum) callconv(.C) void; + const glStencilFunc = fn(_func: GLenum, _ref: GLint, _mask: GLuint) callconv(.C) void; + const glStencilOp = fn(_fail: GLenum, _zfail: GLenum, _zpass: GLenum) callconv(.C) void; + const glDepthFunc = fn(_func: GLenum) callconv(.C) void; + const glPixelStoref = fn(_pname: GLenum, _param: GLfloat) callconv(.C) void; + const glPixelStorei = fn(_pname: GLenum, _param: GLint) callconv(.C) void; + const glReadBuffer = fn(_src: GLenum) callconv(.C) void; + const glReadPixels = fn(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*anyopaque) callconv(.C) void; + const glGetBooleanv = fn(_pname: GLenum, _data: [*c]GLboolean) callconv(.C) void; + const glGetDoublev = fn(_pname: GLenum, _data: [*c]GLdouble) callconv(.C) void; + const glGetError = fn() callconv(.C) GLenum; + const glGetFloatv = fn(_pname: GLenum, _data: [*c]GLfloat) callconv(.C) void; + const glGetIntegerv = fn(_pname: GLenum, _data: [*c]GLint) callconv(.C) void; + const glGetString = fn(_name: GLenum) callconv(.C) ?[*:0]const GLubyte; + const glGetTexImage = fn(_target: GLenum, _level: GLint, _format: GLenum, _type: GLenum, _pixels: ?*anyopaque) callconv(.C) void; + const glGetTexParameterfv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void; + const glGetTexParameteriv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetTexLevelParameterfv = fn(_target: GLenum, _level: GLint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void; + const glGetTexLevelParameteriv = fn(_target: GLenum, _level: GLint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glIsEnabled = fn(_cap: GLenum) callconv(.C) GLboolean; + const glDepthRange = fn(_n: GLdouble, _f: GLdouble) callconv(.C) void; + const glViewport = fn(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glTexStorage2DMultisample = fn(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void; + const glTexBufferRange = fn(_target: GLenum, _internalformat: GLenum, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void; + const glShaderStorageBlockBinding = fn(_program: GLuint, _storageBlockIndex: GLuint, _storageBlockBinding: GLuint) callconv(.C) void; + const glGetProgramResourceLocationIndex = fn(_program: GLuint, _programInterface: GLenum, _name: [*c]const GLchar) callconv(.C) GLint; + const glGetProgramResourceLocation = fn(_program: GLuint, _programInterface: GLenum, _name: [*c]const GLchar) callconv(.C) GLint; + const glGetProgramResourceiv = fn(_program: GLuint, _programInterface: GLenum, _index: GLuint, _propCount: GLsizei, _props: [*c]const GLenum, _count: GLsizei, _length: [*c]GLsizei, _params: [*c]GLint) callconv(.C) void; + const glGetProgramResourceName = fn(_program: GLuint, _programInterface: GLenum, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _name: [*c]GLchar) callconv(.C) void; + const glGetProgramResourceIndex = fn(_program: GLuint, _programInterface: GLenum, _name: [*c]const GLchar) callconv(.C) GLuint; + const glGetProgramInterfaceiv = fn(_program: GLuint, _programInterface: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glMultiDrawElementsIndirect = fn(_mode: GLenum, _type: GLenum, _indirect: ?*const anyopaque, _drawcount: GLsizei, _stride: GLsizei) callconv(.C) void; + const glMultiDrawArraysIndirect = fn(_mode: GLenum, _indirect: ?*const anyopaque, _drawcount: GLsizei, _stride: GLsizei) callconv(.C) void; + const glInvalidateSubFramebuffer = fn(_target: GLenum, _numAttachments: GLsizei, _attachments: [*c]const GLenum, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glInvalidateFramebuffer = fn(_target: GLenum, _numAttachments: GLsizei, _attachments: [*c]const GLenum) callconv(.C) void; + const glInvalidateBufferData = fn(_buffer: GLuint) callconv(.C) void; + const glInvalidateBufferSubData = fn(_buffer: GLuint, _offset: GLintptr, _length: GLsizeiptr) callconv(.C) void; + const glInvalidateTexImage = fn(_texture: GLuint, _level: GLint) callconv(.C) void; + const glInvalidateTexSubImage = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei) callconv(.C) void; + const glGetInternalformati64v = fn(_target: GLenum, _internalformat: GLenum, _pname: GLenum, _count: GLsizei, _params: [*c]GLint64) callconv(.C) void; + const glGetFramebufferParameteriv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glFramebufferParameteri = fn(_target: GLenum, _pname: GLenum, _param: GLint) callconv(.C) void; + const glCopyImageSubData = fn(_srcName: GLuint, _srcTarget: GLenum, _srcLevel: GLint, _srcX: GLint, _srcY: GLint, _srcZ: GLint, _dstName: GLuint, _dstTarget: GLenum, _dstLevel: GLint, _dstX: GLint, _dstY: GLint, _dstZ: GLint, _srcWidth: GLsizei, _srcHeight: GLsizei, _srcDepth: GLsizei) callconv(.C) void; + const glDispatchComputeIndirect = fn(_indirect: GLintptr) callconv(.C) void; + const glDispatchCompute = fn(_num_groups_x: GLuint, _num_groups_y: GLuint, _num_groups_z: GLuint) callconv(.C) void; + const glClearBufferSubData = fn(_target: GLenum, _internalformat: GLenum, _offset: GLintptr, _size: GLsizeiptr, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void; + const glClearBufferData = fn(_target: GLenum, _internalformat: GLenum, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void; + const glGetProgramPipelineInfoLog = fn(_pipeline: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _infoLog: [*c]GLchar) callconv(.C) void; + const glProgramUniform2uiv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glProgramUniform2ui = fn(_program: GLuint, _location: GLint, _v0: GLuint, _v1: GLuint) callconv(.C) void; + const glProgramUniform2dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniform2d = fn(_program: GLuint, _location: GLint, _v0: GLdouble, _v1: GLdouble) callconv(.C) void; + const glProgramUniform2fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniform2f = fn(_program: GLuint, _location: GLint, _v0: GLfloat, _v1: GLfloat) callconv(.C) void; + const glProgramUniform2iv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glProgramUniform2i = fn(_program: GLuint, _location: GLint, _v0: GLint, _v1: GLint) callconv(.C) void; + const glProgramUniform1uiv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glProgramUniform1ui = fn(_program: GLuint, _location: GLint, _v0: GLuint) callconv(.C) void; + const glProgramUniform1dv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glProgramUniform1d = fn(_program: GLuint, _location: GLint, _v0: GLdouble) callconv(.C) void; + const glProgramUniform1fv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glProgramUniform1f = fn(_program: GLuint, _location: GLint, _v0: GLfloat) callconv(.C) void; + const glProgramUniform1iv = fn(_program: GLuint, _location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glProgramUniform1i = fn(_program: GLuint, _location: GLint, _v0: GLint) callconv(.C) void; + const glGetProgramPipelineiv = fn(_pipeline: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glIsProgramPipeline = fn(_pipeline: GLuint) callconv(.C) GLboolean; + const glGenProgramPipelines = fn(_n: GLsizei, _pipelines: [*c]GLuint) callconv(.C) void; + const glDeleteProgramPipelines = fn(_n: GLsizei, _pipelines: [*c]const GLuint) callconv(.C) void; + const glBindProgramPipeline = fn(_pipeline: GLuint) callconv(.C) void; + const glCreateShaderProgramv = fn(_type: GLenum, _count: GLsizei, _strings: [*c]const [*c]const GLchar) callconv(.C) GLuint; + const glActiveShaderProgram = fn(_pipeline: GLuint, _program: GLuint) callconv(.C) void; + const glProgramBinary = fn(_program: GLuint, _binaryFormat: GLenum, _binary: ?*const anyopaque, _length: GLsizei) callconv(.C) void; + const glGetProgramBinary = fn(_program: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _binaryFormat: [*c]GLenum, _binary: ?*anyopaque) callconv(.C) void; + const glClearDepthf = fn(_d: GLfloat) callconv(.C) void; + const glDepthRangef = fn(_n: GLfloat, _f: GLfloat) callconv(.C) void; + const glIsTransformFeedback = fn(_id: GLuint) callconv(.C) GLboolean; + const glGenTransformFeedbacks = fn(_n: GLsizei, _ids: [*c]GLuint) callconv(.C) void; + const glDeleteTransformFeedbacks = fn(_n: GLsizei, _ids: [*c]const GLuint) callconv(.C) void; + const glBindTransformFeedback = fn(_target: GLenum, _id: GLuint) callconv(.C) void; + const glPatchParameterfv = fn(_pname: GLenum, _values: [*c]const GLfloat) callconv(.C) void; + const glPatchParameteri = fn(_pname: GLenum, _value: GLint) callconv(.C) void; + const glDrawArrays = fn(_mode: GLenum, _first: GLint, _count: GLsizei) callconv(.C) void; + const glDrawElements = fn(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque) callconv(.C) void; + const glPolygonOffset = fn(_factor: GLfloat, _units: GLfloat) callconv(.C) void; + const glCopyTexImage1D = fn(_target: GLenum, _level: GLint, _internalformat: GLenum, _x: GLint, _y: GLint, _width: GLsizei, _border: GLint) callconv(.C) void; + const glCopyTexImage2D = fn(_target: GLenum, _level: GLint, _internalformat: GLenum, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei, _border: GLint) callconv(.C) void; + const glCopyTexSubImage1D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei) callconv(.C) void; + const glCopyTexSubImage2D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glTexSubImage1D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glTexSubImage2D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glBindTexture = fn(_target: GLenum, _texture: GLuint) callconv(.C) void; + const glDeleteTextures = fn(_n: GLsizei, _textures: [*c]const GLuint) callconv(.C) void; + const glGenTextures = fn(_n: GLsizei, _textures: [*c]GLuint) callconv(.C) void; + const glIsTexture = fn(_texture: GLuint) callconv(.C) GLboolean; + const glGetActiveSubroutineUniformName = fn(_program: GLuint, _shadertype: GLenum, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _name: [*c]GLchar) callconv(.C) void; + const glGetActiveSubroutineUniformiv = fn(_program: GLuint, _shadertype: GLenum, _index: GLuint, _pname: GLenum, _values: [*c]GLint) callconv(.C) void; + const glGetSubroutineIndex = fn(_program: GLuint, _shadertype: GLenum, _name: [*c]const GLchar) callconv(.C) GLuint; + const glGetSubroutineUniformLocation = fn(_program: GLuint, _shadertype: GLenum, _name: [*c]const GLchar) callconv(.C) GLint; + const glGetUniformdv = fn(_program: GLuint, _location: GLint, _params: [*c]GLdouble) callconv(.C) void; + const glUniformMatrix4x3dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix4x2dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix3x4dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix3x2dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix2x4dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix2x3dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix4dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniformMatrix3dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glDrawRangeElements = fn(_mode: GLenum, _start: GLuint, _end: GLuint, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque) callconv(.C) void; + const glTexImage3D = fn(_target: GLenum, _level: GLint, _internalformat: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _border: GLint, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glTexSubImage3D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glCopyTexSubImage3D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glUniformMatrix2dv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLdouble) callconv(.C) void; + const glUniform4dv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glUniform3dv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glUniform2dv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glUniform1dv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLdouble) callconv(.C) void; + const glUniform4d = fn(_location: GLint, _x: GLdouble, _y: GLdouble, _z: GLdouble, _w: GLdouble) callconv(.C) void; + const glUniform3d = fn(_location: GLint, _x: GLdouble, _y: GLdouble, _z: GLdouble) callconv(.C) void; + const glUniform2d = fn(_location: GLint, _x: GLdouble, _y: GLdouble) callconv(.C) void; + const glUniform1d = fn(_location: GLint, _x: GLdouble) callconv(.C) void; + const glDrawElementsIndirect = fn(_mode: GLenum, _type: GLenum, _indirect: ?*const anyopaque) callconv(.C) void; + const glDrawArraysIndirect = fn(_mode: GLenum, _indirect: ?*const anyopaque) callconv(.C) void; + const glBlendFuncSeparatei = fn(_buf: GLuint, _srcRGB: GLenum, _dstRGB: GLenum, _srcAlpha: GLenum, _dstAlpha: GLenum) callconv(.C) void; + const glBlendFunci = fn(_buf: GLuint, _src: GLenum, _dst: GLenum) callconv(.C) void; + const glBlendEquationSeparatei = fn(_buf: GLuint, _modeRGB: GLenum, _modeAlpha: GLenum) callconv(.C) void; + const glBlendEquationi = fn(_buf: GLuint, _mode: GLenum) callconv(.C) void; + const glMinSampleShading = fn(_value: GLfloat) callconv(.C) void; + const glActiveTexture = fn(_texture: GLenum) callconv(.C) void; + const glSampleCoverage = fn(_value: GLfloat, _invert: GLboolean) callconv(.C) void; + const glCompressedTexImage3D = fn(_target: GLenum, _level: GLint, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _border: GLint, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTexImage2D = fn(_target: GLenum, _level: GLint, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _border: GLint, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTexImage1D = fn(_target: GLenum, _level: GLint, _internalformat: GLenum, _width: GLsizei, _border: GLint, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTexSubImage3D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTexSubImage2D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTexSubImage1D = fn(_target: GLenum, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glGetCompressedTexImage = fn(_target: GLenum, _level: GLint, _img: ?*anyopaque) callconv(.C) void; + const glVertexAttribP4uiv = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void; + const glVertexAttribP4ui = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void; + const glVertexAttribP3uiv = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void; + const glVertexAttribP3ui = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void; + const glVertexAttribP2uiv = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void; + const glVertexAttribP2ui = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void; + const glVertexAttribP1uiv = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: [*c]const GLuint) callconv(.C) void; + const glVertexAttribP1ui = fn(_index: GLuint, _type: GLenum, _normalized: GLboolean, _value: GLuint) callconv(.C) void; + const glVertexAttribDivisor = fn(_index: GLuint, _divisor: GLuint) callconv(.C) void; + const glGetQueryObjectui64v = fn(_id: GLuint, _pname: GLenum, _params: [*c]GLuint64) callconv(.C) void; + const glGetQueryObjecti64v = fn(_id: GLuint, _pname: GLenum, _params: [*c]GLint64) callconv(.C) void; + const glQueryCounter = fn(_id: GLuint, _target: GLenum) callconv(.C) void; + const glGetSamplerParameterIuiv = fn(_sampler: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void; + const glGetSamplerParameterfv = fn(_sampler: GLuint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void; + const glGetSamplerParameterIiv = fn(_sampler: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetSamplerParameteriv = fn(_sampler: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glSamplerParameterIuiv = fn(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLuint) callconv(.C) void; + const glSamplerParameterIiv = fn(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLint) callconv(.C) void; + const glSamplerParameterfv = fn(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLfloat) callconv(.C) void; + const glSamplerParameterf = fn(_sampler: GLuint, _pname: GLenum, _param: GLfloat) callconv(.C) void; + const glSamplerParameteriv = fn(_sampler: GLuint, _pname: GLenum, _param: [*c]const GLint) callconv(.C) void; + const glSamplerParameteri = fn(_sampler: GLuint, _pname: GLenum, _param: GLint) callconv(.C) void; + const glBindSampler = fn(_unit: GLuint, _sampler: GLuint) callconv(.C) void; + const glIsSampler = fn(_sampler: GLuint) callconv(.C) GLboolean; + const glDeleteSamplers = fn(_count: GLsizei, _samplers: [*c]const GLuint) callconv(.C) void; + const glGenSamplers = fn(_count: GLsizei, _samplers: [*c]GLuint) callconv(.C) void; + const glGetFragDataIndex = fn(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint; + const glBindFragDataLocationIndexed = fn(_program: GLuint, _colorNumber: GLuint, _index: GLuint, _name: [*c]const GLchar) callconv(.C) void; + const glSampleMaski = fn(_maskNumber: GLuint, _mask: GLbitfield) callconv(.C) void; + const glGetMultisamplefv = fn(_pname: GLenum, _index: GLuint, _val: [*c]GLfloat) callconv(.C) void; + const glTexImage3DMultisample = fn(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void; + const glTexImage2DMultisample = fn(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void; + const glFramebufferTexture = fn(_target: GLenum, _attachment: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void; + const glGetBufferParameteri64v = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint64) callconv(.C) void; + const glBlendFuncSeparate = fn(_sfactorRGB: GLenum, _dfactorRGB: GLenum, _sfactorAlpha: GLenum, _dfactorAlpha: GLenum) callconv(.C) void; + const glMultiDrawArrays = fn(_mode: GLenum, _first: [*c]const GLint, _count: [*c]const GLsizei, _drawcount: GLsizei) callconv(.C) void; + const glMultiDrawElements = fn(_mode: GLenum, _count: [*c]const GLsizei, _type: GLenum, _indices: [*c]const ?*const anyopaque, _drawcount: GLsizei) callconv(.C) void; + const glPointParameterf = fn(_pname: GLenum, _param: GLfloat) callconv(.C) void; + const glPointParameterfv = fn(_pname: GLenum, _params: [*c]const GLfloat) callconv(.C) void; + const glPointParameteri = fn(_pname: GLenum, _param: GLint) callconv(.C) void; + const glPointParameteriv = fn(_pname: GLenum, _params: [*c]const GLint) callconv(.C) void; + const glGetInteger64i_v = fn(_target: GLenum, _index: GLuint, _data: [*c]GLint64) callconv(.C) void; + const glGetSynciv = fn(_sync: GLsync, _pname: GLenum, _count: GLsizei, _length: [*c]GLsizei, _values: [*c]GLint) callconv(.C) void; + const glGetInteger64v = fn(_pname: GLenum, _data: [*c]GLint64) callconv(.C) void; + const glWaitSync = fn(_sync: GLsync, _flags: GLbitfield, _timeout: GLuint64) callconv(.C) void; + const glClientWaitSync = fn(_sync: GLsync, _flags: GLbitfield, _timeout: GLuint64) callconv(.C) GLenum; + const glDeleteSync = fn(_sync: GLsync) callconv(.C) void; + const glIsSync = fn(_sync: GLsync) callconv(.C) GLboolean; + const glFenceSync = fn(_condition: GLenum, _flags: GLbitfield) callconv(.C) GLsync; + const glBlendColor = fn(_red: GLfloat, _green: GLfloat, _blue: GLfloat, _alpha: GLfloat) callconv(.C) void; + const glBlendEquation = fn(_mode: GLenum) callconv(.C) void; + const glProvokingVertex = fn(_mode: GLenum) callconv(.C) void; + const glMultiDrawElementsBaseVertex = fn(_mode: GLenum, _count: [*c]const GLsizei, _type: GLenum, _indices: [*c]const ?*const anyopaque, _drawcount: GLsizei, _basevertex: [*c]const GLint) callconv(.C) void; + const glDrawElementsInstancedBaseVertex = fn(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei, _basevertex: GLint) callconv(.C) void; + const glDrawRangeElementsBaseVertex = fn(_mode: GLenum, _start: GLuint, _end: GLuint, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _basevertex: GLint) callconv(.C) void; + const glDrawElementsBaseVertex = fn(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _basevertex: GLint) callconv(.C) void; + const glGenQueries = fn(_n: GLsizei, _ids: [*c]GLuint) callconv(.C) void; + const glDeleteQueries = fn(_n: GLsizei, _ids: [*c]const GLuint) callconv(.C) void; + const glIsQuery = fn(_id: GLuint) callconv(.C) GLboolean; + const glBeginQuery = fn(_target: GLenum, _id: GLuint) callconv(.C) void; + const glEndQuery = fn(_target: GLenum) callconv(.C) void; + const glGetQueryiv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetQueryObjectiv = fn(_id: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetQueryObjectuiv = fn(_id: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void; + const glBindBuffer = fn(_target: GLenum, _buffer: GLuint) callconv(.C) void; + const glDeleteBuffers = fn(_n: GLsizei, _buffers: [*c]const GLuint) callconv(.C) void; + const glGenBuffers = fn(_n: GLsizei, _buffers: [*c]GLuint) callconv(.C) void; + const glIsBuffer = fn(_buffer: GLuint) callconv(.C) GLboolean; + const glBufferData = fn(_target: GLenum, _size: GLsizeiptr, _data: ?*const anyopaque, _usage: GLenum) callconv(.C) void; + const glBufferSubData = fn(_target: GLenum, _offset: GLintptr, _size: GLsizeiptr, _data: ?*const anyopaque) callconv(.C) void; + const glGetBufferSubData = fn(_target: GLenum, _offset: GLintptr, _size: GLsizeiptr, _data: ?*anyopaque) callconv(.C) void; + const glMapBuffer = fn(_target: GLenum, _access: GLenum) callconv(.C) ?*anyopaque; + const glUnmapBuffer = fn(_target: GLenum) callconv(.C) GLboolean; + const glGetBufferParameteriv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetBufferPointerv = fn(_target: GLenum, _pname: GLenum, _params: ?*?*anyopaque) callconv(.C) void; + const glBlendEquationSeparate = fn(_modeRGB: GLenum, _modeAlpha: GLenum) callconv(.C) void; + const glDrawBuffers = fn(_n: GLsizei, _bufs: [*c]const GLenum) callconv(.C) void; + const glStencilOpSeparate = fn(_face: GLenum, _sfail: GLenum, _dpfail: GLenum, _dppass: GLenum) callconv(.C) void; + const glStencilFuncSeparate = fn(_face: GLenum, _func: GLenum, _ref: GLint, _mask: GLuint) callconv(.C) void; + const glStencilMaskSeparate = fn(_face: GLenum, _mask: GLuint) callconv(.C) void; + const glAttachShader = fn(_program: GLuint, _shader: GLuint) callconv(.C) void; + const glBindAttribLocation = fn(_program: GLuint, _index: GLuint, _name: [*c]const GLchar) callconv(.C) void; + const glCompileShader = fn(_shader: GLuint) callconv(.C) void; + const glCreateProgram = fn() callconv(.C) GLuint; + const glCreateShader = fn(_type: GLenum) callconv(.C) GLuint; + const glDeleteProgram = fn(_program: GLuint) callconv(.C) void; + const glDeleteShader = fn(_shader: GLuint) callconv(.C) void; + const glDetachShader = fn(_program: GLuint, _shader: GLuint) callconv(.C) void; + const glDisableVertexAttribArray = fn(_index: GLuint) callconv(.C) void; + const glEnableVertexAttribArray = fn(_index: GLuint) callconv(.C) void; + const glGetActiveAttrib = fn(_program: GLuint, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _size: [*c]GLint, _type: [*c]GLenum, _name: [*c]GLchar) callconv(.C) void; + const glGetActiveUniform = fn(_program: GLuint, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _size: [*c]GLint, _type: [*c]GLenum, _name: [*c]GLchar) callconv(.C) void; + const glGetAttachedShaders = fn(_program: GLuint, _maxCount: GLsizei, _count: [*c]GLsizei, _shaders: [*c]GLuint) callconv(.C) void; + const glGetAttribLocation = fn(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint; + const glGetProgramiv = fn(_program: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetProgramInfoLog = fn(_program: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _infoLog: [*c]GLchar) callconv(.C) void; + const glGetShaderiv = fn(_shader: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetShaderInfoLog = fn(_shader: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _infoLog: [*c]GLchar) callconv(.C) void; + const glGetShaderSource = fn(_shader: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _source: [*c]GLchar) callconv(.C) void; + const glGetUniformLocation = fn(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint; + const glGetUniformfv = fn(_program: GLuint, _location: GLint, _params: [*c]GLfloat) callconv(.C) void; + const glGetUniformiv = fn(_program: GLuint, _location: GLint, _params: [*c]GLint) callconv(.C) void; + const glGetVertexAttribdv = fn(_index: GLuint, _pname: GLenum, _params: [*c]GLdouble) callconv(.C) void; + const glGetVertexAttribfv = fn(_index: GLuint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void; + const glGetVertexAttribiv = fn(_index: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetVertexAttribPointerv = fn(_index: GLuint, _pname: GLenum, _pointer: ?*?*anyopaque) callconv(.C) void; + const glIsProgram = fn(_program: GLuint) callconv(.C) GLboolean; + const glIsShader = fn(_shader: GLuint) callconv(.C) GLboolean; + const glLinkProgram = fn(_program: GLuint) callconv(.C) void; + const glShaderSource = fn(_shader: GLuint, _count: GLsizei, _string: [*c]const [*c]const GLchar, _length: [*c]const GLint) callconv(.C) void; + const glUseProgram = fn(_program: GLuint) callconv(.C) void; + const glUniform1f = fn(_location: GLint, _v0: GLfloat) callconv(.C) void; + const glUniform2f = fn(_location: GLint, _v0: GLfloat, _v1: GLfloat) callconv(.C) void; + const glUniform3f = fn(_location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat) callconv(.C) void; + const glUniform4f = fn(_location: GLint, _v0: GLfloat, _v1: GLfloat, _v2: GLfloat, _v3: GLfloat) callconv(.C) void; + const glUniform1i = fn(_location: GLint, _v0: GLint) callconv(.C) void; + const glUniform2i = fn(_location: GLint, _v0: GLint, _v1: GLint) callconv(.C) void; + const glUniform3i = fn(_location: GLint, _v0: GLint, _v1: GLint, _v2: GLint) callconv(.C) void; + const glUniform4i = fn(_location: GLint, _v0: GLint, _v1: GLint, _v2: GLint, _v3: GLint) callconv(.C) void; + const glUniform1fv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glUniform2fv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glUniform3fv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glUniform4fv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLfloat) callconv(.C) void; + const glUniform1iv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glUniform2iv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glUniform3iv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glUniform4iv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLint) callconv(.C) void; + const glUniformMatrix2fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix3fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix4fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glValidateProgram = fn(_program: GLuint) callconv(.C) void; + const glVertexAttrib1d = fn(_index: GLuint, _x: GLdouble) callconv(.C) void; + const glVertexAttrib1dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttrib1f = fn(_index: GLuint, _x: GLfloat) callconv(.C) void; + const glVertexAttrib1fv = fn(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void; + const glVertexAttrib1s = fn(_index: GLuint, _x: GLshort) callconv(.C) void; + const glVertexAttrib1sv = fn(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void; + const glVertexAttrib2d = fn(_index: GLuint, _x: GLdouble, _y: GLdouble) callconv(.C) void; + const glVertexAttrib2dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttrib2f = fn(_index: GLuint, _x: GLfloat, _y: GLfloat) callconv(.C) void; + const glVertexAttrib2fv = fn(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void; + const glVertexAttrib2s = fn(_index: GLuint, _x: GLshort, _y: GLshort) callconv(.C) void; + const glVertexAttrib2sv = fn(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void; + const glVertexAttrib3d = fn(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble) callconv(.C) void; + const glVertexAttrib3dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttrib3f = fn(_index: GLuint, _x: GLfloat, _y: GLfloat, _z: GLfloat) callconv(.C) void; + const glVertexAttrib3fv = fn(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void; + const glVertexAttrib3s = fn(_index: GLuint, _x: GLshort, _y: GLshort, _z: GLshort) callconv(.C) void; + const glVertexAttrib3sv = fn(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void; + const glVertexAttrib4Nbv = fn(_index: GLuint, _v: [*c]const GLbyte) callconv(.C) void; + const glVertexAttrib4Niv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glVertexAttrib4Nsv = fn(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void; + const glVertexAttrib4Nub = fn(_index: GLuint, _x: GLubyte, _y: GLubyte, _z: GLubyte, _w: GLubyte) callconv(.C) void; + const glVertexAttrib4Nubv = fn(_index: GLuint, _v: ?[*:0]const GLubyte) callconv(.C) void; + const glVertexAttrib4Nuiv = fn(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void; + const glVertexAttrib4Nusv = fn(_index: GLuint, _v: [*c]const GLushort) callconv(.C) void; + const glVertexAttrib4bv = fn(_index: GLuint, _v: [*c]const GLbyte) callconv(.C) void; + const glVertexAttrib4d = fn(_index: GLuint, _x: GLdouble, _y: GLdouble, _z: GLdouble, _w: GLdouble) callconv(.C) void; + const glVertexAttrib4dv = fn(_index: GLuint, _v: [*c]const GLdouble) callconv(.C) void; + const glVertexAttrib4f = fn(_index: GLuint, _x: GLfloat, _y: GLfloat, _z: GLfloat, _w: GLfloat) callconv(.C) void; + const glVertexAttrib4fv = fn(_index: GLuint, _v: [*c]const GLfloat) callconv(.C) void; + const glVertexAttrib4iv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glVertexAttrib4s = fn(_index: GLuint, _x: GLshort, _y: GLshort, _z: GLshort, _w: GLshort) callconv(.C) void; + const glVertexAttrib4sv = fn(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void; + const glVertexAttrib4ubv = fn(_index: GLuint, _v: ?[*:0]const GLubyte) callconv(.C) void; + const glVertexAttrib4uiv = fn(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void; + const glVertexAttrib4usv = fn(_index: GLuint, _v: [*c]const GLushort) callconv(.C) void; + const glVertexAttribPointer = fn(_index: GLuint, _size: GLint, _type: GLenum, _normalized: GLboolean, _stride: GLsizei, _pointer: ?*const anyopaque) callconv(.C) void; + const glUniformMatrix2x3fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix3x2fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix2x4fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix4x2fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix3x4fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glUniformMatrix4x3fv = fn(_location: GLint, _count: GLsizei, _transpose: GLboolean, _value: [*c]const GLfloat) callconv(.C) void; + const glColorMaski = fn(_index: GLuint, _r: GLboolean, _g: GLboolean, _b: GLboolean, _a: GLboolean) callconv(.C) void; + const glGetBooleani_v = fn(_target: GLenum, _index: GLuint, _data: [*c]GLboolean) callconv(.C) void; + const glGetIntegeri_v = fn(_target: GLenum, _index: GLuint, _data: [*c]GLint) callconv(.C) void; + const glEnablei = fn(_target: GLenum, _index: GLuint) callconv(.C) void; + const glDisablei = fn(_target: GLenum, _index: GLuint) callconv(.C) void; + const glIsEnabledi = fn(_target: GLenum, _index: GLuint) callconv(.C) GLboolean; + const glBeginTransformFeedback = fn(_primitiveMode: GLenum) callconv(.C) void; + const glEndTransformFeedback = fn() callconv(.C) void; + const glBindBufferRange = fn(_target: GLenum, _index: GLuint, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void; + const glBindBufferBase = fn(_target: GLenum, _index: GLuint, _buffer: GLuint) callconv(.C) void; + const glTransformFeedbackVaryings = fn(_program: GLuint, _count: GLsizei, _varyings: [*c]const [*c]const GLchar, _bufferMode: GLenum) callconv(.C) void; + const glGetTransformFeedbackVarying = fn(_program: GLuint, _index: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _size: [*c]GLsizei, _type: [*c]GLenum, _name: [*c]GLchar) callconv(.C) void; + const glClampColor = fn(_target: GLenum, _clamp: GLenum) callconv(.C) void; + const glBeginConditionalRender = fn(_id: GLuint, _mode: GLenum) callconv(.C) void; + const glEndConditionalRender = fn() callconv(.C) void; + const glVertexAttribIPointer = fn(_index: GLuint, _size: GLint, _type: GLenum, _stride: GLsizei, _pointer: ?*const anyopaque) callconv(.C) void; + const glGetVertexAttribIiv = fn(_index: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetVertexAttribIuiv = fn(_index: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void; + const glVertexAttribI1i = fn(_index: GLuint, _x: GLint) callconv(.C) void; + const glVertexAttribI2i = fn(_index: GLuint, _x: GLint, _y: GLint) callconv(.C) void; + const glVertexAttribI3i = fn(_index: GLuint, _x: GLint, _y: GLint, _z: GLint) callconv(.C) void; + const glVertexAttribI4i = fn(_index: GLuint, _x: GLint, _y: GLint, _z: GLint, _w: GLint) callconv(.C) void; + const glVertexAttribI1ui = fn(_index: GLuint, _x: GLuint) callconv(.C) void; + const glVertexAttribI2ui = fn(_index: GLuint, _x: GLuint, _y: GLuint) callconv(.C) void; + const glVertexAttribI3ui = fn(_index: GLuint, _x: GLuint, _y: GLuint, _z: GLuint) callconv(.C) void; + const glVertexAttribI4ui = fn(_index: GLuint, _x: GLuint, _y: GLuint, _z: GLuint, _w: GLuint) callconv(.C) void; + const glVertexAttribI1iv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glVertexAttribI2iv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glVertexAttribI3iv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glVertexAttribI4iv = fn(_index: GLuint, _v: [*c]const GLint) callconv(.C) void; + const glVertexAttribI1uiv = fn(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void; + const glVertexAttribI2uiv = fn(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void; + const glVertexAttribI3uiv = fn(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void; + const glVertexAttribI4uiv = fn(_index: GLuint, _v: [*c]const GLuint) callconv(.C) void; + const glVertexAttribI4bv = fn(_index: GLuint, _v: [*c]const GLbyte) callconv(.C) void; + const glVertexAttribI4sv = fn(_index: GLuint, _v: [*c]const GLshort) callconv(.C) void; + const glVertexAttribI4ubv = fn(_index: GLuint, _v: ?[*:0]const GLubyte) callconv(.C) void; + const glVertexAttribI4usv = fn(_index: GLuint, _v: [*c]const GLushort) callconv(.C) void; + const glGetUniformuiv = fn(_program: GLuint, _location: GLint, _params: [*c]GLuint) callconv(.C) void; + const glBindFragDataLocation = fn(_program: GLuint, _color: GLuint, _name: [*c]const GLchar) callconv(.C) void; + const glGetFragDataLocation = fn(_program: GLuint, _name: [*c]const GLchar) callconv(.C) GLint; + const glUniform1ui = fn(_location: GLint, _v0: GLuint) callconv(.C) void; + const glUniform2ui = fn(_location: GLint, _v0: GLuint, _v1: GLuint) callconv(.C) void; + const glUniform3ui = fn(_location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint) callconv(.C) void; + const glUniform4ui = fn(_location: GLint, _v0: GLuint, _v1: GLuint, _v2: GLuint, _v3: GLuint) callconv(.C) void; + const glUniform1uiv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glUniform2uiv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glUniform3uiv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glUniform4uiv = fn(_location: GLint, _count: GLsizei, _value: [*c]const GLuint) callconv(.C) void; + const glTexParameterIiv = fn(_target: GLenum, _pname: GLenum, _params: [*c]const GLint) callconv(.C) void; + const glTexParameterIuiv = fn(_target: GLenum, _pname: GLenum, _params: [*c]const GLuint) callconv(.C) void; + const glGetTexParameterIiv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetTexParameterIuiv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void; + const glClearBufferiv = fn(_buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLint) callconv(.C) void; + const glClearBufferuiv = fn(_buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLuint) callconv(.C) void; + const glClearBufferfv = fn(_buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLfloat) callconv(.C) void; + const glClearBufferfi = fn(_buffer: GLenum, _drawbuffer: GLint, _depth: GLfloat, _stencil: GLint) callconv(.C) void; + const glGetStringi = fn(_name: GLenum, _index: GLuint) callconv(.C) ?[*:0]const GLubyte; + const glIsRenderbuffer = fn(_renderbuffer: GLuint) callconv(.C) GLboolean; + const glBindRenderbuffer = fn(_target: GLenum, _renderbuffer: GLuint) callconv(.C) void; + const glDeleteRenderbuffers = fn(_n: GLsizei, _renderbuffers: [*c]const GLuint) callconv(.C) void; + const glGenRenderbuffers = fn(_n: GLsizei, _renderbuffers: [*c]GLuint) callconv(.C) void; + const glRenderbufferStorage = fn(_target: GLenum, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glGetRenderbufferParameteriv = fn(_target: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glIsFramebuffer = fn(_framebuffer: GLuint) callconv(.C) GLboolean; + const glBindFramebuffer = fn(_target: GLenum, _framebuffer: GLuint) callconv(.C) void; + const glDeleteFramebuffers = fn(_n: GLsizei, _framebuffers: [*c]const GLuint) callconv(.C) void; + const glGenFramebuffers = fn(_n: GLsizei, _framebuffers: [*c]GLuint) callconv(.C) void; + const glCheckFramebufferStatus = fn(_target: GLenum) callconv(.C) GLenum; + const glFramebufferTexture1D = fn(_target: GLenum, _attachment: GLenum, _textarget: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void; + const glFramebufferTexture2D = fn(_target: GLenum, _attachment: GLenum, _textarget: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void; + const glFramebufferTexture3D = fn(_target: GLenum, _attachment: GLenum, _textarget: GLenum, _texture: GLuint, _level: GLint, _zoffset: GLint) callconv(.C) void; + const glFramebufferRenderbuffer = fn(_target: GLenum, _attachment: GLenum, _renderbuffertarget: GLenum, _renderbuffer: GLuint) callconv(.C) void; + const glGetFramebufferAttachmentParameteriv = fn(_target: GLenum, _attachment: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGenerateMipmap = fn(_target: GLenum) callconv(.C) void; + const glBlitFramebuffer = fn(_srcX0: GLint, _srcY0: GLint, _srcX1: GLint, _srcY1: GLint, _dstX0: GLint, _dstY0: GLint, _dstX1: GLint, _dstY1: GLint, _mask: GLbitfield, _filter: GLenum) callconv(.C) void; + const glRenderbufferStorageMultisample = fn(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glFramebufferTextureLayer = fn(_target: GLenum, _attachment: GLenum, _texture: GLuint, _level: GLint, _layer: GLint) callconv(.C) void; + const glMapBufferRange = fn(_target: GLenum, _offset: GLintptr, _length: GLsizeiptr, _access: GLbitfield) callconv(.C) ?*anyopaque; + const glFlushMappedBufferRange = fn(_target: GLenum, _offset: GLintptr, _length: GLsizeiptr) callconv(.C) void; + const glBindVertexArray = fn(_array: GLuint) callconv(.C) void; + const glDeleteVertexArrays = fn(_n: GLsizei, _arrays: [*c]const GLuint) callconv(.C) void; + const glGenVertexArrays = fn(_n: GLsizei, _arrays: [*c]GLuint) callconv(.C) void; + const glIsVertexArray = fn(_array: GLuint) callconv(.C) GLboolean; + const glDrawArraysInstanced = fn(_mode: GLenum, _first: GLint, _count: GLsizei, _instancecount: GLsizei) callconv(.C) void; + const glDrawElementsInstanced = fn(_mode: GLenum, _count: GLsizei, _type: GLenum, _indices: ?*const anyopaque, _instancecount: GLsizei) callconv(.C) void; + const glTexBuffer = fn(_target: GLenum, _internalformat: GLenum, _buffer: GLuint) callconv(.C) void; + const glPrimitiveRestartIndex = fn(_index: GLuint) callconv(.C) void; + const glCopyBufferSubData = fn(_readTarget: GLenum, _writeTarget: GLenum, _readOffset: GLintptr, _writeOffset: GLintptr, _size: GLsizeiptr) callconv(.C) void; + const glGetUniformIndices = fn(_program: GLuint, _uniformCount: GLsizei, _uniformNames: [*c]const [*c]const GLchar, _uniformIndices: [*c]GLuint) callconv(.C) void; + const glGetActiveUniformsiv = fn(_program: GLuint, _uniformCount: GLsizei, _uniformIndices: [*c]const GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetActiveUniformName = fn(_program: GLuint, _uniformIndex: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _uniformName: [*c]GLchar) callconv(.C) void; + const glGetUniformBlockIndex = fn(_program: GLuint, _uniformBlockName: [*c]const GLchar) callconv(.C) GLuint; + const glGetActiveUniformBlockiv = fn(_program: GLuint, _uniformBlockIndex: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetActiveUniformBlockName = fn(_program: GLuint, _uniformBlockIndex: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _uniformBlockName: [*c]GLchar) callconv(.C) void; + const glUniformBlockBinding = fn(_program: GLuint, _uniformBlockIndex: GLuint, _uniformBlockBinding: GLuint) callconv(.C) void; + const glTexStorage3DMultisample = fn(_target: GLenum, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void; + const glTextureView = fn(_texture: GLuint, _target: GLenum, _origtexture: GLuint, _internalformat: GLenum, _minlevel: GLuint, _numlevels: GLuint, _minlayer: GLuint, _numlayers: GLuint) callconv(.C) void; + const glBindVertexBuffer = fn(_bindingindex: GLuint, _buffer: GLuint, _offset: GLintptr, _stride: GLsizei) callconv(.C) void; + const glVertexAttribFormat = fn(_attribindex: GLuint, _size: GLint, _type: GLenum, _normalized: GLboolean, _relativeoffset: GLuint) callconv(.C) void; + const glVertexAttribIFormat = fn(_attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void; + const glVertexAttribLFormat = fn(_attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void; + const glVertexAttribBinding = fn(_attribindex: GLuint, _bindingindex: GLuint) callconv(.C) void; + const glVertexBindingDivisor = fn(_bindingindex: GLuint, _divisor: GLuint) callconv(.C) void; + const glDebugMessageControl = fn(_source: GLenum, _type: GLenum, _severity: GLenum, _count: GLsizei, _ids: [*c]const GLuint, _enabled: GLboolean) callconv(.C) void; + const glDebugMessageInsert = fn(_source: GLenum, _type: GLenum, _id: GLuint, _severity: GLenum, _length: GLsizei, _buf: [*c]const GLchar) callconv(.C) void; + const glDebugMessageCallback = fn(_callback: GLDEBUGPROC, _userParam: ?*const anyopaque) callconv(.C) void; + const glGetDebugMessageLog = fn(_count: GLuint, _bufSize: GLsizei, _sources: [*c]GLenum, _types: [*c]GLenum, _ids: [*c]GLuint, _severities: [*c]GLenum, _lengths: [*c]GLsizei, _messageLog: [*c]GLchar) callconv(.C) GLuint; + const glPushDebugGroup = fn(_source: GLenum, _id: GLuint, _length: GLsizei, _message: [*c]const GLchar) callconv(.C) void; + const glPopDebugGroup = fn() callconv(.C) void; + const glObjectLabel = fn(_identifier: GLenum, _name: GLuint, _length: GLsizei, _label: [*c]const GLchar) callconv(.C) void; + const glGetObjectLabel = fn(_identifier: GLenum, _name: GLuint, _bufSize: GLsizei, _length: [*c]GLsizei, _label: [*c]GLchar) callconv(.C) void; + const glObjectPtrLabel = fn(_ptr: ?*const anyopaque, _length: GLsizei, _label: [*c]const GLchar) callconv(.C) void; + const glGetObjectPtrLabel = fn(_ptr: ?*const anyopaque, _bufSize: GLsizei, _length: [*c]GLsizei, _label: [*c]GLchar) callconv(.C) void; + const glGetPointerv = fn(_pname: GLenum, _params: ?*?*anyopaque) callconv(.C) void; + const glBufferStorage = fn(_target: GLenum, _size: GLsizeiptr, _data: ?*const anyopaque, _flags: GLbitfield) callconv(.C) void; + const glClearTexImage = fn(_texture: GLuint, _level: GLint, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void; + const glClearTexSubImage = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void; + const glBindBuffersBase = fn(_target: GLenum, _first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint) callconv(.C) void; + const glBindBuffersRange = fn(_target: GLenum, _first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint, _offsets: [*c]const GLintptr, _sizes: [*c]const GLsizeiptr) callconv(.C) void; + const glBindTextures = fn(_first: GLuint, _count: GLsizei, _textures: [*c]const GLuint) callconv(.C) void; + const glBindSamplers = fn(_first: GLuint, _count: GLsizei, _samplers: [*c]const GLuint) callconv(.C) void; + const glBindImageTextures = fn(_first: GLuint, _count: GLsizei, _textures: [*c]const GLuint) callconv(.C) void; + const glBindVertexBuffers = fn(_first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint, _offsets: [*c]const GLintptr, _strides: [*c]const GLsizei) callconv(.C) void; + const glClipControl = fn(_origin: GLenum, _depth: GLenum) callconv(.C) void; + const glCreateTransformFeedbacks = fn(_n: GLsizei, _ids: [*c]GLuint) callconv(.C) void; + const glTransformFeedbackBufferBase = fn(_xfb: GLuint, _index: GLuint, _buffer: GLuint) callconv(.C) void; + const glTransformFeedbackBufferRange = fn(_xfb: GLuint, _index: GLuint, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void; + const glGetTransformFeedbackiv = fn(_xfb: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void; + const glGetTransformFeedbacki_v = fn(_xfb: GLuint, _pname: GLenum, _index: GLuint, _param: [*c]GLint) callconv(.C) void; + const glGetTransformFeedbacki64_v = fn(_xfb: GLuint, _pname: GLenum, _index: GLuint, _param: [*c]GLint64) callconv(.C) void; + const glCreateBuffers = fn(_n: GLsizei, _buffers: [*c]GLuint) callconv(.C) void; + const glNamedBufferStorage = fn(_buffer: GLuint, _size: GLsizeiptr, _data: ?*const anyopaque, _flags: GLbitfield) callconv(.C) void; + const glNamedBufferData = fn(_buffer: GLuint, _size: GLsizeiptr, _data: ?*const anyopaque, _usage: GLenum) callconv(.C) void; + const glNamedBufferSubData = fn(_buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr, _data: ?*const anyopaque) callconv(.C) void; + const glCopyNamedBufferSubData = fn(_readBuffer: GLuint, _writeBuffer: GLuint, _readOffset: GLintptr, _writeOffset: GLintptr, _size: GLsizeiptr) callconv(.C) void; + const glClearNamedBufferData = fn(_buffer: GLuint, _internalformat: GLenum, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void; + const glClearNamedBufferSubData = fn(_buffer: GLuint, _internalformat: GLenum, _offset: GLintptr, _size: GLsizeiptr, _format: GLenum, _type: GLenum, _data: ?*const anyopaque) callconv(.C) void; + const glMapNamedBuffer = fn(_buffer: GLuint, _access: GLenum) callconv(.C) ?*anyopaque; + const glMapNamedBufferRange = fn(_buffer: GLuint, _offset: GLintptr, _length: GLsizeiptr, _access: GLbitfield) callconv(.C) ?*anyopaque; + const glUnmapNamedBuffer = fn(_buffer: GLuint) callconv(.C) GLboolean; + const glFlushMappedNamedBufferRange = fn(_buffer: GLuint, _offset: GLintptr, _length: GLsizeiptr) callconv(.C) void; + const glGetNamedBufferParameteriv = fn(_buffer: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetNamedBufferParameteri64v = fn(_buffer: GLuint, _pname: GLenum, _params: [*c]GLint64) callconv(.C) void; + const glGetNamedBufferPointerv = fn(_buffer: GLuint, _pname: GLenum, _params: ?*?*anyopaque) callconv(.C) void; + const glGetNamedBufferSubData = fn(_buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr, _data: ?*anyopaque) callconv(.C) void; + const glCreateFramebuffers = fn(_n: GLsizei, _framebuffers: [*c]GLuint) callconv(.C) void; + const glNamedFramebufferRenderbuffer = fn(_framebuffer: GLuint, _attachment: GLenum, _renderbuffertarget: GLenum, _renderbuffer: GLuint) callconv(.C) void; + const glNamedFramebufferParameteri = fn(_framebuffer: GLuint, _pname: GLenum, _param: GLint) callconv(.C) void; + const glNamedFramebufferTexture = fn(_framebuffer: GLuint, _attachment: GLenum, _texture: GLuint, _level: GLint) callconv(.C) void; + const glNamedFramebufferTextureLayer = fn(_framebuffer: GLuint, _attachment: GLenum, _texture: GLuint, _level: GLint, _layer: GLint) callconv(.C) void; + const glNamedFramebufferDrawBuffer = fn(_framebuffer: GLuint, _buf: GLenum) callconv(.C) void; + const glNamedFramebufferDrawBuffers = fn(_framebuffer: GLuint, _n: GLsizei, _bufs: [*c]const GLenum) callconv(.C) void; + const glNamedFramebufferReadBuffer = fn(_framebuffer: GLuint, _src: GLenum) callconv(.C) void; + const glInvalidateNamedFramebufferData = fn(_framebuffer: GLuint, _numAttachments: GLsizei, _attachments: [*c]const GLenum) callconv(.C) void; + const glInvalidateNamedFramebufferSubData = fn(_framebuffer: GLuint, _numAttachments: GLsizei, _attachments: [*c]const GLenum, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glClearNamedFramebufferiv = fn(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLint) callconv(.C) void; + const glClearNamedFramebufferuiv = fn(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLuint) callconv(.C) void; + const glClearNamedFramebufferfv = fn(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _value: [*c]const GLfloat) callconv(.C) void; + const glClearNamedFramebufferfi = fn(_framebuffer: GLuint, _buffer: GLenum, _drawbuffer: GLint, _depth: GLfloat, _stencil: GLint) callconv(.C) void; + const glBlitNamedFramebuffer = fn(_readFramebuffer: GLuint, _drawFramebuffer: GLuint, _srcX0: GLint, _srcY0: GLint, _srcX1: GLint, _srcY1: GLint, _dstX0: GLint, _dstY0: GLint, _dstX1: GLint, _dstY1: GLint, _mask: GLbitfield, _filter: GLenum) callconv(.C) void; + const glCheckNamedFramebufferStatus = fn(_framebuffer: GLuint, _target: GLenum) callconv(.C) GLenum; + const glGetNamedFramebufferParameteriv = fn(_framebuffer: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void; + const glGetNamedFramebufferAttachmentParameteriv = fn(_framebuffer: GLuint, _attachment: GLenum, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glCreateRenderbuffers = fn(_n: GLsizei, _renderbuffers: [*c]GLuint) callconv(.C) void; + const glNamedRenderbufferStorage = fn(_renderbuffer: GLuint, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glNamedRenderbufferStorageMultisample = fn(_renderbuffer: GLuint, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glGetNamedRenderbufferParameteriv = fn(_renderbuffer: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glCreateTextures = fn(_target: GLenum, _n: GLsizei, _textures: [*c]GLuint) callconv(.C) void; + const glTextureBuffer = fn(_texture: GLuint, _internalformat: GLenum, _buffer: GLuint) callconv(.C) void; + const glTextureBufferRange = fn(_texture: GLuint, _internalformat: GLenum, _buffer: GLuint, _offset: GLintptr, _size: GLsizeiptr) callconv(.C) void; + const glTextureStorage1D = fn(_texture: GLuint, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei) callconv(.C) void; + const glTextureStorage2D = fn(_texture: GLuint, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glTextureStorage3D = fn(_texture: GLuint, _levels: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei) callconv(.C) void; + const glTextureStorage2DMultisample = fn(_texture: GLuint, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void; + const glTextureStorage3DMultisample = fn(_texture: GLuint, _samples: GLsizei, _internalformat: GLenum, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _fixedsamplelocations: GLboolean) callconv(.C) void; + const glTextureSubImage1D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glTextureSubImage2D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glTextureSubImage3D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _pixels: ?*const anyopaque) callconv(.C) void; + const glCompressedTextureSubImage1D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _width: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTextureSubImage2D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCompressedTextureSubImage3D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _imageSize: GLsizei, _data: ?*const anyopaque) callconv(.C) void; + const glCopyTextureSubImage1D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei) callconv(.C) void; + const glCopyTextureSubImage2D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glCopyTextureSubImage3D = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei) callconv(.C) void; + const glTextureParameterf = fn(_texture: GLuint, _pname: GLenum, _param: GLfloat) callconv(.C) void; + const glTextureParameterfv = fn(_texture: GLuint, _pname: GLenum, _param: [*c]const GLfloat) callconv(.C) void; + const glTextureParameteri = fn(_texture: GLuint, _pname: GLenum, _param: GLint) callconv(.C) void; + const glTextureParameterIiv = fn(_texture: GLuint, _pname: GLenum, _params: [*c]const GLint) callconv(.C) void; + const glTextureParameterIuiv = fn(_texture: GLuint, _pname: GLenum, _params: [*c]const GLuint) callconv(.C) void; + const glTextureParameteriv = fn(_texture: GLuint, _pname: GLenum, _param: [*c]const GLint) callconv(.C) void; + const glGenerateTextureMipmap = fn(_texture: GLuint) callconv(.C) void; + const glBindTextureUnit = fn(_unit: GLuint, _texture: GLuint) callconv(.C) void; + const glGetTextureImage = fn(_texture: GLuint, _level: GLint, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void; + const glGetCompressedTextureImage = fn(_texture: GLuint, _level: GLint, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void; + const glGetTextureLevelParameterfv = fn(_texture: GLuint, _level: GLint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void; + const glGetTextureLevelParameteriv = fn(_texture: GLuint, _level: GLint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetTextureParameterfv = fn(_texture: GLuint, _pname: GLenum, _params: [*c]GLfloat) callconv(.C) void; + const glGetTextureParameterIiv = fn(_texture: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glGetTextureParameterIuiv = fn(_texture: GLuint, _pname: GLenum, _params: [*c]GLuint) callconv(.C) void; + const glGetTextureParameteriv = fn(_texture: GLuint, _pname: GLenum, _params: [*c]GLint) callconv(.C) void; + const glCreateVertexArrays = fn(_n: GLsizei, _arrays: [*c]GLuint) callconv(.C) void; + const glDisableVertexArrayAttrib = fn(_vaobj: GLuint, _index: GLuint) callconv(.C) void; + const glEnableVertexArrayAttrib = fn(_vaobj: GLuint, _index: GLuint) callconv(.C) void; + const glVertexArrayElementBuffer = fn(_vaobj: GLuint, _buffer: GLuint) callconv(.C) void; + const glVertexArrayVertexBuffer = fn(_vaobj: GLuint, _bindingindex: GLuint, _buffer: GLuint, _offset: GLintptr, _stride: GLsizei) callconv(.C) void; + const glVertexArrayVertexBuffers = fn(_vaobj: GLuint, _first: GLuint, _count: GLsizei, _buffers: [*c]const GLuint, _offsets: [*c]const GLintptr, _strides: [*c]const GLsizei) callconv(.C) void; + const glVertexArrayAttribBinding = fn(_vaobj: GLuint, _attribindex: GLuint, _bindingindex: GLuint) callconv(.C) void; + const glVertexArrayAttribFormat = fn(_vaobj: GLuint, _attribindex: GLuint, _size: GLint, _type: GLenum, _normalized: GLboolean, _relativeoffset: GLuint) callconv(.C) void; + const glVertexArrayAttribIFormat = fn(_vaobj: GLuint, _attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void; + const glVertexArrayAttribLFormat = fn(_vaobj: GLuint, _attribindex: GLuint, _size: GLint, _type: GLenum, _relativeoffset: GLuint) callconv(.C) void; + const glVertexArrayBindingDivisor = fn(_vaobj: GLuint, _bindingindex: GLuint, _divisor: GLuint) callconv(.C) void; + const glGetVertexArrayiv = fn(_vaobj: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void; + const glGetVertexArrayIndexediv = fn(_vaobj: GLuint, _index: GLuint, _pname: GLenum, _param: [*c]GLint) callconv(.C) void; + const glGetVertexArrayIndexed64iv = fn(_vaobj: GLuint, _index: GLuint, _pname: GLenum, _param: [*c]GLint64) callconv(.C) void; + const glCreateSamplers = fn(_n: GLsizei, _samplers: [*c]GLuint) callconv(.C) void; + const glCreateProgramPipelines = fn(_n: GLsizei, _pipelines: [*c]GLuint) callconv(.C) void; + const glCreateQueries = fn(_target: GLenum, _n: GLsizei, _ids: [*c]GLuint) callconv(.C) void; + const glGetQueryBufferObjecti64v = fn(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void; + const glGetQueryBufferObjectiv = fn(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void; + const glGetQueryBufferObjectui64v = fn(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void; + const glGetQueryBufferObjectuiv = fn(_id: GLuint, _buffer: GLuint, _pname: GLenum, _offset: GLintptr) callconv(.C) void; + const glMemoryBarrierByRegion = fn(_barriers: GLbitfield) callconv(.C) void; + const glGetTextureSubImage = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void; + const glGetCompressedTextureSubImage = fn(_texture: GLuint, _level: GLint, _xoffset: GLint, _yoffset: GLint, _zoffset: GLint, _width: GLsizei, _height: GLsizei, _depth: GLsizei, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void; + const glGetGraphicsResetStatus = fn() callconv(.C) GLenum; + const glGetnCompressedTexImage = fn(_target: GLenum, _lod: GLint, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void; + const glGetnTexImage = fn(_target: GLenum, _level: GLint, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _pixels: ?*anyopaque) callconv(.C) void; + const glGetnUniformdv = fn(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLdouble) callconv(.C) void; + const glGetnUniformfv = fn(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLfloat) callconv(.C) void; + const glGetnUniformiv = fn(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLint) callconv(.C) void; + const glGetnUniformuiv = fn(_program: GLuint, _location: GLint, _bufSize: GLsizei, _params: [*c]GLuint) callconv(.C) void; + const glReadnPixels = fn(_x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei, _format: GLenum, _type: GLenum, _bufSize: GLsizei, _data: ?*anyopaque) callconv(.C) void; + const glTextureBarrier = fn() callconv(.C) void; +}; + +const function_pointers = struct { + var glTexStorage2D: *const function_signatures.glTexStorage2D = undefined; + var glTexStorage1D: *const function_signatures.glTexStorage1D = undefined; + var glDrawTransformFeedbackStreamInstanced: *const function_signatures.glDrawTransformFeedbackStreamInstanced = undefined; + var glDrawTransformFeedbackInstanced: *const function_signatures.glDrawTransformFeedbackInstanced = undefined; + var glTexStorage3D: *const function_signatures.glTexStorage3D = undefined; + var glMemoryBarrier: *const function_signatures.glMemoryBarrier = undefined; + var glBindImageTexture: *const function_signatures.glBindImageTexture = undefined; + var glGetActiveAtomicCounterBufferiv: *const function_signatures.glGetActiveAtomicCounterBufferiv = undefined; + var glGetInternalformativ: *const function_signatures.glGetInternalformativ = undefined; + var glDrawElementsInstancedBaseVertexBaseInstance: *const function_signatures.glDrawElementsInstancedBaseVertexBaseInstance = undefined; + var glDrawElementsInstancedBaseInstance: *const function_signatures.glDrawElementsInstancedBaseInstance = undefined; + var glDrawArraysInstancedBaseInstance: *const function_signatures.glDrawArraysInstancedBaseInstance = undefined; + var glGetDoublei_v: *const function_signatures.glGetDoublei_v = undefined; + var glGetFloati_v: *const function_signatures.glGetFloati_v = undefined; + var glDepthRangeIndexed: *const function_signatures.glDepthRangeIndexed = undefined; + var glDepthRangeArrayv: *const function_signatures.glDepthRangeArrayv = undefined; + var glScissorIndexedv: *const function_signatures.glScissorIndexedv = undefined; + var glScissorIndexed: *const function_signatures.glScissorIndexed = undefined; + var glScissorArrayv: *const function_signatures.glScissorArrayv = undefined; + var glViewportIndexedfv: *const function_signatures.glViewportIndexedfv = undefined; + var glViewportIndexedf: *const function_signatures.glViewportIndexedf = undefined; + var glViewportArrayv: *const function_signatures.glViewportArrayv = undefined; + var glGetVertexAttribLdv: *const function_signatures.glGetVertexAttribLdv = undefined; + var glVertexAttribLPointer: *const function_signatures.glVertexAttribLPointer = undefined; + var glVertexAttribL4dv: *const function_signatures.glVertexAttribL4dv = undefined; + var glVertexAttribL3dv: *const function_signatures.glVertexAttribL3dv = undefined; + var glVertexAttribL2dv: *const function_signatures.glVertexAttribL2dv = undefined; + var glVertexAttribL1dv: *const function_signatures.glVertexAttribL1dv = undefined; + var glVertexAttribL4d: *const function_signatures.glVertexAttribL4d = undefined; + var glVertexAttribL3d: *const function_signatures.glVertexAttribL3d = undefined; + var glVertexAttribL2d: *const function_signatures.glVertexAttribL2d = undefined; + var glVertexAttribL1d: *const function_signatures.glVertexAttribL1d = undefined; + var glValidateProgramPipeline: *const function_signatures.glValidateProgramPipeline = undefined; + var glProgramUniformMatrix4x3dv: *const function_signatures.glProgramUniformMatrix4x3dv = undefined; + var glProgramUniformMatrix3x4dv: *const function_signatures.glProgramUniformMatrix3x4dv = undefined; + var glProgramUniformMatrix4x2dv: *const function_signatures.glProgramUniformMatrix4x2dv = undefined; + var glProgramUniformMatrix2x4dv: *const function_signatures.glProgramUniformMatrix2x4dv = undefined; + var glProgramUniformMatrix3x2dv: *const function_signatures.glProgramUniformMatrix3x2dv = undefined; + var glProgramUniformMatrix2x3dv: *const function_signatures.glProgramUniformMatrix2x3dv = undefined; + var glProgramUniformMatrix4x3fv: *const function_signatures.glProgramUniformMatrix4x3fv = undefined; + var glProgramUniformMatrix3x4fv: *const function_signatures.glProgramUniformMatrix3x4fv = undefined; + var glProgramUniformMatrix4x2fv: *const function_signatures.glProgramUniformMatrix4x2fv = undefined; + var glProgramUniformMatrix2x4fv: *const function_signatures.glProgramUniformMatrix2x4fv = undefined; + var glProgramUniformMatrix3x2fv: *const function_signatures.glProgramUniformMatrix3x2fv = undefined; + var glProgramUniformMatrix2x3fv: *const function_signatures.glProgramUniformMatrix2x3fv = undefined; + var glProgramUniformMatrix4dv: *const function_signatures.glProgramUniformMatrix4dv = undefined; + var glProgramUniformMatrix3dv: *const function_signatures.glProgramUniformMatrix3dv = undefined; + var glProgramUniformMatrix2dv: *const function_signatures.glProgramUniformMatrix2dv = undefined; + var glProgramUniformMatrix4fv: *const function_signatures.glProgramUniformMatrix4fv = undefined; + var glProgramUniformMatrix3fv: *const function_signatures.glProgramUniformMatrix3fv = undefined; + var glProgramUniformMatrix2fv: *const function_signatures.glProgramUniformMatrix2fv = undefined; + var glProgramUniform4uiv: *const function_signatures.glProgramUniform4uiv = undefined; + var glProgramUniform4ui: *const function_signatures.glProgramUniform4ui = undefined; + var glProgramUniform4dv: *const function_signatures.glProgramUniform4dv = undefined; + var glProgramUniform4d: *const function_signatures.glProgramUniform4d = undefined; + var glProgramUniform4fv: *const function_signatures.glProgramUniform4fv = undefined; + var glProgramUniform4f: *const function_signatures.glProgramUniform4f = undefined; + var glProgramUniform4iv: *const function_signatures.glProgramUniform4iv = undefined; + var glProgramUniform4i: *const function_signatures.glProgramUniform4i = undefined; + var glProgramUniform3uiv: *const function_signatures.glProgramUniform3uiv = undefined; + var glProgramUniform3ui: *const function_signatures.glProgramUniform3ui = undefined; + var glProgramUniform3dv: *const function_signatures.glProgramUniform3dv = undefined; + var glProgramUniform3d: *const function_signatures.glProgramUniform3d = undefined; + var glProgramUniform3fv: *const function_signatures.glProgramUniform3fv = undefined; + var glProgramUniform3f: *const function_signatures.glProgramUniform3f = undefined; + var glProgramUniform3iv: *const function_signatures.glProgramUniform3iv = undefined; + var glProgramUniform3i: *const function_signatures.glProgramUniform3i = undefined; + var glUseProgramStages: *const function_signatures.glUseProgramStages = undefined; + var glProgramParameteri: *const function_signatures.glProgramParameteri = undefined; + var glGetShaderPrecisionFormat: *const function_signatures.glGetShaderPrecisionFormat = undefined; + var glShaderBinary: *const function_signatures.glShaderBinary = undefined; + var glReleaseShaderCompiler: *const function_signatures.glReleaseShaderCompiler = undefined; + var glGetQueryIndexediv: *const function_signatures.glGetQueryIndexediv = undefined; + var glEndQueryIndexed: *const function_signatures.glEndQueryIndexed = undefined; + var glBeginQueryIndexed: *const function_signatures.glBeginQueryIndexed = undefined; + var glDrawTransformFeedbackStream: *const function_signatures.glDrawTransformFeedbackStream = undefined; + var glDrawTransformFeedback: *const function_signatures.glDrawTransformFeedback = undefined; + var glResumeTransformFeedback: *const function_signatures.glResumeTransformFeedback = undefined; + var glPauseTransformFeedback: *const function_signatures.glPauseTransformFeedback = undefined; + var glGetProgramStageiv: *const function_signatures.glGetProgramStageiv = undefined; + var glGetUniformSubroutineuiv: *const function_signatures.glGetUniformSubroutineuiv = undefined; + var glUniformSubroutinesuiv: *const function_signatures.glUniformSubroutinesuiv = undefined; + var glGetActiveSubroutineName: *const function_signatures.glGetActiveSubroutineName = undefined; + var glCullFace: *const function_signatures.glCullFace = undefined; + var glFrontFace: *const function_signatures.glFrontFace = undefined; + var glHint: *const function_signatures.glHint = undefined; + var glLineWidth: *const function_signatures.glLineWidth = undefined; + var glPointSize: *const function_signatures.glPointSize = undefined; + var glPolygonMode: *const function_signatures.glPolygonMode = undefined; + var glScissor: *const function_signatures.glScissor = undefined; + var glTexParameterf: *const function_signatures.glTexParameterf = undefined; + var glTexParameterfv: *const function_signatures.glTexParameterfv = undefined; + var glTexParameteri: *const function_signatures.glTexParameteri = undefined; + var glTexParameteriv: *const function_signatures.glTexParameteriv = undefined; + var glTexImage1D: *const function_signatures.glTexImage1D = undefined; + var glTexImage2D: *const function_signatures.glTexImage2D = undefined; + var glDrawBuffer: *const function_signatures.glDrawBuffer = undefined; + var glClear: *const function_signatures.glClear = undefined; + var glClearColor: *const function_signatures.glClearColor = undefined; + var glClearStencil: *const function_signatures.glClearStencil = undefined; + var glClearDepth: *const function_signatures.glClearDepth = undefined; + var glStencilMask: *const function_signatures.glStencilMask = undefined; + var glColorMask: *const function_signatures.glColorMask = undefined; + var glDepthMask: *const function_signatures.glDepthMask = undefined; + var glDisable: *const function_signatures.glDisable = undefined; + var glEnable: *const function_signatures.glEnable = undefined; + var glFinish: *const function_signatures.glFinish = undefined; + var glFlush: *const function_signatures.glFlush = undefined; + var glBlendFunc: *const function_signatures.glBlendFunc = undefined; + var glLogicOp: *const function_signatures.glLogicOp = undefined; + var glStencilFunc: *const function_signatures.glStencilFunc = undefined; + var glStencilOp: *const function_signatures.glStencilOp = undefined; + var glDepthFunc: *const function_signatures.glDepthFunc = undefined; + var glPixelStoref: *const function_signatures.glPixelStoref = undefined; + var glPixelStorei: *const function_signatures.glPixelStorei = undefined; + var glReadBuffer: *const function_signatures.glReadBuffer = undefined; + var glReadPixels: *const function_signatures.glReadPixels = undefined; + var glGetBooleanv: *const function_signatures.glGetBooleanv = undefined; + var glGetDoublev: *const function_signatures.glGetDoublev = undefined; + var glGetError: *const function_signatures.glGetError = undefined; + var glGetFloatv: *const function_signatures.glGetFloatv = undefined; + var glGetIntegerv: *const function_signatures.glGetIntegerv = undefined; + var glGetString: *const function_signatures.glGetString = undefined; + var glGetTexImage: *const function_signatures.glGetTexImage = undefined; + var glGetTexParameterfv: *const function_signatures.glGetTexParameterfv = undefined; + var glGetTexParameteriv: *const function_signatures.glGetTexParameteriv = undefined; + var glGetTexLevelParameterfv: *const function_signatures.glGetTexLevelParameterfv = undefined; + var glGetTexLevelParameteriv: *const function_signatures.glGetTexLevelParameteriv = undefined; + var glIsEnabled: *const function_signatures.glIsEnabled = undefined; + var glDepthRange: *const function_signatures.glDepthRange = undefined; + var glViewport: *const function_signatures.glViewport = undefined; + var glTexStorage2DMultisample: *const function_signatures.glTexStorage2DMultisample = undefined; + var glTexBufferRange: *const function_signatures.glTexBufferRange = undefined; + var glShaderStorageBlockBinding: *const function_signatures.glShaderStorageBlockBinding = undefined; + var glGetProgramResourceLocationIndex: *const function_signatures.glGetProgramResourceLocationIndex = undefined; + var glGetProgramResourceLocation: *const function_signatures.glGetProgramResourceLocation = undefined; + var glGetProgramResourceiv: *const function_signatures.glGetProgramResourceiv = undefined; + var glGetProgramResourceName: *const function_signatures.glGetProgramResourceName = undefined; + var glGetProgramResourceIndex: *const function_signatures.glGetProgramResourceIndex = undefined; + var glGetProgramInterfaceiv: *const function_signatures.glGetProgramInterfaceiv = undefined; + var glMultiDrawElementsIndirect: *const function_signatures.glMultiDrawElementsIndirect = undefined; + var glMultiDrawArraysIndirect: *const function_signatures.glMultiDrawArraysIndirect = undefined; + var glInvalidateSubFramebuffer: *const function_signatures.glInvalidateSubFramebuffer = undefined; + var glInvalidateFramebuffer: *const function_signatures.glInvalidateFramebuffer = undefined; + var glInvalidateBufferData: *const function_signatures.glInvalidateBufferData = undefined; + var glInvalidateBufferSubData: *const function_signatures.glInvalidateBufferSubData = undefined; + var glInvalidateTexImage: *const function_signatures.glInvalidateTexImage = undefined; + var glInvalidateTexSubImage: *const function_signatures.glInvalidateTexSubImage = undefined; + var glGetInternalformati64v: *const function_signatures.glGetInternalformati64v = undefined; + var glGetFramebufferParameteriv: *const function_signatures.glGetFramebufferParameteriv = undefined; + var glFramebufferParameteri: *const function_signatures.glFramebufferParameteri = undefined; + var glCopyImageSubData: *const function_signatures.glCopyImageSubData = undefined; + var glDispatchComputeIndirect: *const function_signatures.glDispatchComputeIndirect = undefined; + var glDispatchCompute: *const function_signatures.glDispatchCompute = undefined; + var glClearBufferSubData: *const function_signatures.glClearBufferSubData = undefined; + var glClearBufferData: *const function_signatures.glClearBufferData = undefined; + var glGetProgramPipelineInfoLog: *const function_signatures.glGetProgramPipelineInfoLog = undefined; + var glProgramUniform2uiv: *const function_signatures.glProgramUniform2uiv = undefined; + var glProgramUniform2ui: *const function_signatures.glProgramUniform2ui = undefined; + var glProgramUniform2dv: *const function_signatures.glProgramUniform2dv = undefined; + var glProgramUniform2d: *const function_signatures.glProgramUniform2d = undefined; + var glProgramUniform2fv: *const function_signatures.glProgramUniform2fv = undefined; + var glProgramUniform2f: *const function_signatures.glProgramUniform2f = undefined; + var glProgramUniform2iv: *const function_signatures.glProgramUniform2iv = undefined; + var glProgramUniform2i: *const function_signatures.glProgramUniform2i = undefined; + var glProgramUniform1uiv: *const function_signatures.glProgramUniform1uiv = undefined; + var glProgramUniform1ui: *const function_signatures.glProgramUniform1ui = undefined; + var glProgramUniform1dv: *const function_signatures.glProgramUniform1dv = undefined; + var glProgramUniform1d: *const function_signatures.glProgramUniform1d = undefined; + var glProgramUniform1fv: *const function_signatures.glProgramUniform1fv = undefined; + var glProgramUniform1f: *const function_signatures.glProgramUniform1f = undefined; + var glProgramUniform1iv: *const function_signatures.glProgramUniform1iv = undefined; + var glProgramUniform1i: *const function_signatures.glProgramUniform1i = undefined; + var glGetProgramPipelineiv: *const function_signatures.glGetProgramPipelineiv = undefined; + var glIsProgramPipeline: *const function_signatures.glIsProgramPipeline = undefined; + var glGenProgramPipelines: *const function_signatures.glGenProgramPipelines = undefined; + var glDeleteProgramPipelines: *const function_signatures.glDeleteProgramPipelines = undefined; + var glBindProgramPipeline: *const function_signatures.glBindProgramPipeline = undefined; + var glCreateShaderProgramv: *const function_signatures.glCreateShaderProgramv = undefined; + var glActiveShaderProgram: *const function_signatures.glActiveShaderProgram = undefined; + var glProgramBinary: *const function_signatures.glProgramBinary = undefined; + var glGetProgramBinary: *const function_signatures.glGetProgramBinary = undefined; + var glClearDepthf: *const function_signatures.glClearDepthf = undefined; + var glDepthRangef: *const function_signatures.glDepthRangef = undefined; + var glIsTransformFeedback: *const function_signatures.glIsTransformFeedback = undefined; + var glGenTransformFeedbacks: *const function_signatures.glGenTransformFeedbacks = undefined; + var glDeleteTransformFeedbacks: *const function_signatures.glDeleteTransformFeedbacks = undefined; + var glBindTransformFeedback: *const function_signatures.glBindTransformFeedback = undefined; + var glPatchParameterfv: *const function_signatures.glPatchParameterfv = undefined; + var glPatchParameteri: *const function_signatures.glPatchParameteri = undefined; + var glDrawArrays: *const function_signatures.glDrawArrays = undefined; + var glDrawElements: *const function_signatures.glDrawElements = undefined; + var glPolygonOffset: *const function_signatures.glPolygonOffset = undefined; + var glCopyTexImage1D: *const function_signatures.glCopyTexImage1D = undefined; + var glCopyTexImage2D: *const function_signatures.glCopyTexImage2D = undefined; + var glCopyTexSubImage1D: *const function_signatures.glCopyTexSubImage1D = undefined; + var glCopyTexSubImage2D: *const function_signatures.glCopyTexSubImage2D = undefined; + var glTexSubImage1D: *const function_signatures.glTexSubImage1D = undefined; + var glTexSubImage2D: *const function_signatures.glTexSubImage2D = undefined; + var glBindTexture: *const function_signatures.glBindTexture = undefined; + var glDeleteTextures: *const function_signatures.glDeleteTextures = undefined; + var glGenTextures: *const function_signatures.glGenTextures = undefined; + var glIsTexture: *const function_signatures.glIsTexture = undefined; + var glGetActiveSubroutineUniformName: *const function_signatures.glGetActiveSubroutineUniformName = undefined; + var glGetActiveSubroutineUniformiv: *const function_signatures.glGetActiveSubroutineUniformiv = undefined; + var glGetSubroutineIndex: *const function_signatures.glGetSubroutineIndex = undefined; + var glGetSubroutineUniformLocation: *const function_signatures.glGetSubroutineUniformLocation = undefined; + var glGetUniformdv: *const function_signatures.glGetUniformdv = undefined; + var glUniformMatrix4x3dv: *const function_signatures.glUniformMatrix4x3dv = undefined; + var glUniformMatrix4x2dv: *const function_signatures.glUniformMatrix4x2dv = undefined; + var glUniformMatrix3x4dv: *const function_signatures.glUniformMatrix3x4dv = undefined; + var glUniformMatrix3x2dv: *const function_signatures.glUniformMatrix3x2dv = undefined; + var glUniformMatrix2x4dv: *const function_signatures.glUniformMatrix2x4dv = undefined; + var glUniformMatrix2x3dv: *const function_signatures.glUniformMatrix2x3dv = undefined; + var glUniformMatrix4dv: *const function_signatures.glUniformMatrix4dv = undefined; + var glUniformMatrix3dv: *const function_signatures.glUniformMatrix3dv = undefined; + var glDrawRangeElements: *const function_signatures.glDrawRangeElements = undefined; + var glTexImage3D: *const function_signatures.glTexImage3D = undefined; + var glTexSubImage3D: *const function_signatures.glTexSubImage3D = undefined; + var glCopyTexSubImage3D: *const function_signatures.glCopyTexSubImage3D = undefined; + var glUniformMatrix2dv: *const function_signatures.glUniformMatrix2dv = undefined; + var glUniform4dv: *const function_signatures.glUniform4dv = undefined; + var glUniform3dv: *const function_signatures.glUniform3dv = undefined; + var glUniform2dv: *const function_signatures.glUniform2dv = undefined; + var glUniform1dv: *const function_signatures.glUniform1dv = undefined; + var glUniform4d: *const function_signatures.glUniform4d = undefined; + var glUniform3d: *const function_signatures.glUniform3d = undefined; + var glUniform2d: *const function_signatures.glUniform2d = undefined; + var glUniform1d: *const function_signatures.glUniform1d = undefined; + var glDrawElementsIndirect: *const function_signatures.glDrawElementsIndirect = undefined; + var glDrawArraysIndirect: *const function_signatures.glDrawArraysIndirect = undefined; + var glBlendFuncSeparatei: *const function_signatures.glBlendFuncSeparatei = undefined; + var glBlendFunci: *const function_signatures.glBlendFunci = undefined; + var glBlendEquationSeparatei: *const function_signatures.glBlendEquationSeparatei = undefined; + var glBlendEquationi: *const function_signatures.glBlendEquationi = undefined; + var glMinSampleShading: *const function_signatures.glMinSampleShading = undefined; + var glActiveTexture: *const function_signatures.glActiveTexture = undefined; + var glSampleCoverage: *const function_signatures.glSampleCoverage = undefined; + var glCompressedTexImage3D: *const function_signatures.glCompressedTexImage3D = undefined; + var glCompressedTexImage2D: *const function_signatures.glCompressedTexImage2D = undefined; + var glCompressedTexImage1D: *const function_signatures.glCompressedTexImage1D = undefined; + var glCompressedTexSubImage3D: *const function_signatures.glCompressedTexSubImage3D = undefined; + var glCompressedTexSubImage2D: *const function_signatures.glCompressedTexSubImage2D = undefined; + var glCompressedTexSubImage1D: *const function_signatures.glCompressedTexSubImage1D = undefined; + var glGetCompressedTexImage: *const function_signatures.glGetCompressedTexImage = undefined; + var glVertexAttribP4uiv: *const function_signatures.glVertexAttribP4uiv = undefined; + var glVertexAttribP4ui: *const function_signatures.glVertexAttribP4ui = undefined; + var glVertexAttribP3uiv: *const function_signatures.glVertexAttribP3uiv = undefined; + var glVertexAttribP3ui: *const function_signatures.glVertexAttribP3ui = undefined; + var glVertexAttribP2uiv: *const function_signatures.glVertexAttribP2uiv = undefined; + var glVertexAttribP2ui: *const function_signatures.glVertexAttribP2ui = undefined; + var glVertexAttribP1uiv: *const function_signatures.glVertexAttribP1uiv = undefined; + var glVertexAttribP1ui: *const function_signatures.glVertexAttribP1ui = undefined; + var glVertexAttribDivisor: *const function_signatures.glVertexAttribDivisor = undefined; + var glGetQueryObjectui64v: *const function_signatures.glGetQueryObjectui64v = undefined; + var glGetQueryObjecti64v: *const function_signatures.glGetQueryObjecti64v = undefined; + var glQueryCounter: *const function_signatures.glQueryCounter = undefined; + var glGetSamplerParameterIuiv: *const function_signatures.glGetSamplerParameterIuiv = undefined; + var glGetSamplerParameterfv: *const function_signatures.glGetSamplerParameterfv = undefined; + var glGetSamplerParameterIiv: *const function_signatures.glGetSamplerParameterIiv = undefined; + var glGetSamplerParameteriv: *const function_signatures.glGetSamplerParameteriv = undefined; + var glSamplerParameterIuiv: *const function_signatures.glSamplerParameterIuiv = undefined; + var glSamplerParameterIiv: *const function_signatures.glSamplerParameterIiv = undefined; + var glSamplerParameterfv: *const function_signatures.glSamplerParameterfv = undefined; + var glSamplerParameterf: *const function_signatures.glSamplerParameterf = undefined; + var glSamplerParameteriv: *const function_signatures.glSamplerParameteriv = undefined; + var glSamplerParameteri: *const function_signatures.glSamplerParameteri = undefined; + var glBindSampler: *const function_signatures.glBindSampler = undefined; + var glIsSampler: *const function_signatures.glIsSampler = undefined; + var glDeleteSamplers: *const function_signatures.glDeleteSamplers = undefined; + var glGenSamplers: *const function_signatures.glGenSamplers = undefined; + var glGetFragDataIndex: *const function_signatures.glGetFragDataIndex = undefined; + var glBindFragDataLocationIndexed: *const function_signatures.glBindFragDataLocationIndexed = undefined; + var glSampleMaski: *const function_signatures.glSampleMaski = undefined; + var glGetMultisamplefv: *const function_signatures.glGetMultisamplefv = undefined; + var glTexImage3DMultisample: *const function_signatures.glTexImage3DMultisample = undefined; + var glTexImage2DMultisample: *const function_signatures.glTexImage2DMultisample = undefined; + var glFramebufferTexture: *const function_signatures.glFramebufferTexture = undefined; + var glGetBufferParameteri64v: *const function_signatures.glGetBufferParameteri64v = undefined; + var glBlendFuncSeparate: *const function_signatures.glBlendFuncSeparate = undefined; + var glMultiDrawArrays: *const function_signatures.glMultiDrawArrays = undefined; + var glMultiDrawElements: *const function_signatures.glMultiDrawElements = undefined; + var glPointParameterf: *const function_signatures.glPointParameterf = undefined; + var glPointParameterfv: *const function_signatures.glPointParameterfv = undefined; + var glPointParameteri: *const function_signatures.glPointParameteri = undefined; + var glPointParameteriv: *const function_signatures.glPointParameteriv = undefined; + var glGetInteger64i_v: *const function_signatures.glGetInteger64i_v = undefined; + var glGetSynciv: *const function_signatures.glGetSynciv = undefined; + var glGetInteger64v: *const function_signatures.glGetInteger64v = undefined; + var glWaitSync: *const function_signatures.glWaitSync = undefined; + var glClientWaitSync: *const function_signatures.glClientWaitSync = undefined; + var glDeleteSync: *const function_signatures.glDeleteSync = undefined; + var glIsSync: *const function_signatures.glIsSync = undefined; + var glFenceSync: *const function_signatures.glFenceSync = undefined; + var glBlendColor: *const function_signatures.glBlendColor = undefined; + var glBlendEquation: *const function_signatures.glBlendEquation = undefined; + var glProvokingVertex: *const function_signatures.glProvokingVertex = undefined; + var glMultiDrawElementsBaseVertex: *const function_signatures.glMultiDrawElementsBaseVertex = undefined; + var glDrawElementsInstancedBaseVertex: *const function_signatures.glDrawElementsInstancedBaseVertex = undefined; + var glDrawRangeElementsBaseVertex: *const function_signatures.glDrawRangeElementsBaseVertex = undefined; + var glDrawElementsBaseVertex: *const function_signatures.glDrawElementsBaseVertex = undefined; + var glGenQueries: *const function_signatures.glGenQueries = undefined; + var glDeleteQueries: *const function_signatures.glDeleteQueries = undefined; + var glIsQuery: *const function_signatures.glIsQuery = undefined; + var glBeginQuery: *const function_signatures.glBeginQuery = undefined; + var glEndQuery: *const function_signatures.glEndQuery = undefined; + var glGetQueryiv: *const function_signatures.glGetQueryiv = undefined; + var glGetQueryObjectiv: *const function_signatures.glGetQueryObjectiv = undefined; + var glGetQueryObjectuiv: *const function_signatures.glGetQueryObjectuiv = undefined; + var glBindBuffer: *const function_signatures.glBindBuffer = undefined; + var glDeleteBuffers: *const function_signatures.glDeleteBuffers = undefined; + var glGenBuffers: *const function_signatures.glGenBuffers = undefined; + var glIsBuffer: *const function_signatures.glIsBuffer = undefined; + var glBufferData: *const function_signatures.glBufferData = undefined; + var glBufferSubData: *const function_signatures.glBufferSubData = undefined; + var glGetBufferSubData: *const function_signatures.glGetBufferSubData = undefined; + var glMapBuffer: *const function_signatures.glMapBuffer = undefined; + var glUnmapBuffer: *const function_signatures.glUnmapBuffer = undefined; + var glGetBufferParameteriv: *const function_signatures.glGetBufferParameteriv = undefined; + var glGetBufferPointerv: *const function_signatures.glGetBufferPointerv = undefined; + var glBlendEquationSeparate: *const function_signatures.glBlendEquationSeparate = undefined; + var glDrawBuffers: *const function_signatures.glDrawBuffers = undefined; + var glStencilOpSeparate: *const function_signatures.glStencilOpSeparate = undefined; + var glStencilFuncSeparate: *const function_signatures.glStencilFuncSeparate = undefined; + var glStencilMaskSeparate: *const function_signatures.glStencilMaskSeparate = undefined; + var glAttachShader: *const function_signatures.glAttachShader = undefined; + var glBindAttribLocation: *const function_signatures.glBindAttribLocation = undefined; + var glCompileShader: *const function_signatures.glCompileShader = undefined; + var glCreateProgram: *const function_signatures.glCreateProgram = undefined; + var glCreateShader: *const function_signatures.glCreateShader = undefined; + var glDeleteProgram: *const function_signatures.glDeleteProgram = undefined; + var glDeleteShader: *const function_signatures.glDeleteShader = undefined; + var glDetachShader: *const function_signatures.glDetachShader = undefined; + var glDisableVertexAttribArray: *const function_signatures.glDisableVertexAttribArray = undefined; + var glEnableVertexAttribArray: *const function_signatures.glEnableVertexAttribArray = undefined; + var glGetActiveAttrib: *const function_signatures.glGetActiveAttrib = undefined; + var glGetActiveUniform: *const function_signatures.glGetActiveUniform = undefined; + var glGetAttachedShaders: *const function_signatures.glGetAttachedShaders = undefined; + var glGetAttribLocation: *const function_signatures.glGetAttribLocation = undefined; + var glGetProgramiv: *const function_signatures.glGetProgramiv = undefined; + var glGetProgramInfoLog: *const function_signatures.glGetProgramInfoLog = undefined; + var glGetShaderiv: *const function_signatures.glGetShaderiv = undefined; + var glGetShaderInfoLog: *const function_signatures.glGetShaderInfoLog = undefined; + var glGetShaderSource: *const function_signatures.glGetShaderSource = undefined; + var glGetUniformLocation: *const function_signatures.glGetUniformLocation = undefined; + var glGetUniformfv: *const function_signatures.glGetUniformfv = undefined; + var glGetUniformiv: *const function_signatures.glGetUniformiv = undefined; + var glGetVertexAttribdv: *const function_signatures.glGetVertexAttribdv = undefined; + var glGetVertexAttribfv: *const function_signatures.glGetVertexAttribfv = undefined; + var glGetVertexAttribiv: *const function_signatures.glGetVertexAttribiv = undefined; + var glGetVertexAttribPointerv: *const function_signatures.glGetVertexAttribPointerv = undefined; + var glIsProgram: *const function_signatures.glIsProgram = undefined; + var glIsShader: *const function_signatures.glIsShader = undefined; + var glLinkProgram: *const function_signatures.glLinkProgram = undefined; + var glShaderSource: *const function_signatures.glShaderSource = undefined; + var glUseProgram: *const function_signatures.glUseProgram = undefined; + var glUniform1f: *const function_signatures.glUniform1f = undefined; + var glUniform2f: *const function_signatures.glUniform2f = undefined; + var glUniform3f: *const function_signatures.glUniform3f = undefined; + var glUniform4f: *const function_signatures.glUniform4f = undefined; + var glUniform1i: *const function_signatures.glUniform1i = undefined; + var glUniform2i: *const function_signatures.glUniform2i = undefined; + var glUniform3i: *const function_signatures.glUniform3i = undefined; + var glUniform4i: *const function_signatures.glUniform4i = undefined; + var glUniform1fv: *const function_signatures.glUniform1fv = undefined; + var glUniform2fv: *const function_signatures.glUniform2fv = undefined; + var glUniform3fv: *const function_signatures.glUniform3fv = undefined; + var glUniform4fv: *const function_signatures.glUniform4fv = undefined; + var glUniform1iv: *const function_signatures.glUniform1iv = undefined; + var glUniform2iv: *const function_signatures.glUniform2iv = undefined; + var glUniform3iv: *const function_signatures.glUniform3iv = undefined; + var glUniform4iv: *const function_signatures.glUniform4iv = undefined; + var glUniformMatrix2fv: *const function_signatures.glUniformMatrix2fv = undefined; + var glUniformMatrix3fv: *const function_signatures.glUniformMatrix3fv = undefined; + var glUniformMatrix4fv: *const function_signatures.glUniformMatrix4fv = undefined; + var glValidateProgram: *const function_signatures.glValidateProgram = undefined; + var glVertexAttrib1d: *const function_signatures.glVertexAttrib1d = undefined; + var glVertexAttrib1dv: *const function_signatures.glVertexAttrib1dv = undefined; + var glVertexAttrib1f: *const function_signatures.glVertexAttrib1f = undefined; + var glVertexAttrib1fv: *const function_signatures.glVertexAttrib1fv = undefined; + var glVertexAttrib1s: *const function_signatures.glVertexAttrib1s = undefined; + var glVertexAttrib1sv: *const function_signatures.glVertexAttrib1sv = undefined; + var glVertexAttrib2d: *const function_signatures.glVertexAttrib2d = undefined; + var glVertexAttrib2dv: *const function_signatures.glVertexAttrib2dv = undefined; + var glVertexAttrib2f: *const function_signatures.glVertexAttrib2f = undefined; + var glVertexAttrib2fv: *const function_signatures.glVertexAttrib2fv = undefined; + var glVertexAttrib2s: *const function_signatures.glVertexAttrib2s = undefined; + var glVertexAttrib2sv: *const function_signatures.glVertexAttrib2sv = undefined; + var glVertexAttrib3d: *const function_signatures.glVertexAttrib3d = undefined; + var glVertexAttrib3dv: *const function_signatures.glVertexAttrib3dv = undefined; + var glVertexAttrib3f: *const function_signatures.glVertexAttrib3f = undefined; + var glVertexAttrib3fv: *const function_signatures.glVertexAttrib3fv = undefined; + var glVertexAttrib3s: *const function_signatures.glVertexAttrib3s = undefined; + var glVertexAttrib3sv: *const function_signatures.glVertexAttrib3sv = undefined; + var glVertexAttrib4Nbv: *const function_signatures.glVertexAttrib4Nbv = undefined; + var glVertexAttrib4Niv: *const function_signatures.glVertexAttrib4Niv = undefined; + var glVertexAttrib4Nsv: *const function_signatures.glVertexAttrib4Nsv = undefined; + var glVertexAttrib4Nub: *const function_signatures.glVertexAttrib4Nub = undefined; + var glVertexAttrib4Nubv: *const function_signatures.glVertexAttrib4Nubv = undefined; + var glVertexAttrib4Nuiv: *const function_signatures.glVertexAttrib4Nuiv = undefined; + var glVertexAttrib4Nusv: *const function_signatures.glVertexAttrib4Nusv = undefined; + var glVertexAttrib4bv: *const function_signatures.glVertexAttrib4bv = undefined; + var glVertexAttrib4d: *const function_signatures.glVertexAttrib4d = undefined; + var glVertexAttrib4dv: *const function_signatures.glVertexAttrib4dv = undefined; + var glVertexAttrib4f: *const function_signatures.glVertexAttrib4f = undefined; + var glVertexAttrib4fv: *const function_signatures.glVertexAttrib4fv = undefined; + var glVertexAttrib4iv: *const function_signatures.glVertexAttrib4iv = undefined; + var glVertexAttrib4s: *const function_signatures.glVertexAttrib4s = undefined; + var glVertexAttrib4sv: *const function_signatures.glVertexAttrib4sv = undefined; + var glVertexAttrib4ubv: *const function_signatures.glVertexAttrib4ubv = undefined; + var glVertexAttrib4uiv: *const function_signatures.glVertexAttrib4uiv = undefined; + var glVertexAttrib4usv: *const function_signatures.glVertexAttrib4usv = undefined; + var glVertexAttribPointer: *const function_signatures.glVertexAttribPointer = undefined; + var glUniformMatrix2x3fv: *const function_signatures.glUniformMatrix2x3fv = undefined; + var glUniformMatrix3x2fv: *const function_signatures.glUniformMatrix3x2fv = undefined; + var glUniformMatrix2x4fv: *const function_signatures.glUniformMatrix2x4fv = undefined; + var glUniformMatrix4x2fv: *const function_signatures.glUniformMatrix4x2fv = undefined; + var glUniformMatrix3x4fv: *const function_signatures.glUniformMatrix3x4fv = undefined; + var glUniformMatrix4x3fv: *const function_signatures.glUniformMatrix4x3fv = undefined; + var glColorMaski: *const function_signatures.glColorMaski = undefined; + var glGetBooleani_v: *const function_signatures.glGetBooleani_v = undefined; + var glGetIntegeri_v: *const function_signatures.glGetIntegeri_v = undefined; + var glEnablei: *const function_signatures.glEnablei = undefined; + var glDisablei: *const function_signatures.glDisablei = undefined; + var glIsEnabledi: *const function_signatures.glIsEnabledi = undefined; + var glBeginTransformFeedback: *const function_signatures.glBeginTransformFeedback = undefined; + var glEndTransformFeedback: *const function_signatures.glEndTransformFeedback = undefined; + var glBindBufferRange: *const function_signatures.glBindBufferRange = undefined; + var glBindBufferBase: *const function_signatures.glBindBufferBase = undefined; + var glTransformFeedbackVaryings: *const function_signatures.glTransformFeedbackVaryings = undefined; + var glGetTransformFeedbackVarying: *const function_signatures.glGetTransformFeedbackVarying = undefined; + var glClampColor: *const function_signatures.glClampColor = undefined; + var glBeginConditionalRender: *const function_signatures.glBeginConditionalRender = undefined; + var glEndConditionalRender: *const function_signatures.glEndConditionalRender = undefined; + var glVertexAttribIPointer: *const function_signatures.glVertexAttribIPointer = undefined; + var glGetVertexAttribIiv: *const function_signatures.glGetVertexAttribIiv = undefined; + var glGetVertexAttribIuiv: *const function_signatures.glGetVertexAttribIuiv = undefined; + var glVertexAttribI1i: *const function_signatures.glVertexAttribI1i = undefined; + var glVertexAttribI2i: *const function_signatures.glVertexAttribI2i = undefined; + var glVertexAttribI3i: *const function_signatures.glVertexAttribI3i = undefined; + var glVertexAttribI4i: *const function_signatures.glVertexAttribI4i = undefined; + var glVertexAttribI1ui: *const function_signatures.glVertexAttribI1ui = undefined; + var glVertexAttribI2ui: *const function_signatures.glVertexAttribI2ui = undefined; + var glVertexAttribI3ui: *const function_signatures.glVertexAttribI3ui = undefined; + var glVertexAttribI4ui: *const function_signatures.glVertexAttribI4ui = undefined; + var glVertexAttribI1iv: *const function_signatures.glVertexAttribI1iv = undefined; + var glVertexAttribI2iv: *const function_signatures.glVertexAttribI2iv = undefined; + var glVertexAttribI3iv: *const function_signatures.glVertexAttribI3iv = undefined; + var glVertexAttribI4iv: *const function_signatures.glVertexAttribI4iv = undefined; + var glVertexAttribI1uiv: *const function_signatures.glVertexAttribI1uiv = undefined; + var glVertexAttribI2uiv: *const function_signatures.glVertexAttribI2uiv = undefined; + var glVertexAttribI3uiv: *const function_signatures.glVertexAttribI3uiv = undefined; + var glVertexAttribI4uiv: *const function_signatures.glVertexAttribI4uiv = undefined; + var glVertexAttribI4bv: *const function_signatures.glVertexAttribI4bv = undefined; + var glVertexAttribI4sv: *const function_signatures.glVertexAttribI4sv = undefined; + var glVertexAttribI4ubv: *const function_signatures.glVertexAttribI4ubv = undefined; + var glVertexAttribI4usv: *const function_signatures.glVertexAttribI4usv = undefined; + var glGetUniformuiv: *const function_signatures.glGetUniformuiv = undefined; + var glBindFragDataLocation: *const function_signatures.glBindFragDataLocation = undefined; + var glGetFragDataLocation: *const function_signatures.glGetFragDataLocation = undefined; + var glUniform1ui: *const function_signatures.glUniform1ui = undefined; + var glUniform2ui: *const function_signatures.glUniform2ui = undefined; + var glUniform3ui: *const function_signatures.glUniform3ui = undefined; + var glUniform4ui: *const function_signatures.glUniform4ui = undefined; + var glUniform1uiv: *const function_signatures.glUniform1uiv = undefined; + var glUniform2uiv: *const function_signatures.glUniform2uiv = undefined; + var glUniform3uiv: *const function_signatures.glUniform3uiv = undefined; + var glUniform4uiv: *const function_signatures.glUniform4uiv = undefined; + var glTexParameterIiv: *const function_signatures.glTexParameterIiv = undefined; + var glTexParameterIuiv: *const function_signatures.glTexParameterIuiv = undefined; + var glGetTexParameterIiv: *const function_signatures.glGetTexParameterIiv = undefined; + var glGetTexParameterIuiv: *const function_signatures.glGetTexParameterIuiv = undefined; + var glClearBufferiv: *const function_signatures.glClearBufferiv = undefined; + var glClearBufferuiv: *const function_signatures.glClearBufferuiv = undefined; + var glClearBufferfv: *const function_signatures.glClearBufferfv = undefined; + var glClearBufferfi: *const function_signatures.glClearBufferfi = undefined; + var glGetStringi: *const function_signatures.glGetStringi = undefined; + var glIsRenderbuffer: *const function_signatures.glIsRenderbuffer = undefined; + var glBindRenderbuffer: *const function_signatures.glBindRenderbuffer = undefined; + var glDeleteRenderbuffers: *const function_signatures.glDeleteRenderbuffers = undefined; + var glGenRenderbuffers: *const function_signatures.glGenRenderbuffers = undefined; + var glRenderbufferStorage: *const function_signatures.glRenderbufferStorage = undefined; + var glGetRenderbufferParameteriv: *const function_signatures.glGetRenderbufferParameteriv = undefined; + var glIsFramebuffer: *const function_signatures.glIsFramebuffer = undefined; + var glBindFramebuffer: *const function_signatures.glBindFramebuffer = undefined; + var glDeleteFramebuffers: *const function_signatures.glDeleteFramebuffers = undefined; + var glGenFramebuffers: *const function_signatures.glGenFramebuffers = undefined; + var glCheckFramebufferStatus: *const function_signatures.glCheckFramebufferStatus = undefined; + var glFramebufferTexture1D: *const function_signatures.glFramebufferTexture1D = undefined; + var glFramebufferTexture2D: *const function_signatures.glFramebufferTexture2D = undefined; + var glFramebufferTexture3D: *const function_signatures.glFramebufferTexture3D = undefined; + var glFramebufferRenderbuffer: *const function_signatures.glFramebufferRenderbuffer = undefined; + var glGetFramebufferAttachmentParameteriv: *const function_signatures.glGetFramebufferAttachmentParameteriv = undefined; + var glGenerateMipmap: *const function_signatures.glGenerateMipmap = undefined; + var glBlitFramebuffer: *const function_signatures.glBlitFramebuffer = undefined; + var glRenderbufferStorageMultisample: *const function_signatures.glRenderbufferStorageMultisample = undefined; + var glFramebufferTextureLayer: *const function_signatures.glFramebufferTextureLayer = undefined; + var glMapBufferRange: *const function_signatures.glMapBufferRange = undefined; + var glFlushMappedBufferRange: *const function_signatures.glFlushMappedBufferRange = undefined; + var glBindVertexArray: *const function_signatures.glBindVertexArray = undefined; + var glDeleteVertexArrays: *const function_signatures.glDeleteVertexArrays = undefined; + var glGenVertexArrays: *const function_signatures.glGenVertexArrays = undefined; + var glIsVertexArray: *const function_signatures.glIsVertexArray = undefined; + var glDrawArraysInstanced: *const function_signatures.glDrawArraysInstanced = undefined; + var glDrawElementsInstanced: *const function_signatures.glDrawElementsInstanced = undefined; + var glTexBuffer: *const function_signatures.glTexBuffer = undefined; + var glPrimitiveRestartIndex: *const function_signatures.glPrimitiveRestartIndex = undefined; + var glCopyBufferSubData: *const function_signatures.glCopyBufferSubData = undefined; + var glGetUniformIndices: *const function_signatures.glGetUniformIndices = undefined; + var glGetActiveUniformsiv: *const function_signatures.glGetActiveUniformsiv = undefined; + var glGetActiveUniformName: *const function_signatures.glGetActiveUniformName = undefined; + var glGetUniformBlockIndex: *const function_signatures.glGetUniformBlockIndex = undefined; + var glGetActiveUniformBlockiv: *const function_signatures.glGetActiveUniformBlockiv = undefined; + var glGetActiveUniformBlockName: *const function_signatures.glGetActiveUniformBlockName = undefined; + var glUniformBlockBinding: *const function_signatures.glUniformBlockBinding = undefined; + var glTexStorage3DMultisample: *const function_signatures.glTexStorage3DMultisample = undefined; + var glTextureView: *const function_signatures.glTextureView = undefined; + var glBindVertexBuffer: *const function_signatures.glBindVertexBuffer = undefined; + var glVertexAttribFormat: *const function_signatures.glVertexAttribFormat = undefined; + var glVertexAttribIFormat: *const function_signatures.glVertexAttribIFormat = undefined; + var glVertexAttribLFormat: *const function_signatures.glVertexAttribLFormat = undefined; + var glVertexAttribBinding: *const function_signatures.glVertexAttribBinding = undefined; + var glVertexBindingDivisor: *const function_signatures.glVertexBindingDivisor = undefined; + var glDebugMessageControl: *const function_signatures.glDebugMessageControl = undefined; + var glDebugMessageInsert: *const function_signatures.glDebugMessageInsert = undefined; + var glDebugMessageCallback: *const function_signatures.glDebugMessageCallback = undefined; + var glGetDebugMessageLog: *const function_signatures.glGetDebugMessageLog = undefined; + var glPushDebugGroup: *const function_signatures.glPushDebugGroup = undefined; + var glPopDebugGroup: *const function_signatures.glPopDebugGroup = undefined; + var glObjectLabel: *const function_signatures.glObjectLabel = undefined; + var glGetObjectLabel: *const function_signatures.glGetObjectLabel = undefined; + var glObjectPtrLabel: *const function_signatures.glObjectPtrLabel = undefined; + var glGetObjectPtrLabel: *const function_signatures.glGetObjectPtrLabel = undefined; + var glGetPointerv: *const function_signatures.glGetPointerv = undefined; + var glBufferStorage: *const function_signatures.glBufferStorage = undefined; + var glClearTexImage: *const function_signatures.glClearTexImage = undefined; + var glClearTexSubImage: *const function_signatures.glClearTexSubImage = undefined; + var glBindBuffersBase: *const function_signatures.glBindBuffersBase = undefined; + var glBindBuffersRange: *const function_signatures.glBindBuffersRange = undefined; + var glBindTextures: *const function_signatures.glBindTextures = undefined; + var glBindSamplers: *const function_signatures.glBindSamplers = undefined; + var glBindImageTextures: *const function_signatures.glBindImageTextures = undefined; + var glBindVertexBuffers: *const function_signatures.glBindVertexBuffers = undefined; + var glClipControl: *const function_signatures.glClipControl = undefined; + var glCreateTransformFeedbacks: *const function_signatures.glCreateTransformFeedbacks = undefined; + var glTransformFeedbackBufferBase: *const function_signatures.glTransformFeedbackBufferBase = undefined; + var glTransformFeedbackBufferRange: *const function_signatures.glTransformFeedbackBufferRange = undefined; + var glGetTransformFeedbackiv: *const function_signatures.glGetTransformFeedbackiv = undefined; + var glGetTransformFeedbacki_v: *const function_signatures.glGetTransformFeedbacki_v = undefined; + var glGetTransformFeedbacki64_v: *const function_signatures.glGetTransformFeedbacki64_v = undefined; + var glCreateBuffers: *const function_signatures.glCreateBuffers = undefined; + var glNamedBufferStorage: *const function_signatures.glNamedBufferStorage = undefined; + var glNamedBufferData: *const function_signatures.glNamedBufferData = undefined; + var glNamedBufferSubData: *const function_signatures.glNamedBufferSubData = undefined; + var glCopyNamedBufferSubData: *const function_signatures.glCopyNamedBufferSubData = undefined; + var glClearNamedBufferData: *const function_signatures.glClearNamedBufferData = undefined; + var glClearNamedBufferSubData: *const function_signatures.glClearNamedBufferSubData = undefined; + var glMapNamedBuffer: *const function_signatures.glMapNamedBuffer = undefined; + var glMapNamedBufferRange: *const function_signatures.glMapNamedBufferRange = undefined; + var glUnmapNamedBuffer: *const function_signatures.glUnmapNamedBuffer = undefined; + var glFlushMappedNamedBufferRange: *const function_signatures.glFlushMappedNamedBufferRange = undefined; + var glGetNamedBufferParameteriv: *const function_signatures.glGetNamedBufferParameteriv = undefined; + var glGetNamedBufferParameteri64v: *const function_signatures.glGetNamedBufferParameteri64v = undefined; + var glGetNamedBufferPointerv: *const function_signatures.glGetNamedBufferPointerv = undefined; + var glGetNamedBufferSubData: *const function_signatures.glGetNamedBufferSubData = undefined; + var glCreateFramebuffers: *const function_signatures.glCreateFramebuffers = undefined; + var glNamedFramebufferRenderbuffer: *const function_signatures.glNamedFramebufferRenderbuffer = undefined; + var glNamedFramebufferParameteri: *const function_signatures.glNamedFramebufferParameteri = undefined; + var glNamedFramebufferTexture: *const function_signatures.glNamedFramebufferTexture = undefined; + var glNamedFramebufferTextureLayer: *const function_signatures.glNamedFramebufferTextureLayer = undefined; + var glNamedFramebufferDrawBuffer: *const function_signatures.glNamedFramebufferDrawBuffer = undefined; + var glNamedFramebufferDrawBuffers: *const function_signatures.glNamedFramebufferDrawBuffers = undefined; + var glNamedFramebufferReadBuffer: *const function_signatures.glNamedFramebufferReadBuffer = undefined; + var glInvalidateNamedFramebufferData: *const function_signatures.glInvalidateNamedFramebufferData = undefined; + var glInvalidateNamedFramebufferSubData: *const function_signatures.glInvalidateNamedFramebufferSubData = undefined; + var glClearNamedFramebufferiv: *const function_signatures.glClearNamedFramebufferiv = undefined; + var glClearNamedFramebufferuiv: *const function_signatures.glClearNamedFramebufferuiv = undefined; + var glClearNamedFramebufferfv: *const function_signatures.glClearNamedFramebufferfv = undefined; + var glClearNamedFramebufferfi: *const function_signatures.glClearNamedFramebufferfi = undefined; + var glBlitNamedFramebuffer: *const function_signatures.glBlitNamedFramebuffer = undefined; + var glCheckNamedFramebufferStatus: *const function_signatures.glCheckNamedFramebufferStatus = undefined; + var glGetNamedFramebufferParameteriv: *const function_signatures.glGetNamedFramebufferParameteriv = undefined; + var glGetNamedFramebufferAttachmentParameteriv: *const function_signatures.glGetNamedFramebufferAttachmentParameteriv = undefined; + var glCreateRenderbuffers: *const function_signatures.glCreateRenderbuffers = undefined; + var glNamedRenderbufferStorage: *const function_signatures.glNamedRenderbufferStorage = undefined; + var glNamedRenderbufferStorageMultisample: *const function_signatures.glNamedRenderbufferStorageMultisample = undefined; + var glGetNamedRenderbufferParameteriv: *const function_signatures.glGetNamedRenderbufferParameteriv = undefined; + var glCreateTextures: *const function_signatures.glCreateTextures = undefined; + var glTextureBuffer: *const function_signatures.glTextureBuffer = undefined; + var glTextureBufferRange: *const function_signatures.glTextureBufferRange = undefined; + var glTextureStorage1D: *const function_signatures.glTextureStorage1D = undefined; + var glTextureStorage2D: *const function_signatures.glTextureStorage2D = undefined; + var glTextureStorage3D: *const function_signatures.glTextureStorage3D = undefined; + var glTextureStorage2DMultisample: *const function_signatures.glTextureStorage2DMultisample = undefined; + var glTextureStorage3DMultisample: *const function_signatures.glTextureStorage3DMultisample = undefined; + var glTextureSubImage1D: *const function_signatures.glTextureSubImage1D = undefined; + var glTextureSubImage2D: *const function_signatures.glTextureSubImage2D = undefined; + var glTextureSubImage3D: *const function_signatures.glTextureSubImage3D = undefined; + var glCompressedTextureSubImage1D: *const function_signatures.glCompressedTextureSubImage1D = undefined; + var glCompressedTextureSubImage2D: *const function_signatures.glCompressedTextureSubImage2D = undefined; + var glCompressedTextureSubImage3D: *const function_signatures.glCompressedTextureSubImage3D = undefined; + var glCopyTextureSubImage1D: *const function_signatures.glCopyTextureSubImage1D = undefined; + var glCopyTextureSubImage2D: *const function_signatures.glCopyTextureSubImage2D = undefined; + var glCopyTextureSubImage3D: *const function_signatures.glCopyTextureSubImage3D = undefined; + var glTextureParameterf: *const function_signatures.glTextureParameterf = undefined; + var glTextureParameterfv: *const function_signatures.glTextureParameterfv = undefined; + var glTextureParameteri: *const function_signatures.glTextureParameteri = undefined; + var glTextureParameterIiv: *const function_signatures.glTextureParameterIiv = undefined; + var glTextureParameterIuiv: *const function_signatures.glTextureParameterIuiv = undefined; + var glTextureParameteriv: *const function_signatures.glTextureParameteriv = undefined; + var glGenerateTextureMipmap: *const function_signatures.glGenerateTextureMipmap = undefined; + var glBindTextureUnit: *const function_signatures.glBindTextureUnit = undefined; + var glGetTextureImage: *const function_signatures.glGetTextureImage = undefined; + var glGetCompressedTextureImage: *const function_signatures.glGetCompressedTextureImage = undefined; + var glGetTextureLevelParameterfv: *const function_signatures.glGetTextureLevelParameterfv = undefined; + var glGetTextureLevelParameteriv: *const function_signatures.glGetTextureLevelParameteriv = undefined; + var glGetTextureParameterfv: *const function_signatures.glGetTextureParameterfv = undefined; + var glGetTextureParameterIiv: *const function_signatures.glGetTextureParameterIiv = undefined; + var glGetTextureParameterIuiv: *const function_signatures.glGetTextureParameterIuiv = undefined; + var glGetTextureParameteriv: *const function_signatures.glGetTextureParameteriv = undefined; + var glCreateVertexArrays: *const function_signatures.glCreateVertexArrays = undefined; + var glDisableVertexArrayAttrib: *const function_signatures.glDisableVertexArrayAttrib = undefined; + var glEnableVertexArrayAttrib: *const function_signatures.glEnableVertexArrayAttrib = undefined; + var glVertexArrayElementBuffer: *const function_signatures.glVertexArrayElementBuffer = undefined; + var glVertexArrayVertexBuffer: *const function_signatures.glVertexArrayVertexBuffer = undefined; + var glVertexArrayVertexBuffers: *const function_signatures.glVertexArrayVertexBuffers = undefined; + var glVertexArrayAttribBinding: *const function_signatures.glVertexArrayAttribBinding = undefined; + var glVertexArrayAttribFormat: *const function_signatures.glVertexArrayAttribFormat = undefined; + var glVertexArrayAttribIFormat: *const function_signatures.glVertexArrayAttribIFormat = undefined; + var glVertexArrayAttribLFormat: *const function_signatures.glVertexArrayAttribLFormat = undefined; + var glVertexArrayBindingDivisor: *const function_signatures.glVertexArrayBindingDivisor = undefined; + var glGetVertexArrayiv: *const function_signatures.glGetVertexArrayiv = undefined; + var glGetVertexArrayIndexediv: *const function_signatures.glGetVertexArrayIndexediv = undefined; + var glGetVertexArrayIndexed64iv: *const function_signatures.glGetVertexArrayIndexed64iv = undefined; + var glCreateSamplers: *const function_signatures.glCreateSamplers = undefined; + var glCreateProgramPipelines: *const function_signatures.glCreateProgramPipelines = undefined; + var glCreateQueries: *const function_signatures.glCreateQueries = undefined; + var glGetQueryBufferObjecti64v: *const function_signatures.glGetQueryBufferObjecti64v = undefined; + var glGetQueryBufferObjectiv: *const function_signatures.glGetQueryBufferObjectiv = undefined; + var glGetQueryBufferObjectui64v: *const function_signatures.glGetQueryBufferObjectui64v = undefined; + var glGetQueryBufferObjectuiv: *const function_signatures.glGetQueryBufferObjectuiv = undefined; + var glMemoryBarrierByRegion: *const function_signatures.glMemoryBarrierByRegion = undefined; + var glGetTextureSubImage: *const function_signatures.glGetTextureSubImage = undefined; + var glGetCompressedTextureSubImage: *const function_signatures.glGetCompressedTextureSubImage = undefined; + var glGetGraphicsResetStatus: *const function_signatures.glGetGraphicsResetStatus = undefined; + var glGetnCompressedTexImage: *const function_signatures.glGetnCompressedTexImage = undefined; + var glGetnTexImage: *const function_signatures.glGetnTexImage = undefined; + var glGetnUniformdv: *const function_signatures.glGetnUniformdv = undefined; + var glGetnUniformfv: *const function_signatures.glGetnUniformfv = undefined; + var glGetnUniformiv: *const function_signatures.glGetnUniformiv = undefined; + var glGetnUniformuiv: *const function_signatures.glGetnUniformuiv = undefined; + var glReadnPixels: *const function_signatures.glReadnPixels = undefined; + var glTextureBarrier: *const function_signatures.glTextureBarrier = undefined; +}; + +test { + _ = load; + @setEvalBranchQuota(100_000); // Yes, this is necessary. OpenGL gets quite large! + std.testing.refAllDecls(@This()); +} diff --git a/src/glad.c b/src/glad.c deleted file mode 100644 index 62923c8..0000000 --- a/src/glad.c +++ /dev/null @@ -1,1421 +0,0 @@ -/* - - OpenGL loader generated by glad 0.1.36 on Tue Jan 30 09:19:53 2024. - - Language/Generator: C/C++ - Specification: gl - APIs: gl=4.1 - Profile: core - Extensions: - - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="" - Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.1 -*/ - -#include -#include -#include -#include - -static void* get_proc(const char *namez); - -#if defined(_WIN32) || defined(__CYGWIN__) -#ifndef _WINDOWS_ -#undef APIENTRY -#endif -#include -static HMODULE libGL; - -typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); -static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; - -#ifdef _MSC_VER -#ifdef __has_include - #if __has_include() - #define HAVE_WINAPIFAMILY 1 - #endif -#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ - #define HAVE_WINAPIFAMILY 1 -#endif -#endif - -#ifdef HAVE_WINAPIFAMILY - #include - #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - #define IS_UWP 1 - #endif -#endif - -static -int open_gl(void) { -#ifndef IS_UWP - libGL = LoadLibraryW(L"opengl32.dll"); - if(libGL != NULL) { - void (* tmp)(void); - tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); - gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; - return gladGetProcAddressPtr != NULL; - } -#endif - - return 0; -} - -static -void close_gl(void) { - if(libGL != NULL) { - FreeLibrary((HMODULE) libGL); - libGL = NULL; - } -} -#else -#include -static void* libGL; - -#if !defined(__APPLE__) && !defined(__HAIKU__) -typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); -static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; -#endif - -static -int open_gl(void) { -#ifdef __APPLE__ - static const char *NAMES[] = { - "../Frameworks/OpenGL.framework/OpenGL", - "/Library/Frameworks/OpenGL.framework/OpenGL", - "/System/Library/Frameworks/OpenGL.framework/OpenGL", - "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" - }; -#else - static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; -#endif - - unsigned int index = 0; - for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { - libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); - - if(libGL != NULL) { -#if defined(__APPLE__) || defined(__HAIKU__) - return 1; -#else - gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, - "glXGetProcAddressARB"); - return gladGetProcAddressPtr != NULL; -#endif - } - } - - return 0; -} - -static -void close_gl(void) { - if(libGL != NULL) { - dlclose(libGL); - libGL = NULL; - } -} -#endif - -static -void* get_proc(const char *namez) { - void* result = NULL; - if(libGL == NULL) return NULL; - -#if !defined(__APPLE__) && !defined(__HAIKU__) - if(gladGetProcAddressPtr != NULL) { - result = gladGetProcAddressPtr(namez); - } -#endif - if(result == NULL) { -#if defined(_WIN32) || defined(__CYGWIN__) - result = (void*)GetProcAddress((HMODULE) libGL, namez); -#else - result = dlsym(libGL, namez); -#endif - } - - return result; -} - -int gladLoadGL(void) { - int status = 0; - - if(open_gl()) { - status = gladLoadGLLoader(&get_proc); - close_gl(); - } - - return status; -} - -struct gladGLversionStruct GLVersion = { 0, 0 }; - -#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) -#define _GLAD_IS_SOME_NEW_VERSION 1 -#endif - -static int max_loaded_major; -static int max_loaded_minor; - -static const char *exts = NULL; -static int num_exts_i = 0; -static char **exts_i = NULL; - -static int get_exts(void) { -#ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { -#endif - exts = (const char *)glGetString(GL_EXTENSIONS); -#ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - unsigned int index; - - num_exts_i = 0; - glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); - if (num_exts_i > 0) { - exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); - } - - if (exts_i == NULL) { - return 0; - } - - for(index = 0; index < (unsigned)num_exts_i; index++) { - const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); - size_t len = strlen(gl_str_tmp); - - char *local_str = (char*)malloc((len+1) * sizeof(char)); - if(local_str != NULL) { - memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); - } - exts_i[index] = local_str; - } - } -#endif - return 1; -} - -static void free_exts(void) { - if (exts_i != NULL) { - int index; - for(index = 0; index < num_exts_i; index++) { - free((char *)exts_i[index]); - } - free((void *)exts_i); - exts_i = NULL; - } -} - -static int has_ext(const char *ext) { -#ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { -#endif - const char *extensions; - const char *loc; - const char *terminator; - extensions = exts; - if(extensions == NULL || ext == NULL) { - return 0; - } - - while(1) { - loc = strstr(extensions, ext); - if(loc == NULL) { - return 0; - } - - terminator = loc + strlen(ext); - if((loc == extensions || *(loc - 1) == ' ') && - (*terminator == ' ' || *terminator == '\0')) { - return 1; - } - extensions = terminator; - } -#ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - int index; - if(exts_i == NULL) return 0; - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; - - if(exts_i[index] != NULL && strcmp(e, ext) == 0) { - return 1; - } - } - } -#endif - - return 0; -} -int GLAD_GL_VERSION_1_0 = 0; -int GLAD_GL_VERSION_1_1 = 0; -int GLAD_GL_VERSION_1_2 = 0; -int GLAD_GL_VERSION_1_3 = 0; -int GLAD_GL_VERSION_1_4 = 0; -int GLAD_GL_VERSION_1_5 = 0; -int GLAD_GL_VERSION_2_0 = 0; -int GLAD_GL_VERSION_2_1 = 0; -int GLAD_GL_VERSION_3_0 = 0; -int GLAD_GL_VERSION_3_1 = 0; -int GLAD_GL_VERSION_3_2 = 0; -int GLAD_GL_VERSION_3_3 = 0; -int GLAD_GL_VERSION_4_0 = 0; -int GLAD_GL_VERSION_4_1 = 0; -PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram = NULL; -PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; -PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; -PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; -PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; -PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed = NULL; -PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; -PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; -PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; -PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; -PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; -PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; -PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; -PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; -PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline = NULL; -PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; -PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; -PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; -PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL; -PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; -PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; -PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; -PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; -PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL; -PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL; -PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; -PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; -PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL; -PFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL; -PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; -PFNGLBUFFERDATAPROC glad_glBufferData = NULL; -PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; -PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; -PFNGLCLEARPROC glad_glClear = NULL; -PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; -PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; -PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; -PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; -PFNGLCLEARCOLORPROC glad_glClearColor = NULL; -PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; -PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; -PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; -PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; -PFNGLCOLORMASKPROC glad_glColorMask = NULL; -PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; -PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; -PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; -PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; -PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; -PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; -PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; -PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; -PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; -PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; -PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; -PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; -PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; -PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; -PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; -PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; -PFNGLCREATESHADERPROC glad_glCreateShader = NULL; -PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv = NULL; -PFNGLCULLFACEPROC glad_glCullFace = NULL; -PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; -PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; -PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; -PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines = NULL; -PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; -PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; -PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; -PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; -PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; -PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; -PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL; -PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; -PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; -PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; -PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; -PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv = NULL; -PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed = NULL; -PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; -PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; -PFNGLDISABLEPROC glad_glDisable = NULL; -PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; -PFNGLDISABLEIPROC glad_glDisablei = NULL; -PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; -PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL; -PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; -PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; -PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; -PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; -PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; -PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL; -PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; -PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; -PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; -PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback = NULL; -PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream = NULL; -PFNGLENABLEPROC glad_glEnable = NULL; -PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; -PFNGLENABLEIPROC glad_glEnablei = NULL; -PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; -PFNGLENDQUERYPROC glad_glEndQuery = NULL; -PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed = NULL; -PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; -PFNGLFENCESYNCPROC glad_glFenceSync = NULL; -PFNGLFINISHPROC glad_glFinish = NULL; -PFNGLFLUSHPROC glad_glFlush = NULL; -PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; -PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; -PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; -PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; -PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; -PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; -PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; -PFNGLFRONTFACEPROC glad_glFrontFace = NULL; -PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; -PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; -PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines = NULL; -PFNGLGENQUERIESPROC glad_glGenQueries = NULL; -PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; -PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; -PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; -PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL; -PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; -PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; -PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; -PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName = NULL; -PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName = NULL; -PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv = NULL; -PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; -PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; -PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; -PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; -PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; -PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; -PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; -PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; -PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; -PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; -PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; -PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; -PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v = NULL; -PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; -PFNGLGETERRORPROC glad_glGetError = NULL; -PFNGLGETFLOATI_VPROC glad_glGetFloati_v = NULL; -PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; -PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; -PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; -PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; -PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; -PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; -PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; -PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; -PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary = NULL; -PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; -PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog = NULL; -PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv = NULL; -PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv = NULL; -PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; -PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv = NULL; -PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; -PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; -PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; -PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; -PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; -PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; -PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; -PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; -PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; -PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; -PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; -PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; -PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; -PFNGLGETSTRINGPROC glad_glGetString = NULL; -PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; -PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex = NULL; -PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation = NULL; -PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; -PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; -PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; -PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; -PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; -PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; -PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; -PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; -PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; -PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; -PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; -PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; -PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv = NULL; -PFNGLGETUNIFORMDVPROC glad_glGetUniformdv = NULL; -PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; -PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; -PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; -PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; -PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; -PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv = NULL; -PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; -PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; -PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; -PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; -PFNGLHINTPROC glad_glHint = NULL; -PFNGLISBUFFERPROC glad_glIsBuffer = NULL; -PFNGLISENABLEDPROC glad_glIsEnabled = NULL; -PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; -PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; -PFNGLISPROGRAMPROC glad_glIsProgram = NULL; -PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline = NULL; -PFNGLISQUERYPROC glad_glIsQuery = NULL; -PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; -PFNGLISSAMPLERPROC glad_glIsSampler = NULL; -PFNGLISSHADERPROC glad_glIsShader = NULL; -PFNGLISSYNCPROC glad_glIsSync = NULL; -PFNGLISTEXTUREPROC glad_glIsTexture = NULL; -PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL; -PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; -PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; -PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; -PFNGLLOGICOPPROC glad_glLogicOp = NULL; -PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; -PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; -PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL; -PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; -PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; -PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; -PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; -PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; -PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; -PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; -PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; -PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; -PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; -PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; -PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; -PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; -PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv = NULL; -PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL; -PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL; -PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; -PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; -PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; -PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; -PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; -PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; -PFNGLPOINTSIZEPROC glad_glPointSize = NULL; -PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; -PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; -PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; -PFNGLPROGRAMBINARYPROC glad_glProgramBinary = NULL; -PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri = NULL; -PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d = NULL; -PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv = NULL; -PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f = NULL; -PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv = NULL; -PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i = NULL; -PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv = NULL; -PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui = NULL; -PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv = NULL; -PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d = NULL; -PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv = NULL; -PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f = NULL; -PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv = NULL; -PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i = NULL; -PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv = NULL; -PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui = NULL; -PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv = NULL; -PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d = NULL; -PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv = NULL; -PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f = NULL; -PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv = NULL; -PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i = NULL; -PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv = NULL; -PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui = NULL; -PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv = NULL; -PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d = NULL; -PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv = NULL; -PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f = NULL; -PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv = NULL; -PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i = NULL; -PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv = NULL; -PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui = NULL; -PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv = NULL; -PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; -PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; -PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; -PFNGLREADPIXELSPROC glad_glReadPixels = NULL; -PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; -PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; -PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL; -PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; -PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; -PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; -PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; -PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; -PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; -PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; -PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; -PFNGLSCISSORPROC glad_glScissor = NULL; -PFNGLSCISSORARRAYVPROC glad_glScissorArrayv = NULL; -PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed = NULL; -PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv = NULL; -PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; -PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; -PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; -PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; -PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; -PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; -PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; -PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; -PFNGLSTENCILOPPROC glad_glStencilOp = NULL; -PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; -PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; -PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; -PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; -PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; -PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; -PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; -PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; -PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; -PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; -PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; -PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; -PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; -PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; -PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; -PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; -PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; -PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; -PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; -PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; -PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; -PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; -PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; -PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; -PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; -PFNGLUNIFORM1DPROC glad_glUniform1d = NULL; -PFNGLUNIFORM1DVPROC glad_glUniform1dv = NULL; -PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; -PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; -PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; -PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; -PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; -PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; -PFNGLUNIFORM2DPROC glad_glUniform2d = NULL; -PFNGLUNIFORM2DVPROC glad_glUniform2dv = NULL; -PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; -PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; -PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; -PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; -PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; -PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; -PFNGLUNIFORM3DPROC glad_glUniform3d = NULL; -PFNGLUNIFORM3DVPROC glad_glUniform3dv = NULL; -PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; -PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; -PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; -PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; -PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; -PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; -PFNGLUNIFORM4DPROC glad_glUniform4d = NULL; -PFNGLUNIFORM4DVPROC glad_glUniform4dv = NULL; -PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; -PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; -PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; -PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; -PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; -PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; -PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; -PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv = NULL; -PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; -PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv = NULL; -PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; -PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv = NULL; -PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; -PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv = NULL; -PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; -PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv = NULL; -PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; -PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv = NULL; -PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; -PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv = NULL; -PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; -PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv = NULL; -PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; -PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv = NULL; -PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; -PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv = NULL; -PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; -PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; -PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages = NULL; -PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; -PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline = NULL; -PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; -PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; -PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; -PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; -PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; -PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; -PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; -PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; -PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; -PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; -PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; -PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; -PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; -PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; -PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; -PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; -PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; -PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; -PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; -PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; -PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; -PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; -PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; -PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; -PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; -PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; -PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; -PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; -PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; -PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; -PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; -PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; -PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; -PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; -PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; -PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; -PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; -PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; -PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; -PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; -PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; -PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; -PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; -PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; -PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; -PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; -PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; -PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; -PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; -PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; -PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; -PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; -PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; -PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; -PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; -PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; -PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; -PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; -PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d = NULL; -PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv = NULL; -PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d = NULL; -PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv = NULL; -PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d = NULL; -PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv = NULL; -PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d = NULL; -PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv = NULL; -PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer = NULL; -PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; -PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; -PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; -PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; -PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; -PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; -PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; -PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; -PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; -PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; -PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; -PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; -PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; -PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; -PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; -PFNGLVIEWPORTPROC glad_glViewport = NULL; -PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv = NULL; -PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf = NULL; -PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv = NULL; -PFNGLWAITSYNCPROC glad_glWaitSync = NULL; -static void load_GL_VERSION_1_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_0) return; - glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); - glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); - glad_glHint = (PFNGLHINTPROC)load("glHint"); - glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); - glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); - glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); - glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); - glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); - glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); - glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); - glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); - glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); - glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); - glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); - glad_glClear = (PFNGLCLEARPROC)load("glClear"); - glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); - glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); - glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); - glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); - glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); - glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); - glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); - glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); - glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); - glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); - glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); - glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); - glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); - glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); - glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); - glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); - glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); - glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); - glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); - glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); - glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); - glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); - glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); - glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); - glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); - glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); - glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); - glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); - glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); - glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); - glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); - glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); -} -static void load_GL_VERSION_1_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_1) return; - glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); - glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); - glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); - glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); - glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); - glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); - glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); - glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); - glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); - glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); - glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); - glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); - glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); -} -static void load_GL_VERSION_1_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_2) return; - glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); - glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); - glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); - glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); -} -static void load_GL_VERSION_1_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_3) return; - glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); - glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); - glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); - glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); - glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); - glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); - glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); - glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); - glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); -} -static void load_GL_VERSION_1_4(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_4) return; - glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); - glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); - glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); - glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); - glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); - glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); - glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); - glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); - glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); -} -static void load_GL_VERSION_1_5(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_5) return; - glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); - glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); - glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); - glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); - glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); - glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); - glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); - glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); - glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); - glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); - glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); - glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); - glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); - glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); - glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); - glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); - glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); - glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); - glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); -} -static void load_GL_VERSION_2_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_2_0) return; - glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); - glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); - glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); - glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); - glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); - glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); - glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); - glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); - glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); - glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); - glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); - glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); - glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); - glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); - glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); - glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); - glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); - glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); - glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); - glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); - glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); - glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); - glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); - glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); - glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); - glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); - glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); - glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); - glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); - glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); - glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); - glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); - glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); - glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); - glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); - glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); - glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); - glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); - glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); - glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); - glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); - glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); - glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); - glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); - glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); - glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); - glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); - glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); - glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); - glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); - glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); - glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); - glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); - glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); - glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); - glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); - glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); - glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); - glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); - glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); - glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); - glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); - glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); - glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); - glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); - glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); - glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); - glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); - glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); - glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); - glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); - glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); - glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); - glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); - glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); - glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); - glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); - glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); - glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); - glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); - glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); - glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); - glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); - glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); - glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); - glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); - glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); - glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); - glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); - glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); - glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); - glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); - glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); -} -static void load_GL_VERSION_2_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_2_1) return; - glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); - glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); - glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); - glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); - glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); - glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); -} -static void load_GL_VERSION_3_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_0) return; - glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); - glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); - glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); - glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); - glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); - glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); - glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); - glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); - glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); - glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); - glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); - glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); - glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); - glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); - glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); - glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); - glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); - glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); - glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); - glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); - glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); - glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); - glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); - glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); - glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); - glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); - glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); - glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); - glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); - glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); - glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); - glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); - glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); - glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); - glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); - glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); - glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); - glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); - glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); - glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); - glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); - glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); - glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); - glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); - glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); - glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); - glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); - glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); - glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); - glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); - glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); - glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); - glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); - glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); - glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); - glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); - glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); - glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); - glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); - glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); - glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); - glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); - glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); - glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); - glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); - glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); - glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); - glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); - glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); - glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); - glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); - glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); - glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); - glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); - glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); - glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); - glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); - glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); - glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); - glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); - glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); - glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); - glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); -} -static void load_GL_VERSION_3_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_1) return; - glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); - glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); - glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); - glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); - glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); - glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); - glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); - glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); - glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); - glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); - glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); - glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); - glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); - glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); -} -static void load_GL_VERSION_3_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_2) return; - glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); - glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); - glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); - glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); - glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); - glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); - glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); - glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); - glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); - glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); - glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); - glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); - glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); - glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); - glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); - glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); - glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); - glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); - glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); -} -static void load_GL_VERSION_3_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_3) return; - glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); - glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); - glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); - glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); - glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); - glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); - glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); - glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); - glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); - glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); - glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); - glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); - glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); - glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); - glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); - glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); - glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); - glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); - glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); - glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); - glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); - glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); - glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); - glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); - glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); - glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); - glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); - glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); - glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); - glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); - glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); - glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); - glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); - glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); - glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); - glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); - glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); - glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); - glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); - glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); - glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); - glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); - glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); - glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); - glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); - glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); - glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); - glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); - glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); - glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); - glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); - glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); - glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); - glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); - glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); - glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); - glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); - glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); -} -static void load_GL_VERSION_4_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_0) return; - glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); - glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); - glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); - glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); - glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); - glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); - glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); - glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); - glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); - glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); - glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); - glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); - glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); - glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); - glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); - glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); - glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); - glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); - glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); - glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); - glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); - glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); - glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); - glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); - glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); - glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); - glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); - glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); - glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); - glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); - glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); - glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); - glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); - glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); - glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); - glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); - glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); - glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); - glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); - glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); - glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); - glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); - glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); - glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); - glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); - glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); -} -static void load_GL_VERSION_4_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_4_1) return; - glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); - glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); - glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); - glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); - glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); - glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); - glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); - glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); - glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); - glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); - glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); - glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); - glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); - glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); - glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); - glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); - glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); - glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); - glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); - glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); - glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); - glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); - glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); - glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); - glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); - glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); - glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); - glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); - glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); - glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); - glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); - glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); - glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); - glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); - glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); - glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); - glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); - glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); - glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); - glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); - glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); - glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); - glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); - glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); - glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); - glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); - glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); - glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); - glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); - glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); - glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); - glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); - glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); - glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); - glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); - glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); - glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); - glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); - glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); - glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); - glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); - glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); - glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); - glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); - glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); - glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); - glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); - glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); - glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); - glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); - glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); - glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); - glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); - glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); - glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); - glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); - glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); - glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); - glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); - glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); - glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); - glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); - glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); - glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); - glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); - glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); - glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); - glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); - glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); -} -static int find_extensionsGL(void) { - if (!get_exts()) return 0; - (void)&has_ext; - free_exts(); - return 1; -} - -static void find_coreGL(void) { - - /* Thank you @elmindreda - * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 - * https://github.com/glfw/glfw/blob/master/src/context.c#L36 - */ - int i, major, minor; - - const char* version; - const char* prefixes[] = { - "OpenGL ES-CM ", - "OpenGL ES-CL ", - "OpenGL ES ", - NULL - }; - - version = (const char*) glGetString(GL_VERSION); - if (!version) return; - - for (i = 0; prefixes[i]; i++) { - const size_t length = strlen(prefixes[i]); - if (strncmp(version, prefixes[i], length) == 0) { - version += length; - break; - } - } - -/* PR #18 */ -#ifdef _MSC_VER - sscanf_s(version, "%d.%d", &major, &minor); -#else - sscanf(version, "%d.%d", &major, &minor); -#endif - - GLVersion.major = major; GLVersion.minor = minor; - max_loaded_major = major; max_loaded_minor = minor; - GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; - GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; - GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; - GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; - GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; - GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; - GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; - GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; - GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; - GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; - GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; - GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; - GLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; - GLAD_GL_VERSION_4_1 = (major == 4 && minor >= 1) || major > 4; - if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 1)) { - max_loaded_major = 4; - max_loaded_minor = 1; - } -} - -int gladLoadGLLoader(GLADloadproc load) { - GLVersion.major = 0; GLVersion.minor = 0; - glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - if(glGetString == NULL) return 0; - if(glGetString(GL_VERSION) == NULL) return 0; - find_coreGL(); - load_GL_VERSION_1_0(load); - load_GL_VERSION_1_1(load); - load_GL_VERSION_1_2(load); - load_GL_VERSION_1_3(load); - load_GL_VERSION_1_4(load); - load_GL_VERSION_1_5(load); - load_GL_VERSION_2_0(load); - load_GL_VERSION_2_1(load); - load_GL_VERSION_3_0(load); - load_GL_VERSION_3_1(load); - load_GL_VERSION_3_2(load); - load_GL_VERSION_3_3(load); - load_GL_VERSION_4_0(load); - load_GL_VERSION_4_1(load); - - if (!find_extensionsGL()) return 0; - return GLVersion.major != 0 || GLVersion.minor != 0; -} - diff --git a/src/main.zig b/src/main.zig index e01c95d..aec6290 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,158 +1,158 @@ -const std = @import("std"); -const c = @import("c.zig"); -const builtin = @import("builtin"); - -const game_lib_basename = "learnopengl"; -const game_lib_name: [:0]const u8 = builtin.target.libPrefix() ++ game_lib_basename ++ builtin.target.dynamicLibSuffix(); - -var game_api: GameAPI = undefined; - -pub fn main() !void { - var global_alloc = std.heap.LoggingAllocator(.debug, .err).init(std.heap.c_allocator); - var allocator = global_alloc.allocator(); - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - const temp_allocator = arena.allocator(); - _ = temp_allocator; - - const game_lib_path = try getGameLibPath(allocator); - - var modified = try getFileModifiedZ(game_lib_path); - game_api = try loadGameAPI(allocator, game_lib_path); - - game_api.game_init_window(&allocator); - - game_api.game_init(&allocator); - defer { - game_api.game_shutdown(); - game_api.deinit(allocator); - } - - var exit = false; - - while (!exit) { - _ = arena.reset(.retain_capacity); - - const new_modified = try getFileModifiedZ(game_lib_path); - - if (new_modified != modified) { - modified = new_modified; - var new_game_api = try loadGameAPI(allocator, game_lib_path); - - var recreate_state = false; - var recreate_window = false; - - const game_init_memory = game_api.game_init_memory(); - const game_memory = game_api.game_memory(); - - if (game_api.game_memory_size() != new_game_api.game_memory_size()) { - recreate_state = true; - } - if (game_api.game_init_memory_size() != new_game_api.game_init_memory_size()) { - recreate_window = true; - } - - if (recreate_state) { - game_api.game_shutdown(); - } - if (recreate_window) { - game_api.game_shutdown_window(); - } - - if (recreate_window) { - new_game_api.game_init_window(&allocator); - } else { - new_game_api.game_hot_reload(game_init_memory, null); - } - if (recreate_state) { - new_game_api.game_init(&allocator); - } else { - new_game_api.game_hot_reload(null, game_memory); - } - - game_api.deinit(allocator); - game_api = new_game_api; - } - - exit = !game_api.game_update(); - } -} - -fn getFileModifiedZ(path: [:0]const u8) !i128 { - var lib_file = try std.fs.openFileAbsoluteZ(path, .{}); - defer lib_file.close(); - var lib_file_meta = try lib_file.metadata(); - - return lib_file_meta.modified(); -} - -fn getGameLibPath(allocator: std.mem.Allocator) ![:0]const u8 { - const base_path = std.mem.span(c.SDL_GetBasePath()); - const game_lib_path = try std.fs.path.joinZ(allocator, &.{ base_path, game_lib_name }); - - return game_lib_path; -} - -var game_version: usize = 0; - -fn loadGameAPI(arena: std.mem.Allocator, game_lib_path: [:0]const u8) !GameAPI { - game_version += 1; - const base_path = std.mem.span(c.SDL_GetBasePath()); - const temp_lib_name = try std.fmt.allocPrintZ( - arena, - builtin.target.libPrefix() ++ "{s}_{}" ++ builtin.target.dynamicLibSuffix(), - .{ game_lib_basename, game_version }, - ); - const temp_lib_path = try std.fs.path.joinZ(arena, &.{ base_path, temp_lib_name }); - std.log.debug("Copying game dll from {s} to {s}\n", .{ game_lib_path, temp_lib_path }); - try std.fs.copyFileAbsolute(game_lib_path, temp_lib_path, .{}); - - std.log.debug("Loading game lib at path {s}\n", .{temp_lib_path}); - const dll = c.SDL_LoadObject(temp_lib_path); - - if (dll == null) { - std.log.debug("SDL Error: {s}", .{c.SDL_GetError()}); - return error.SDLDLLLoadFailed; - } - - return try GameAPI.init(dll, temp_lib_path); -} - -const GameAPI = struct { - game_init_window: *const fn (*std.mem.Allocator) callconv(.C) void, - game_init: *const fn (*std.mem.Allocator) callconv(.C) void, - game_update: *const fn () callconv(.C) bool, - game_shutdown: *const fn () callconv(.C) void, - game_shutdown_window: *const fn () callconv(.C) void, - game_memory_size: *const fn () callconv(.C) usize, - game_init_memory_size: *const fn () callconv(.C) usize, - game_memory: *const fn () callconv(.C) *anyopaque, - game_init_memory: *const fn () callconv(.C) *anyopaque, - game_hot_reload: *const fn (?*anyopaque, ?*anyopaque) callconv(.C) void, - dll: ?*anyopaque, - path: [:0]const u8, - - pub fn init(dll: ?*anyopaque, path: [:0]const u8) !GameAPI { - return GameAPI{ - .game_init_window = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init_window") orelse return error.MissingGameInitWindow)), - .game_init = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init") orelse return error.MissingGameInit)), - .game_update = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_update") orelse return error.MissingGameUpdate)), - .game_shutdown = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_shutdown") orelse return error.MissingGameShutdown)), - .game_shutdown_window = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_shutdown_window") orelse return error.MissingGameShutdownWindow)), - .game_memory_size = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_memory_size") orelse return error.MissingGameMemorySize)), - .game_init_memory_size = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init_memory_size") orelse return error.MissingGameInitMemorySize)), - .game_memory = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_memory") orelse return error.MissingGameMemory)), - .game_init_memory = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init_memory") orelse return error.MissingGameInitMemory)), - .game_hot_reload = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_hot_reload") orelse return error.MissingGameHotReload)), - .dll = dll, - .path = path, - }; - } - - pub fn deinit(self: *GameAPI, allocator: std.mem.Allocator) void { - c.SDL_UnloadObject(self.dll); - std.fs.deleteFileAbsolute(self.path) catch |err| { - std.log.debug("failed to delete temp game dll {}", .{err}); - }; - allocator.free(self.path); - } -}; +const std = @import("std"); +const c = @import("c.zig"); +const builtin = @import("builtin"); + +const game_lib_basename = "learnopengl"; +const game_lib_name: [:0]const u8 = builtin.target.libPrefix() ++ game_lib_basename ++ builtin.target.dynamicLibSuffix(); + +var game_api: GameAPI = undefined; + +pub fn main() !void { + var global_alloc = std.heap.LoggingAllocator(.debug, .err).init(std.heap.c_allocator); + var allocator = global_alloc.allocator(); + var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); + const temp_allocator = arena.allocator(); + _ = temp_allocator; + + const game_lib_path = try getGameLibPath(allocator); + + var modified = try getFileModifiedZ(game_lib_path); + game_api = try loadGameAPI(allocator, game_lib_path); + + game_api.game_init_window(&allocator); + + game_api.game_init(&allocator); + defer { + game_api.game_shutdown(); + game_api.deinit(allocator); + } + + var exit = false; + + while (!exit) { + _ = arena.reset(.retain_capacity); + + const new_modified = try getFileModifiedZ(game_lib_path); + + if (new_modified != modified) { + modified = new_modified; + var new_game_api = try loadGameAPI(allocator, game_lib_path); + + var recreate_state = false; + var recreate_window = false; + + const game_init_memory = game_api.game_init_memory(); + const game_memory = game_api.game_memory(); + + if (game_api.game_memory_size() != new_game_api.game_memory_size()) { + recreate_state = true; + } + if (game_api.game_init_memory_size() != new_game_api.game_init_memory_size()) { + recreate_window = true; + } + + if (recreate_state) { + game_api.game_shutdown(); + } + if (recreate_window) { + game_api.game_shutdown_window(); + } + + if (recreate_window) { + new_game_api.game_init_window(&allocator); + } else { + new_game_api.game_hot_reload(game_init_memory, null); + } + if (recreate_state) { + new_game_api.game_init(&allocator); + } else { + new_game_api.game_hot_reload(null, game_memory); + } + + game_api.deinit(allocator); + game_api = new_game_api; + } + + exit = !game_api.game_update(); + } +} + +fn getFileModifiedZ(path: [:0]const u8) !i128 { + var lib_file = try std.fs.openFileAbsoluteZ(path, .{}); + defer lib_file.close(); + var lib_file_meta = try lib_file.metadata(); + + return lib_file_meta.modified(); +} + +fn getGameLibPath(allocator: std.mem.Allocator) ![:0]const u8 { + const base_path = std.mem.span(c.SDL_GetBasePath()); + const game_lib_path = try std.fs.path.joinZ(allocator, &.{ base_path, game_lib_name }); + + return game_lib_path; +} + +var game_version: usize = 0; + +fn loadGameAPI(arena: std.mem.Allocator, game_lib_path: [:0]const u8) !GameAPI { + game_version += 1; + const base_path = std.mem.span(c.SDL_GetBasePath()); + const temp_lib_name = try std.fmt.allocPrintZ( + arena, + builtin.target.libPrefix() ++ "{s}_{}" ++ builtin.target.dynamicLibSuffix(), + .{ game_lib_basename, game_version }, + ); + const temp_lib_path = try std.fs.path.joinZ(arena, &.{ base_path, temp_lib_name }); + std.log.debug("Copying game dll from {s} to {s}\n", .{ game_lib_path, temp_lib_path }); + try std.fs.copyFileAbsolute(game_lib_path, temp_lib_path, .{}); + + std.log.debug("Loading game lib at path {s}\n", .{temp_lib_path}); + const dll = c.SDL_LoadObject(temp_lib_path); + + if (dll == null) { + std.log.debug("SDL Error: {s}", .{c.SDL_GetError()}); + return error.SDLDLLLoadFailed; + } + + return try GameAPI.init(dll, temp_lib_path); +} + +const GameAPI = struct { + game_init_window: *const fn (*std.mem.Allocator) callconv(.C) void, + game_init: *const fn (*std.mem.Allocator) callconv(.C) void, + game_update: *const fn () callconv(.C) bool, + game_shutdown: *const fn () callconv(.C) void, + game_shutdown_window: *const fn () callconv(.C) void, + game_memory_size: *const fn () callconv(.C) usize, + game_init_memory_size: *const fn () callconv(.C) usize, + game_memory: *const fn () callconv(.C) *anyopaque, + game_init_memory: *const fn () callconv(.C) *anyopaque, + game_hot_reload: *const fn (?*anyopaque, ?*anyopaque) callconv(.C) void, + dll: ?*anyopaque, + path: [:0]const u8, + + pub fn init(dll: ?*anyopaque, path: [:0]const u8) !GameAPI { + return GameAPI{ + .game_init_window = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init_window") orelse return error.MissingGameInitWindow)), + .game_init = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init") orelse return error.MissingGameInit)), + .game_update = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_update") orelse return error.MissingGameUpdate)), + .game_shutdown = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_shutdown") orelse return error.MissingGameShutdown)), + .game_shutdown_window = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_shutdown_window") orelse return error.MissingGameShutdownWindow)), + .game_memory_size = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_memory_size") orelse return error.MissingGameMemorySize)), + .game_init_memory_size = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init_memory_size") orelse return error.MissingGameInitMemorySize)), + .game_memory = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_memory") orelse return error.MissingGameMemory)), + .game_init_memory = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_init_memory") orelse return error.MissingGameInitMemory)), + .game_hot_reload = @alignCast(@ptrCast(c.SDL_LoadFunction(dll, "game_hot_reload") orelse return error.MissingGameHotReload)), + .dll = dll, + .path = path, + }; + } + + pub fn deinit(self: *GameAPI, allocator: std.mem.Allocator) void { + c.SDL_UnloadObject(self.dll); + std.fs.deleteFileAbsolute(self.path) catch |err| { + std.log.debug("failed to delete temp game dll {}", .{err}); + }; + allocator.free(self.path); + } +}; diff --git a/src/shaders/frag.glsl b/src/shaders/frag.glsl index c296f2f..27611c7 100644 --- a/src/shaders/frag.glsl +++ b/src/shaders/frag.glsl @@ -1,7 +1,7 @@ -#version 330 core - -out vec4 FragColor; - -void main() { - FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); -} +#version 330 core + +out vec4 FragColor; + +void main() { + FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); +} diff --git a/src/shaders/vert.glsl b/src/shaders/vert.glsl index dd19c55..9cebccc 100644 --- a/src/shaders/vert.glsl +++ b/src/shaders/vert.glsl @@ -1,7 +1,7 @@ -#version 330 core - -layout(location = 0) in vec3 aPos; - -void main() { - gl_Position = vec4(aPos.xyz, 1.0); -} +#version 330 core + +layout(location = 0) in vec3 aPos; + +void main() { + gl_Position = vec4(aPos.xyz, 1.0); +}