Files
lib_compiler/tests/opengl_loader.txt
2024-04-13 15:29:53 +02:00

3029 lines
171 KiB
Plaintext

import "std_types";
import "libc";
main :: proc(): int {
load_up_to(4, 5, :Set_Proc_Address_Type(set_proc_address_stub));
return counter - 710;
}
counter := 0;
set_proc_address_stub :: proc(p: **void, name: *char) {
counter += 1;
}
//
// converted from: https://github.com/odin-lang/Odin
//
loaded_up_to: [2]int;
loaded_up_to_major := 0;
loaded_up_to_minor := 0;
Set_Proc_Address_Type :: typedef proc(p: **void, name: *char);
load_up_to :: proc(major: int, minor: int, set_proc_address: Set_Proc_Address_Type) {
loaded_up_to = {major, minor};
loaded_up_to_major = major;
loaded_up_to_minor = minor;
switch major*10+minor {
case 46: { load_4_6(set_proc_address); } @fallthrough
case 45: { load_4_5(set_proc_address); } @fallthrough
case 44: { load_4_4(set_proc_address); } @fallthrough
case 43: { load_4_3(set_proc_address); } @fallthrough
case 42: { load_4_2(set_proc_address); } @fallthrough
case 41: { load_4_1(set_proc_address); } @fallthrough
case 40: { load_4_0(set_proc_address); } @fallthrough
case 33: { load_3_3(set_proc_address); } @fallthrough
case 32: { load_3_2(set_proc_address); } @fallthrough
case 31: { load_3_1(set_proc_address); } @fallthrough
case 30: { load_3_0(set_proc_address); } @fallthrough
case 21: { load_2_1(set_proc_address); } @fallthrough
case 20: { load_2_0(set_proc_address); } @fallthrough
case 15: { load_1_5(set_proc_address); } @fallthrough
case 14: { load_1_4(set_proc_address); } @fallthrough
case 13: { load_1_3(set_proc_address); } @fallthrough
case 12: { load_1_2(set_proc_address); } @fallthrough
case 11: { load_1_1(set_proc_address); } @fallthrough
case 10: { load_1_0(set_proc_address); }
}
}
/*
Type conversion overview:
typedef unsigned int GLenum; : u32
typedef unsigned char GLboolean;: bool
typedef unsigned int GLbitfield;: u32
typedef signed char GLbyte; : i8
typedef short GLshort; : i16
typedef int GLint; : i32
typedef unsigned char GLubyte; : u8
typedef unsigned short GLushort;: u16
typedef unsigned int GLuint; : u32
typedef int GLsizei; : i32
typedef float GLfloat; : f32
typedef double GLdouble; : f64
typedef char GLchar; : u8
typedef ptrdiff_t GLintptr; : int
typedef ptrdiff_t GLsizeiptr; : int
typedef int64_t GLint64; : i64
typedef uint64_t GLuint64; : u64
void* : *void
*/
sync_t :: typedef *void;
debug_proc_t :: typedef proc(source: u32, type: u32, id: u32, severity: u32, length: i32, message: *char, userParam: *void); @weak
GLfloat :: typedef float;
GLdouble :: typedef double;
GLchar :: typedef char;
GLenum :: typedef uint;
GLint :: typedef int;
GLuint :: typedef uint;
GLsizei :: typedef int;
GLboolean :: typedef uchar;
GLbitfield :: typedef uint;
GLvoid :: typedef void;
GLbyte :: typedef i8;
GLubyte :: typedef u8;
GLshort :: typedef i16;
GLushort :: typedef u16;
GL_DEPTH_BUFFER_BIT :: 0x00000100;
GL_STENCIL_BUFFER_BIT :: 0x00000400;
GL_COLOR_BUFFER_BIT :: 0x00004000;
GL_FALSE :: 0;
GL_TRUE :: 1;
GL_POINTS :: 0x0000;
GL_LINES :: 0x0001;
GL_LINE_LOOP :: 0x0002;
GL_LINE_STRIP :: 0x0003;
GL_TRIANGLES :: 0x0004;
GL_TRIANGLE_STRIP :: 0x0005;
GL_TRIANGLE_FAN :: 0x0006;
GL_NEVER :: 0x0200;
GL_LESS :: 0x0201;
GL_EQUAL :: 0x0202;
GL_LEQUAL :: 0x0203;
GL_GREATER :: 0x0204;
GL_NOTEQUAL :: 0x0205;
GL_GEQUAL :: 0x0206;
GL_ALWAYS :: 0x0207;
GL_ZERO :: 0;
GL_ONE :: 1;
GL_SRC_COLOR :: 0x0300;
GL_ONE_MINUS_SRC_COLOR :: 0x0301;
GL_SRC_ALPHA :: 0x0302;
GL_ONE_MINUS_SRC_ALPHA :: 0x0303;
GL_DST_ALPHA :: 0x0304;
GL_ONE_MINUS_DST_ALPHA :: 0x0305;
GL_DST_COLOR :: 0x0306;
GL_ONE_MINUS_DST_COLOR :: 0x0307;
GL_SRC_ALPHA_SATURATE :: 0x0308;
GL_NONE :: 0;
GL_FRONT_LEFT :: 0x0400;
GL_FRONT_RIGHT :: 0x0401;
GL_BACK_LEFT :: 0x0402;
GL_BACK_RIGHT :: 0x0403;
GL_FRONT :: 0x0404;
GL_BACK :: 0x0405;
GL_LEFT :: 0x0406;
GL_RIGHT :: 0x0407;
GL_FRONT_AND_BACK :: 0x0408;
GL_NO_ERROR :: 0;
GL_INVALID_ENUM :: 0x0500;
GL_INVALID_VALUE :: 0x0501;
GL_INVALID_OPERATION :: 0x0502;
GL_OUT_OF_MEMORY :: 0x0505;
GL_CW :: 0x0900;
GL_CCW :: 0x0901;
GL_POINT_SIZE :: 0x0b11;
GL_POINT_SIZE_RANGE :: 0x0b12;
GL_POINT_SIZE_GRANULARITY :: 0x0b13;
GL_LINE_SMOOTH :: 0x0b20;
GL_LINE_WIDTH :: 0x0b21;
GL_LINE_WIDTH_RANGE :: 0x0b22;
GL_LINE_WIDTH_GRANULARITY :: 0x0b23;
GL_POLYGON_MODE :: 0x0b40;
GL_POLYGON_SMOOTH :: 0x0b41;
GL_CULL_FACE :: 0x0b44;
GL_CULL_FACE_MODE :: 0x0b45;
GL_FRONT_FACE :: 0x0b46;
GL_DEPTH_RANGE :: 0x0b70;
GL_DEPTH_TEST :: 0x0b71;
GL_DEPTH_WRITEMASK :: 0x0b72;
GL_DEPTH_CLEAR_VALUE :: 0x0b73;
GL_DEPTH_FUNC :: 0x0b74;
GL_STENCIL_TEST :: 0x0b90;
GL_STENCIL_CLEAR_VALUE :: 0x0b91;
GL_STENCIL_FUNC :: 0x0b92;
GL_STENCIL_VALUE_MASK :: 0x0b93;
GL_STENCIL_FAIL :: 0x0b94;
GL_STENCIL_PASS_DEPTH_FAIL :: 0x0b95;
GL_STENCIL_PASS_DEPTH_PASS :: 0x0b96;
GL_STENCIL_REF :: 0x0b97;
GL_STENCIL_WRITEMASK :: 0x0b98;
GL_VIEWPORT :: 0x0ba2;
GL_DITHER :: 0x0bd0;
GL_BLEND_DST :: 0x0be0;
GL_BLEND_SRC :: 0x0be1;
GL_BLEND :: 0x0be2;
GL_LOGIC_OP_MODE :: 0x0bf0;
GL_DRAW_BUFFER :: 0x0c01;
GL_READ_BUFFER :: 0x0c02;
GL_SCISSOR_BOX :: 0x0c10;
GL_SCISSOR_TEST :: 0x0c11;
GL_COLOR_CLEAR_VALUE :: 0x0c22;
GL_COLOR_WRITEMASK :: 0x0c23;
GL_DOUBLEBUFFER :: 0x0c32;
GL_STEREO :: 0x0c33;
GL_LINE_SMOOTH_HINT :: 0x0c52;
GL_POLYGON_SMOOTH_HINT :: 0x0c53;
GL_UNPACK_SWAP_BYTES :: 0x0cf0;
GL_UNPACK_LSB_FIRST :: 0x0cf1;
GL_UNPACK_ROW_LENGTH :: 0x0cf2;
GL_UNPACK_SKIP_ROWS :: 0x0cf3;
GL_UNPACK_SKIP_PIXELS :: 0x0cf4;
GL_UNPACK_ALIGNMENT :: 0x0cf5;
GL_PACK_SWAP_BYTES :: 0x0d00;
GL_PACK_LSB_FIRST :: 0x0d01;
GL_PACK_ROW_LENGTH :: 0x0d02;
GL_PACK_SKIP_ROWS :: 0x0d03;
GL_PACK_SKIP_PIXELS :: 0x0d04;
GL_PACK_ALIGNMENT :: 0x0d05;
GL_MAX_TEXTURE_SIZE :: 0x0d33;
GL_MAX_VIEWPORT_DIMS :: 0x0d3a;
GL_SUBPIXEL_BITS :: 0x0d50;
GL_TEXTURE_1D :: 0x0de0;
GL_TEXTURE_2D :: 0x0de1;
GL_TEXTURE_WIDTH :: 0x1000;
GL_TEXTURE_HEIGHT :: 0x1001;
GL_TEXTURE_BORDER_COLOR :: 0x1004;
GL_DONT_CARE :: 0x1100;
GL_FASTEST :: 0x1101;
GL_NICEST :: 0x1102;
GL_BYTE :: 0x1400;
GL_UNSIGNED_BYTE :: 0x1401;
GL_SHORT :: 0x1402;
GL_UNSIGNED_SHORT :: 0x1403;
GL_INT :: 0x1404;
GL_UNSIGNED_INT :: 0x1405;
GL_FLOAT :: 0x1406;
GL_CLEAR :: 0x1500;
GL_AND :: 0x1501;
GL_AND_REVERSE :: 0x1502;
GL_COPY :: 0x1503;
GL_AND_INVERTED :: 0x1504;
GL_NOOP :: 0x1505;
GL_XOR :: 0x1506;
GL_OR :: 0x1507;
GL_NOR :: 0x1508;
GL_EQUIV :: 0x1509;
GL_INVERT :: 0x150a;
GL_OR_REVERSE :: 0x150b;
GL_COPY_INVERTED :: 0x150c;
GL_OR_INVERTED :: 0x150d;
GL_NAND :: 0x150e;
GL_SET :: 0x150f;
GL_TEXTURE :: 0x1702;
GL_COLOR :: 0x1800;
GL_DEPTH :: 0x1801;
GL_STENCIL :: 0x1802;
GL_STENCIL_INDEX :: 0x1901;
GL_DEPTH_COMPONENT :: 0x1902;
GL_RED :: 0x1903;
GL_GREEN :: 0x1904;
GL_BLUE :: 0x1905;
GL_ALPHA :: 0x1906;
GL_RGB :: 0x1907;
GL_RGBA :: 0x1908;
GL_POINT :: 0x1b00;
GL_LINE :: 0x1b01;
GL_FILL :: 0x1b02;
GL_KEEP :: 0x1e00;
GL_REPLACE :: 0x1e01;
GL_INCR :: 0x1e02;
GL_DECR :: 0x1e03;
GL_VENDOR :: 0x1f00;
GL_RENDERER :: 0x1f01;
GL_VERSION :: 0x1f02;
GL_EXTENSIONS :: 0x1f03;
GL_NEAREST :: 0x2600;
GL_LINEAR :: 0x2601;
GL_NEAREST_MIPMAP_NEAREST :: 0x2700;
GL_LINEAR_MIPMAP_NEAREST :: 0x2701;
GL_NEAREST_MIPMAP_LINEAR :: 0x2702;
GL_LINEAR_MIPMAP_LINEAR :: 0x2703;
GL_TEXTURE_MAG_FILTER :: 0x2800;
GL_TEXTURE_MIN_FILTER :: 0x2801;
GL_TEXTURE_WRAP_S :: 0x2802;
GL_TEXTURE_WRAP_T :: 0x2803;
GL_REPEAT :: 0x2901;
GL_COLOR_LOGIC_OP :: 0x0bf2;
GL_POLYGON_OFFSET_UNITS :: 0x2a00;
GL_POLYGON_OFFSET_POINT :: 0x2a01;
GL_POLYGON_OFFSET_LINE :: 0x2a02;
GL_POLYGON_OFFSET_FILL :: 0x8037;
GL_POLYGON_OFFSET_FACTOR :: 0x8038;
GL_TEXTURE_BINDING_1D :: 0x8068;
GL_TEXTURE_BINDING_2D :: 0x8069;
GL_TEXTURE_INTERNAL_FORMAT :: 0x1003;
GL_TEXTURE_RED_SIZE :: 0x805c;
GL_TEXTURE_GREEN_SIZE :: 0x805d;
GL_TEXTURE_BLUE_SIZE :: 0x805e;
GL_TEXTURE_ALPHA_SIZE :: 0x805f;
GL_DOUBLE :: 0x140a;
GL_PROXY_TEXTURE_1D :: 0x8063;
GL_PROXY_TEXTURE_2D :: 0x8064;
GL_R3_G3_B2 :: 0x2a10;
GL_RGB4 :: 0x804f;
GL_RGB5 :: 0x8050;
GL_RGB8 :: 0x8051;
GL_RGB10 :: 0x8052;
GL_RGB12 :: 0x8053;
GL_RGB16 :: 0x8054;
GL_RGBA2 :: 0x8055;
GL_RGBA4 :: 0x8056;
GL_RGB5_A1 :: 0x8057;
GL_RGBA8 :: 0x8058;
GL_RGB10_A2 :: 0x8059;
GL_RGBA12 :: 0x805a;
GL_RGBA16 :: 0x805b;
GL_UNSIGNED_BYTE_3_3_2 :: 0x8032;
GL_UNSIGNED_SHORT_4_4_4_4 :: 0x8033;
GL_UNSIGNED_SHORT_5_5_5_1 :: 0x8034;
GL_UNSIGNED_INT_8_8_8_8 :: 0x8035;
GL_UNSIGNED_INT_10_10_10_2 :: 0x8036;
GL_TEXTURE_BINDING_3D :: 0x806a;
GL_PACK_SKIP_IMAGES :: 0x806b;
GL_PACK_IMAGE_HEIGHT :: 0x806c;
GL_UNPACK_SKIP_IMAGES :: 0x806d;
GL_UNPACK_IMAGE_HEIGHT :: 0x806e;
GL_TEXTURE_3D :: 0x806f;
GL_PROXY_TEXTURE_3D :: 0x8070;
GL_TEXTURE_DEPTH :: 0x8071;
GL_TEXTURE_WRAP_R :: 0x8072;
GL_MAX_3D_TEXTURE_SIZE :: 0x8073;
GL_UNSIGNED_BYTE_2_3_3_REV :: 0x8362;
GL_UNSIGNED_SHORT_5_6_5 :: 0x8363;
GL_UNSIGNED_SHORT_5_6_5_REV :: 0x8364;
GL_UNSIGNED_SHORT_4_4_4_4_REV :: 0x8365;
GL_UNSIGNED_SHORT_1_5_5_5_REV :: 0x8366;
GL_UNSIGNED_INT_8_8_8_8_REV :: 0x8367;
GL_UNSIGNED_INT_2_10_10_10_REV :: 0x8368;
GL_BGR :: 0x80e0;
GL_BGRA :: 0x80e1;
GL_MAX_ELEMENTS_VERTICES :: 0x80e8;
GL_MAX_ELEMENTS_INDICES :: 0x80e9;
GL_CLAMP_TO_EDGE :: 0x812f;
GL_TEXTURE_MIN_LOD :: 0x813a;
GL_TEXTURE_MAX_LOD :: 0x813b;
GL_TEXTURE_BASE_LEVEL :: 0x813c;
GL_TEXTURE_MAX_LEVEL :: 0x813d;
GL_SMOOTH_POINT_SIZE_RANGE :: 0x0b12;
GL_SMOOTH_POINT_SIZE_GRANULARITY :: 0x0b13;
GL_SMOOTH_LINE_WIDTH_RANGE :: 0x0b22;
GL_SMOOTH_LINE_WIDTH_GRANULARITY :: 0x0b23;
GL_ALIASED_LINE_WIDTH_RANGE :: 0x846e;
GL_TEXTURE0 :: 0x84c0;
GL_TEXTURE1 :: 0x84c1;
GL_TEXTURE2 :: 0x84c2;
GL_TEXTURE3 :: 0x84c3;
GL_TEXTURE4 :: 0x84c4;
GL_TEXTURE5 :: 0x84c5;
GL_TEXTURE6 :: 0x84c6;
GL_TEXTURE7 :: 0x84c7;
GL_TEXTURE8 :: 0x84c8;
GL_TEXTURE9 :: 0x84c9;
GL_TEXTURE10 :: 0x84ca;
GL_TEXTURE11 :: 0x84cb;
GL_TEXTURE12 :: 0x84cc;
GL_TEXTURE13 :: 0x84cd;
GL_TEXTURE14 :: 0x84ce;
GL_TEXTURE15 :: 0x84cf;
GL_TEXTURE16 :: 0x84d0;
GL_TEXTURE17 :: 0x84d1;
GL_TEXTURE18 :: 0x84d2;
GL_TEXTURE19 :: 0x84d3;
GL_TEXTURE20 :: 0x84d4;
GL_TEXTURE21 :: 0x84d5;
GL_TEXTURE22 :: 0x84d6;
GL_TEXTURE23 :: 0x84d7;
GL_TEXTURE24 :: 0x84d8;
GL_TEXTURE25 :: 0x84d9;
GL_TEXTURE26 :: 0x84da;
GL_TEXTURE27 :: 0x84db;
GL_TEXTURE28 :: 0x84dc;
GL_TEXTURE29 :: 0x84dd;
GL_TEXTURE30 :: 0x84de;
GL_TEXTURE31 :: 0x84df;
GL_ACTIVE_TEXTURE :: 0x84e0;
GL_MULTISAMPLE :: 0x809d;
GL_SAMPLE_ALPHA_TO_COVERAGE :: 0x809e;
GL_SAMPLE_ALPHA_TO_ONE :: 0x809f;
GL_SAMPLE_COVERAGE :: 0x80a0;
GL_SAMPLE_BUFFERS :: 0x80a8;
GL_SAMPLES :: 0x80a9;
GL_SAMPLE_COVERAGE_VALUE :: 0x80aa;
GL_SAMPLE_COVERAGE_INVERT :: 0x80ab;
GL_TEXTURE_CUBE_MAP :: 0x8513;
GL_TEXTURE_BINDING_CUBE_MAP :: 0x8514;
GL_TEXTURE_CUBE_MAP_POSITIVE_X :: 0x8515;
GL_TEXTURE_CUBE_MAP_NEGATIVE_X :: 0x8516;
GL_TEXTURE_CUBE_MAP_POSITIVE_Y :: 0x8517;
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y :: 0x8518;
GL_TEXTURE_CUBE_MAP_POSITIVE_Z :: 0x8519;
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z :: 0x851a;
GL_PROXY_TEXTURE_CUBE_MAP :: 0x851b;
GL_MAX_CUBE_MAP_TEXTURE_SIZE :: 0x851c;
GL_COMPRESSED_RGB :: 0x84ed;
GL_COMPRESSED_RGBA :: 0x84ee;
GL_TEXTURE_COMPRESSION_HINT :: 0x84ef;
GL_TEXTURE_COMPRESSED_IMAGE_SIZE :: 0x86a0;
GL_TEXTURE_COMPRESSED :: 0x86a1;
GL_NUM_COMPRESSED_TEXTURE_FORMATS :: 0x86a2;
GL_COMPRESSED_TEXTURE_FORMATS :: 0x86a3;
GL_CLAMP_TO_BORDER :: 0x812d;
GL_BLEND_DST_RGB :: 0x80c8;
GL_BLEND_SRC_RGB :: 0x80c9;
GL_BLEND_DST_ALPHA :: 0x80ca;
GL_BLEND_SRC_ALPHA :: 0x80cb;
GL_POINT_FADE_THRESHOLD_SIZE :: 0x8128;
GL_DEPTH_COMPONENT16 :: 0x81a5;
GL_DEPTH_COMPONENT24 :: 0x81a6;
GL_DEPTH_COMPONENT32 :: 0x81a7;
GL_MIRRORED_REPEAT :: 0x8370;
GL_MAX_TEXTURE_LOD_BIAS :: 0x84fd;
GL_TEXTURE_LOD_BIAS :: 0x8501;
GL_INCR_WRAP :: 0x8507;
GL_DECR_WRAP :: 0x8508;
GL_TEXTURE_DEPTH_SIZE :: 0x884a;
GL_TEXTURE_COMPARE_MODE :: 0x884c;
GL_TEXTURE_COMPARE_FUNC :: 0x884d;
GL_BLEND_COLOR :: 0x8005;
GL_BLEND_EQUATION :: 0x8009;
GL_CONSTANT_COLOR :: 0x8001;
GL_ONE_MINUS_CONSTANT_COLOR :: 0x8002;
GL_CONSTANT_ALPHA :: 0x8003;
GL_ONE_MINUS_CONSTANT_ALPHA :: 0x8004;
GL_FUNC_ADD :: 0x8006;
GL_FUNC_REVERSE_SUBTRACT :: 0x800b;
GL_FUNC_SUBTRACT :: 0x800a;
GL_MIN :: 0x8007;
GL_MAX :: 0x8008;
GL_BUFFER_SIZE :: 0x8764;
GL_BUFFER_USAGE :: 0x8765;
GL_QUERY_COUNTER_BITS :: 0x8864;
GL_CURRENT_QUERY :: 0x8865;
GL_QUERY_RESULT :: 0x8866;
GL_QUERY_RESULT_AVAILABLE :: 0x8867;
GL_ARRAY_BUFFER :: 0x8892;
GL_ELEMENT_ARRAY_BUFFER :: 0x8893;
GL_ARRAY_BUFFER_BINDING :: 0x8894;
GL_ELEMENT_ARRAY_BUFFER_BINDING :: 0x8895;
GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING :: 0x889f;
GL_READ_ONLY :: 0x88b8;
GL_WRITE_ONLY :: 0x88b9;
GL_READ_WRITE :: 0x88ba;
GL_BUFFER_ACCESS :: 0x88bb;
GL_BUFFER_MAPPED :: 0x88bc;
GL_BUFFER_MAP_POINTER :: 0x88bd;
GL_STREAM_DRAW :: 0x88e0;
GL_STREAM_READ :: 0x88e1;
GL_STREAM_COPY :: 0x88e2;
GL_STATIC_DRAW :: 0x88e4;
GL_STATIC_READ :: 0x88e5;
GL_STATIC_COPY :: 0x88e6;
GL_DYNAMIC_DRAW :: 0x88e8;
GL_DYNAMIC_READ :: 0x88e9;
GL_DYNAMIC_COPY :: 0x88ea;
GL_SAMPLES_PASSED :: 0x8914;
GL_SRC1_ALPHA :: 0x8589;
GL_BLEND_EQUATION_RGB :: 0x8009;
GL_VERTEX_ATTRIB_ARRAY_ENABLED :: 0x8622;
GL_VERTEX_ATTRIB_ARRAY_SIZE :: 0x8623;
GL_VERTEX_ATTRIB_ARRAY_STRIDE :: 0x8624;
GL_VERTEX_ATTRIB_ARRAY_TYPE :: 0x8625;
GL_CURRENT_VERTEX_ATTRIB :: 0x8626;
GL_VERTEX_PROGRAM_POINT_SIZE :: 0x8642;
GL_VERTEX_ATTRIB_ARRAY_POINTER :: 0x8645;
GL_STENCIL_BACK_FUNC :: 0x8800;
GL_STENCIL_BACK_FAIL :: 0x8801;
GL_STENCIL_BACK_PASS_DEPTH_FAIL :: 0x8802;
GL_STENCIL_BACK_PASS_DEPTH_PASS :: 0x8803;
GL_MAX_DRAW_BUFFERS :: 0x8824;
GL_DRAW_BUFFER0 :: 0x8825;
GL_DRAW_BUFFER1 :: 0x8826;
GL_DRAW_BUFFER2 :: 0x8827;
GL_DRAW_BUFFER3 :: 0x8828;
GL_DRAW_BUFFER4 :: 0x8829;
GL_DRAW_BUFFER5 :: 0x882a;
GL_DRAW_BUFFER6 :: 0x882b;
GL_DRAW_BUFFER7 :: 0x882c;
GL_DRAW_BUFFER8 :: 0x882d;
GL_DRAW_BUFFER9 :: 0x882e;
GL_DRAW_BUFFER10 :: 0x882f;
GL_DRAW_BUFFER11 :: 0x8830;
GL_DRAW_BUFFER12 :: 0x8831;
GL_DRAW_BUFFER13 :: 0x8832;
GL_DRAW_BUFFER14 :: 0x8833;
GL_DRAW_BUFFER15 :: 0x8834;
GL_BLEND_EQUATION_ALPHA :: 0x883d;
GL_MAX_VERTEX_ATTRIBS :: 0x8869;
GL_VERTEX_ATTRIB_ARRAY_NORMALIZED :: 0x886a;
GL_MAX_TEXTURE_IMAGE_UNITS :: 0x8872;
GL_FRAGMENT_SHADER :: 0x8b30;
GL_VERTEX_SHADER :: 0x8b31;
GL_MAX_FRAGMENT_UNIFORM_COMPONENTS :: 0x8b49;
GL_MAX_VERTEX_UNIFORM_COMPONENTS :: 0x8b4a;
GL_MAX_VARYING_FLOATS :: 0x8b4b;
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS :: 0x8b4c;
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS :: 0x8b4d;
GL_SHADER_TYPE :: 0x8b4f;
GL_FLOAT_VEC2 :: 0x8b50;
GL_FLOAT_VEC3 :: 0x8b51;
GL_FLOAT_VEC4 :: 0x8b52;
GL_INT_VEC2 :: 0x8b53;
GL_INT_VEC3 :: 0x8b54;
GL_INT_VEC4 :: 0x8b55;
GL_BOOL :: 0x8b56;
GL_BOOL_VEC2 :: 0x8b57;
GL_BOOL_VEC3 :: 0x8b58;
GL_BOOL_VEC4 :: 0x8b59;
GL_FLOAT_MAT2 :: 0x8b5a;
GL_FLOAT_MAT3 :: 0x8b5b;
GL_FLOAT_MAT4 :: 0x8b5c;
GL_SAMPLER_1D :: 0x8b5d;
GL_SAMPLER_2D :: 0x8b5e;
GL_SAMPLER_3D :: 0x8b5f;
GL_SAMPLER_CUBE :: 0x8b60;
GL_SAMPLER_1D_SHADOW :: 0x8b61;
GL_SAMPLER_2D_SHADOW :: 0x8b62;
GL_DELETE_STATUS :: 0x8b80;
GL_COMPILE_STATUS :: 0x8b81;
GL_LINK_STATUS :: 0x8b82;
GL_VALIDATE_STATUS :: 0x8b83;
GL_INFO_LOG_LENGTH :: 0x8b84;
GL_ATTACHED_SHADERS :: 0x8b85;
GL_ACTIVE_UNIFORMS :: 0x8b86;
GL_ACTIVE_UNIFORM_MAX_LENGTH :: 0x8b87;
GL_SHADER_SOURCE_LENGTH :: 0x8b88;
GL_ACTIVE_ATTRIBUTES :: 0x8b89;
GL_ACTIVE_ATTRIBUTE_MAX_LENGTH :: 0x8b8a;
GL_FRAGMENT_SHADER_DERIVATIVE_HINT :: 0x8b8b;
GL_SHADING_LANGUAGE_VERSION :: 0x8b8c;
GL_CURRENT_PROGRAM :: 0x8b8d;
GL_POINT_SPRITE_COORD_ORIGIN :: 0x8ca0;
GL_LOWER_LEFT :: 0x8ca1;
GL_UPPER_LEFT :: 0x8ca2;
GL_STENCIL_BACK_REF :: 0x8ca3;
GL_STENCIL_BACK_VALUE_MASK :: 0x8ca4;
GL_STENCIL_BACK_WRITEMASK :: 0x8ca5;
GL_PIXEL_PACK_BUFFER :: 0x88eb;
GL_PIXEL_UNPACK_BUFFER :: 0x88ec;
GL_PIXEL_PACK_BUFFER_BINDING :: 0x88ed;
GL_PIXEL_UNPACK_BUFFER_BINDING :: 0x88ef;
GL_FLOAT_MAT2x3 :: 0x8b65;
GL_FLOAT_MAT2x4 :: 0x8b66;
GL_FLOAT_MAT3x2 :: 0x8b67;
GL_FLOAT_MAT3x4 :: 0x8b68;
GL_FLOAT_MAT4x2 :: 0x8b69;
GL_FLOAT_MAT4x3 :: 0x8b6a;
GL_SRGB :: 0x8c40;
GL_SRGB8 :: 0x8c41;
GL_SRGB_ALPHA :: 0x8c42;
GL_SRGB8_ALPHA8 :: 0x8c43;
GL_COMPRESSED_SRGB :: 0x8c48;
GL_COMPRESSED_SRGB_ALPHA :: 0x8c49;
GL_COMPARE_REF_TO_TEXTURE :: 0x884e;
GL_CLIP_DISTANCE0 :: 0x3000;
GL_CLIP_DISTANCE1 :: 0x3001;
GL_CLIP_DISTANCE2 :: 0x3002;
GL_CLIP_DISTANCE3 :: 0x3003;
GL_CLIP_DISTANCE4 :: 0x3004;
GL_CLIP_DISTANCE5 :: 0x3005;
GL_CLIP_DISTANCE6 :: 0x3006;
GL_CLIP_DISTANCE7 :: 0x3007;
GL_MAX_CLIP_DISTANCES :: 0x0d32;
GL_MAJOR_VERSION :: 0x821b;
GL_MINOR_VERSION :: 0x821c;
GL_NUM_EXTENSIONS :: 0x821d;
GL_CONTEXT_FLAGS :: 0x821e;
GL_COMPRESSED_RED :: 0x8225;
GL_COMPRESSED_RG :: 0x8226;
GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT :: 0x00000001;
GL_RGBA32F :: 0x8814;
GL_RGB32F :: 0x8815;
GL_RGBA16F :: 0x881a;
GL_RGB16F :: 0x881b;
GL_VERTEX_ATTRIB_ARRAY_INTEGER :: 0x88fd;
GL_MAX_ARRAY_TEXTURE_LAYERS :: 0x88ff;
GL_MIN_PROGRAM_TEXEL_OFFSET :: 0x8904;
GL_MAX_PROGRAM_TEXEL_OFFSET :: 0x8905;
GL_CLAMP_READ_COLOR :: 0x891c;
GL_FIXED_ONLY :: 0x891d;
GL_MAX_VARYING_COMPONENTS :: 0x8b4b;
GL_TEXTURE_1D_ARRAY :: 0x8c18;
GL_PROXY_TEXTURE_1D_ARRAY :: 0x8c19;
GL_TEXTURE_2D_ARRAY :: 0x8c1a;
GL_PROXY_TEXTURE_2D_ARRAY :: 0x8c1b;
GL_TEXTURE_BINDING_1D_ARRAY :: 0x8c1c;
GL_TEXTURE_BINDING_2D_ARRAY :: 0x8c1d;
GL_R11F_G11F_B10F :: 0x8c3a;
GL_UNSIGNED_INT_10F_11F_11F_REV :: 0x8c3b;
GL_RGB9_E5 :: 0x8c3d;
GL_UNSIGNED_INT_5_9_9_9_REV :: 0x8c3e;
GL_TEXTURE_SHARED_SIZE :: 0x8c3f;
GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH :: 0x8c76;
GL_TRANSFORM_FEEDBACK_BUFFER_MODE :: 0x8c7f;
GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS :: 0x8c80;
GL_TRANSFORM_FEEDBACK_VARYINGS :: 0x8c83;
GL_TRANSFORM_FEEDBACK_BUFFER_START :: 0x8c84;
GL_TRANSFORM_FEEDBACK_BUFFER_SIZE :: 0x8c85;
GL_PRIMITIVES_GENERATED :: 0x8c87;
GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN :: 0x8c88;
GL_RASTERIZER_DISCARD :: 0x8c89;
GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS :: 0x8c8a;
GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS :: 0x8c8b;
GL_INTERLEAVED_ATTRIBS :: 0x8c8c;
GL_SEPARATE_ATTRIBS :: 0x8c8d;
GL_TRANSFORM_FEEDBACK_BUFFER :: 0x8c8e;
GL_TRANSFORM_FEEDBACK_BUFFER_BINDING :: 0x8c8f;
GL_RGBA32UI :: 0x8d70;
GL_RGB32UI :: 0x8d71;
GL_RGBA16UI :: 0x8d76;
GL_RGB16UI :: 0x8d77;
GL_RGBA8UI :: 0x8d7c;
GL_RGB8UI :: 0x8d7d;
GL_RGBA32I :: 0x8d82;
GL_RGB32I :: 0x8d83;
GL_RGBA16I :: 0x8d88;
GL_RGB16I :: 0x8d89;
GL_RGBA8I :: 0x8d8e;
GL_RGB8I :: 0x8d8f;
GL_RED_INTEGER :: 0x8d94;
GL_GREEN_INTEGER :: 0x8d95;
GL_BLUE_INTEGER :: 0x8d96;
GL_RGB_INTEGER :: 0x8d98;
GL_RGBA_INTEGER :: 0x8d99;
GL_BGR_INTEGER :: 0x8d9a;
GL_BGRA_INTEGER :: 0x8d9b;
GL_SAMPLER_1D_ARRAY :: 0x8dc0;
GL_SAMPLER_2D_ARRAY :: 0x8dc1;
GL_SAMPLER_1D_ARRAY_SHADOW :: 0x8dc3;
GL_SAMPLER_2D_ARRAY_SHADOW :: 0x8dc4;
GL_SAMPLER_CUBE_SHADOW :: 0x8dc5;
GL_UNSIGNED_INT_VEC2 :: 0x8dc6;
GL_UNSIGNED_INT_VEC3 :: 0x8dc7;
GL_UNSIGNED_INT_VEC4 :: 0x8dc8;
GL_INT_SAMPLER_1D :: 0x8dc9;
GL_INT_SAMPLER_2D :: 0x8dca;
GL_INT_SAMPLER_3D :: 0x8dcb;
GL_INT_SAMPLER_CUBE :: 0x8dcc;
GL_INT_SAMPLER_1D_ARRAY :: 0x8dce;
GL_INT_SAMPLER_2D_ARRAY :: 0x8dcf;
GL_UNSIGNED_INT_SAMPLER_1D :: 0x8dd1;
GL_UNSIGNED_INT_SAMPLER_2D :: 0x8dd2;
GL_UNSIGNED_INT_SAMPLER_3D :: 0x8dd3;
GL_UNSIGNED_INT_SAMPLER_CUBE :: 0x8dd4;
GL_UNSIGNED_INT_SAMPLER_1D_ARRAY :: 0x8dd6;
GL_UNSIGNED_INT_SAMPLER_2D_ARRAY :: 0x8dd7;
GL_QUERY_WAIT :: 0x8e13;
GL_QUERY_NO_WAIT :: 0x8e14;
GL_QUERY_BY_REGION_WAIT :: 0x8e15;
GL_QUERY_BY_REGION_NO_WAIT :: 0x8e16;
GL_BUFFER_ACCESS_FLAGS :: 0x911f;
GL_BUFFER_MAP_LENGTH :: 0x9120;
GL_BUFFER_MAP_OFFSET :: 0x9121;
GL_DEPTH_COMPONENT32F :: 0x8cac;
GL_DEPTH32F_STENCIL8 :: 0x8cad;
GL_FLOAT_32_UNSIGNED_INT_24_8_REV :: 0x8dad;
GL_INVALID_FRAMEBUFFER_OPERATION :: 0x0506;
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING :: 0x8210;
GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE :: 0x8211;
GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE :: 0x8212;
GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE :: 0x8213;
GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE :: 0x8214;
GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE :: 0x8215;
GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE :: 0x8216;
GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE :: 0x8217;
GL_FRAMEBUFFER_DEFAULT :: 0x8218;
GL_FRAMEBUFFER_UNDEFINED :: 0x8219;
GL_DEPTH_STENCIL_ATTACHMENT :: 0x821a;
GL_MAX_RENDERBUFFER_SIZE :: 0x84e8;
GL_DEPTH_STENCIL :: 0x84f9;
GL_UNSIGNED_INT_24_8 :: 0x84fa;
GL_DEPTH24_STENCIL8 :: 0x88f0;
GL_TEXTURE_STENCIL_SIZE :: 0x88f1;
GL_TEXTURE_RED_TYPE :: 0x8c10;
GL_TEXTURE_GREEN_TYPE :: 0x8c11;
GL_TEXTURE_BLUE_TYPE :: 0x8c12;
GL_TEXTURE_ALPHA_TYPE :: 0x8c13;
GL_TEXTURE_DEPTH_TYPE :: 0x8c16;
GL_UNSIGNED_NORMALIZED :: 0x8c17;
GL_FRAMEBUFFER_BINDING :: 0x8ca6;
GL_DRAW_FRAMEBUFFER_BINDING :: 0x8ca6;
GL_RENDERBUFFER_BINDING :: 0x8ca7;
GL_READ_FRAMEBUFFER :: 0x8ca8;
GL_DRAW_FRAMEBUFFER :: 0x8ca9;
GL_READ_FRAMEBUFFER_BINDING :: 0x8caa;
GL_RENDERBUFFER_SAMPLES :: 0x8cab;
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE :: 0x8cd0;
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME :: 0x8cd1;
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL :: 0x8cd2;
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE :: 0x8cd3;
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER :: 0x8cd4;
GL_FRAMEBUFFER_COMPLETE :: 0x8cd5;
GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT :: 0x8cd6;
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT :: 0x8cd7;
GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER :: 0x8cdb;
GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER :: 0x8cdc;
GL_FRAMEBUFFER_UNSUPPORTED :: 0x8cdd;
GL_MAX_COLOR_ATTACHMENTS :: 0x8cdf;
GL_COLOR_ATTACHMENT0 :: 0x8ce0;
GL_COLOR_ATTACHMENT1 :: 0x8ce1;
GL_COLOR_ATTACHMENT2 :: 0x8ce2;
GL_COLOR_ATTACHMENT3 :: 0x8ce3;
GL_COLOR_ATTACHMENT4 :: 0x8ce4;
GL_COLOR_ATTACHMENT5 :: 0x8ce5;
GL_COLOR_ATTACHMENT6 :: 0x8ce6;
GL_COLOR_ATTACHMENT7 :: 0x8ce7;
GL_COLOR_ATTACHMENT8 :: 0x8ce8;
GL_COLOR_ATTACHMENT9 :: 0x8ce9;
GL_COLOR_ATTACHMENT10 :: 0x8cea;
GL_COLOR_ATTACHMENT11 :: 0x8ceb;
GL_COLOR_ATTACHMENT12 :: 0x8cec;
GL_COLOR_ATTACHMENT13 :: 0x8ced;
GL_COLOR_ATTACHMENT14 :: 0x8cee;
GL_COLOR_ATTACHMENT15 :: 0x8cef;
GL_COLOR_ATTACHMENT16 :: 0x8cf0;
GL_COLOR_ATTACHMENT17 :: 0x8cf1;
GL_COLOR_ATTACHMENT18 :: 0x8cf2;
GL_COLOR_ATTACHMENT19 :: 0x8cf3;
GL_COLOR_ATTACHMENT20 :: 0x8cf4;
GL_COLOR_ATTACHMENT21 :: 0x8cf5;
GL_COLOR_ATTACHMENT22 :: 0x8cf6;
GL_COLOR_ATTACHMENT23 :: 0x8cf7;
GL_COLOR_ATTACHMENT24 :: 0x8cf8;
GL_COLOR_ATTACHMENT25 :: 0x8cf9;
GL_COLOR_ATTACHMENT26 :: 0x8cfa;
GL_COLOR_ATTACHMENT27 :: 0x8cfb;
GL_COLOR_ATTACHMENT28 :: 0x8cfc;
GL_COLOR_ATTACHMENT29 :: 0x8cfd;
GL_COLOR_ATTACHMENT30 :: 0x8cfe;
GL_COLOR_ATTACHMENT31 :: 0x8cff;
GL_DEPTH_ATTACHMENT :: 0x8d00;
GL_STENCIL_ATTACHMENT :: 0x8d20;
GL_FRAMEBUFFER :: 0x8d40;
GL_RENDERBUFFER :: 0x8d41;
GL_RENDERBUFFER_WIDTH :: 0x8d42;
GL_RENDERBUFFER_HEIGHT :: 0x8d43;
GL_RENDERBUFFER_INTERNAL_FORMAT :: 0x8d44;
GL_STENCIL_INDEX1 :: 0x8d46;
GL_STENCIL_INDEX4 :: 0x8d47;
GL_STENCIL_INDEX8 :: 0x8d48;
GL_STENCIL_INDEX16 :: 0x8d49;
GL_RENDERBUFFER_RED_SIZE :: 0x8d50;
GL_RENDERBUFFER_GREEN_SIZE :: 0x8d51;
GL_RENDERBUFFER_BLUE_SIZE :: 0x8d52;
GL_RENDERBUFFER_ALPHA_SIZE :: 0x8d53;
GL_RENDERBUFFER_DEPTH_SIZE :: 0x8d54;
GL_RENDERBUFFER_STENCIL_SIZE :: 0x8d55;
GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE :: 0x8d56;
GL_MAX_SAMPLES :: 0x8d57;
GL_FRAMEBUFFER_SRGB :: 0x8db9;
GL_HALF_FLOAT :: 0x140b;
GL_MAP_READ_BIT :: 0x0001;
GL_MAP_WRITE_BIT :: 0x0002;
GL_MAP_INVALIDATE_RANGE_BIT :: 0x0004;
GL_MAP_INVALIDATE_BUFFER_BIT :: 0x0008;
GL_MAP_FLUSH_EXPLICIT_BIT :: 0x0010;
GL_MAP_UNSYNCHRONIZED_BIT :: 0x0020;
GL_COMPRESSED_RED_RGTC1 :: 0x8dbb;
GL_COMPRESSED_SIGNED_RED_RGTC1 :: 0x8dbc;
GL_COMPRESSED_RG_RGTC2 :: 0x8dbd;
GL_COMPRESSED_SIGNED_RG_RGTC2 :: 0x8dbe;
GL_RG :: 0x8227;
GL_RG_INTEGER :: 0x8228;
GL_R8 :: 0x8229;
GL_R16 :: 0x822a;
GL_RG8 :: 0x822b;
GL_RG16 :: 0x822c;
GL_R16F :: 0x822d;
GL_R32F :: 0x822e;
GL_RG16F :: 0x822f;
GL_RG32F :: 0x8230;
GL_R8I :: 0x8231;
GL_R8UI :: 0x8232;
GL_R16I :: 0x8233;
GL_R16UI :: 0x8234;
GL_R32I :: 0x8235;
GL_R32UI :: 0x8236;
GL_RG8I :: 0x8237;
GL_RG8UI :: 0x8238;
GL_RG16I :: 0x8239;
GL_RG16UI :: 0x823a;
GL_RG32I :: 0x823b;
GL_RG32UI :: 0x823c;
GL_VERTEX_ARRAY_BINDING :: 0x85b5;
GL_SAMPLER_2D_RECT :: 0x8b63;
GL_SAMPLER_2D_RECT_SHADOW :: 0x8b64;
GL_SAMPLER_BUFFER :: 0x8dc2;
GL_INT_SAMPLER_2D_RECT :: 0x8dcd;
GL_INT_SAMPLER_BUFFER :: 0x8dd0;
GL_UNSIGNED_INT_SAMPLER_2D_RECT :: 0x8dd5;
GL_UNSIGNED_INT_SAMPLER_BUFFER :: 0x8dd8;
GL_TEXTURE_BUFFER :: 0x8c2a;
GL_MAX_TEXTURE_BUFFER_SIZE :: 0x8c2b;
GL_TEXTURE_BINDING_BUFFER :: 0x8c2c;
GL_TEXTURE_BUFFER_DATA_STORE_BINDING :: 0x8c2d;
GL_TEXTURE_RECTANGLE :: 0x84f5;
GL_TEXTURE_BINDING_RECTANGLE :: 0x84f6;
GL_PROXY_TEXTURE_RECTANGLE :: 0x84f7;
GL_MAX_RECTANGLE_TEXTURE_SIZE :: 0x84f8;
GL_R8_SNORM :: 0x8f94;
GL_RG8_SNORM :: 0x8f95;
GL_RGB8_SNORM :: 0x8f96;
GL_RGBA8_SNORM :: 0x8f97;
GL_R16_SNORM :: 0x8f98;
GL_RG16_SNORM :: 0x8f99;
GL_RGB16_SNORM :: 0x8f9a;
GL_RGBA16_SNORM :: 0x8f9b;
GL_SIGNED_NORMALIZED :: 0x8f9c;
GL_PRIMITIVE_RESTART :: 0x8f9d;
GL_PRIMITIVE_RESTART_INDEX :: 0x8f9e;
GL_COPY_READ_BUFFER :: 0x8f36;
GL_COPY_WRITE_BUFFER :: 0x8f37;
GL_UNIFORM_BUFFER :: 0x8a11;
GL_UNIFORM_BUFFER_BINDING :: 0x8a28;
GL_UNIFORM_BUFFER_START :: 0x8a29;
GL_UNIFORM_BUFFER_SIZE :: 0x8a2a;
GL_MAX_VERTEX_UNIFORM_BLOCKS :: 0x8a2b;
GL_MAX_GEOMETRY_UNIFORM_BLOCKS :: 0x8a2c;
GL_MAX_FRAGMENT_UNIFORM_BLOCKS :: 0x8a2d;
GL_MAX_COMBINED_UNIFORM_BLOCKS :: 0x8a2e;
GL_MAX_UNIFORM_BUFFER_BINDINGS :: 0x8a2f;
GL_MAX_UNIFORM_BLOCK_SIZE :: 0x8a30;
GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS :: 0x8a31;
GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS :: 0x8a32;
GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS :: 0x8a33;
GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT :: 0x8a34;
GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH :: 0x8a35;
GL_ACTIVE_UNIFORM_BLOCKS :: 0x8a36;
GL_UNIFORM_TYPE :: 0x8a37;
GL_UNIFORM_SIZE :: 0x8a38;
GL_UNIFORM_NAME_LENGTH :: 0x8a39;
GL_UNIFORM_BLOCK_INDEX :: 0x8a3a;
GL_UNIFORM_OFFSET :: 0x8a3b;
GL_UNIFORM_ARRAY_STRIDE :: 0x8a3c;
GL_UNIFORM_MATRIX_STRIDE :: 0x8a3d;
GL_UNIFORM_IS_ROW_MAJOR :: 0x8a3e;
GL_UNIFORM_BLOCK_BINDING :: 0x8a3f;
GL_UNIFORM_BLOCK_DATA_SIZE :: 0x8a40;
GL_UNIFORM_BLOCK_NAME_LENGTH :: 0x8a41;
GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS :: 0x8a42;
GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES :: 0x8a43;
GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER :: 0x8a44;
GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER :: 0x8a45;
GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER :: 0x8a46;
GL_INVALID_INDEX :: 0xffffffff;
GL_CONTEXT_CORE_PROFILE_BIT :: 0x00000001;
GL_CONTEXT_COMPATIBILITY_PROFILE_BIT :: 0x00000002;
GL_LINES_ADJACENCY :: 0x000a;
GL_LINE_STRIP_ADJACENCY :: 0x000b;
GL_TRIANGLES_ADJACENCY :: 0x000c;
GL_TRIANGLE_STRIP_ADJACENCY :: 0x000d;
GL_PROGRAM_POINT_SIZE :: 0x8642;
GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS :: 0x8c29;
GL_FRAMEBUFFER_ATTACHMENT_LAYERED :: 0x8da7;
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS :: 0x8da8;
GL_GEOMETRY_SHADER :: 0x8dd9;
GL_GEOMETRY_VERTICES_OUT :: 0x8916;
GL_GEOMETRY_INPUT_TYPE :: 0x8917;
GL_GEOMETRY_OUTPUT_TYPE :: 0x8918;
GL_MAX_GEOMETRY_UNIFORM_COMPONENTS :: 0x8ddf;
GL_MAX_GEOMETRY_OUTPUT_VERTICES :: 0x8de0;
GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS :: 0x8de1;
GL_MAX_VERTEX_OUTPUT_COMPONENTS :: 0x9122;
GL_MAX_GEOMETRY_INPUT_COMPONENTS :: 0x9123;
GL_MAX_GEOMETRY_OUTPUT_COMPONENTS :: 0x9124;
GL_MAX_FRAGMENT_INPUT_COMPONENTS :: 0x9125;
GL_CONTEXT_PROFILE_MASK :: 0x9126;
GL_DEPTH_CLAMP :: 0x864f;
GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION :: 0x8e4c;
GL_FIRST_VERTEX_CONVENTION :: 0x8e4d;
GL_LAST_VERTEX_CONVENTION :: 0x8e4e;
GL_PROVOKING_VERTEX :: 0x8e4f;
GL_TEXTURE_CUBE_MAP_SEAMLESS :: 0x884f;
GL_MAX_SERVER_WAIT_TIMEOUT :: 0x9111;
GL_OBJECT_TYPE :: 0x9112;
GL_SYNC_CONDITION :: 0x9113;
GL_SYNC_STATUS :: 0x9114;
GL_SYNC_FLAGS :: 0x9115;
GL_SYNC_FENCE :: 0x9116;
GL_SYNC_GPU_COMMANDS_COMPLETE :: 0x9117;
GL_UNSIGNALED :: 0x9118;
GL_SIGNALED :: 0x9119;
GL_ALREADY_SIGNALED :: 0x911a;
GL_TIMEOUT_EXPIRED :: 0x911b;
GL_CONDITION_SATISFIED :: 0x911c;
GL_WAIT_FAILED :: 0x911d;
GL_TIMEOUT_IGNORED :: 0xffffffffffffffff;
GL_SYNC_FLUSH_COMMANDS_BIT :: 0x00000001;
GL_SAMPLE_POSITION :: 0x8e50;
GL_SAMPLE_MASK :: 0x8e51;
GL_SAMPLE_MASK_VALUE :: 0x8e52;
GL_MAX_SAMPLE_MASK_WORDS :: 0x8e59;
GL_TEXTURE_2D_MULTISAMPLE :: 0x9100;
GL_PROXY_TEXTURE_2D_MULTISAMPLE :: 0x9101;
GL_TEXTURE_2D_MULTISAMPLE_ARRAY :: 0x9102;
GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY :: 0x9103;
GL_TEXTURE_BINDING_2D_MULTISAMPLE :: 0x9104;
GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY :: 0x9105;
GL_TEXTURE_SAMPLES :: 0x9106;
GL_TEXTURE_FIXED_SAMPLE_LOCATIONS :: 0x9107;
GL_SAMPLER_2D_MULTISAMPLE :: 0x9108;
GL_INT_SAMPLER_2D_MULTISAMPLE :: 0x9109;
GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE :: 0x910a;
GL_SAMPLER_2D_MULTISAMPLE_ARRAY :: 0x910b;
GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY :: 0x910c;
GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY :: 0x910d;
GL_MAX_COLOR_TEXTURE_SAMPLES :: 0x910e;
GL_MAX_DEPTH_TEXTURE_SAMPLES :: 0x910f;
GL_MAX_INTEGER_SAMPLES :: 0x9110;
GL_VERTEX_ATTRIB_ARRAY_DIVISOR :: 0x88fe;
GL_SRC1_COLOR :: 0x88f9;
GL_ONE_MINUS_SRC1_COLOR :: 0x88fa;
GL_ONE_MINUS_SRC1_ALPHA :: 0x88fb;
GL_MAX_DUAL_SOURCE_DRAW_BUFFERS :: 0x88fc;
GL_ANY_SAMPLES_PASSED :: 0x8c2f;
GL_SAMPLER_BINDING :: 0x8919;
GL_RGB10_A2UI :: 0x906f;
GL_TEXTURE_SWIZZLE_R :: 0x8e42;
GL_TEXTURE_SWIZZLE_G :: 0x8e43;
GL_TEXTURE_SWIZZLE_B :: 0x8e44;
GL_TEXTURE_SWIZZLE_A :: 0x8e45;
GL_TEXTURE_SWIZZLE_RGBA :: 0x8e46;
GL_TIME_ELAPSED :: 0x88bf;
GL_TIMESTAMP :: 0x8e28;
GL_INT_2_10_10_10_REV :: 0x8d9f;
GL_SAMPLE_SHADING :: 0x8c36;
GL_MIN_SAMPLE_SHADING_VALUE :: 0x8c37;
GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET :: 0x8e5e;
GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET :: 0x8e5f;
GL_TEXTURE_CUBE_MAP_ARRAY :: 0x9009;
GL_TEXTURE_BINDING_CUBE_MAP_ARRAY :: 0x900a;
GL_PROXY_TEXTURE_CUBE_MAP_ARRAY :: 0x900b;
GL_SAMPLER_CUBE_MAP_ARRAY :: 0x900c;
GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW :: 0x900d;
GL_INT_SAMPLER_CUBE_MAP_ARRAY :: 0x900e;
GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY :: 0x900f;
GL_DRAW_INDIRECT_BUFFER :: 0x8f3f;
GL_DRAW_INDIRECT_BUFFER_BINDING :: 0x8f43;
GL_GEOMETRY_SHADER_INVOCATIONS :: 0x887f;
GL_MAX_GEOMETRY_SHADER_INVOCATIONS :: 0x8e5a;
GL_MIN_FRAGMENT_INTERPOLATION_OFFSET :: 0x8e5b;
GL_MAX_FRAGMENT_INTERPOLATION_OFFSET :: 0x8e5c;
GL_FRAGMENT_INTERPOLATION_OFFSET_BITS :: 0x8e5d;
GL_MAX_VERTEX_STREAMS :: 0x8e71;
GL_DOUBLE_VEC2 :: 0x8ffc;
GL_DOUBLE_VEC3 :: 0x8ffd;
GL_DOUBLE_VEC4 :: 0x8ffe;
GL_DOUBLE_MAT2 :: 0x8f46;
GL_DOUBLE_MAT3 :: 0x8f47;
GL_DOUBLE_MAT4 :: 0x8f48;
GL_DOUBLE_MAT2x3 :: 0x8f49;
GL_DOUBLE_MAT2x4 :: 0x8f4a;
GL_DOUBLE_MAT3x2 :: 0x8f4b;
GL_DOUBLE_MAT3x4 :: 0x8f4c;
GL_DOUBLE_MAT4x2 :: 0x8f4d;
GL_DOUBLE_MAT4x3 :: 0x8f4e;
GL_ACTIVE_SUBROUTINES :: 0x8de5;
GL_ACTIVE_SUBROUTINE_UNIFORMS :: 0x8de6;
GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS :: 0x8e47;
GL_ACTIVE_SUBROUTINE_MAX_LENGTH :: 0x8e48;
GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH :: 0x8e49;
GL_MAX_SUBROUTINES :: 0x8de7;
GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS :: 0x8de8;
GL_NUM_COMPATIBLE_SUBROUTINES :: 0x8e4a;
GL_COMPATIBLE_SUBROUTINES :: 0x8e4b;
GL_PATCHES :: 0x000e;
GL_PATCH_VERTICES :: 0x8e72;
GL_PATCH_DEFAULT_INNER_LEVEL :: 0x8e73;
GL_PATCH_DEFAULT_OUTER_LEVEL :: 0x8e74;
GL_TESS_CONTROL_OUTPUT_VERTICES :: 0x8e75;
GL_TESS_GEN_MODE :: 0x8e76;
GL_TESS_GEN_SPACING :: 0x8e77;
GL_TESS_GEN_VERTEX_ORDER :: 0x8e78;
GL_TESS_GEN_POINT_MODE :: 0x8e79;
GL_ISOLINES :: 0x8e7a;
GL_QUADS :: 0x0007;
GL_FRACTIONAL_ODD :: 0x8e7b;
GL_FRACTIONAL_EVEN :: 0x8e7c;
GL_MAX_PATCH_VERTICES :: 0x8e7d;
GL_MAX_TESS_GEN_LEVEL :: 0x8e7e;
GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS :: 0x8e7f;
GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS :: 0x8e80;
GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS :: 0x8e81;
GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS :: 0x8e82;
GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS :: 0x8e83;
GL_MAX_TESS_PATCH_COMPONENTS :: 0x8e84;
GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS :: 0x8e85;
GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS :: 0x8e86;
GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS :: 0x8e89;
GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS :: 0x8e8a;
GL_MAX_TESS_CONTROL_INPUT_COMPONENTS :: 0x886c;
GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS :: 0x886d;
GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS :: 0x8e1e;
GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS :: 0x8e1f;
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER :: 0x84f0;
GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER :: 0x84f1;
GL_TESS_EVALUATION_SHADER :: 0x8e87;
GL_TESS_CONTROL_SHADER :: 0x8e88;
GL_TRANSFORM_FEEDBACK :: 0x8e22;
GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED :: 0x8e23;
GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE :: 0x8e24;
GL_TRANSFORM_FEEDBACK_BINDING :: 0x8e25;
GL_MAX_TRANSFORM_FEEDBACK_BUFFERS :: 0x8e70;
GL_FIXED :: 0x140c;
GL_IMPLEMENTATION_COLOR_READ_TYPE :: 0x8b9a;
GL_IMPLEMENTATION_COLOR_READ_FORMAT :: 0x8b9b;
GL_LOW_FLOAT :: 0x8df0;
GL_MEDIUM_FLOAT :: 0x8df1;
GL_HIGH_FLOAT :: 0x8df2;
GL_LOW_INT :: 0x8df3;
GL_MEDIUM_INT :: 0x8df4;
GL_HIGH_INT :: 0x8df5;
GL_SHADER_COMPILER :: 0x8dfa;
GL_SHADER_BINARY_FORMATS :: 0x8df8;
GL_NUM_SHADER_BINARY_FORMATS :: 0x8df9;
GL_MAX_VERTEX_UNIFORM_VECTORS :: 0x8dfb;
GL_MAX_VARYING_VECTORS :: 0x8dfc;
GL_MAX_FRAGMENT_UNIFORM_VECTORS :: 0x8dfd;
GL_RGB565 :: 0x8d62;
GL_PROGRAM_BINARY_RETRIEVABLE_HINT :: 0x8257;
GL_PROGRAM_BINARY_LENGTH :: 0x8741;
GL_NUM_PROGRAM_BINARY_FORMATS :: 0x87fe;
GL_PROGRAM_BINARY_FORMATS :: 0x87ff;
GL_VERTEX_SHADER_BIT :: 0x00000001;
GL_FRAGMENT_SHADER_BIT :: 0x00000002;
GL_GEOMETRY_SHADER_BIT :: 0x00000004;
GL_TESS_CONTROL_SHADER_BIT :: 0x00000008;
GL_TESS_EVALUATION_SHADER_BIT :: 0x00000010;
GL_ALL_SHADER_BITS :: 0xffffffff;
GL_PROGRAM_SEPARABLE :: 0x8258;
GL_ACTIVE_PROGRAM :: 0x8259;
GL_PROGRAM_PIPELINE_BINDING :: 0x825a;
GL_MAX_VIEWPORTS :: 0x825b;
GL_VIEWPORT_SUBPIXEL_BITS :: 0x825c;
GL_VIEWPORT_BOUNDS_RANGE :: 0x825d;
GL_LAYER_PROVOKING_VERTEX :: 0x825e;
GL_VIEWPORT_INDEX_PROVOKING_VERTEX :: 0x825f;
GL_UNDEFINED_VERTEX :: 0x8260;
GL_COPY_READ_BUFFER_BINDING :: 0x8f36;
GL_COPY_WRITE_BUFFER_BINDING :: 0x8f37;
GL_TRANSFORM_FEEDBACK_ACTIVE :: 0x8e24;
GL_TRANSFORM_FEEDBACK_PAUSED :: 0x8e23;
GL_UNPACK_COMPRESSED_BLOCK_WIDTH :: 0x9127;
GL_UNPACK_COMPRESSED_BLOCK_HEIGHT :: 0x9128;
GL_UNPACK_COMPRESSED_BLOCK_DEPTH :: 0x9129;
GL_UNPACK_COMPRESSED_BLOCK_SIZE :: 0x912a;
GL_PACK_COMPRESSED_BLOCK_WIDTH :: 0x912b;
GL_PACK_COMPRESSED_BLOCK_HEIGHT :: 0x912c;
GL_PACK_COMPRESSED_BLOCK_DEPTH :: 0x912d;
GL_PACK_COMPRESSED_BLOCK_SIZE :: 0x912e;
GL_NUM_SAMPLE_COUNTS :: 0x9380;
GL_MIN_MAP_BUFFER_ALIGNMENT :: 0x90bc;
GL_ATOMIC_COUNTER_BUFFER :: 0x92c0;
GL_ATOMIC_COUNTER_BUFFER_BINDING :: 0x92c1;
GL_ATOMIC_COUNTER_BUFFER_START :: 0x92c2;
GL_ATOMIC_COUNTER_BUFFER_SIZE :: 0x92c3;
GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE :: 0x92c4;
GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS :: 0x92c5;
GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES :: 0x92c6;
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER :: 0x92c7;
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER :: 0x92c8;
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER :: 0x92c9;
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER :: 0x92ca;
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER :: 0x92cb;
GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS :: 0x92cc;
GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS :: 0x92cd;
GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS :: 0x92ce;
GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS :: 0x92cf;
GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS :: 0x92d0;
GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS :: 0x92d1;
GL_MAX_VERTEX_ATOMIC_COUNTERS :: 0x92d2;
GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS :: 0x92d3;
GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS :: 0x92d4;
GL_MAX_GEOMETRY_ATOMIC_COUNTERS :: 0x92d5;
GL_MAX_FRAGMENT_ATOMIC_COUNTERS :: 0x92d6;
GL_MAX_COMBINED_ATOMIC_COUNTERS :: 0x92d7;
GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE :: 0x92d8;
GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS :: 0x92dc;
GL_ACTIVE_ATOMIC_COUNTER_BUFFERS :: 0x92d9;
GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX :: 0x92da;
GL_UNSIGNED_INT_ATOMIC_COUNTER :: 0x92db;
GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT :: 0x00000001;
GL_ELEMENT_ARRAY_BARRIER_BIT :: 0x00000002;
GL_UNIFORM_BARRIER_BIT :: 0x00000004;
GL_TEXTURE_FETCH_BARRIER_BIT :: 0x00000008;
GL_SHADER_IMAGE_ACCESS_BARRIER_BIT :: 0x00000020;
GL_COMMAND_BARRIER_BIT :: 0x00000040;
GL_PIXEL_BUFFER_BARRIER_BIT :: 0x00000080;
GL_TEXTURE_UPDATE_BARRIER_BIT :: 0x00000100;
GL_BUFFER_UPDATE_BARRIER_BIT :: 0x00000200;
GL_FRAMEBUFFER_BARRIER_BIT :: 0x00000400;
GL_TRANSFORM_FEEDBACK_BARRIER_BIT :: 0x00000800;
GL_ATOMIC_COUNTER_BARRIER_BIT :: 0x00001000;
GL_ALL_BARRIER_BITS :: 0xffffffff;
GL_MAX_IMAGE_UNITS :: 0x8f38;
GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS :: 0x8f39;
GL_IMAGE_BINDING_NAME :: 0x8f3a;
GL_IMAGE_BINDING_LEVEL :: 0x8f3b;
GL_IMAGE_BINDING_LAYERED :: 0x8f3c;
GL_IMAGE_BINDING_LAYER :: 0x8f3d;
GL_IMAGE_BINDING_ACCESS :: 0x8f3e;
GL_IMAGE_1D :: 0x904c;
GL_IMAGE_2D :: 0x904d;
GL_IMAGE_3D :: 0x904e;
GL_IMAGE_2D_RECT :: 0x904f;
GL_IMAGE_CUBE :: 0x9050;
GL_IMAGE_BUFFER :: 0x9051;
GL_IMAGE_1D_ARRAY :: 0x9052;
GL_IMAGE_2D_ARRAY :: 0x9053;
GL_IMAGE_CUBE_MAP_ARRAY :: 0x9054;
GL_IMAGE_2D_MULTISAMPLE :: 0x9055;
GL_IMAGE_2D_MULTISAMPLE_ARRAY :: 0x9056;
GL_INT_IMAGE_1D :: 0x9057;
GL_INT_IMAGE_2D :: 0x9058;
GL_INT_IMAGE_3D :: 0x9059;
GL_INT_IMAGE_2D_RECT :: 0x905a;
GL_INT_IMAGE_CUBE :: 0x905b;
GL_INT_IMAGE_BUFFER :: 0x905c;
GL_INT_IMAGE_1D_ARRAY :: 0x905d;
GL_INT_IMAGE_2D_ARRAY :: 0x905e;
GL_INT_IMAGE_CUBE_MAP_ARRAY :: 0x905f;
GL_INT_IMAGE_2D_MULTISAMPLE :: 0x9060;
GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY :: 0x9061;
GL_UNSIGNED_INT_IMAGE_1D :: 0x9062;
GL_UNSIGNED_INT_IMAGE_2D :: 0x9063;
GL_UNSIGNED_INT_IMAGE_3D :: 0x9064;
GL_UNSIGNED_INT_IMAGE_2D_RECT :: 0x9065;
GL_UNSIGNED_INT_IMAGE_CUBE :: 0x9066;
GL_UNSIGNED_INT_IMAGE_BUFFER :: 0x9067;
GL_UNSIGNED_INT_IMAGE_1D_ARRAY :: 0x9068;
GL_UNSIGNED_INT_IMAGE_2D_ARRAY :: 0x9069;
GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY :: 0x906a;
GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE :: 0x906b;
GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY :: 0x906c;
GL_MAX_IMAGE_SAMPLES :: 0x906d;
GL_IMAGE_BINDING_FORMAT :: 0x906e;
GL_IMAGE_FORMAT_COMPATIBILITY_TYPE :: 0x90c7;
GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE :: 0x90c8;
GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS :: 0x90c9;
GL_MAX_VERTEX_IMAGE_UNIFORMS :: 0x90ca;
GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS :: 0x90cb;
GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS :: 0x90cc;
GL_MAX_GEOMETRY_IMAGE_UNIFORMS :: 0x90cd;
GL_MAX_FRAGMENT_IMAGE_UNIFORMS :: 0x90ce;
GL_MAX_COMBINED_IMAGE_UNIFORMS :: 0x90cf;
GL_COMPRESSED_RGBA_BPTC_UNORM :: 0x8e8c;
GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM :: 0x8e8d;
GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT :: 0x8e8e;
GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT :: 0x8e8f;
GL_TEXTURE_IMMUTABLE_FORMAT :: 0x912f;
GL_NUM_SHADING_LANGUAGE_VERSIONS :: 0x82e9;
GL_VERTEX_ATTRIB_ARRAY_LONG :: 0x874e;
GL_COMPRESSED_RGB8_ETC2 :: 0x9274;
GL_COMPRESSED_SRGB8_ETC2 :: 0x9275;
GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 :: 0x9276;
GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 :: 0x9277;
GL_COMPRESSED_RGBA8_ETC2_EAC :: 0x9278;
GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC :: 0x9279;
GL_COMPRESSED_R11_EAC :: 0x9270;
GL_COMPRESSED_SIGNED_R11_EAC :: 0x9271;
GL_COMPRESSED_RG11_EAC :: 0x9272;
GL_COMPRESSED_SIGNED_RG11_EAC :: 0x9273;
GL_PRIMITIVE_RESTART_FIXED_INDEX :: 0x8d69;
GL_ANY_SAMPLES_PASSED_CONSERVATIVE :: 0x8d6a;
GL_MAX_ELEMENT_INDEX :: 0x8d6b;
GL_COMPUTE_SHADER :: 0x91b9;
GL_MAX_COMPUTE_UNIFORM_BLOCKS :: 0x91bb;
GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS :: 0x91bc;
GL_MAX_COMPUTE_IMAGE_UNIFORMS :: 0x91bd;
GL_MAX_COMPUTE_SHARED_MEMORY_SIZE :: 0x8262;
GL_MAX_COMPUTE_UNIFORM_COMPONENTS :: 0x8263;
GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS :: 0x8264;
GL_MAX_COMPUTE_ATOMIC_COUNTERS :: 0x8265;
GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS :: 0x8266;
GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS :: 0x90eb;
GL_MAX_COMPUTE_WORK_GROUP_COUNT :: 0x91be;
GL_MAX_COMPUTE_WORK_GROUP_SIZE :: 0x91bf;
GL_COMPUTE_WORK_GROUP_SIZE :: 0x8267;
GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER :: 0x90ec;
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER :: 0x90ed;
GL_DISPATCH_INDIRECT_BUFFER :: 0x90ee;
GL_DISPATCH_INDIRECT_BUFFER_BINDING :: 0x90ef;
GL_COMPUTE_SHADER_BIT :: 0x00000020;
GL_DEBUG_OUTPUT_SYNCHRONOUS :: 0x8242;
GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH :: 0x8243;
GL_DEBUG_CALLBACK_FUNCTION :: 0x8244;
GL_DEBUG_CALLBACK_USER_PARAM :: 0x8245;
GL_DEBUG_SOURCE_API :: 0x8246;
GL_DEBUG_SOURCE_WINDOW_SYSTEM :: 0x8247;
GL_DEBUG_SOURCE_SHADER_COMPILER :: 0x8248;
GL_DEBUG_SOURCE_THIRD_PARTY :: 0x8249;
GL_DEBUG_SOURCE_APPLICATION :: 0x824a;
GL_DEBUG_SOURCE_OTHER :: 0x824b;
GL_DEBUG_TYPE_ERROR :: 0x824c;
GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR :: 0x824d;
GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR :: 0x824e;
GL_DEBUG_TYPE_PORTABILITY :: 0x824f;
GL_DEBUG_TYPE_PERFORMANCE :: 0x8250;
GL_DEBUG_TYPE_OTHER :: 0x8251;
GL_MAX_DEBUG_MESSAGE_LENGTH :: 0x9143;
GL_MAX_DEBUG_LOGGED_MESSAGES :: 0x9144;
GL_DEBUG_LOGGED_MESSAGES :: 0x9145;
GL_DEBUG_SEVERITY_HIGH :: 0x9146;
GL_DEBUG_SEVERITY_MEDIUM :: 0x9147;
GL_DEBUG_SEVERITY_LOW :: 0x9148;
GL_DEBUG_TYPE_MARKER :: 0x8268;
GL_DEBUG_TYPE_PUSH_GROUP :: 0x8269;
GL_DEBUG_TYPE_POP_GROUP :: 0x826a;
GL_DEBUG_SEVERITY_NOTIFICATION :: 0x826b;
GL_MAX_DEBUG_GROUP_STACK_DEPTH :: 0x826c;
GL_DEBUG_GROUP_STACK_DEPTH :: 0x826d;
GL_BUFFER :: 0x82e0;
GL_SHADER :: 0x82e1;
GL_PROGRAM :: 0x82e2;
GL_VERTEX_ARRAY :: 0x8074;
GL_QUERY :: 0x82e3;
GL_PROGRAM_PIPELINE :: 0x82e4;
GL_SAMPLER :: 0x82e6;
GL_MAX_LABEL_LENGTH :: 0x82e8;
GL_DEBUG_OUTPUT :: 0x92e0;
GL_CONTEXT_FLAG_DEBUG_BIT :: 0x00000002;
GL_MAX_UNIFORM_LOCATIONS :: 0x826e;
GL_FRAMEBUFFER_DEFAULT_WIDTH :: 0x9310;
GL_FRAMEBUFFER_DEFAULT_HEIGHT :: 0x9311;
GL_FRAMEBUFFER_DEFAULT_LAYERS :: 0x9312;
GL_FRAMEBUFFER_DEFAULT_SAMPLES :: 0x9313;
GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS :: 0x9314;
GL_MAX_FRAMEBUFFER_WIDTH :: 0x9315;
GL_MAX_FRAMEBUFFER_HEIGHT :: 0x9316;
GL_MAX_FRAMEBUFFER_LAYERS :: 0x9317;
GL_MAX_FRAMEBUFFER_SAMPLES :: 0x9318;
GL_INTERNALFORMAT_SUPPORTED :: 0x826f;
GL_INTERNALFORMAT_PREFERRED :: 0x8270;
GL_INTERNALFORMAT_RED_SIZE :: 0x8271;
GL_INTERNALFORMAT_GREEN_SIZE :: 0x8272;
GL_INTERNALFORMAT_BLUE_SIZE :: 0x8273;
GL_INTERNALFORMAT_ALPHA_SIZE :: 0x8274;
GL_INTERNALFORMAT_DEPTH_SIZE :: 0x8275;
GL_INTERNALFORMAT_STENCIL_SIZE :: 0x8276;
GL_INTERNALFORMAT_SHARED_SIZE :: 0x8277;
GL_INTERNALFORMAT_RED_TYPE :: 0x8278;
GL_INTERNALFORMAT_GREEN_TYPE :: 0x8279;
GL_INTERNALFORMAT_BLUE_TYPE :: 0x827a;
GL_INTERNALFORMAT_ALPHA_TYPE :: 0x827b;
GL_INTERNALFORMAT_DEPTH_TYPE :: 0x827c;
GL_INTERNALFORMAT_STENCIL_TYPE :: 0x827d;
GL_MAX_WIDTH :: 0x827e;
GL_MAX_HEIGHT :: 0x827f;
GL_MAX_DEPTH :: 0x8280;
GL_MAX_LAYERS :: 0x8281;
GL_MAX_COMBINED_DIMENSIONS :: 0x8282;
GL_COLOR_COMPONENTS :: 0x8283;
GL_DEPTH_COMPONENTS :: 0x8284;
GL_STENCIL_COMPONENTS :: 0x8285;
GL_COLOR_RENDERABLE :: 0x8286;
GL_DEPTH_RENDERABLE :: 0x8287;
GL_STENCIL_RENDERABLE :: 0x8288;
GL_FRAMEBUFFER_RENDERABLE :: 0x8289;
GL_FRAMEBUFFER_RENDERABLE_LAYERED :: 0x828a;
GL_FRAMEBUFFER_BLEND :: 0x828b;
GL_READ_PIXELS :: 0x828c;
GL_READ_PIXELS_FORMAT :: 0x828d;
GL_READ_PIXELS_TYPE :: 0x828e;
GL_TEXTURE_IMAGE_FORMAT :: 0x828f;
GL_TEXTURE_IMAGE_TYPE :: 0x8290;
GL_GET_TEXTURE_IMAGE_FORMAT :: 0x8291;
GL_GET_TEXTURE_IMAGE_TYPE :: 0x8292;
GL_MIPMAP :: 0x8293;
GL_MANUAL_GENERATE_MIPMAP :: 0x8294;
GL_AUTO_GENERATE_MIPMAP :: 0x8295;
GL_COLOR_ENCODING :: 0x8296;
GL_SRGB_READ :: 0x8297;
GL_SRGB_WRITE :: 0x8298;
GL_FILTER :: 0x829a;
GL_VERTEX_TEXTURE :: 0x829b;
GL_TESS_CONTROL_TEXTURE :: 0x829c;
GL_TESS_EVALUATION_TEXTURE :: 0x829d;
GL_GEOMETRY_TEXTURE :: 0x829e;
GL_FRAGMENT_TEXTURE :: 0x829f;
GL_COMPUTE_TEXTURE :: 0x82a0;
GL_TEXTURE_SHADOW :: 0x82a1;
GL_TEXTURE_GATHER :: 0x82a2;
GL_TEXTURE_GATHER_SHADOW :: 0x82a3;
GL_SHADER_IMAGE_LOAD :: 0x82a4;
GL_SHADER_IMAGE_STORE :: 0x82a5;
GL_SHADER_IMAGE_ATOMIC :: 0x82a6;
GL_IMAGE_TEXEL_SIZE :: 0x82a7;
GL_IMAGE_COMPATIBILITY_CLASS :: 0x82a8;
GL_IMAGE_PIXEL_FORMAT :: 0x82a9;
GL_IMAGE_PIXEL_TYPE :: 0x82aa;
GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST :: 0x82ac;
GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST :: 0x82ad;
GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE :: 0x82ae;
GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE :: 0x82af;
GL_TEXTURE_COMPRESSED_BLOCK_WIDTH :: 0x82b1;
GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT :: 0x82b2;
GL_TEXTURE_COMPRESSED_BLOCK_SIZE :: 0x82b3;
GL_CLEAR_BUFFER :: 0x82b4;
GL_TEXTURE_VIEW :: 0x82b5;
GL_VIEW_COMPATIBILITY_CLASS :: 0x82b6;
GL_FULL_SUPPORT :: 0x82b7;
GL_CAVEAT_SUPPORT :: 0x82b8;
GL_IMAGE_CLASS_4_X_32 :: 0x82b9;
GL_IMAGE_CLASS_2_X_32 :: 0x82ba;
GL_IMAGE_CLASS_1_X_32 :: 0x82bb;
GL_IMAGE_CLASS_4_X_16 :: 0x82bc;
GL_IMAGE_CLASS_2_X_16 :: 0x82bd;
GL_IMAGE_CLASS_1_X_16 :: 0x82be;
GL_IMAGE_CLASS_4_X_8 :: 0x82bf;
GL_IMAGE_CLASS_2_X_8 :: 0x82c0;
GL_IMAGE_CLASS_1_X_8 :: 0x82c1;
GL_IMAGE_CLASS_11_11_10 :: 0x82c2;
GL_IMAGE_CLASS_10_10_10_2 :: 0x82c3;
GL_VIEW_CLASS_128_BITS :: 0x82c4;
GL_VIEW_CLASS_96_BITS :: 0x82c5;
GL_VIEW_CLASS_64_BITS :: 0x82c6;
GL_VIEW_CLASS_48_BITS :: 0x82c7;
GL_VIEW_CLASS_32_BITS :: 0x82c8;
GL_VIEW_CLASS_24_BITS :: 0x82c9;
GL_VIEW_CLASS_16_BITS :: 0x82ca;
GL_VIEW_CLASS_8_BITS :: 0x82cb;
GL_VIEW_CLASS_S3TC_DXT1_RGB :: 0x82cc;
GL_VIEW_CLASS_S3TC_DXT1_RGBA :: 0x82cd;
GL_VIEW_CLASS_S3TC_DXT3_RGBA :: 0x82ce;
GL_VIEW_CLASS_S3TC_DXT5_RGBA :: 0x82cf;
GL_VIEW_CLASS_RGTC1_RED :: 0x82d0;
GL_VIEW_CLASS_RGTC2_RG :: 0x82d1;
GL_VIEW_CLASS_BPTC_UNORM :: 0x82d2;
GL_VIEW_CLASS_BPTC_FLOAT :: 0x82d3;
GL_UNIFORM :: 0x92e1;
GL_UNIFORM_BLOCK :: 0x92e2;
GL_PROGRAM_INPUT :: 0x92e3;
GL_PROGRAM_OUTPUT :: 0x92e4;
GL_BUFFER_VARIABLE :: 0x92e5;
GL_SHADER_STORAGE_BLOCK :: 0x92e6;
GL_VERTEX_SUBROUTINE :: 0x92e8;
GL_TESS_CONTROL_SUBROUTINE :: 0x92e9;
GL_TESS_EVALUATION_SUBROUTINE :: 0x92ea;
GL_GEOMETRY_SUBROUTINE :: 0x92eb;
GL_FRAGMENT_SUBROUTINE :: 0x92ec;
GL_COMPUTE_SUBROUTINE :: 0x92ed;
GL_VERTEX_SUBROUTINE_UNIFORM :: 0x92ee;
GL_TESS_CONTROL_SUBROUTINE_UNIFORM :: 0x92ef;
GL_TESS_EVALUATION_SUBROUTINE_UNIFORM :: 0x92f0;
GL_GEOMETRY_SUBROUTINE_UNIFORM :: 0x92f1;
GL_FRAGMENT_SUBROUTINE_UNIFORM :: 0x92f2;
GL_COMPUTE_SUBROUTINE_UNIFORM :: 0x92f3;
GL_TRANSFORM_FEEDBACK_VARYING :: 0x92f4;
GL_ACTIVE_RESOURCES :: 0x92f5;
GL_MAX_NAME_LENGTH :: 0x92f6;
GL_MAX_NUM_ACTIVE_VARIABLES :: 0x92f7;
GL_MAX_NUM_COMPATIBLE_SUBROUTINES :: 0x92f8;
GL_NAME_LENGTH :: 0x92f9;
GL_TYPE :: 0x92fa;
GL_ARRAY_SIZE :: 0x92fb;
GL_OFFSET :: 0x92fc;
GL_BLOCK_INDEX :: 0x92fd;
GL_ARRAY_STRIDE :: 0x92fe;
GL_MATRIX_STRIDE :: 0x92ff;
GL_IS_ROW_MAJOR :: 0x9300;
GL_ATOMIC_COUNTER_BUFFER_INDEX :: 0x9301;
GL_BUFFER_BINDING :: 0x9302;
GL_BUFFER_DATA_SIZE :: 0x9303;
GL_NUM_ACTIVE_VARIABLES :: 0x9304;
GL_ACTIVE_VARIABLES :: 0x9305;
GL_REFERENCED_BY_VERTEX_SHADER :: 0x9306;
GL_REFERENCED_BY_TESS_CONTROL_SHADER :: 0x9307;
GL_REFERENCED_BY_TESS_EVALUATION_SHADER :: 0x9308;
GL_REFERENCED_BY_GEOMETRY_SHADER :: 0x9309;
GL_REFERENCED_BY_FRAGMENT_SHADER :: 0x930a;
GL_REFERENCED_BY_COMPUTE_SHADER :: 0x930b;
GL_TOP_LEVEL_ARRAY_SIZE :: 0x930c;
GL_TOP_LEVEL_ARRAY_STRIDE :: 0x930d;
GL_LOCATION :: 0x930e;
GL_LOCATION_INDEX :: 0x930f;
GL_IS_PER_PATCH :: 0x92e7;
GL_SHADER_STORAGE_BUFFER :: 0x90d2;
GL_SHADER_STORAGE_BUFFER_BINDING :: 0x90d3;
GL_SHADER_STORAGE_BUFFER_START :: 0x90d4;
GL_SHADER_STORAGE_BUFFER_SIZE :: 0x90d5;
GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS :: 0x90d6;
GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS :: 0x90d7;
GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS :: 0x90d8;
GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS :: 0x90d9;
GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS :: 0x90da;
GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS :: 0x90db;
GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS :: 0x90dc;
GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS :: 0x90dd;
GL_MAX_SHADER_STORAGE_BLOCK_SIZE :: 0x90de;
GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT :: 0x90df;
GL_SHADER_STORAGE_BARRIER_BIT :: 0x00002000;
GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES :: 0x8f39;
GL_DEPTH_STENCIL_TEXTURE_MODE :: 0x90ea;
GL_TEXTURE_BUFFER_OFFSET :: 0x919d;
GL_TEXTURE_BUFFER_SIZE :: 0x919e;
GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT :: 0x919f;
GL_TEXTURE_VIEW_MIN_LEVEL :: 0x82db;
GL_TEXTURE_VIEW_NUM_LEVELS :: 0x82dc;
GL_TEXTURE_VIEW_MIN_LAYER :: 0x82dd;
GL_TEXTURE_VIEW_NUM_LAYERS :: 0x82de;
GL_TEXTURE_IMMUTABLE_LEVELS :: 0x82df;
GL_VERTEX_ATTRIB_BINDING :: 0x82d4;
GL_VERTEX_ATTRIB_RELATIVE_OFFSET :: 0x82d5;
GL_VERTEX_BINDING_DIVISOR :: 0x82d6;
GL_VERTEX_BINDING_OFFSET :: 0x82d7;
GL_VERTEX_BINDING_STRIDE :: 0x82d8;
GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET :: 0x82d9;
GL_MAX_VERTEX_ATTRIB_BINDINGS :: 0x82da;
GL_VERTEX_BINDING_BUFFER :: 0x8f4f;
GL_DISPLAY_LIST :: 0x82e7;
GL_STACK_UNDERFLOW :: 0x0504;
GL_STACK_OVERFLOW :: 0x0503;
GL_MAX_VERTEX_ATTRIB_STRIDE :: 0x82e5;
GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED :: 0x8221;
GL_TEXTURE_BUFFER_BINDING :: 0x8c2a;
GL_MAP_PERSISTENT_BIT :: 0x0040;
GL_MAP_COHERENT_BIT :: 0x0080;
GL_DYNAMIC_STORAGE_BIT :: 0x0100;
GL_CLIENT_STORAGE_BIT :: 0x0200;
GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT :: 0x00004000;
GL_BUFFER_IMMUTABLE_STORAGE :: 0x821f;
GL_BUFFER_STORAGE_FLAGS :: 0x8220;
GL_CLEAR_TEXTURE :: 0x9365;
GL_LOCATION_COMPONENT :: 0x934a;
GL_TRANSFORM_FEEDBACK_BUFFER_INDEX :: 0x934b;
GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE :: 0x934c;
GL_QUERY_BUFFER :: 0x9192;
GL_QUERY_BUFFER_BARRIER_BIT :: 0x00008000;
GL_QUERY_BUFFER_BINDING :: 0x9193;
GL_QUERY_RESULT_NO_WAIT :: 0x9194;
GL_MIRROR_CLAMP_TO_EDGE :: 0x8743;
GL_CONTEXT_LOST :: 0x0507;
GL_NEGATIVE_ONE_TO_ONE :: 0x935e;
GL_ZERO_TO_ONE :: 0x935f;
GL_CLIP_ORIGIN :: 0x935c;
GL_CLIP_DEPTH_MODE :: 0x935d;
GL_QUERY_WAIT_INVERTED :: 0x8e17;
GL_QUERY_NO_WAIT_INVERTED :: 0x8e18;
GL_QUERY_BY_REGION_WAIT_INVERTED :: 0x8e19;
GL_QUERY_BY_REGION_NO_WAIT_INVERTED :: 0x8e1a;
GL_MAX_CULL_DISTANCES :: 0x82f9;
GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES :: 0x82fa;
GL_TEXTURE_TARGET :: 0x1006;
GL_QUERY_TARGET :: 0x82ea;
GL_GUILTY_CONTEXT_RESET :: 0x8253;
GL_INNOCENT_CONTEXT_RESET :: 0x8254;
GL_UNKNOWN_CONTEXT_RESET :: 0x8255;
GL_RESET_NOTIFICATION_STRATEGY :: 0x8256;
GL_LOSE_CONTEXT_ON_RESET :: 0x8252;
GL_NO_RESET_NOTIFICATION :: 0x8261;
GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT :: 0x00000004;
GL_COLOR_TABLE :: 0x80d0;
GL_POST_CONVOLUTION_COLOR_TABLE :: 0x80d1;
GL_POST_COLOR_MATRIX_COLOR_TABLE :: 0x80d2;
GL_PROXY_COLOR_TABLE :: 0x80d3;
GL_PROXY_POST_CONVOLUTION_COLOR_TABLE :: 0x80d4;
GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE :: 0x80d5;
GL_CONVOLUTION_1D :: 0x8010;
GL_CONVOLUTION_2D :: 0x8011;
GL_SEPARABLE_2D :: 0x8012;
GL_HISTOGRAM :: 0x8024;
GL_PROXY_HISTOGRAM :: 0x8025;
GL_MINMAX :: 0x802e;
GL_CONTEXT_RELEASE_BEHAVIOR :: 0x82fb;
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH :: 0x82fc;
// VERSION_1_0
glCullFace: proc(mode: u32);
glFrontFace: proc(mode: u32);
glHint: proc(target: u32, mode: u32);
glLineWidth: proc(width: f32);
glPointSize: proc(size: f32);
glPolygonMode: proc(face: u32, mode: u32);
glScissor: proc(x: i32, y: i32, width: i32, height: i32);
glTexParameterf: proc(target: u32, pname: u32, param: f32);
glTexParameterfv: proc(target: u32, pname: u32, params: *f32);
glTexParameteri: proc(target: u32, pname: u32, param: i32);
glTexParameteriv: proc(target: u32, pname: u32, params: *i32);
glTexImage1D: proc(target: u32, level: i32, internalformat: i32, width: i32, border: i32, format: u32, type: u32, pixels: *void);
glTexImage2D: proc(target: u32, level: i32, internalformat: i32, width: i32, height: i32, border: i32, format: u32, type: u32, pixels: *void);
glDrawBuffer: proc(buf: u32);
glClear: proc(mask: u32);
glClearColor: proc(red: f32, green: f32, blue: f32, alpha: f32);
glClearStencil: proc(s: i32);
glClearDepth: proc(depth: f64);
glStencilMask: proc(mask: u32);
glColorMask: proc(red: bool, green: bool, blue: bool, alpha: bool);
glDepthMask: proc(flag: bool);
glDisable: proc(cap: u32);
glEnable: proc(cap: u32);
glFinish: proc();
glFlush: proc();
glBlendFunc: proc(sfactor: u32, dfactor: u32);
glLogicOp: proc(opcode: u32);
glStencilFunc: proc(func: u32, ref: i32, mask: u32);
glStencilOp: proc(fail: u32, zfail: u32, zpass: u32);
glDepthFunc: proc(func: u32);
glPixelStoref: proc(pname: u32, param: f32);
glPixelStorei: proc(pname: u32, param: i32);
glReadBuffer: proc(src: u32);
glReadPixels: proc(x: i32, y: i32, width: i32, height: i32, format: u32, type: u32, pixels: *void);
glGetBooleanv: proc(pname: u32, data: *bool);
glGetDoublev: proc(pname: u32, data: *f64);
glGetError: proc(): u32;
glGetFloatv: proc(pname: u32, data: *f32);
glGetIntegerv: proc(pname: u32, data: *i32);
glGetString: proc(name: u32): *char;
glGetTexImage: proc(target: u32, level: i32, format: u32, type: u32, pixels: *void);
glGetTexParameterfv: proc(target: u32, pname: u32, params: *f32);
glGetTexParameteriv: proc(target: u32, pname: u32, params: *i32);
glGetTexLevelParameterfv: proc(target: u32, level: i32, pname: u32, params: *f32);
glGetTexLevelParameteriv: proc(target: u32, level: i32, pname: u32, params: *i32);
glIsEnabled: proc(cap: u32): bool;
glDepthRange: proc(near: f64, far: f64);
glViewport: proc(x: i32, y: i32, width: i32, height: i32);
load_1_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glCullFace), "glCullFace");
set_proc_address(:**void(&glFrontFace), "glFrontFace");
set_proc_address(:**void(&glHint), "glHint");
set_proc_address(:**void(&glLineWidth), "glLineWidth");
set_proc_address(:**void(&glPointSize), "glPointSize");
set_proc_address(:**void(&glPolygonMode), "glPolygonMode");
set_proc_address(:**void(&glScissor), "glScissor");
set_proc_address(:**void(&glTexParameterf), "glTexParameterf");
set_proc_address(:**void(&glTexParameterfv), "glTexParameterfv");
set_proc_address(:**void(&glTexParameteri), "glTexParameteri");
set_proc_address(:**void(&glTexParameteriv), "glTexParameteriv");
set_proc_address(:**void(&glTexImage1D), "glTexImage1D");
set_proc_address(:**void(&glTexImage2D), "glTexImage2D");
set_proc_address(:**void(&glDrawBuffer), "glDrawBuffer");
set_proc_address(:**void(&glClear), "glClear");
set_proc_address(:**void(&glClearColor), "glClearColor");
set_proc_address(:**void(&glClearStencil), "glClearStencil");
set_proc_address(:**void(&glClearDepth), "glClearDepth");
set_proc_address(:**void(&glStencilMask), "glStencilMask");
set_proc_address(:**void(&glColorMask), "glColorMask");
set_proc_address(:**void(&glDepthMask), "glDepthMask");
set_proc_address(:**void(&glDisable), "glDisable");
set_proc_address(:**void(&glEnable), "glEnable");
set_proc_address(:**void(&glFinish), "glFinish");
set_proc_address(:**void(&glFlush), "glFlush");
set_proc_address(:**void(&glBlendFunc), "glBlendFunc");
set_proc_address(:**void(&glLogicOp), "glLogicOp");
set_proc_address(:**void(&glStencilFunc), "glStencilFunc");
set_proc_address(:**void(&glStencilOp), "glStencilOp");
set_proc_address(:**void(&glDepthFunc), "glDepthFunc");
set_proc_address(:**void(&glPixelStoref), "glPixelStoref");
set_proc_address(:**void(&glPixelStorei), "glPixelStorei");
set_proc_address(:**void(&glReadBuffer), "glReadBuffer");
set_proc_address(:**void(&glReadPixels), "glReadPixels");
set_proc_address(:**void(&glGetBooleanv), "glGetBooleanv");
set_proc_address(:**void(&glGetDoublev), "glGetDoublev");
set_proc_address(:**void(&glGetError), "glGetError");
set_proc_address(:**void(&glGetFloatv), "glGetFloatv");
set_proc_address(:**void(&glGetIntegerv), "glGetIntegerv");
set_proc_address(:**void(&glGetString), "glGetString");
set_proc_address(:**void(&glGetTexImage), "glGetTexImage");
set_proc_address(:**void(&glGetTexParameterfv), "glGetTexParameterfv");
set_proc_address(:**void(&glGetTexParameteriv), "glGetTexParameteriv");
set_proc_address(:**void(&glGetTexLevelParameterfv), "glGetTexLevelParameterfv");
set_proc_address(:**void(&glGetTexLevelParameteriv), "glGetTexLevelParameteriv");
set_proc_address(:**void(&glIsEnabled), "glIsEnabled");
set_proc_address(:**void(&glDepthRange), "glDepthRange");
set_proc_address(:**void(&glViewport), "glViewport");
}
// VERSION_1_1
glDrawArrays: proc(mode: u32, first: i32, count: i32);
glDrawElements: proc(mode: u32, count: i32, type: u32, indices: *void);
glPolygonOffset: proc(factor: f32, units: f32);
glCopyTexImage1D: proc(target: u32, level: i32, internalformat: u32, x: i32, y: i32, width: i32, border: i32);
glCopyTexImage2D: proc(target: u32, level: i32, internalformat: u32, x: i32, y: i32, width: i32, height: i32, border: i32);
glCopyTexSubImage1D: proc(target: u32, level: i32, xoffset: i32, x: i32, y: i32, width: i32);
glCopyTexSubImage2D: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, x: i32, y: i32, width: i32, height: i32);
glTexSubImage1D: proc(target: u32, level: i32, xoffset: i32, width: i32, format: u32, type: u32, pixels: *void);
glTexSubImage2D: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, type: u32, pixels: *void);
glBindTexture: proc(target: u32, texture: u32);
glDeleteTextures: proc(n: i32, textures: *u32);
glGenTextures: proc(n: i32, textures: *u32);
glIsTexture: proc(texture: u32): bool;
load_1_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glDrawArrays), "glDrawArrays");
set_proc_address(:**void(&glDrawElements), "glDrawElements");
set_proc_address(:**void(&glPolygonOffset), "glPolygonOffset");
set_proc_address(:**void(&glCopyTexImage1D), "glCopyTexImage1D");
set_proc_address(:**void(&glCopyTexImage2D), "glCopyTexImage2D");
set_proc_address(:**void(&glCopyTexSubImage1D), "glCopyTexSubImage1D");
set_proc_address(:**void(&glCopyTexSubImage2D), "glCopyTexSubImage2D");
set_proc_address(:**void(&glTexSubImage1D), "glTexSubImage1D");
set_proc_address(:**void(&glTexSubImage2D), "glTexSubImage2D");
set_proc_address(:**void(&glBindTexture), "glBindTexture");
set_proc_address(:**void(&glDeleteTextures), "glDeleteTextures");
set_proc_address(:**void(&glGenTextures), "glGenTextures");
set_proc_address(:**void(&glIsTexture), "glIsTexture");
}
// VERSION_1_2
glDrawRangeElements: proc(mode: u32, start: u32, end: u32, count: i32, type: u32, indices: *void);
glTexImage3D: proc(target: u32, level: i32, internalformat: i32, width: i32, height: i32, depth: i32, border: i32, format: u32, type: u32, data: *void);
glTexSubImage3D: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, pixels: *void);
glCopyTexSubImage3D: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, x: i32, y: i32, width: i32, height: i32);
load_1_2 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glDrawRangeElements), "glDrawRangeElements");
set_proc_address(:**void(&glTexImage3D), "glTexImage3D");
set_proc_address(:**void(&glTexSubImage3D), "glTexSubImage3D");
set_proc_address(:**void(&glCopyTexSubImage3D), "glCopyTexSubImage3D");
}
// VERSION_1_3
glActiveTexture: proc(texture: u32);
glSampleCoverage: proc(value: f32, invert: bool);
glCompressedTexImage3D: proc(target: u32, level: i32, internalformat: u32, width: i32, height: i32, depth: i32, border: i32, imageSize: i32, data: *void);
glCompressedTexImage2D: proc(target: u32, level: i32, internalformat: u32, width: i32, height: i32, border: i32, imageSize: i32, data: *void);
glCompressedTexImage1D: proc(target: u32, level: i32, internalformat: u32, width: i32, border: i32, imageSize: i32, data: *void);
glCompressedTexSubImage3D: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, imageSize: i32, data: *void);
glCompressedTexSubImage2D: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, imageSize: i32, data: *void);
glCompressedTexSubImage1D: proc(target: u32, level: i32, xoffset: i32, width: i32, format: u32, imageSize: i32, data: *void);
glGetCompressedTexImage: proc(target: u32, level: i32, img: *void);
load_1_3 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glActiveTexture), "glActiveTexture");
set_proc_address(:**void(&glSampleCoverage), "glSampleCoverage");
set_proc_address(:**void(&glCompressedTexImage3D), "glCompressedTexImage3D");
set_proc_address(:**void(&glCompressedTexImage2D), "glCompressedTexImage2D");
set_proc_address(:**void(&glCompressedTexImage1D), "glCompressedTexImage1D");
set_proc_address(:**void(&glCompressedTexSubImage3D), "glCompressedTexSubImage3D");
set_proc_address(:**void(&glCompressedTexSubImage2D), "glCompressedTexSubImage2D");
set_proc_address(:**void(&glCompressedTexSubImage1D), "glCompressedTexSubImage1D");
set_proc_address(:**void(&glGetCompressedTexImage), "glGetCompressedTexImage");
}
// VERSION_1_4
glBlendFuncSeparate: proc(sfactorRGB: u32, dfactorRGB: u32, sfactorAlpha: u32, dfactorAlpha: u32);
glMultiDrawArrays: proc(mode: u32, first: *i32, count: *i32, drawcount: i32);
glMultiDrawElements: proc(mode: u32, count: *i32, type: u32, indices: **void, drawcount: i32);
glPointParameterf: proc(pname: u32, param: f32);
glPointParameterfv: proc(pname: u32, params: *f32);
glPointParameteri: proc(pname: u32, param: i32);
glPointParameteriv: proc(pname: u32, params: *i32);
glBlendColor: proc(red: f32, green: f32, blue: f32, alpha: f32);
glBlendEquation: proc(mode: u32);
load_1_4 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glBlendFuncSeparate), "glBlendFuncSeparate");
set_proc_address(:**void(&glMultiDrawArrays), "glMultiDrawArrays");
set_proc_address(:**void(&glMultiDrawElements), "glMultiDrawElements");
set_proc_address(:**void(&glPointParameterf), "glPointParameterf");
set_proc_address(:**void(&glPointParameterfv), "glPointParameterfv");
set_proc_address(:**void(&glPointParameteri), "glPointParameteri");
set_proc_address(:**void(&glPointParameteriv), "glPointParameteriv");
set_proc_address(:**void(&glBlendColor), "glBlendColor");
set_proc_address(:**void(&glBlendEquation), "glBlendEquation");
}
// VERSION_1_5
glGenQueries: proc(n: i32, ids: *u32);
glDeleteQueries: proc(n: i32, ids: *u32);
glIsQuery: proc(id: u32): bool;
glBeginQuery: proc(target: u32, id: u32);
glEndQuery: proc(target: u32);
glGetQueryiv: proc(target: u32, pname: u32, params: *i32);
glGetQueryObjectiv: proc(id: u32, pname: u32, params: *i32);
glGetQueryObjectuiv: proc(id: u32, pname: u32, params: *u32);
glBindBuffer: proc(target: u32, buffer: u32);
glDeleteBuffers: proc(n: i32, buffers: *u32);
glGenBuffers: proc(n: i32, buffers: *u32);
glIsBuffer: proc(buffer: u32): bool;
glBufferData: proc(target: u32, size: int, data: *void, usage: u32);
glBufferSubData: proc(target: u32, offset: int, size: int, data: *void);
glGetBufferSubData: proc(target: u32, offset: int, size: int, data: *void);
glMapBuffer: proc(target: u32, access: u32): *void;
glUnmapBuffer: proc(target: u32): bool;
glGetBufferParameteriv: proc(target: u32, pname: u32, params: *i32);
glGetBufferPointerv: proc(target: u32, pname: u32, params: **void);
load_1_5 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glGenQueries), "glGenQueries");
set_proc_address(:**void(&glDeleteQueries), "glDeleteQueries");
set_proc_address(:**void(&glIsQuery), "glIsQuery");
set_proc_address(:**void(&glBeginQuery), "glBeginQuery");
set_proc_address(:**void(&glEndQuery), "glEndQuery");
set_proc_address(:**void(&glGetQueryiv), "glGetQueryiv");
set_proc_address(:**void(&glGetQueryObjectiv), "glGetQueryObjectiv");
set_proc_address(:**void(&glGetQueryObjectuiv), "glGetQueryObjectuiv");
set_proc_address(:**void(&glBindBuffer), "glBindBuffer");
set_proc_address(:**void(&glDeleteBuffers), "glDeleteBuffers");
set_proc_address(:**void(&glGenBuffers), "glGenBuffers");
set_proc_address(:**void(&glIsBuffer), "glIsBuffer");
set_proc_address(:**void(&glBufferData), "glBufferData");
set_proc_address(:**void(&glBufferSubData), "glBufferSubData");
set_proc_address(:**void(&glGetBufferSubData), "glGetBufferSubData");
set_proc_address(:**void(&glMapBuffer), "glMapBuffer");
set_proc_address(:**void(&glUnmapBuffer), "glUnmapBuffer");
set_proc_address(:**void(&glGetBufferParameteriv), "glGetBufferParameteriv");
set_proc_address(:**void(&glGetBufferPointerv), "glGetBufferPointerv");
}
// VERSION_2_0
glBlendEquationSeparate: proc(modeRGB: u32, modeAlpha: u32);
glDrawBuffers: proc(n: i32, bufs: *u32);
glStencilOpSeparate: proc(face: u32, sfail: u32, dpfail: u32, dppass: u32);
glStencilFuncSeparate: proc(face: u32, func: u32, ref: i32, mask: u32);
glStencilMaskSeparate: proc(face: u32, mask: u32);
glAttachShader: proc(program: u32, shader: u32);
glBindAttribLocation: proc(program: u32, index: u32, name: *char);
glCompileShader: proc(shader: u32);
glCreateProgram: proc(): u32;
glCreateShader: proc(type: u32): u32;
glDeleteProgram: proc(program: u32);
glDeleteShader: proc(shader: u32);
glDetachShader: proc(program: u32, shader: u32);
glDisableVertexAttribArray: proc(index: u32);
glEnableVertexAttribArray: proc(index: u32);
glGetActiveAttrib: proc(program: u32, index: u32, bufSize: i32, length: *i32, size: *i32, type: *u32, name: *u8);
glGetActiveUniform: proc(program: u32, index: u32, bufSize: i32, length: *i32, size: *i32, type: *u32, name: *u8);
glGetAttachedShaders: proc(program: u32, maxCount: i32, count: *i32, shaders: *u32);
glGetAttribLocation: proc(program: u32, name: *char): i32;
glGetProgramiv: proc(program: u32, pname: u32, params: *i32);
glGetProgramInfoLog: proc(program: u32, bufSize: i32, length: *i32, infoLog: *u8);
glGetShaderiv: proc(shader: u32, pname: u32, params: *i32);
glGetShaderInfoLog: proc(shader: u32, bufSize: i32, length: *i32, infoLog: *u8);
glGetShaderSource: proc(shader: u32, bufSize: i32, length: *i32, source: *u8);
glGetUniformLocation: proc(program: u32, name: *char): i32;
glGetUniformfv: proc(program: u32, location: i32, params: *f32);
glGetUniformiv: proc(program: u32, location: i32, params: *i32);
glGetVertexAttribdv: proc(index: u32, pname: u32, params: *f64);
glGetVertexAttribfv: proc(index: u32, pname: u32, params: *f32);
glGetVertexAttribiv: proc(index: u32, pname: u32, params: *i32);
glGetVertexAttribPointerv: proc(index: u32, pname: u32, pointer: *uintptr);
glIsProgram: proc(program: u32): bool;
glIsShader: proc(shader: u32): bool;
glLinkProgram: proc(program: u32);
glShaderSource: proc(shader: u32, count: i32, string: **char, length: *i32);
glUseProgram: proc(program: u32);
glUniform1f: proc(location: i32, v0: f32);
glUniform2f: proc(location: i32, v0: f32, v1: f32);
glUniform3f: proc(location: i32, v0: f32, v1: f32, v2: f32);
glUniform4f: proc(location: i32, v0: f32, v1: f32, v2: f32, v3: f32);
glUniform1i: proc(location: i32, v0: i32);
glUniform2i: proc(location: i32, v0: i32, v1: i32);
glUniform3i: proc(location: i32, v0: i32, v1: i32, v2: i32);
glUniform4i: proc(location: i32, v0: i32, v1: i32, v2: i32, v3: i32);
glUniform1fv: proc(location: i32, count: i32, value: *f32);
glUniform2fv: proc(location: i32, count: i32, value: *f32);
glUniform3fv: proc(location: i32, count: i32, value: *f32);
glUniform4fv: proc(location: i32, count: i32, value: *f32);
glUniform1iv: proc(location: i32, count: i32, value: *i32);
glUniform2iv: proc(location: i32, count: i32, value: *i32);
glUniform3iv: proc(location: i32, count: i32, value: *i32);
glUniform4iv: proc(location: i32, count: i32, value: *i32);
glUniformMatrix2fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix3fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix4fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glValidateProgram: proc(program: u32);
glVertexAttrib1d: proc(index: u32, x: f64);
glVertexAttrib1dv: proc(index: u32, v: *f64);
glVertexAttrib1f: proc(index: u32, x: f32);
glVertexAttrib1fv: proc(index: u32, v: *f32);
glVertexAttrib1s: proc(index: u32, x: i16);
glVertexAttrib1sv: proc(index: u32, v: *i16);
glVertexAttrib2d: proc(index: u32, x: f64, y: f64);
glVertexAttrib2dv: proc(index: u32, v: *[2]f64);
glVertexAttrib2f: proc(index: u32, x: f32, y: f32);
glVertexAttrib2fv: proc(index: u32, v: *[2]f32);
glVertexAttrib2s: proc(index: u32, x: i16, y: i16);
glVertexAttrib2sv: proc(index: u32, v: *[2]i16);
glVertexAttrib3d: proc(index: u32, x: f64, y: f64, z: f64);
glVertexAttrib3dv: proc(index: u32, v: *[3]f64);
glVertexAttrib3f: proc(index: u32, x: f32, y: f32, z: f32);
glVertexAttrib3fv: proc(index: u32, v: *[3]f32);
glVertexAttrib3s: proc(index: u32, x: i16, y: i16, z: i16);
glVertexAttrib3sv: proc(index: u32, v: *[3]i16);
glVertexAttrib4Nbv: proc(index: u32, v: *[4]i8);
glVertexAttrib4Niv: proc(index: u32, v: *[4]i32);
glVertexAttrib4Nsv: proc(index: u32, v: *[4]i16);
glVertexAttrib4Nub: proc(index: u32, x: u8, y: u8, z: u8, w: u8);
glVertexAttrib4Nubv: proc(index: u32, v: *[4]u8);
glVertexAttrib4Nuiv: proc(index: u32, v: *[4]u32);
glVertexAttrib4Nusv: proc(index: u32, v: *[4]u16);
glVertexAttrib4bv: proc(index: u32, v: *[4]i8);
glVertexAttrib4d: proc(index: u32, x: f64, y: f64, z: f64, w: f64);
glVertexAttrib4dv: proc(index: u32, v: *[4]f64);
glVertexAttrib4f: proc(index: u32, x: f32, y: f32, z: f32, w: f32);
glVertexAttrib4fv: proc(index: u32, v: *[4]f32);
glVertexAttrib4iv: proc(index: u32, v: *[4]i32);
glVertexAttrib4s: proc(index: u32, x: i16, y: i16, z: i16, w: i16);
glVertexAttrib4sv: proc(index: u32, v: *[4]i16);
glVertexAttrib4ubv: proc(index: u32, v: *[4]u8);
glVertexAttrib4uiv: proc(index: u32, v: *[4]u32);
glVertexAttrib4usv: proc(index: u32, v: *[4]u16);
glVertexAttribPointer: proc(index: u32, size: i32, type: u32, normalized: bool, stride: i32, pointer: uintptr);
load_2_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glBlendEquationSeparate), "glBlendEquationSeparate");
set_proc_address(:**void(&glDrawBuffers), "glDrawBuffers");
set_proc_address(:**void(&glStencilOpSeparate), "glStencilOpSeparate");
set_proc_address(:**void(&glStencilFuncSeparate), "glStencilFuncSeparate");
set_proc_address(:**void(&glStencilMaskSeparate), "glStencilMaskSeparate");
set_proc_address(:**void(&glAttachShader), "glAttachShader");
set_proc_address(:**void(&glBindAttribLocation), "glBindAttribLocation");
set_proc_address(:**void(&glCompileShader), "glCompileShader");
set_proc_address(:**void(&glCreateProgram), "glCreateProgram");
set_proc_address(:**void(&glCreateShader), "glCreateShader");
set_proc_address(:**void(&glDeleteProgram), "glDeleteProgram");
set_proc_address(:**void(&glDeleteShader), "glDeleteShader");
set_proc_address(:**void(&glDetachShader), "glDetachShader");
set_proc_address(:**void(&glDisableVertexAttribArray), "glDisableVertexAttribArray");
set_proc_address(:**void(&glEnableVertexAttribArray), "glEnableVertexAttribArray");
set_proc_address(:**void(&glGetActiveAttrib), "glGetActiveAttrib");
set_proc_address(:**void(&glGetActiveUniform), "glGetActiveUniform");
set_proc_address(:**void(&glGetAttachedShaders), "glGetAttachedShaders");
set_proc_address(:**void(&glGetAttribLocation), "glGetAttribLocation");
set_proc_address(:**void(&glGetProgramiv), "glGetProgramiv");
set_proc_address(:**void(&glGetProgramInfoLog), "glGetProgramInfoLog");
set_proc_address(:**void(&glGetShaderiv), "glGetShaderiv");
set_proc_address(:**void(&glGetShaderInfoLog), "glGetShaderInfoLog");
set_proc_address(:**void(&glGetShaderSource), "glGetShaderSource");
set_proc_address(:**void(&glGetUniformLocation), "glGetUniformLocation");
set_proc_address(:**void(&glGetUniformfv), "glGetUniformfv");
set_proc_address(:**void(&glGetUniformiv), "glGetUniformiv");
set_proc_address(:**void(&glGetVertexAttribdv), "glGetVertexAttribdv");
set_proc_address(:**void(&glGetVertexAttribfv), "glGetVertexAttribfv");
set_proc_address(:**void(&glGetVertexAttribiv), "glGetVertexAttribiv");
set_proc_address(:**void(&glGetVertexAttribPointerv), "glGetVertexAttribPointerv");
set_proc_address(:**void(&glIsProgram), "glIsProgram");
set_proc_address(:**void(&glIsShader), "glIsShader");
set_proc_address(:**void(&glLinkProgram), "glLinkProgram");
set_proc_address(:**void(&glShaderSource), "glShaderSource");
set_proc_address(:**void(&glUseProgram), "glUseProgram");
set_proc_address(:**void(&glUniform1f), "glUniform1f");
set_proc_address(:**void(&glUniform2f), "glUniform2f");
set_proc_address(:**void(&glUniform3f), "glUniform3f");
set_proc_address(:**void(&glUniform4f), "glUniform4f");
set_proc_address(:**void(&glUniform1i), "glUniform1i");
set_proc_address(:**void(&glUniform2i), "glUniform2i");
set_proc_address(:**void(&glUniform3i), "glUniform3i");
set_proc_address(:**void(&glUniform4i), "glUniform4i");
set_proc_address(:**void(&glUniform1fv), "glUniform1fv");
set_proc_address(:**void(&glUniform2fv), "glUniform2fv");
set_proc_address(:**void(&glUniform3fv), "glUniform3fv");
set_proc_address(:**void(&glUniform4fv), "glUniform4fv");
set_proc_address(:**void(&glUniform1iv), "glUniform1iv");
set_proc_address(:**void(&glUniform2iv), "glUniform2iv");
set_proc_address(:**void(&glUniform3iv), "glUniform3iv");
set_proc_address(:**void(&glUniform4iv), "glUniform4iv");
set_proc_address(:**void(&glUniformMatrix2fv), "glUniformMatrix2fv");
set_proc_address(:**void(&glUniformMatrix3fv), "glUniformMatrix3fv");
set_proc_address(:**void(&glUniformMatrix4fv), "glUniformMatrix4fv");
set_proc_address(:**void(&glValidateProgram), "glValidateProgram");
set_proc_address(:**void(&glVertexAttrib1d), "glVertexAttrib1d");
set_proc_address(:**void(&glVertexAttrib1dv), "glVertexAttrib1dv");
set_proc_address(:**void(&glVertexAttrib1f), "glVertexAttrib1f");
set_proc_address(:**void(&glVertexAttrib1fv), "glVertexAttrib1fv");
set_proc_address(:**void(&glVertexAttrib1s), "glVertexAttrib1s");
set_proc_address(:**void(&glVertexAttrib1sv), "glVertexAttrib1sv");
set_proc_address(:**void(&glVertexAttrib2d), "glVertexAttrib2d");
set_proc_address(:**void(&glVertexAttrib2dv), "glVertexAttrib2dv");
set_proc_address(:**void(&glVertexAttrib2f), "glVertexAttrib2f");
set_proc_address(:**void(&glVertexAttrib2fv), "glVertexAttrib2fv");
set_proc_address(:**void(&glVertexAttrib2s), "glVertexAttrib2s");
set_proc_address(:**void(&glVertexAttrib2sv), "glVertexAttrib2sv");
set_proc_address(:**void(&glVertexAttrib3d), "glVertexAttrib3d");
set_proc_address(:**void(&glVertexAttrib3dv), "glVertexAttrib3dv");
set_proc_address(:**void(&glVertexAttrib3f), "glVertexAttrib3f");
set_proc_address(:**void(&glVertexAttrib3fv), "glVertexAttrib3fv");
set_proc_address(:**void(&glVertexAttrib3s), "glVertexAttrib3s");
set_proc_address(:**void(&glVertexAttrib3sv), "glVertexAttrib3sv");
set_proc_address(:**void(&glVertexAttrib4Nbv), "glVertexAttrib4Nbv");
set_proc_address(:**void(&glVertexAttrib4Niv), "glVertexAttrib4Niv");
set_proc_address(:**void(&glVertexAttrib4Nsv), "glVertexAttrib4Nsv");
set_proc_address(:**void(&glVertexAttrib4Nub), "glVertexAttrib4Nub");
set_proc_address(:**void(&glVertexAttrib4Nubv), "glVertexAttrib4Nubv");
set_proc_address(:**void(&glVertexAttrib4Nuiv), "glVertexAttrib4Nuiv");
set_proc_address(:**void(&glVertexAttrib4Nusv), "glVertexAttrib4Nusv");
set_proc_address(:**void(&glVertexAttrib4bv), "glVertexAttrib4bv");
set_proc_address(:**void(&glVertexAttrib4d), "glVertexAttrib4d");
set_proc_address(:**void(&glVertexAttrib4dv), "glVertexAttrib4dv");
set_proc_address(:**void(&glVertexAttrib4f), "glVertexAttrib4f");
set_proc_address(:**void(&glVertexAttrib4fv), "glVertexAttrib4fv");
set_proc_address(:**void(&glVertexAttrib4iv), "glVertexAttrib4iv");
set_proc_address(:**void(&glVertexAttrib4s), "glVertexAttrib4s");
set_proc_address(:**void(&glVertexAttrib4sv), "glVertexAttrib4sv");
set_proc_address(:**void(&glVertexAttrib4ubv), "glVertexAttrib4ubv");
set_proc_address(:**void(&glVertexAttrib4uiv), "glVertexAttrib4uiv");
set_proc_address(:**void(&glVertexAttrib4usv), "glVertexAttrib4usv");
set_proc_address(:**void(&glVertexAttribPointer), "glVertexAttribPointer");
}
// VERSION_2_1
glUniformMatrix2x3fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix3x2fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix2x4fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix4x2fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix3x4fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
glUniformMatrix4x3fv: proc(location: i32, count: i32, transpose: bool, value: *f32);
load_2_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glUniformMatrix2x3fv), "glUniformMatrix2x3fv");
set_proc_address(:**void(&glUniformMatrix3x2fv), "glUniformMatrix3x2fv");
set_proc_address(:**void(&glUniformMatrix2x4fv), "glUniformMatrix2x4fv");
set_proc_address(:**void(&glUniformMatrix4x2fv), "glUniformMatrix4x2fv");
set_proc_address(:**void(&glUniformMatrix3x4fv), "glUniformMatrix3x4fv");
set_proc_address(:**void(&glUniformMatrix4x3fv), "glUniformMatrix4x3fv");
}
// VERSION_3_0
glColorMaski: proc(index: u32, r: bool, g: bool, b: bool, a: bool);
glGetBooleani_v: proc(target: u32, index: u32, data: *bool);
glGetIntegeri_v: proc(target: u32, index: u32, data: *i32);
glEnablei: proc(target: u32, index: u32);
glDisablei: proc(target: u32, index: u32);
glIsEnabledi: proc(target: u32, index: u32): bool;
glBeginTransformFeedback: proc(primitiveMode: u32);
glEndTransformFeedback: proc();
glBindBufferRange: proc(target: u32, index: u32, buffer: u32, offset: int, size: int);
glBindBufferBase: proc(target: u32, index: u32, buffer: u32);
glTransformFeedbackVaryings: proc(program: u32, count: i32, varyings: **char, bufferMode: u32);
glGetTransformFeedbackVarying: proc(program: u32, index: u32, bufSize: i32, length: *i32, size: *i32, type: *u32, name: *u8);
glClampColor: proc(target: u32, clamp: u32);
glBeginConditionalRender: proc(id: u32, mode: u32);
glEndConditionalRender: proc();
glVertexAttribIPointer: proc(index: u32, size: i32, type: u32, stride: i32, pointer: uintptr);
glGetVertexAttribIiv: proc(index: u32, pname: u32, params: *i32);
glGetVertexAttribIuiv: proc(index: u32, pname: u32, params: *u32);
glVertexAttribI1i: proc(index: u32, x: i32);
glVertexAttribI2i: proc(index: u32, x: i32, y: i32);
glVertexAttribI3i: proc(index: u32, x: i32, y: i32, z: i32);
glVertexAttribI4i: proc(index: u32, x: i32, y: i32, z: i32, w: i32);
glVertexAttribI1ui: proc(index: u32, x: u32);
glVertexAttribI2ui: proc(index: u32, x: u32, y: u32);
glVertexAttribI3ui: proc(index: u32, x: u32, y: u32, z: u32);
glVertexAttribI4ui: proc(index: u32, x: u32, y: u32, z: u32, w: u32);
glVertexAttribI1iv: proc(index: u32, v: *i32);
glVertexAttribI2iv: proc(index: u32, v: *i32);
glVertexAttribI3iv: proc(index: u32, v: *i32);
glVertexAttribI4iv: proc(index: u32, v: *i32);
glVertexAttribI1uiv: proc(index: u32, v: *u32);
glVertexAttribI2uiv: proc(index: u32, v: *u32);
glVertexAttribI3uiv: proc(index: u32, v: *u32);
glVertexAttribI4uiv: proc(index: u32, v: *u32);
glVertexAttribI4bv: proc(index: u32, v: *i8);
glVertexAttribI4sv: proc(index: u32, v: *i16);
glVertexAttribI4ubv: proc(index: u32, v: *u8);
glVertexAttribI4usv: proc(index: u32, v: *u16);
glGetUniformuiv: proc(program: u32, location: i32, params: *u32);
glBindFragDataLocation: proc(program: u32, color: u32, name: *char);
glGetFragDataLocation: proc(program: u32, name: *char): i32;
glUniform1ui: proc(location: i32, v0: u32);
glUniform2ui: proc(location: i32, v0: u32, v1: u32);
glUniform3ui: proc(location: i32, v0: u32, v1: u32, v2: u32);
glUniform4ui: proc(location: i32, v0: u32, v1: u32, v2: u32, v3: u32);
glUniform1uiv: proc(location: i32, count: i32, value: *u32);
glUniform2uiv: proc(location: i32, count: i32, value: *u32);
glUniform3uiv: proc(location: i32, count: i32, value: *u32);
glUniform4uiv: proc(location: i32, count: i32, value: *u32);
glTexParameterIiv: proc(target: u32, pname: u32, params: *i32);
glTexParameterIuiv: proc(target: u32, pname: u32, params: *u32);
glGetTexParameterIiv: proc(target: u32, pname: u32, params: *i32);
glGetTexParameterIuiv: proc(target: u32, pname: u32, params: *u32);
glClearBufferiv: proc(buffer: u32, drawbuffer: i32, value: *i32);
glClearBufferuiv: proc(buffer: u32, drawbuffer: i32, value: *u32);
glClearBufferfv: proc(buffer: u32, drawbuffer: i32, value: *f32);
glClearBufferfi: proc(buffer: u32, drawbuffer: i32, depth: f32, stencil: i32): *void;
glGetStringi: proc(name: u32, index: u32): *char;
glIsRenderbuffer: proc(renderbuffer: u32): bool;
glBindRenderbuffer: proc(target: u32, renderbuffer: u32);
glDeleteRenderbuffers: proc(n: i32, renderbuffers: *u32);
glGenRenderbuffers: proc(n: i32, renderbuffers: *u32);
glRenderbufferStorage: proc(target: u32, internalformat: u32, width: i32, height: i32);
glGetRenderbufferParameteriv: proc(target: u32, pname: u32, params: *i32);
glIsFramebuffer: proc(framebuffer: u32): bool;
glBindFramebuffer: proc(target: u32, framebuffer: u32);
glDeleteFramebuffers: proc(n: i32, framebuffers: *u32);
glGenFramebuffers: proc(n: i32, framebuffers: *u32);
glCheckFramebufferStatus: proc(target: u32): u32;
glFramebufferTexture1D: proc(target: u32, attachment: u32, textarget: u32, texture: u32, level: i32);
glFramebufferTexture2D: proc(target: u32, attachment: u32, textarget: u32, texture: u32, level: i32);
glFramebufferTexture3D: proc(target: u32, attachment: u32, textarget: u32, texture: u32, level: i32, zoffset: i32);
glFramebufferRenderbuffer: proc(target: u32, attachment: u32, renderbuffertarget: u32, renderbuffer: u32);
glGetFramebufferAttachmentParameteriv: proc(target: u32, attachment: u32, pname: u32, params: *i32);
glGenerateMipmap: proc(target: u32);
glBlitFramebuffer: proc(srcX0: i32, srcY0: i32, srcX1: i32, srcY1: i32, dstX0: i32, dstY0: i32, dstX1: i32, dstY1: i32, mask: u32, filter: u32);
glRenderbufferStorageMultisample: proc(target: u32, samples: i32, internalformat: u32, width: i32, height: i32);
glFramebufferTextureLayer: proc(target: u32, attachment: u32, texture: u32, level: i32, layer: i32);
glMapBufferRange: proc(target: u32, offset: int, length: int, access: u32): *void;
glFlushMappedBufferRange: proc(target: u32, offset: int, length: int);
glBindVertexArray: proc(array: u32);
glDeleteVertexArrays: proc(n: i32, arrays: *u32);
glGenVertexArrays: proc(n: i32, arrays: *u32);
glIsVertexArray: proc(array: u32): bool;
load_3_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glColorMaski), "glColorMaski");
set_proc_address(:**void(&glGetBooleani_v), "glGetBooleani_v");
set_proc_address(:**void(&glGetIntegeri_v), "glGetIntegeri_v");
set_proc_address(:**void(&glEnablei), "glEnablei");
set_proc_address(:**void(&glDisablei), "glDisablei");
set_proc_address(:**void(&glIsEnabledi), "glIsEnabledi");
set_proc_address(:**void(&glBeginTransformFeedback), "glBeginTransformFeedback");
set_proc_address(:**void(&glEndTransformFeedback), "glEndTransformFeedback");
set_proc_address(:**void(&glBindBufferRange), "glBindBufferRange");
set_proc_address(:**void(&glBindBufferBase), "glBindBufferBase");
set_proc_address(:**void(&glTransformFeedbackVaryings), "glTransformFeedbackVaryings");
set_proc_address(:**void(&glGetTransformFeedbackVarying), "glGetTransformFeedbackVarying");
set_proc_address(:**void(&glClampColor), "glClampColor");
set_proc_address(:**void(&glBeginConditionalRender), "glBeginConditionalRender");
set_proc_address(:**void(&glEndConditionalRender), "glEndConditionalRender");
set_proc_address(:**void(&glVertexAttribIPointer), "glVertexAttribIPointer");
set_proc_address(:**void(&glGetVertexAttribIiv), "glGetVertexAttribIiv");
set_proc_address(:**void(&glGetVertexAttribIuiv), "glGetVertexAttribIuiv");
set_proc_address(:**void(&glVertexAttribI1i), "glVertexAttribI1i");
set_proc_address(:**void(&glVertexAttribI2i), "glVertexAttribI2i");
set_proc_address(:**void(&glVertexAttribI3i), "glVertexAttribI3i");
set_proc_address(:**void(&glVertexAttribI4i), "glVertexAttribI4i");
set_proc_address(:**void(&glVertexAttribI1ui), "glVertexAttribI1ui");
set_proc_address(:**void(&glVertexAttribI2ui), "glVertexAttribI2ui");
set_proc_address(:**void(&glVertexAttribI3ui), "glVertexAttribI3ui");
set_proc_address(:**void(&glVertexAttribI4ui), "glVertexAttribI4ui");
set_proc_address(:**void(&glVertexAttribI1iv), "glVertexAttribI1iv");
set_proc_address(:**void(&glVertexAttribI2iv), "glVertexAttribI2iv");
set_proc_address(:**void(&glVertexAttribI3iv), "glVertexAttribI3iv");
set_proc_address(:**void(&glVertexAttribI4iv), "glVertexAttribI4iv");
set_proc_address(:**void(&glVertexAttribI1uiv), "glVertexAttribI1uiv");
set_proc_address(:**void(&glVertexAttribI2uiv), "glVertexAttribI2uiv");
set_proc_address(:**void(&glVertexAttribI3uiv), "glVertexAttribI3uiv");
set_proc_address(:**void(&glVertexAttribI4uiv), "glVertexAttribI4uiv");
set_proc_address(:**void(&glVertexAttribI4bv), "glVertexAttribI4bv");
set_proc_address(:**void(&glVertexAttribI4sv), "glVertexAttribI4sv");
set_proc_address(:**void(&glVertexAttribI4ubv), "glVertexAttribI4ubv");
set_proc_address(:**void(&glVertexAttribI4usv), "glVertexAttribI4usv");
set_proc_address(:**void(&glGetUniformuiv), "glGetUniformuiv");
set_proc_address(:**void(&glBindFragDataLocation), "glBindFragDataLocation");
set_proc_address(:**void(&glGetFragDataLocation), "glGetFragDataLocation");
set_proc_address(:**void(&glUniform1ui), "glUniform1ui");
set_proc_address(:**void(&glUniform2ui), "glUniform2ui");
set_proc_address(:**void(&glUniform3ui), "glUniform3ui");
set_proc_address(:**void(&glUniform4ui), "glUniform4ui");
set_proc_address(:**void(&glUniform1uiv), "glUniform1uiv");
set_proc_address(:**void(&glUniform2uiv), "glUniform2uiv");
set_proc_address(:**void(&glUniform3uiv), "glUniform3uiv");
set_proc_address(:**void(&glUniform4uiv), "glUniform4uiv");
set_proc_address(:**void(&glTexParameterIiv), "glTexParameterIiv");
set_proc_address(:**void(&glTexParameterIuiv), "glTexParameterIuiv");
set_proc_address(:**void(&glGetTexParameterIiv), "glGetTexParameterIiv");
set_proc_address(:**void(&glGetTexParameterIuiv), "glGetTexParameterIuiv");
set_proc_address(:**void(&glClearBufferiv), "glClearBufferiv");
set_proc_address(:**void(&glClearBufferuiv), "glClearBufferuiv");
set_proc_address(:**void(&glClearBufferfv), "glClearBufferfv");
set_proc_address(:**void(&glClearBufferfi), "glClearBufferfi");
set_proc_address(:**void(&glGetStringi), "glGetStringi");
set_proc_address(:**void(&glIsRenderbuffer), "glIsRenderbuffer");
set_proc_address(:**void(&glBindRenderbuffer), "glBindRenderbuffer");
set_proc_address(:**void(&glDeleteRenderbuffers), "glDeleteRenderbuffers");
set_proc_address(:**void(&glGenRenderbuffers), "glGenRenderbuffers");
set_proc_address(:**void(&glRenderbufferStorage), "glRenderbufferStorage");
set_proc_address(:**void(&glGetRenderbufferParameteriv), "glGetRenderbufferParameteriv");
set_proc_address(:**void(&glIsFramebuffer), "glIsFramebuffer");
set_proc_address(:**void(&glBindFramebuffer), "glBindFramebuffer");
set_proc_address(:**void(&glDeleteFramebuffers), "glDeleteFramebuffers");
set_proc_address(:**void(&glGenFramebuffers), "glGenFramebuffers");
set_proc_address(:**void(&glCheckFramebufferStatus), "glCheckFramebufferStatus");
set_proc_address(:**void(&glFramebufferTexture1D), "glFramebufferTexture1D");
set_proc_address(:**void(&glFramebufferTexture2D), "glFramebufferTexture2D");
set_proc_address(:**void(&glFramebufferTexture3D), "glFramebufferTexture3D");
set_proc_address(:**void(&glFramebufferRenderbuffer), "glFramebufferRenderbuffer");
set_proc_address(:**void(&glGetFramebufferAttachmentParameteriv), "glGetFramebufferAttachmentParameteriv");
set_proc_address(:**void(&glGenerateMipmap), "glGenerateMipmap");
set_proc_address(:**void(&glBlitFramebuffer), "glBlitFramebuffer");
set_proc_address(:**void(&glRenderbufferStorageMultisample), "glRenderbufferStorageMultisample");
set_proc_address(:**void(&glFramebufferTextureLayer), "glFramebufferTextureLayer");
set_proc_address(:**void(&glMapBufferRange), "glMapBufferRange");
set_proc_address(:**void(&glFlushMappedBufferRange), "glFlushMappedBufferRange");
set_proc_address(:**void(&glBindVertexArray), "glBindVertexArray");
set_proc_address(:**void(&glDeleteVertexArrays), "glDeleteVertexArrays");
set_proc_address(:**void(&glGenVertexArrays), "glGenVertexArrays");
set_proc_address(:**void(&glIsVertexArray), "glIsVertexArray");
}
// VERSION_3_1
glDrawArraysInstanced: proc(mode: u32, first: i32, count: i32, instancecount: i32);
glDrawElementsInstanced: proc(mode: u32, count: i32, type: u32, indices: *void, instancecount: i32);
glTexBuffer: proc(target: u32, internalformat: u32, buffer: u32);
glPrimitiveRestartIndex: proc(index: u32);
glCopyBufferSubData: proc(readTarget: u32, writeTarget: u32, readOffset: int, writeOffset: int, size: int);
glGetUniformIndices: proc(program: u32, uniformCount: i32, uniformNames: **char, uniformIndices: *u32);
glGetActiveUniformsiv: proc(program: u32, uniformCount: i32, uniformIndices: *u32, pname: u32, params: *i32);
glGetActiveUniformName: proc(program: u32, uniformIndex: u32, bufSize: i32, length: *i32, uniformName: *u8);
glGetUniformBlockIndex: proc(program: u32, uniformBlockName: *char): u32;
glGetActiveUniformBlockiv: proc(program: u32, uniformBlockIndex: u32, pname: u32, params: *i32);
glGetActiveUniformBlockName: proc(program: u32, uniformBlockIndex: u32, bufSize: i32, length: *i32, uniformBlockName: *u8);
glUniformBlockBinding: proc(program: u32, uniformBlockIndex: u32, uniformBlockBinding: u32);
load_3_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glDrawArraysInstanced), "glDrawArraysInstanced");
set_proc_address(:**void(&glDrawElementsInstanced), "glDrawElementsInstanced");
set_proc_address(:**void(&glTexBuffer), "glTexBuffer");
set_proc_address(:**void(&glPrimitiveRestartIndex), "glPrimitiveRestartIndex");
set_proc_address(:**void(&glCopyBufferSubData), "glCopyBufferSubData");
set_proc_address(:**void(&glGetUniformIndices), "glGetUniformIndices");
set_proc_address(:**void(&glGetActiveUniformsiv), "glGetActiveUniformsiv");
set_proc_address(:**void(&glGetActiveUniformName), "glGetActiveUniformName");
set_proc_address(:**void(&glGetUniformBlockIndex), "glGetUniformBlockIndex");
set_proc_address(:**void(&glGetActiveUniformBlockiv), "glGetActiveUniformBlockiv");
set_proc_address(:**void(&glGetActiveUniformBlockName), "glGetActiveUniformBlockName");
set_proc_address(:**void(&glUniformBlockBinding), "glUniformBlockBinding");
}
// VERSION_3_2
glDrawElementsBaseVertex: proc(mode: u32, count: i32, type: u32, indices: *void, basevertex: i32);
glDrawRangeElementsBaseVertex: proc(mode: u32, start: u32, end: u32, count: i32, type: u32, indices: *void, basevertex: i32);
glDrawElementsInstancedBaseVertex: proc(mode: u32, count: i32, type: u32, indices: *void, instancecount: i32, basevertex: i32);
glMultiDrawElementsBaseVertex: proc(mode: u32, count: *i32, type: u32, indices: **void, drawcount: i32, basevertex: *i32);
glProvokingVertex: proc(mode: u32);
glFenceSync: proc(condition: u32, flags: u32): sync_t;
glIsSync: proc(sync: sync_t): bool;
glDeleteSync: proc(sync: sync_t);
glClientWaitSync: proc(sync: sync_t, flags: u32, timeout: u64): u32;
glWaitSync: proc(sync: sync_t, flags: u32, timeout: u64);
glGetInteger64v: proc(pname: u32, data: *i64);
glGetSynciv: proc(sync: sync_t, pname: u32, bufSize: i32, length: *i32, values: *i32);
glGetInteger64i_v: proc(target: u32, index: u32, data: *i64);
glGetBufferParameteri64v: proc(target: u32, pname: u32, params: *i64);
glFramebufferTexture: proc(target: u32, attachment: u32, texture: u32, level: i32);
glTexImage2DMultisample: proc(target: u32, samples: i32, internalformat: u32, width: i32, height: i32, fixedsamplelocations: bool);
glTexImage3DMultisample: proc(target: u32, samples: i32, internalformat: u32, width: i32, height: i32, depth: i32, fixedsamplelocations: bool);
glGetMultisamplefv: proc(pname: u32, index: u32, val: *f32);
glSampleMaski: proc(maskNumber: u32, mask: u32);
load_3_2 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glDrawElementsBaseVertex), "glDrawElementsBaseVertex");
set_proc_address(:**void(&glDrawRangeElementsBaseVertex), "glDrawRangeElementsBaseVertex");
set_proc_address(:**void(&glDrawElementsInstancedBaseVertex), "glDrawElementsInstancedBaseVertex");
set_proc_address(:**void(&glMultiDrawElementsBaseVertex), "glMultiDrawElementsBaseVertex");
set_proc_address(:**void(&glProvokingVertex), "glProvokingVertex");
set_proc_address(:**void(&glFenceSync), "glFenceSync");
set_proc_address(:**void(&glIsSync), "glIsSync");
set_proc_address(:**void(&glDeleteSync), "glDeleteSync");
set_proc_address(:**void(&glClientWaitSync), "glClientWaitSync");
set_proc_address(:**void(&glWaitSync), "glWaitSync");
set_proc_address(:**void(&glGetInteger64v), "glGetInteger64v");
set_proc_address(:**void(&glGetSynciv), "glGetSynciv");
set_proc_address(:**void(&glGetInteger64i_v), "glGetInteger64i_v");
set_proc_address(:**void(&glGetBufferParameteri64v), "glGetBufferParameteri64v");
set_proc_address(:**void(&glFramebufferTexture), "glFramebufferTexture");
set_proc_address(:**void(&glTexImage2DMultisample), "glTexImage2DMultisample");
set_proc_address(:**void(&glTexImage3DMultisample), "glTexImage3DMultisample");
set_proc_address(:**void(&glGetMultisamplefv), "glGetMultisamplefv");
set_proc_address(:**void(&glSampleMaski), "glSampleMaski");
}
// VERSION_3_3
glBindFragDataLocationIndexed: proc(program: u32, colorNumber: u32, index: u32, name: *char);
glGetFragDataIndex: proc(program: u32, name: *char): i32;
glGenSamplers: proc(count: i32, samplers: *u32);
glDeleteSamplers: proc(count: i32, samplers: *u32);
glIsSampler: proc(sampler: u32): bool;
glBindSampler: proc(unit: u32, sampler: u32);
glSamplerParameteri: proc(sampler: u32, pname: u32, param: i32);
glSamplerParameteriv: proc(sampler: u32, pname: u32, param: *i32);
glSamplerParameterf: proc(sampler: u32, pname: u32, param: f32);
glSamplerParameterfv: proc(sampler: u32, pname: u32, param: *f32);
glSamplerParameterIiv: proc(sampler: u32, pname: u32, param: *i32);
glSamplerParameterIuiv: proc(sampler: u32, pname: u32, param: *u32);
glGetSamplerParameteriv: proc(sampler: u32, pname: u32, params: *i32);
glGetSamplerParameterIiv: proc(sampler: u32, pname: u32, params: *i32);
glGetSamplerParameterfv: proc(sampler: u32, pname: u32, params: *f32);
glGetSamplerParameterIuiv: proc(sampler: u32, pname: u32, params: *u32);
glQueryCounter: proc(id: u32, target: u32);
glGetQueryObjecti64v: proc(id: u32, pname: u32, params: *i64);
glGetQueryObjectui64v: proc(id: u32, pname: u32, params: *u64);
glVertexAttribDivisor: proc(index: u32, divisor: u32);
glVertexAttribP1ui: proc(index: u32, type: u32, normalized: bool, value: u32);
glVertexAttribP1uiv: proc(index: u32, type: u32, normalized: bool, value: *u32);
glVertexAttribP2ui: proc(index: u32, type: u32, normalized: bool, value: u32);
glVertexAttribP2uiv: proc(index: u32, type: u32, normalized: bool, value: *u32);
glVertexAttribP3ui: proc(index: u32, type: u32, normalized: bool, value: u32);
glVertexAttribP3uiv: proc(index: u32, type: u32, normalized: bool, value: *u32);
glVertexAttribP4ui: proc(index: u32, type: u32, normalized: bool, value: u32);
glVertexAttribP4uiv: proc(index: u32, type: u32, normalized: bool, value: *u32);
glVertexP2ui: proc(type: u32, value: u32);
glVertexP2uiv: proc(type: u32, value: *u32);
glVertexP3ui: proc(type: u32, value: u32);
glVertexP3uiv: proc(type: u32, value: *u32);
glVertexP4ui: proc(type: u32, value: u32);
glVertexP4uiv: proc(type: u32, value: *u32);
glTexCoordP1ui: proc(type: u32, coords: u32);
glTexCoordP1uiv: proc(type: u32, coords: *u32);
glTexCoordP2ui: proc(type: u32, coords: u32);
glTexCoordP2uiv: proc(type: u32, coords: *u32);
glTexCoordP3ui: proc(type: u32, coords: u32);
glTexCoordP3uiv: proc(type: u32, coords: *u32);
glTexCoordP4ui: proc(type: u32, coords: u32);
glTexCoordP4uiv: proc(type: u32, coords: *u32);
glMultiTexCoordP1ui: proc(texture: u32, type: u32, coords: u32);
glMultiTexCoordP1uiv: proc(texture: u32, type: u32, coords: *u32);
glMultiTexCoordP2ui: proc(texture: u32, type: u32, coords: u32);
glMultiTexCoordP2uiv: proc(texture: u32, type: u32, coords: *u32);
glMultiTexCoordP3ui: proc(texture: u32, type: u32, coords: u32);
glMultiTexCoordP3uiv: proc(texture: u32, type: u32, coords: *u32);
glMultiTexCoordP4ui: proc(texture: u32, type: u32, coords: u32);
glMultiTexCoordP4uiv: proc(texture: u32, type: u32, coords: *u32);
glNormalP3ui: proc(type: u32, coords: u32);
glNormalP3uiv: proc(type: u32, coords: *u32);
glColorP3ui: proc(type: u32, color: u32);
glColorP3uiv: proc(type: u32, color: *u32);
glColorP4ui: proc(type: u32, color: u32);
glColorP4uiv: proc(type: u32, color: *u32);
glSecondaryColorP3ui: proc(type: u32, color: u32);
glSecondaryColorP3uiv: proc(type: u32, color: *u32);
load_3_3 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glBindFragDataLocationIndexed), "glBindFragDataLocationIndexed");
set_proc_address(:**void(&glGetFragDataIndex), "glGetFragDataIndex");
set_proc_address(:**void(&glGenSamplers), "glGenSamplers");
set_proc_address(:**void(&glDeleteSamplers), "glDeleteSamplers");
set_proc_address(:**void(&glIsSampler), "glIsSampler");
set_proc_address(:**void(&glBindSampler), "glBindSampler");
set_proc_address(:**void(&glSamplerParameteri), "glSamplerParameteri");
set_proc_address(:**void(&glSamplerParameteriv), "glSamplerParameteriv");
set_proc_address(:**void(&glSamplerParameterf), "glSamplerParameterf");
set_proc_address(:**void(&glSamplerParameterfv), "glSamplerParameterfv");
set_proc_address(:**void(&glSamplerParameterIiv), "glSamplerParameterIiv");
set_proc_address(:**void(&glSamplerParameterIuiv), "glSamplerParameterIuiv");
set_proc_address(:**void(&glGetSamplerParameteriv), "glGetSamplerParameteriv");
set_proc_address(:**void(&glGetSamplerParameterIiv), "glGetSamplerParameterIiv");
set_proc_address(:**void(&glGetSamplerParameterfv), "glGetSamplerParameterfv");
set_proc_address(:**void(&glGetSamplerParameterIuiv), "glGetSamplerParameterIuiv");
set_proc_address(:**void(&glQueryCounter), "glQueryCounter");
set_proc_address(:**void(&glGetQueryObjecti64v), "glGetQueryObjecti64v");
set_proc_address(:**void(&glGetQueryObjectui64v), "glGetQueryObjectui64v");
set_proc_address(:**void(&glVertexAttribDivisor), "glVertexAttribDivisor");
set_proc_address(:**void(&glVertexAttribP1ui), "glVertexAttribP1ui");
set_proc_address(:**void(&glVertexAttribP1uiv), "glVertexAttribP1uiv");
set_proc_address(:**void(&glVertexAttribP2ui), "glVertexAttribP2ui");
set_proc_address(:**void(&glVertexAttribP2uiv), "glVertexAttribP2uiv");
set_proc_address(:**void(&glVertexAttribP3ui), "glVertexAttribP3ui");
set_proc_address(:**void(&glVertexAttribP3uiv), "glVertexAttribP3uiv");
set_proc_address(:**void(&glVertexAttribP4ui), "glVertexAttribP4ui");
set_proc_address(:**void(&glVertexAttribP4uiv), "glVertexAttribP4uiv");
set_proc_address(:**void(&glVertexP2ui), "glVertexP2ui");
set_proc_address(:**void(&glVertexP2uiv), "glVertexP2uiv");
set_proc_address(:**void(&glVertexP3ui), "glVertexP3ui");
set_proc_address(:**void(&glVertexP3uiv), "glVertexP3uiv");
set_proc_address(:**void(&glVertexP4ui), "glVertexP4ui");
set_proc_address(:**void(&glVertexP4uiv), "glVertexP4uiv");
set_proc_address(:**void(&glTexCoordP1ui), "glTexCoordP1ui");
set_proc_address(:**void(&glTexCoordP1uiv), "glTexCoordP1uiv");
set_proc_address(:**void(&glTexCoordP2ui), "glTexCoordP2ui");
set_proc_address(:**void(&glTexCoordP2uiv), "glTexCoordP2uiv");
set_proc_address(:**void(&glTexCoordP3ui), "glTexCoordP3ui");
set_proc_address(:**void(&glTexCoordP3uiv), "glTexCoordP3uiv");
set_proc_address(:**void(&glTexCoordP4ui), "glTexCoordP4ui");
set_proc_address(:**void(&glTexCoordP4uiv), "glTexCoordP4uiv");
set_proc_address(:**void(&glMultiTexCoordP1ui), "glMultiTexCoordP1ui");
set_proc_address(:**void(&glMultiTexCoordP1uiv), "glMultiTexCoordP1uiv");
set_proc_address(:**void(&glMultiTexCoordP2ui), "glMultiTexCoordP2ui");
set_proc_address(:**void(&glMultiTexCoordP2uiv), "glMultiTexCoordP2uiv");
set_proc_address(:**void(&glMultiTexCoordP3ui), "glMultiTexCoordP3ui");
set_proc_address(:**void(&glMultiTexCoordP3uiv), "glMultiTexCoordP3uiv");
set_proc_address(:**void(&glMultiTexCoordP4ui), "glMultiTexCoordP4ui");
set_proc_address(:**void(&glMultiTexCoordP4uiv), "glMultiTexCoordP4uiv");
set_proc_address(:**void(&glNormalP3ui), "glNormalP3ui");
set_proc_address(:**void(&glNormalP3uiv), "glNormalP3uiv");
set_proc_address(:**void(&glColorP3ui), "glColorP3ui");
set_proc_address(:**void(&glColorP3uiv), "glColorP3uiv");
set_proc_address(:**void(&glColorP4ui), "glColorP4ui");
set_proc_address(:**void(&glColorP4uiv), "glColorP4uiv");
set_proc_address(:**void(&glSecondaryColorP3ui), "glSecondaryColorP3ui");
set_proc_address(:**void(&glSecondaryColorP3uiv), "glSecondaryColorP3uiv");
}
// VERSION_4_0
DrawArraysIndirectCommand :: struct {
count: u32;
instanceCount: u32;
first: u32;
baseInstance: u32;
}
DrawElementsIndirectCommand :: struct {
count: u32;
instanceCount: u32;
firstIndex: u32;
baseVertex: u32;
baseInstance: u32;
}
glMinSampleShading: proc(value: f32);
glBlendEquationi: proc(buf: u32, mode: u32);
glBlendEquationSeparatei: proc(buf: u32, modeRGB: u32, modeAlpha: u32);
glBlendFunci: proc(buf: u32, src: u32, dst: u32);
glBlendFuncSeparatei: proc(buf: u32, srcRGB: u32, dstRGB: u32, srcAlpha: u32, dstAlpha: u32);
glDrawArraysIndirect: proc(mode: u32, indirect: *DrawArraysIndirectCommand);
glDrawElementsIndirect: proc(mode: u32, type: u32, indirect: *DrawElementsIndirectCommand);
glUniform1d: proc(location: i32, x: f64);
glUniform2d: proc(location: i32, x: f64, y: f64);
glUniform3d: proc(location: i32, x: f64, y: f64, z: f64);
glUniform4d: proc(location: i32, x: f64, y: f64, z: f64, w: f64);
glUniform1dv: proc(location: i32, count: i32, value: *f64);
glUniform2dv: proc(location: i32, count: i32, value: *f64);
glUniform3dv: proc(location: i32, count: i32, value: *f64);
glUniform4dv: proc(location: i32, count: i32, value: *f64);
glUniformMatrix2dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix3dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix4dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix2x3dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix2x4dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix3x2dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix3x4dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix4x2dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glUniformMatrix4x3dv: proc(location: i32, count: i32, transpose: bool, value: *f64);
glGetUniformdv: proc(program: u32, location: i32, params: *f64);
glGetSubroutineUniformLocation: proc(program: u32, shadertype: u32, name: *char): i32;
glGetSubroutineIndex: proc(program: u32, shadertype: u32, name: *char): u32;
glGetActiveSubroutineUniformiv: proc(program: u32, shadertype: u32, index: u32, pname: u32, values: *i32);
glGetActiveSubroutineUniformName: proc(program: u32, shadertype: u32, index: u32, bufsize: i32, length: *i32, name: *u8);
glGetActiveSubroutineName: proc(program: u32, shadertype: u32, index: u32, bufsize: i32, length: *i32, name: *u8);
glUniformSubroutinesuiv: proc(shadertype: u32, count: i32, indices: *u32);
glGetUniformSubroutineuiv: proc(shadertype: u32, location: i32, params: *u32);
glGetProgramStageiv: proc(program: u32, shadertype: u32, pname: u32, values: *i32);
glPatchParameteri: proc(pname: u32, value: i32);
glPatchParameterfv: proc(pname: u32, values: *f32);
glBindTransformFeedback: proc(target: u32, id: u32);
glDeleteTransformFeedbacks: proc(n: i32, ids: *u32);
glGenTransformFeedbacks: proc(n: i32, ids: *u32);
glIsTransformFeedback: proc(id: u32): bool;
glPauseTransformFeedback: proc();
glResumeTransformFeedback: proc();
glDrawTransformFeedback: proc(mode: u32, id: u32);
glDrawTransformFeedbackStream: proc(mode: u32, id: u32, stream: u32);
glBeginQueryIndexed: proc(target: u32, index: u32, id: u32);
glEndQueryIndexed: proc(target: u32, index: u32);
glGetQueryIndexediv: proc(target: u32, index: u32, pname: u32, params: *i32);
glGetTextureHandleARB: proc(texture: u32): u64;
glGetTextureSamplerHandleARB: proc(texture: u32, sampler: u32): u64;
glGetImageHandleARB: proc(texture: u32, level: i32, layered: bool, layer: i32, format: u32): u64;
glMakeTextureHandleResidentARB: proc(handle: u64);
glMakeImageHandleResidentARB: proc(handle: u64, access: u32);
glMakeTextureHandleNonResidentARB:proc(handle: u64);
glMakeImageHandleNonResidentARB: proc(handle: u64);
load_4_0 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glMinSampleShading), "glMinSampleShading");
set_proc_address(:**void(&glBlendEquationi), "glBlendEquationi");
set_proc_address(:**void(&glBlendEquationSeparatei), "glBlendEquationSeparatei");
set_proc_address(:**void(&glBlendFunci), "glBlendFunci");
set_proc_address(:**void(&glBlendFuncSeparatei), "glBlendFuncSeparatei");
set_proc_address(:**void(&glDrawArraysIndirect), "glDrawArraysIndirect");
set_proc_address(:**void(&glDrawElementsIndirect), "glDrawElementsIndirect");
set_proc_address(:**void(&glUniform1d), "glUniform1d");
set_proc_address(:**void(&glUniform2d), "glUniform2d");
set_proc_address(:**void(&glUniform3d), "glUniform3d");
set_proc_address(:**void(&glUniform4d), "glUniform4d");
set_proc_address(:**void(&glUniform1dv), "glUniform1dv");
set_proc_address(:**void(&glUniform2dv), "glUniform2dv");
set_proc_address(:**void(&glUniform3dv), "glUniform3dv");
set_proc_address(:**void(&glUniform4dv), "glUniform4dv");
set_proc_address(:**void(&glUniformMatrix2dv), "glUniformMatrix2dv");
set_proc_address(:**void(&glUniformMatrix3dv), "glUniformMatrix3dv");
set_proc_address(:**void(&glUniformMatrix4dv), "glUniformMatrix4dv");
set_proc_address(:**void(&glUniformMatrix2x3dv), "glUniformMatrix2x3dv");
set_proc_address(:**void(&glUniformMatrix2x4dv), "glUniformMatrix2x4dv");
set_proc_address(:**void(&glUniformMatrix3x2dv), "glUniformMatrix3x2dv");
set_proc_address(:**void(&glUniformMatrix3x4dv), "glUniformMatrix3x4dv");
set_proc_address(:**void(&glUniformMatrix4x2dv), "glUniformMatrix4x2dv");
set_proc_address(:**void(&glUniformMatrix4x3dv), "glUniformMatrix4x3dv");
set_proc_address(:**void(&glGetUniformdv), "glGetUniformdv");
set_proc_address(:**void(&glGetSubroutineUniformLocation), "glGetSubroutineUniformLocation");
set_proc_address(:**void(&glGetSubroutineIndex), "glGetSubroutineIndex");
set_proc_address(:**void(&glGetActiveSubroutineUniformiv), "glGetActiveSubroutineUniformiv");
set_proc_address(:**void(&glGetActiveSubroutineUniformName), "glGetActiveSubroutineUniformName");
set_proc_address(:**void(&glGetActiveSubroutineName), "glGetActiveSubroutineName");
set_proc_address(:**void(&glUniformSubroutinesuiv), "glUniformSubroutinesuiv");
set_proc_address(:**void(&glGetUniformSubroutineuiv), "glGetUniformSubroutineuiv");
set_proc_address(:**void(&glGetProgramStageiv), "glGetProgramStageiv");
set_proc_address(:**void(&glPatchParameteri), "glPatchParameteri");
set_proc_address(:**void(&glPatchParameterfv), "glPatchParameterfv");
set_proc_address(:**void(&glBindTransformFeedback), "glBindTransformFeedback");
set_proc_address(:**void(&glDeleteTransformFeedbacks), "glDeleteTransformFeedbacks");
set_proc_address(:**void(&glGenTransformFeedbacks), "glGenTransformFeedbacks");
set_proc_address(:**void(&glIsTransformFeedback), "glIsTransformFeedback");
set_proc_address(:**void(&glPauseTransformFeedback), "glPauseTransformFeedback");
set_proc_address(:**void(&glResumeTransformFeedback), "glResumeTransformFeedback");
set_proc_address(:**void(&glDrawTransformFeedback), "glDrawTransformFeedback");
set_proc_address(:**void(&glDrawTransformFeedbackStream), "glDrawTransformFeedbackStream");
set_proc_address(:**void(&glBeginQueryIndexed), "glBeginQueryIndexed");
set_proc_address(:**void(&glEndQueryIndexed), "glEndQueryIndexed");
set_proc_address(:**void(&glGetQueryIndexediv), "glGetQueryIndexediv");
// Load ARB (architecture review board, vendor specific) extensions that might be available
set_proc_address(:**void(&glGetTextureHandleARB), "glGetTextureHandleARB");
if !glGetTextureHandleARB {
set_proc_address(:**void(&glGetTextureHandleARB), "glGetTextureHandleNV");
}
set_proc_address(:**void(&glGetTextureSamplerHandleARB), "glGetTextureSamplerHandleARB");
if !glGetTextureSamplerHandleARB {
set_proc_address(:**void(&glGetTextureSamplerHandleARB), "glGetTextureSamplerHandleNV");
}
set_proc_address(:**void(&glGetImageHandleARB), "glGetImageHandleARB");
if !glGetImageHandleARB {
set_proc_address(:**void(&glGetImageHandleARB), "glGetImageHandleNV");
}
set_proc_address(:**void(&glMakeTextureHandleResidentARB), "glMakeTextureHandleResidentARB");
if !glMakeTextureHandleResidentARB {
set_proc_address(:**void(&glMakeTextureHandleResidentARB), "glMakeTextureHandleResidentNV");
}
set_proc_address(:**void(&glMakeImageHandleResidentARB), "glMakeImageHandleResidentARB");
if !glMakeImageHandleResidentARB {
set_proc_address(:**void(&glMakeImageHandleResidentARB), "glMakeImageHandleResidentNV");
}
set_proc_address(:**void(&glMakeTextureHandleNonResidentARB), "glMakeTextureHandleNonResidentARB");
if !glMakeTextureHandleNonResidentARB {
set_proc_address(:**void(&glMakeTextureHandleNonResidentARB), "glMakeTextureHandleNonResidentNV");
}
set_proc_address(:**void(&glMakeImageHandleNonResidentARB), "glMakeImageHandleNonResidentARB");
if !glMakeImageHandleNonResidentARB {
set_proc_address(:**void(&glMakeImageHandleNonResidentARB), "glMakeImageHandleNonResidentNV");
}
}
// VERSION_4_1
glReleaseShaderCompiler: proc();
glShaderBinary: proc(count: i32, shaders: *u32, binaryformat: u32, binary: *void, length: i32);
glGetShaderPrecisionFormat: proc(shadertype: u32, precisiontype: u32, range: *i32, precision: *i32);
glDepthRangef: proc(n: f32, f: f32);
glClearDepthf: proc(d: f32);
glGetProgramBinary: proc(program: u32, bufSize: i32, length: *i32, binaryFormat: *u32, binary: *void);
glProgramBinary: proc(program: u32, binaryFormat: u32, binary: *void, length: i32);
glProgramParameteri: proc(program: u32, pname: u32, value: i32);
glUseProgramStages: proc(pipeline: u32, stages: u32, program: u32);
glActiveShaderProgram: proc(pipeline: u32, program: u32);
glCreateShaderProgramv: proc(type: u32, count: i32, strings: **char): u32;
glBindProgramPipeline: proc(pipeline: u32);
glDeleteProgramPipelines: proc(n: i32, pipelines: *u32);
glGenProgramPipelines: proc(n: i32, pipelines: *u32);
glIsProgramPipeline: proc(pipeline: u32): bool;
glGetProgramPipelineiv: proc(pipeline: u32, pname: u32, params: *i32);
glProgramUniform1i: proc(program: u32, location: i32, v0: i32);
glProgramUniform1iv: proc(program: u32, location: i32, count: i32, value: *i32);
glProgramUniform1f: proc(program: u32, location: i32, v0: f32);
glProgramUniform1fv: proc(program: u32, location: i32, count: i32, value: *f32);
glProgramUniform1d: proc(program: u32, location: i32, v0: f64);
glProgramUniform1dv: proc(program: u32, location: i32, count: i32, value: *f64);
glProgramUniform1ui: proc(program: u32, location: i32, v0: u32);
glProgramUniform1uiv: proc(program: u32, location: i32, count: i32, value: *u32);
glProgramUniform2i: proc(program: u32, location: i32, v0: i32, v1: i32);
glProgramUniform2iv: proc(program: u32, location: i32, count: i32, value: *i32);
glProgramUniform2f: proc(program: u32, location: i32, v0: f32, v1: f32);
glProgramUniform2fv: proc(program: u32, location: i32, count: i32, value: *f32);
glProgramUniform2d: proc(program: u32, location: i32, v0: f64, v1: f64);
glProgramUniform2dv: proc(program: u32, location: i32, count: i32, value: *f64);
glProgramUniform2ui: proc(program: u32, location: i32, v0: u32, v1: u32);
glProgramUniform2uiv: proc(program: u32, location: i32, count: i32, value: *u32);
glProgramUniform3i: proc(program: u32, location: i32, v0: i32, v1: i32, v2: i32);
glProgramUniform3iv: proc(program: u32, location: i32, count: i32, value: *i32);
glProgramUniform3f: proc(program: u32, location: i32, v0: f32, v1: f32, v2: f32);
glProgramUniform3fv: proc(program: u32, location: i32, count: i32, value: *f32);
glProgramUniform3d: proc(program: u32, location: i32, v0: f64, v1: f64, v2: f64);
glProgramUniform3dv: proc(program: u32, location: i32, count: i32, value: *f64);
glProgramUniform3ui: proc(program: u32, location: i32, v0: u32, v1: u32, v2: u32);
glProgramUniform3uiv: proc(program: u32, location: i32, count: i32, value: *u32);
glProgramUniform4i: proc(program: u32, location: i32, v0: i32, v1: i32, v2: i32, v3: i32);
glProgramUniform4iv: proc(program: u32, location: i32, count: i32, value: *i32);
glProgramUniform4f: proc(program: u32, location: i32, v0: f32, v1: f32, v2: f32, v3: f32);
glProgramUniform4fv: proc(program: u32, location: i32, count: i32, value: *f32);
glProgramUniform4d: proc(program: u32, location: i32, v0: f64, v1: f64, v2: f64, v3: f64);
glProgramUniform4dv: proc(program: u32, location: i32, count: i32, value: *f64);
glProgramUniform4ui: proc(program: u32, location: i32, v0: u32, v1: u32, v2: u32, v3: u32);
glProgramUniform4uiv: proc(program: u32, location: i32, count: i32, value: *u32);
glProgramUniformMatrix2fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix3fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix4fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix2dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix3dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix4dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix2x3fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix3x2fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix2x4fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix4x2fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix3x4fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix4x3fv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f32);
glProgramUniformMatrix2x3dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix3x2dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix2x4dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix4x2dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix3x4dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glProgramUniformMatrix4x3dv: proc(program: u32, location: i32, count: i32, transpose: bool, value: *f64);
glValidateProgramPipeline: proc(pipeline: u32);
glGetProgramPipelineInfoLog: proc(pipeline: u32, bufSize: i32, length: *i32, infoLog: *u8);
glVertexAttribL1d: proc(index: u32, x: f64);
glVertexAttribL2d: proc(index: u32, x: f64, y: f64);
glVertexAttribL3d: proc(index: u32, x: f64, y: f64, z: f64);
glVertexAttribL4d: proc(index: u32, x: f64, y: f64, z: f64, w: f64);
glVertexAttribL1dv: proc(index: u32, v: *f64);
glVertexAttribL2dv: proc(index: u32, v: *[2]f64);
glVertexAttribL3dv: proc(index: u32, v: *[3]f64);
glVertexAttribL4dv: proc(index: u32, v: *[4]f64);
glVertexAttribLPointer: proc(index: u32, size: i32, type: u32, stride: i32, pointer: uintptr);
glGetVertexAttribLdv: proc(index: u32, pname: u32, params: *f64);
glViewportArrayv: proc(first: u32, count: i32, v: *f32);
glViewportIndexedf: proc(index: u32, x: f32, y: f32, w: f32, h: f32);
glViewportIndexedfv: proc(index: u32, v: *[4]f32);
glScissorArrayv: proc(first: u32, count: i32, v: *i32);
glScissorIndexed: proc(index: u32, left: i32, bottom: i32, width: i32, height: i32);
glScissorIndexedv: proc(index: u32, v: *[4]i32);
glDepthRangeArrayv: proc(first: u32, count: i32, v: *f64);
glDepthRangeIndexed: proc(index: u32, n: f64, f: f64);
glGetFloati_v: proc(target: u32, index: u32, data: *f32);
glGetDoublei_v: proc(target: u32, index: u32, data: *f64);
load_4_1 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glReleaseShaderCompiler), "glReleaseShaderCompiler");
set_proc_address(:**void(&glShaderBinary), "glShaderBinary");
set_proc_address(:**void(&glGetShaderPrecisionFormat), "glGetShaderPrecisionFormat");
set_proc_address(:**void(&glDepthRangef), "glDepthRangef");
set_proc_address(:**void(&glClearDepthf), "glClearDepthf");
set_proc_address(:**void(&glGetProgramBinary), "glGetProgramBinary");
set_proc_address(:**void(&glProgramBinary), "glProgramBinary");
set_proc_address(:**void(&glProgramParameteri), "glProgramParameteri");
set_proc_address(:**void(&glUseProgramStages), "glUseProgramStages");
set_proc_address(:**void(&glActiveShaderProgram), "glActiveShaderProgram");
set_proc_address(:**void(&glCreateShaderProgramv), "glCreateShaderProgramv");
set_proc_address(:**void(&glBindProgramPipeline), "glBindProgramPipeline");
set_proc_address(:**void(&glDeleteProgramPipelines), "glDeleteProgramPipelines");
set_proc_address(:**void(&glGenProgramPipelines), "glGenProgramPipelines");
set_proc_address(:**void(&glIsProgramPipeline), "glIsProgramPipeline");
set_proc_address(:**void(&glGetProgramPipelineiv), "glGetProgramPipelineiv");
set_proc_address(:**void(&glProgramUniform1i), "glProgramUniform1i");
set_proc_address(:**void(&glProgramUniform1iv), "glProgramUniform1iv");
set_proc_address(:**void(&glProgramUniform1f), "glProgramUniform1f");
set_proc_address(:**void(&glProgramUniform1fv), "glProgramUniform1fv");
set_proc_address(:**void(&glProgramUniform1d), "glProgramUniform1d");
set_proc_address(:**void(&glProgramUniform1dv), "glProgramUniform1dv");
set_proc_address(:**void(&glProgramUniform1ui), "glProgramUniform1ui");
set_proc_address(:**void(&glProgramUniform1uiv), "glProgramUniform1uiv");
set_proc_address(:**void(&glProgramUniform2i), "glProgramUniform2i");
set_proc_address(:**void(&glProgramUniform2iv), "glProgramUniform2iv");
set_proc_address(:**void(&glProgramUniform2f), "glProgramUniform2f");
set_proc_address(:**void(&glProgramUniform2fv), "glProgramUniform2fv");
set_proc_address(:**void(&glProgramUniform2d), "glProgramUniform2d");
set_proc_address(:**void(&glProgramUniform2dv), "glProgramUniform2dv");
set_proc_address(:**void(&glProgramUniform2ui), "glProgramUniform2ui");
set_proc_address(:**void(&glProgramUniform2uiv), "glProgramUniform2uiv");
set_proc_address(:**void(&glProgramUniform3i), "glProgramUniform3i");
set_proc_address(:**void(&glProgramUniform3iv), "glProgramUniform3iv");
set_proc_address(:**void(&glProgramUniform3f), "glProgramUniform3f");
set_proc_address(:**void(&glProgramUniform3fv), "glProgramUniform3fv");
set_proc_address(:**void(&glProgramUniform3d), "glProgramUniform3d");
set_proc_address(:**void(&glProgramUniform3dv), "glProgramUniform3dv");
set_proc_address(:**void(&glProgramUniform3ui), "glProgramUniform3ui");
set_proc_address(:**void(&glProgramUniform3uiv), "glProgramUniform3uiv");
set_proc_address(:**void(&glProgramUniform4i), "glProgramUniform4i");
set_proc_address(:**void(&glProgramUniform4iv), "glProgramUniform4iv");
set_proc_address(:**void(&glProgramUniform4f), "glProgramUniform4f");
set_proc_address(:**void(&glProgramUniform4fv), "glProgramUniform4fv");
set_proc_address(:**void(&glProgramUniform4d), "glProgramUniform4d");
set_proc_address(:**void(&glProgramUniform4dv), "glProgramUniform4dv");
set_proc_address(:**void(&glProgramUniform4ui), "glProgramUniform4ui");
set_proc_address(:**void(&glProgramUniform4uiv), "glProgramUniform4uiv");
set_proc_address(:**void(&glProgramUniformMatrix2fv), "glProgramUniformMatrix2fv");
set_proc_address(:**void(&glProgramUniformMatrix3fv), "glProgramUniformMatrix3fv");
set_proc_address(:**void(&glProgramUniformMatrix4fv), "glProgramUniformMatrix4fv");
set_proc_address(:**void(&glProgramUniformMatrix2dv), "glProgramUniformMatrix2dv");
set_proc_address(:**void(&glProgramUniformMatrix3dv), "glProgramUniformMatrix3dv");
set_proc_address(:**void(&glProgramUniformMatrix4dv), "glProgramUniformMatrix4dv");
set_proc_address(:**void(&glProgramUniformMatrix2x3fv), "glProgramUniformMatrix2x3fv");
set_proc_address(:**void(&glProgramUniformMatrix3x2fv), "glProgramUniformMatrix3x2fv");
set_proc_address(:**void(&glProgramUniformMatrix2x4fv), "glProgramUniformMatrix2x4fv");
set_proc_address(:**void(&glProgramUniformMatrix4x2fv), "glProgramUniformMatrix4x2fv");
set_proc_address(:**void(&glProgramUniformMatrix3x4fv), "glProgramUniformMatrix3x4fv");
set_proc_address(:**void(&glProgramUniformMatrix4x3fv), "glProgramUniformMatrix4x3fv");
set_proc_address(:**void(&glProgramUniformMatrix2x3dv), "glProgramUniformMatrix2x3dv");
set_proc_address(:**void(&glProgramUniformMatrix3x2dv), "glProgramUniformMatrix3x2dv");
set_proc_address(:**void(&glProgramUniformMatrix2x4dv), "glProgramUniformMatrix2x4dv");
set_proc_address(:**void(&glProgramUniformMatrix4x2dv), "glProgramUniformMatrix4x2dv");
set_proc_address(:**void(&glProgramUniformMatrix3x4dv), "glProgramUniformMatrix3x4dv");
set_proc_address(:**void(&glProgramUniformMatrix4x3dv), "glProgramUniformMatrix4x3dv");
set_proc_address(:**void(&glValidateProgramPipeline), "glValidateProgramPipeline");
set_proc_address(:**void(&glGetProgramPipelineInfoLog), "glGetProgramPipelineInfoLog");
set_proc_address(:**void(&glVertexAttribL1d), "glVertexAttribL1d");
set_proc_address(:**void(&glVertexAttribL2d), "glVertexAttribL2d");
set_proc_address(:**void(&glVertexAttribL3d), "glVertexAttribL3d");
set_proc_address(:**void(&glVertexAttribL4d), "glVertexAttribL4d");
set_proc_address(:**void(&glVertexAttribL1dv), "glVertexAttribL1dv");
set_proc_address(:**void(&glVertexAttribL2dv), "glVertexAttribL2dv");
set_proc_address(:**void(&glVertexAttribL3dv), "glVertexAttribL3dv");
set_proc_address(:**void(&glVertexAttribL4dv), "glVertexAttribL4dv");
set_proc_address(:**void(&glVertexAttribLPointer), "glVertexAttribLPointer");
set_proc_address(:**void(&glGetVertexAttribLdv), "glGetVertexAttribLdv");
set_proc_address(:**void(&glViewportArrayv), "glViewportArrayv");
set_proc_address(:**void(&glViewportIndexedf), "glViewportIndexedf");
set_proc_address(:**void(&glViewportIndexedfv), "glViewportIndexedfv");
set_proc_address(:**void(&glScissorArrayv), "glScissorArrayv");
set_proc_address(:**void(&glScissorIndexed), "glScissorIndexed");
set_proc_address(:**void(&glScissorIndexedv), "glScissorIndexedv");
set_proc_address(:**void(&glDepthRangeArrayv), "glDepthRangeArrayv");
set_proc_address(:**void(&glDepthRangeIndexed), "glDepthRangeIndexed");
set_proc_address(:**void(&glGetFloati_v), "glGetFloati_v");
set_proc_address(:**void(&glGetDoublei_v), "glGetDoublei_v");
}
// VERSION_4_2
glDrawArraysInstancedBaseInstance: proc(mode: u32, first: i32, count: i32, instancecount: i32, baseinstance: u32);
glDrawElementsInstancedBaseInstance: proc(mode: u32, count: i32, type: u32, indices: *void, instancecount: i32, baseinstance: u32);
glDrawElementsInstancedBaseVertexBaseInstance: proc(mode: u32, count: i32, type: u32, indices: *void, instancecount: i32, basevertex: i32, baseinstance: u32);
glGetInternalformativ: proc(target: u32, internalformat: u32, pname: u32, bufSize: i32, params: *i32);
glGetActiveAtomicCounterBufferiv: proc(program: u32, bufferIndex: u32, pname: u32, params: *i32);
glBindImageTexture: proc(unit: u32, texture: u32, level: i32, layered: bool, layer: i32, access: u32, format: u32);
glMemoryBarrier: proc(barriers: u32);
glTexStorage1D: proc(target: u32, levels: i32, internalformat: u32, width: i32);
glTexStorage2D: proc(target: u32, levels: i32, internalformat: u32, width: i32, height: i32);
glTexStorage3D: proc(target: u32, levels: i32, internalformat: u32, width: i32, height: i32, depth: i32);
glDrawTransformFeedbackInstanced: proc(mode: u32, id: u32, instancecount: i32);
glDrawTransformFeedbackStreamInstanced: proc(mode: u32, id: u32, stream: u32, instancecount: i32);
load_4_2 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glDrawArraysInstancedBaseInstance), "glDrawArraysInstancedBaseInstance");
set_proc_address(:**void(&glDrawElementsInstancedBaseInstance), "glDrawElementsInstancedBaseInstance");
set_proc_address(:**void(&glDrawElementsInstancedBaseVertexBaseInstance), "glDrawElementsInstancedBaseVertexBaseInstance");
set_proc_address(:**void(&glGetInternalformativ), "glGetInternalformativ");
set_proc_address(:**void(&glGetActiveAtomicCounterBufferiv), "glGetActiveAtomicCounterBufferiv");
set_proc_address(:**void(&glBindImageTexture), "glBindImageTexture");
set_proc_address(:**void(&glMemoryBarrier), "glMemoryBarrier");
set_proc_address(:**void(&glTexStorage1D), "glTexStorage1D");
set_proc_address(:**void(&glTexStorage2D), "glTexStorage2D");
set_proc_address(:**void(&glTexStorage3D), "glTexStorage3D");
set_proc_address(:**void(&glDrawTransformFeedbackInstanced), "glDrawTransformFeedbackInstanced");
set_proc_address(:**void(&glDrawTransformFeedbackStreamInstanced), "glDrawTransformFeedbackStreamInstanced");
}
// VERSION_4_3
DispatchIndirectCommand :: struct {
num_groups_x: u32;
num_groups_y: u32;
num_groups_z: u32;
}
glClearBufferData: proc(target: u32, internalformat: u32, format: u32, type: u32, data: *void);
glClearBufferSubData: proc(target: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: *void);
glDispatchCompute: proc(num_groups_x: u32, num_groups_y: u32, num_groups_z: u32);
glDispatchComputeIndirect: proc(indirect: *DispatchIndirectCommand);
glCopyImageSubData: proc(srcName: u32, srcTarget: u32, srcLevel: i32, srcX: i32, srcY: i32, srcZ: i32, dstName: u32, dstTarget: u32, dstLevel: i32, dstX: i32, dstY: i32, dstZ: i32, srcWidth: i32, srcHeight: i32, srcDepth: i32);
glFramebufferParameteri: proc(target: u32, pname: u32, param: i32);
glGetFramebufferParameteriv: proc(target: u32, pname: u32, params: *i32);
glGetInternalformati64v: proc(target: u32, internalformat: u32, pname: u32, bufSize: i32, params: *i64);
glInvalidateTexSubImage: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32);
glInvalidateTexImage: proc(texture: u32, level: i32);
glInvalidateBufferSubData: proc(buffer: u32, offset: int, length: int);
glInvalidateBufferData: proc(buffer: u32);
glInvalidateFramebuffer: proc(target: u32, numAttachments: i32, attachments: *u32);
glInvalidateSubFramebuffer: proc(target: u32, numAttachments: i32, attachments: *u32, x: i32, y: i32, width: i32, height: i32);
glMultiDrawArraysIndirect: proc(mode: u32, indirect: *DrawArraysIndirectCommand, drawcount: i32, stride: i32);
glMultiDrawElementsIndirect: proc(mode: u32, type: u32, indirect: *DrawElementsIndirectCommand, drawcount: i32, stride: i32);
glGetProgramInterfaceiv: proc(program: u32, programInterface: u32, pname: u32, params: *i32);
glGetProgramResourceIndex: proc(program: u32, programInterface: u32, name: *char): u32;
glGetProgramResourceName: proc(program: u32, programInterface: u32, index: u32, bufSize: i32, length: *i32, name: *u8);
glGetProgramResourceiv: proc(program: u32, programInterface: u32, index: u32, propCount: i32, props: *u32, bufSize: i32, length: *i32, params: *i32);
glGetProgramResourceLocation: proc(program: u32, programInterface: u32, name: *char): i32;
glGetProgramResourceLocationIndex: proc(program: u32, programInterface: u32, name: *char): i32;
glShaderStorageBlockBinding: proc(program: u32, storageBlockIndex: u32, storageBlockBinding: u32);
glTexBufferRange: proc(target: u32, internalformat: u32, buffer: u32, offset: int, size: int);
glTexStorage2DMultisample: proc(target: u32, samples: i32, internalformat: u32, width: i32, height: i32, fixedsamplelocations: bool);
glTexStorage3DMultisample: proc(target: u32, samples: i32, internalformat: u32, width: i32, height: i32, depth: i32, fixedsamplelocations: bool);
glTextureView: proc(texture: u32, target: u32, origtexture: u32, internalformat: u32, minlevel: u32, numlevels: u32, minlayer: u32, numlayers: u32);
glBindVertexBuffer: proc(bindingindex: u32, buffer: u32, offset: int, stride: i32);
glVertexAttribFormat: proc(attribindex: u32, size: i32, type: u32, normalized: bool, relativeoffset: u32);
glVertexAttribIFormat: proc(attribindex: u32, size: i32, type: u32, relativeoffset: u32);
glVertexAttribLFormat: proc(attribindex: u32, size: i32, type: u32, relativeoffset: u32);
glVertexAttribBinding: proc(attribindex: u32, bindingindex: u32);
glVertexBindingDivisor: proc(bindingindex: u32, divisor: u32);
glDebugMessageControl: proc(source: u32, type: u32, severity: u32, count: i32, ids: *u32, enabled: bool);
glDebugMessageInsert: proc(source: u32, type: u32, id: u32, severity: u32, length: i32, message: *char);
glDebugMessageCallback: proc(callback: debug_proc_t, userParam: *void);
glGetDebugMessageLog: proc(count: u32, bufSize: i32, sources: *u32, types: *u32, ids: *u32, severities: *u32, lengths: *i32, messageLog: *u8): u32;
glPushDebugGroup: proc(source: u32, id: u32, length: i32, message: *char);
glPopDebugGroup: proc();
glObjectLabel: proc(identifier: u32, name: u32, length: i32, label: *char);
glGetObjectLabel: proc(identifier: u32, name: u32, bufSize: i32, length: *i32, label: *u8);
glObjectPtrLabel: proc(ptr: *void, length: i32, label: *char);
glGetObjectPtrLabel: proc(ptr: *void, bufSize: i32, length: *i32, label: *u8);
load_4_3 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glClearBufferData), "glClearBufferData");
set_proc_address(:**void(&glClearBufferSubData), "glClearBufferSubData");
set_proc_address(:**void(&glDispatchCompute), "glDispatchCompute");
set_proc_address(:**void(&glDispatchComputeIndirect), "glDispatchComputeIndirect");
set_proc_address(:**void(&glCopyImageSubData), "glCopyImageSubData");
set_proc_address(:**void(&glFramebufferParameteri), "glFramebufferParameteri");
set_proc_address(:**void(&glGetFramebufferParameteriv), "glGetFramebufferParameteriv");
set_proc_address(:**void(&glGetInternalformati64v), "glGetInternalformati64v");
set_proc_address(:**void(&glInvalidateTexSubImage), "glInvalidateTexSubImage");
set_proc_address(:**void(&glInvalidateTexImage), "glInvalidateTexImage");
set_proc_address(:**void(&glInvalidateBufferSubData), "glInvalidateBufferSubData");
set_proc_address(:**void(&glInvalidateBufferData), "glInvalidateBufferData");
set_proc_address(:**void(&glInvalidateFramebuffer), "glInvalidateFramebuffer");
set_proc_address(:**void(&glInvalidateSubFramebuffer), "glInvalidateSubFramebuffer");
set_proc_address(:**void(&glMultiDrawArraysIndirect), "glMultiDrawArraysIndirect");
set_proc_address(:**void(&glMultiDrawElementsIndirect), "glMultiDrawElementsIndirect");
set_proc_address(:**void(&glGetProgramInterfaceiv), "glGetProgramInterfaceiv");
set_proc_address(:**void(&glGetProgramResourceIndex), "glGetProgramResourceIndex");
set_proc_address(:**void(&glGetProgramResourceName), "glGetProgramResourceName");
set_proc_address(:**void(&glGetProgramResourceiv), "glGetProgramResourceiv");
set_proc_address(:**void(&glGetProgramResourceLocation), "glGetProgramResourceLocation");
set_proc_address(:**void(&glGetProgramResourceLocationIndex), "glGetProgramResourceLocationIndex");
set_proc_address(:**void(&glShaderStorageBlockBinding), "glShaderStorageBlockBinding");
set_proc_address(:**void(&glTexBufferRange), "glTexBufferRange");
set_proc_address(:**void(&glTexStorage2DMultisample), "glTexStorage2DMultisample");
set_proc_address(:**void(&glTexStorage3DMultisample), "glTexStorage3DMultisample");
set_proc_address(:**void(&glTextureView), "glTextureView");
set_proc_address(:**void(&glBindVertexBuffer), "glBindVertexBuffer");
set_proc_address(:**void(&glVertexAttribFormat), "glVertexAttribFormat");
set_proc_address(:**void(&glVertexAttribIFormat), "glVertexAttribIFormat");
set_proc_address(:**void(&glVertexAttribLFormat), "glVertexAttribLFormat");
set_proc_address(:**void(&glVertexAttribBinding), "glVertexAttribBinding");
set_proc_address(:**void(&glVertexBindingDivisor), "glVertexBindingDivisor");
set_proc_address(:**void(&glDebugMessageControl), "glDebugMessageControl");
set_proc_address(:**void(&glDebugMessageInsert), "glDebugMessageInsert");
set_proc_address(:**void(&glDebugMessageCallback), "glDebugMessageCallback");
set_proc_address(:**void(&glGetDebugMessageLog), "glGetDebugMessageLog");
set_proc_address(:**void(&glPushDebugGroup), "glPushDebugGroup");
set_proc_address(:**void(&glPopDebugGroup), "glPopDebugGroup");
set_proc_address(:**void(&glObjectLabel), "glObjectLabel");
set_proc_address(:**void(&glGetObjectLabel), "glGetObjectLabel");
set_proc_address(:**void(&glObjectPtrLabel), "glObjectPtrLabel");
set_proc_address(:**void(&glGetObjectPtrLabel), "glGetObjectPtrLabel");
}
// VERSION_4_4
glBufferStorage: proc(target: u32, size: int, data: *void, flags: u32);
glClearTexImage: proc(texture: u32, level: i32, format: u32, type: u32, data: *void);
glClearTexSubImage: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, data: *void);
glBindBuffersBase: proc(target: u32, first: u32, count: i32, buffers: *u32);
glBindBuffersRange: proc(target: u32, first: u32, count: i32, buffers: *u32, offsets: *uintptr, sizes: *int);
glBindTextures: proc(first: u32, count: i32, textures: *u32);
glBindSamplers: proc(first: u32, count: i32, samplers: *u32);
glBindImageTextures: proc(first: u32, count: i32, textures: *u32);
glBindVertexBuffers: proc(first: u32, count: i32, buffers: *u32, offsets: *uintptr, strides: *i32);
load_4_4 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glBufferStorage), "glBufferStorage");
set_proc_address(:**void(&glClearTexImage), "glClearTexImage");
set_proc_address(:**void(&glClearTexSubImage), "glClearTexSubImage");
set_proc_address(:**void(&glBindBuffersBase), "glBindBuffersBase");
set_proc_address(:**void(&glBindBuffersRange), "glBindBuffersRange");
set_proc_address(:**void(&glBindTextures), "glBindTextures");
set_proc_address(:**void(&glBindSamplers), "glBindSamplers");
set_proc_address(:**void(&glBindImageTextures), "glBindImageTextures");
set_proc_address(:**void(&glBindVertexBuffers), "glBindVertexBuffers");
}
// VERSION_4_5
glClipControl: proc(origin: u32, depth: u32);
glCreateTransformFeedbacks: proc(n: i32, ids: *u32);
glTransformFeedbackBufferBase: proc(xfb: u32, index: u32, buffer: u32);
glTransformFeedbackBufferRange: proc(xfb: u32, index: u32, buffer: u32, offset: int, size: int);
glGetTransformFeedbackiv: proc(xfb: u32, pname: u32, param: *i32);
glGetTransformFeedbacki_v: proc(xfb: u32, pname: u32, index: u32, param: *i32);
glGetTransformFeedbacki64_v: proc(xfb: u32, pname: u32, index: u32, param: *i64);
glCreateBuffers: proc(n: i32, buffers: *u32);
glNamedBufferStorage: proc(buffer: u32, size: int, data: *void, flags: u32);
glNamedBufferData: proc(buffer: u32, size: int, data: *void, usage: u32);
glNamedBufferSubData: proc(buffer: u32, offset: int, size: int, data: *void);
glCopyNamedBufferSubData: proc(readBuffer: u32, writeBuffer: u32, readOffset: int, writeOffset: int, size: int);
glClearNamedBufferData: proc(buffer: u32, internalformat: u32, format: u32, type: u32, data: *void);
glClearNamedBufferSubData: proc(buffer: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: *void);
glMapNamedBuffer: proc(buffer: u32, access: u32): *void;
glMapNamedBufferRange: proc(buffer: u32, offset: int, length: int, access: u32): *void;
glUnmapNamedBuffer: proc(buffer: u32): bool;
glFlushMappedNamedBufferRange: proc(buffer: u32, offset: int, length: int);
glGetNamedBufferParameteriv: proc(buffer: u32, pname: u32, params: *i32);
glGetNamedBufferParameteri64v: proc(buffer: u32, pname: u32, params: *i64);
glGetNamedBufferPointerv: proc(buffer: u32, pname: u32, params: **void);
glGetNamedBufferSubData: proc(buffer: u32, offset: int, size: int, data: *void);
glCreateFramebuffers: proc(n: i32, framebuffers: *u32);
glNamedFramebufferRenderbuffer: proc(framebuffer: u32, attachment: u32, renderbuffertarget: u32, renderbuffer: u32);
glNamedFramebufferParameteri: proc(framebuffer: u32, pname: u32, param: i32);
glNamedFramebufferTexture: proc(framebuffer: u32, attachment: u32, texture: u32, level: i32);
glNamedFramebufferTextureLayer: proc(framebuffer: u32, attachment: u32, texture: u32, level: i32, layer: i32);
glNamedFramebufferDrawBuffer: proc(framebuffer: u32, buf: u32);
glNamedFramebufferDrawBuffers: proc(framebuffer: u32, n: i32, bufs: *u32);
glNamedFramebufferReadBuffer: proc(framebuffer: u32, src: u32);
glInvalidateNamedFramebufferData: proc(framebuffer: u32, numAttachments: i32, attachments: *u32);
glInvalidateNamedFramebufferSubData: proc(framebuffer: u32, numAttachments: i32, attachments: *u32, x: i32, y: i32, width: i32, height: i32);
glClearNamedFramebufferiv: proc(framebuffer: u32, buffer: u32, drawbuffer: i32, value: *i32);
glClearNamedFramebufferuiv: proc(framebuffer: u32, buffer: u32, drawbuffer: i32, value: *u32);
glClearNamedFramebufferfv: proc(framebuffer: u32, buffer: u32, drawbuffer: i32, value: *f32);
glClearNamedFramebufferfi: proc(framebuffer: u32, buffer: u32, drawbuffer: i32, depth: f32, stencil: i32);
glBlitNamedFramebuffer: proc(readFramebuffer: u32, drawFramebuffer: u32, srcX0: i32, srcY0: i32, srcX1: i32, srcY1: i32, dstX0: i32, dstY0: i32, dstX1: i32, dstY1: i32, mask: u32, filter: u32);
glCheckNamedFramebufferStatus: proc(framebuffer: u32, target: u32): u32;
glGetNamedFramebufferParameteriv: proc(framebuffer: u32, pname: u32, param: *i32);
glGetNamedFramebufferAttachmentParameteriv: proc(framebuffer: u32, attachment: u32, pname: u32, params: *i32);
glCreateRenderbuffers: proc(n: i32, renderbuffers: *u32);
glNamedRenderbufferStorage: proc(renderbuffer: u32, internalformat: u32, width: i32, height: i32);
glNamedRenderbufferStorageMultisample: proc(renderbuffer: u32, samples: i32, internalformat: u32, width: i32, height: i32);
glGetNamedRenderbufferParameteriv: proc(renderbuffer: u32, pname: u32, params: *i32);
glCreateTextures: proc(target: u32, n: i32, textures: *u32);
glTextureBuffer: proc(texture: u32, internalformat: u32, buffer: u32);
glTextureBufferRange: proc(texture: u32, internalformat: u32, buffer: u32, offset: int, size: int);
glTextureStorage1D: proc(texture: u32, levels: i32, internalformat: u32, width: i32);
glTextureStorage2D: proc(texture: u32, levels: i32, internalformat: u32, width: i32, height: i32);
glTextureStorage3D: proc(texture: u32, levels: i32, internalformat: u32, width: i32, height: i32, depth: i32);
glTextureStorage2DMultisample: proc(texture: u32, samples: i32, internalformat: u32, width: i32, height: i32, fixedsamplelocations: bool);
glTextureStorage3DMultisample: proc(texture: u32, samples: i32, internalformat: u32, width: i32, height: i32, depth: i32, fixedsamplelocations: bool);
glTextureSubImage1D: proc(texture: u32, level: i32, xoffset: i32, width: i32, format: u32, type: u32, pixels: *void);
glTextureSubImage2D: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, type: u32, pixels: *void);
glTextureSubImage3D: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, pixels: *void);
glCompressedTextureSubImage1D: proc(texture: u32, level: i32, xoffset: i32, width: i32, format: u32, imageSize: i32, data: *void);
glCompressedTextureSubImage2D: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, imageSize: i32, data: *void);
glCompressedTextureSubImage3D: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, imageSize: i32, data: *void);
glCopyTextureSubImage1D: proc(texture: u32, level: i32, xoffset: i32, x: i32, y: i32, width: i32);
glCopyTextureSubImage2D: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, x: i32, y: i32, width: i32, height: i32);
glCopyTextureSubImage3D: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, x: i32, y: i32, width: i32, height: i32);
glTextureParameterf: proc(texture: u32, pname: u32, param: f32);
glTextureParameterfv: proc(texture: u32, pname: u32, param: *f32);
glTextureParameteri: proc(texture: u32, pname: u32, param: i32);
glTextureParameterIiv: proc(texture: u32, pname: u32, params: *i32);
glTextureParameterIuiv: proc(texture: u32, pname: u32, params: *u32);
glTextureParameteriv: proc(texture: u32, pname: u32, param: *i32);
glGenerateTextureMipmap: proc(texture: u32);
glBindTextureUnit: proc(unit: u32, texture: u32);
glGetTextureImage: proc(texture: u32, level: i32, format: u32, type: u32, bufSize: i32, pixels: *void);
glGetCompressedTextureImage: proc(texture: u32, level: i32, bufSize: i32, pixels: *void);
glGetTextureLevelParameterfv: proc(texture: u32, level: i32, pname: u32, params: *f32);
glGetTextureLevelParameteriv: proc(texture: u32, level: i32, pname: u32, params: *i32);
glGetTextureParameterfv: proc(texture: u32, pname: u32, params: *f32);
glGetTextureParameterIiv: proc(texture: u32, pname: u32, params: *i32);
glGetTextureParameterIuiv: proc(texture: u32, pname: u32, params: *u32);
glGetTextureParameteriv: proc(texture: u32, pname: u32, params: *i32);
glCreateVertexArrays: proc(n: i32, arrays: *u32);
glDisableVertexArrayAttrib: proc(vaobj: u32, index: u32);
glEnableVertexArrayAttrib: proc(vaobj: u32, index: u32);
glVertexArrayElementBuffer: proc(vaobj: u32, buffer: u32);
glVertexArrayVertexBuffer: proc(vaobj: u32, bindingindex: u32, buffer: u32, offset: int, stride: i32);
glVertexArrayVertexBuffers: proc(vaobj: u32, first: u32, count: i32, buffers: *u32, offsets: *uintptr, strides: *i32);
glVertexArrayAttribBinding: proc(vaobj: u32, attribindex: u32, bindingindex: u32);
glVertexArrayAttribFormat: proc(vaobj: u32, attribindex: u32, size: i32, type: u32, normalized: bool, relativeoffset: u32);
glVertexArrayAttribIFormat: proc(vaobj: u32, attribindex: u32, size: i32, type: u32, relativeoffset: u32);
glVertexArrayAttribLFormat: proc(vaobj: u32, attribindex: u32, size: i32, type: u32, relativeoffset: u32);
glVertexArrayBindingDivisor: proc(vaobj: u32, bindingindex: u32, divisor: u32);
glGetVertexArrayiv: proc(vaobj: u32, pname: u32, param: *i32);
glGetVertexArrayIndexediv: proc(vaobj: u32, index: u32, pname: u32, param: *i32);
glGetVertexArrayIndexed64iv: proc(vaobj: u32, index: u32, pname: u32, param: *i64);
glCreateSamplers: proc(n: i32, samplers: *u32);
glCreateProgramPipelines: proc(n: i32, pipelines: *u32);
glCreateQueries: proc(target: u32, n: i32, ids: *u32);
glGetQueryBufferObjecti64v: proc(id: u32, buffer: u32, pname: u32, offset: int);
glGetQueryBufferObjectiv: proc(id: u32, buffer: u32, pname: u32, offset: int);
glGetQueryBufferObjectui64v: proc(id: u32, buffer: u32, pname: u32, offset: int);
glGetQueryBufferObjectuiv: proc(id: u32, buffer: u32, pname: u32, offset: int);
glMemoryBarrierByRegion: proc(barriers: u32);
glGetTextureSubImage: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type: u32, bufSize: i32, pixels: *void);
glGetCompressedTextureSubImage: proc(texture: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, bufSize: i32, pixels: *void);
glGetGraphicsResetStatus: proc(): u32;
glGetnCompressedTexImage: proc(target: u32, lod: i32, bufSize: i32, pixels: *void);
glGetnTexImage: proc(target: u32, level: i32, format: u32, type: u32, bufSize: i32, pixels: *void);
glGetnUniformdv: proc(program: u32, location: i32, bufSize: i32, params: *f64);
glGetnUniformfv: proc(program: u32, location: i32, bufSize: i32, params: *f32);
glGetnUniformiv: proc(program: u32, location: i32, bufSize: i32, params: *i32);
glGetnUniformuiv: proc(program: u32, location: i32, bufSize: i32, params: *u32);
glReadnPixels: proc(x: i32, y: i32, width: i32, height: i32, format: u32, type: u32, bufSize: i32, data: *void);
glGetnMapdv: proc(target: u32, query: u32, bufSize: i32, v: *f64);
glGetnMapfv: proc(target: u32, query: u32, bufSize: i32, v: *f32);
glGetnMapiv: proc(target: u32, query: u32, bufSize: i32, v: *i32);
glGetnPixelMapusv: proc(map_: u32, bufSize: i32, values: *u16);
glGetnPixelMapfv: proc(map_: u32, bufSize: i32, values: *f32);
glGetnPixelMapuiv: proc(map_: u32, bufSize: i32, values: *u32);
glGetnPolygonStipple: proc(bufSize: i32, pattern: *u8);
glGetnColorTable: proc(target: u32, format: u32, type: u32, bufSize: i32, table: *void);
glGetnConvolutionFilter: proc(target: u32, format: u32, type: u32, bufSize: i32, image: *void);
glGetnSeparableFilter: proc(target: u32, format: u32, type: u32, rowBufSize: i32, row: *void, columnBufSize: i32, column: *void, span: *void);
glGetnHistogram: proc(target: u32, reset: bool, format: u32, type: u32, bufSize: i32, values: *void);
glGetnMinmax: proc(target: u32, reset: bool, format: u32, type: u32, bufSize: i32, values: *void);
glTextureBarrier: proc();
glGetUnsignedBytevEXT: proc(pname: u32, data: *u8);
glTexPageCommitmentARB: proc(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, commit: bool);
load_4_5 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glClipControl), "glClipControl");
set_proc_address(:**void(&glCreateTransformFeedbacks), "glCreateTransformFeedbacks");
set_proc_address(:**void(&glTransformFeedbackBufferBase), "glTransformFeedbackBufferBase");
set_proc_address(:**void(&glTransformFeedbackBufferRange), "glTransformFeedbackBufferRange");
set_proc_address(:**void(&glGetTransformFeedbackiv), "glGetTransformFeedbackiv");
set_proc_address(:**void(&glGetTransformFeedbacki_v), "glGetTransformFeedbacki_v");
set_proc_address(:**void(&glGetTransformFeedbacki64_v), "glGetTransformFeedbacki64_v");
set_proc_address(:**void(&glCreateBuffers), "glCreateBuffers");
set_proc_address(:**void(&glNamedBufferStorage), "glNamedBufferStorage");
set_proc_address(:**void(&glNamedBufferData), "glNamedBufferData");
set_proc_address(:**void(&glNamedBufferSubData), "glNamedBufferSubData");
set_proc_address(:**void(&glCopyNamedBufferSubData), "glCopyNamedBufferSubData");
set_proc_address(:**void(&glClearNamedBufferData), "glClearNamedBufferData");
set_proc_address(:**void(&glClearNamedBufferSubData), "glClearNamedBufferSubData");
set_proc_address(:**void(&glMapNamedBuffer), "glMapNamedBuffer");
set_proc_address(:**void(&glMapNamedBufferRange), "glMapNamedBufferRange");
set_proc_address(:**void(&glUnmapNamedBuffer), "glUnmapNamedBuffer");
set_proc_address(:**void(&glFlushMappedNamedBufferRange), "glFlushMappedNamedBufferRange");
set_proc_address(:**void(&glGetNamedBufferParameteriv), "glGetNamedBufferParameteriv");
set_proc_address(:**void(&glGetNamedBufferParameteri64v), "glGetNamedBufferParameteri64v");
set_proc_address(:**void(&glGetNamedBufferPointerv), "glGetNamedBufferPointerv");
set_proc_address(:**void(&glGetNamedBufferSubData), "glGetNamedBufferSubData");
set_proc_address(:**void(&glCreateFramebuffers), "glCreateFramebuffers");
set_proc_address(:**void(&glNamedFramebufferRenderbuffer), "glNamedFramebufferRenderbuffer");
set_proc_address(:**void(&glNamedFramebufferParameteri), "glNamedFramebufferParameteri");
set_proc_address(:**void(&glNamedFramebufferTexture), "glNamedFramebufferTexture");
set_proc_address(:**void(&glNamedFramebufferTextureLayer), "glNamedFramebufferTextureLayer");
set_proc_address(:**void(&glNamedFramebufferDrawBuffer), "glNamedFramebufferDrawBuffer");
set_proc_address(:**void(&glNamedFramebufferDrawBuffers), "glNamedFramebufferDrawBuffers");
set_proc_address(:**void(&glNamedFramebufferReadBuffer), "glNamedFramebufferReadBuffer");
set_proc_address(:**void(&glInvalidateNamedFramebufferData), "glInvalidateNamedFramebufferData");
set_proc_address(:**void(&glInvalidateNamedFramebufferSubData), "glInvalidateNamedFramebufferSubData");
set_proc_address(:**void(&glClearNamedFramebufferiv), "glClearNamedFramebufferiv");
set_proc_address(:**void(&glClearNamedFramebufferuiv), "glClearNamedFramebufferuiv");
set_proc_address(:**void(&glClearNamedFramebufferfv), "glClearNamedFramebufferfv");
set_proc_address(:**void(&glClearNamedFramebufferfi), "glClearNamedFramebufferfi");
set_proc_address(:**void(&glBlitNamedFramebuffer), "glBlitNamedFramebuffer");
set_proc_address(:**void(&glCheckNamedFramebufferStatus), "glCheckNamedFramebufferStatus");
set_proc_address(:**void(&glGetNamedFramebufferParameteriv), "glGetNamedFramebufferParameteriv");
set_proc_address(:**void(&glGetNamedFramebufferAttachmentParameteriv), "glGetNamedFramebufferAttachmentParameteriv");
set_proc_address(:**void(&glCreateRenderbuffers), "glCreateRenderbuffers");
set_proc_address(:**void(&glNamedRenderbufferStorage), "glNamedRenderbufferStorage");
set_proc_address(:**void(&glNamedRenderbufferStorageMultisample), "glNamedRenderbufferStorageMultisample");
set_proc_address(:**void(&glGetNamedRenderbufferParameteriv), "glGetNamedRenderbufferParameteriv");
set_proc_address(:**void(&glCreateTextures), "glCreateTextures");
set_proc_address(:**void(&glTextureBuffer), "glTextureBuffer");
set_proc_address(:**void(&glTextureBufferRange), "glTextureBufferRange");
set_proc_address(:**void(&glTextureStorage1D), "glTextureStorage1D");
set_proc_address(:**void(&glTextureStorage2D), "glTextureStorage2D");
set_proc_address(:**void(&glTextureStorage3D), "glTextureStorage3D");
set_proc_address(:**void(&glTextureStorage2DMultisample), "glTextureStorage2DMultisample");
set_proc_address(:**void(&glTextureStorage3DMultisample), "glTextureStorage3DMultisample");
set_proc_address(:**void(&glTextureSubImage1D), "glTextureSubImage1D");
set_proc_address(:**void(&glTextureSubImage2D), "glTextureSubImage2D");
set_proc_address(:**void(&glTextureSubImage3D), "glTextureSubImage3D");
set_proc_address(:**void(&glCompressedTextureSubImage1D), "glCompressedTextureSubImage1D");
set_proc_address(:**void(&glCompressedTextureSubImage2D), "glCompressedTextureSubImage2D");
set_proc_address(:**void(&glCompressedTextureSubImage3D), "glCompressedTextureSubImage3D");
set_proc_address(:**void(&glCopyTextureSubImage1D), "glCopyTextureSubImage1D");
set_proc_address(:**void(&glCopyTextureSubImage2D), "glCopyTextureSubImage2D");
set_proc_address(:**void(&glCopyTextureSubImage3D), "glCopyTextureSubImage3D");
set_proc_address(:**void(&glTextureParameterf), "glTextureParameterf");
set_proc_address(:**void(&glTextureParameterfv), "glTextureParameterfv");
set_proc_address(:**void(&glTextureParameteri), "glTextureParameteri");
set_proc_address(:**void(&glTextureParameterIiv), "glTextureParameterIiv");
set_proc_address(:**void(&glTextureParameterIuiv), "glTextureParameterIuiv");
set_proc_address(:**void(&glTextureParameteriv), "glTextureParameteriv");
set_proc_address(:**void(&glGenerateTextureMipmap), "glGenerateTextureMipmap");
set_proc_address(:**void(&glBindTextureUnit), "glBindTextureUnit");
set_proc_address(:**void(&glGetTextureImage), "glGetTextureImage");
set_proc_address(:**void(&glGetCompressedTextureImage), "glGetCompressedTextureImage");
set_proc_address(:**void(&glGetTextureLevelParameterfv), "glGetTextureLevelParameterfv");
set_proc_address(:**void(&glGetTextureLevelParameteriv), "glGetTextureLevelParameteriv");
set_proc_address(:**void(&glGetTextureParameterfv), "glGetTextureParameterfv");
set_proc_address(:**void(&glGetTextureParameterIiv), "glGetTextureParameterIiv");
set_proc_address(:**void(&glGetTextureParameterIuiv), "glGetTextureParameterIuiv");
set_proc_address(:**void(&glGetTextureParameteriv), "glGetTextureParameteriv");
set_proc_address(:**void(&glCreateVertexArrays), "glCreateVertexArrays");
set_proc_address(:**void(&glDisableVertexArrayAttrib), "glDisableVertexArrayAttrib");
set_proc_address(:**void(&glEnableVertexArrayAttrib), "glEnableVertexArrayAttrib");
set_proc_address(:**void(&glVertexArrayElementBuffer), "glVertexArrayElementBuffer");
set_proc_address(:**void(&glVertexArrayVertexBuffer), "glVertexArrayVertexBuffer");
set_proc_address(:**void(&glVertexArrayVertexBuffers), "glVertexArrayVertexBuffers");
set_proc_address(:**void(&glVertexArrayAttribBinding), "glVertexArrayAttribBinding");
set_proc_address(:**void(&glVertexArrayAttribFormat), "glVertexArrayAttribFormat");
set_proc_address(:**void(&glVertexArrayAttribIFormat), "glVertexArrayAttribIFormat");
set_proc_address(:**void(&glVertexArrayAttribLFormat), "glVertexArrayAttribLFormat");
set_proc_address(:**void(&glVertexArrayBindingDivisor), "glVertexArrayBindingDivisor");
set_proc_address(:**void(&glGetVertexArrayiv), "glGetVertexArrayiv");
set_proc_address(:**void(&glGetVertexArrayIndexediv), "glGetVertexArrayIndexediv");
set_proc_address(:**void(&glGetVertexArrayIndexed64iv), "glGetVertexArrayIndexed64iv");
set_proc_address(:**void(&glCreateSamplers), "glCreateSamplers");
set_proc_address(:**void(&glCreateProgramPipelines), "glCreateProgramPipelines");
set_proc_address(:**void(&glCreateQueries), "glCreateQueries");
set_proc_address(:**void(&glGetQueryBufferObjecti64v), "glGetQueryBufferObjecti64v");
set_proc_address(:**void(&glGetQueryBufferObjectiv), "glGetQueryBufferObjectiv");
set_proc_address(:**void(&glGetQueryBufferObjectui64v), "glGetQueryBufferObjectui64v");
set_proc_address(:**void(&glGetQueryBufferObjectuiv), "glGetQueryBufferObjectuiv");
set_proc_address(:**void(&glMemoryBarrierByRegion), "glMemoryBarrierByRegion");
set_proc_address(:**void(&glGetTextureSubImage), "glGetTextureSubImage");
set_proc_address(:**void(&glGetCompressedTextureSubImage), "glGetCompressedTextureSubImage");
set_proc_address(:**void(&glGetGraphicsResetStatus), "glGetGraphicsResetStatus");
set_proc_address(:**void(&glGetnCompressedTexImage), "glGetnCompressedTexImage");
set_proc_address(:**void(&glGetnTexImage), "glGetnTexImage");
set_proc_address(:**void(&glGetnUniformdv), "glGetnUniformdv");
set_proc_address(:**void(&glGetnUniformfv), "glGetnUniformfv");
set_proc_address(:**void(&glGetnUniformiv), "glGetnUniformiv");
set_proc_address(:**void(&glGetnUniformuiv), "glGetnUniformuiv");
set_proc_address(:**void(&glReadnPixels), "glReadnPixels");
set_proc_address(:**void(&glGetnMapdv), "glGetnMapdv");
set_proc_address(:**void(&glGetnMapfv), "glGetnMapfv");
set_proc_address(:**void(&glGetnMapiv), "glGetnMapiv");
set_proc_address(:**void(&glGetnPixelMapfv), "glGetnPixelMapfv");
set_proc_address(:**void(&glGetnPixelMapuiv), "glGetnPixelMapuiv");
set_proc_address(:**void(&glGetnPixelMapusv), "glGetnPixelMapusv");
set_proc_address(:**void(&glGetnPolygonStipple), "glGetnPolygonStipple");
set_proc_address(:**void(&glGetnColorTable), "glGetnColorTable");
set_proc_address(:**void(&glGetnConvolutionFilter), "glGetnConvolutionFilter");
set_proc_address(:**void(&glGetnSeparableFilter), "glGetnSeparableFilter");
set_proc_address(:**void(&glGetnHistogram), "glGetnHistogram");
set_proc_address(:**void(&glGetnMinmax), "glGetnMinmax");
set_proc_address(:**void(&glTextureBarrier), "glTextureBarrier");
set_proc_address(:**void(&glGetUnsignedBytevEXT), "glGetUnsignedBytevEXT");
set_proc_address(:**void(&glTexPageCommitmentARB), "glTexPageCommitmentARB");
}
// VERSION_4_6
glSpecializeShader: proc(shader: u32, pEntryPoint: *char, numSpecializationConstants: u32, pConstantIndex: *u32, pConstantValue: *u32);
glMultiDrawArraysIndirectCount: proc(mode: i32, indirect: *DrawArraysIndirectCommand, drawcount: i32, maxdrawcount: i32, stride: i32);
glMultiDrawElementsIndirectCount: proc(mode: i32, type: i32, indirect: *DrawElementsIndirectCommand, drawcount: i32, maxdrawcount: i32, stride: i32);
glPolygonOffsetClamp: proc(factor: f32, units: f32, clamp: f32);
load_4_6 :: proc(set_proc_address: Set_Proc_Address_Type) {
set_proc_address(:**void(&glSpecializeShader), "glSpecializeShader");
set_proc_address(:**void(&glMultiDrawArraysIndirectCount), "glMultiDrawArraysIndirectCount");
set_proc_address(:**void(&glMultiDrawElementsIndirectCount), "glMultiDrawElementsIndirectCount");
set_proc_address(:**void(&glPolygonOffsetClamp), "glPolygonOffsetClamp");
}