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; 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 = {0, 0}; // @todo loaded_up_to[0] = major; loaded_up_to[1] = 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; @weak debug_proc_t :: typedef proc(source: u32, type: u32, id: u32, severity: u32, length: i32, message: *char, userParam: *void); // 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(&glCullFace, "glCullFace"); set_proc_address(&glFrontFace, "glFrontFace"); set_proc_address(&glHint, "glHint"); set_proc_address(&glLineWidth, "glLineWidth"); set_proc_address(&glPointSize, "glPointSize"); set_proc_address(&glPolygonMode, "glPolygonMode"); set_proc_address(&glScissor, "glScissor"); set_proc_address(&glTexParameterf, "glTexParameterf"); set_proc_address(&glTexParameterfv, "glTexParameterfv"); set_proc_address(&glTexParameteri, "glTexParameteri"); set_proc_address(&glTexParameteriv, "glTexParameteriv"); set_proc_address(&glTexImage1D, "glTexImage1D"); set_proc_address(&glTexImage2D, "glTexImage2D"); set_proc_address(&glDrawBuffer, "glDrawBuffer"); set_proc_address(&glClear, "glClear"); set_proc_address(&glClearColor, "glClearColor"); set_proc_address(&glClearStencil, "glClearStencil"); set_proc_address(&glClearDepth, "glClearDepth"); set_proc_address(&glStencilMask, "glStencilMask"); set_proc_address(&glColorMask, "glColorMask"); set_proc_address(&glDepthMask, "glDepthMask"); set_proc_address(&glDisable, "glDisable"); set_proc_address(&glEnable, "glEnable"); set_proc_address(&glFinish, "glFinish"); set_proc_address(&glFlush, "glFlush"); set_proc_address(&glBlendFunc, "glBlendFunc"); set_proc_address(&glLogicOp, "glLogicOp"); set_proc_address(&glStencilFunc, "glStencilFunc"); set_proc_address(&glStencilOp, "glStencilOp"); set_proc_address(&glDepthFunc, "glDepthFunc"); set_proc_address(&glPixelStoref, "glPixelStoref"); set_proc_address(&glPixelStorei, "glPixelStorei"); set_proc_address(&glReadBuffer, "glReadBuffer"); set_proc_address(&glReadPixels, "glReadPixels"); set_proc_address(&glGetBooleanv, "glGetBooleanv"); set_proc_address(&glGetDoublev, "glGetDoublev"); set_proc_address(&glGetError, "glGetError"); set_proc_address(&glGetFloatv, "glGetFloatv"); set_proc_address(&glGetIntegerv, "glGetIntegerv"); set_proc_address(&glGetString, "glGetString"); set_proc_address(&glGetTexImage, "glGetTexImage"); set_proc_address(&glGetTexParameterfv, "glGetTexParameterfv"); set_proc_address(&glGetTexParameteriv, "glGetTexParameteriv"); set_proc_address(&glGetTexLevelParameterfv, "glGetTexLevelParameterfv"); set_proc_address(&glGetTexLevelParameteriv, "glGetTexLevelParameteriv"); set_proc_address(&glIsEnabled, "glIsEnabled"); set_proc_address(&glDepthRange, "glDepthRange"); set_proc_address(&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(&glDrawArrays, "glDrawArrays"); set_proc_address(&glDrawElements, "glDrawElements"); set_proc_address(&glPolygonOffset, "glPolygonOffset"); set_proc_address(&glCopyTexImage1D, "glCopyTexImage1D"); set_proc_address(&glCopyTexImage2D, "glCopyTexImage2D"); set_proc_address(&glCopyTexSubImage1D, "glCopyTexSubImage1D"); set_proc_address(&glCopyTexSubImage2D, "glCopyTexSubImage2D"); set_proc_address(&glTexSubImage1D, "glTexSubImage1D"); set_proc_address(&glTexSubImage2D, "glTexSubImage2D"); set_proc_address(&glBindTexture, "glBindTexture"); set_proc_address(&glDeleteTextures, "glDeleteTextures"); set_proc_address(&glGenTextures, "glGenTextures"); set_proc_address(&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(&glDrawRangeElements, "glDrawRangeElements"); set_proc_address(&glTexImage3D, "glTexImage3D"); set_proc_address(&glTexSubImage3D, "glTexSubImage3D"); set_proc_address(&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(&glActiveTexture, "glActiveTexture"); set_proc_address(&glSampleCoverage, "glSampleCoverage"); set_proc_address(&glCompressedTexImage3D, "glCompressedTexImage3D"); set_proc_address(&glCompressedTexImage2D, "glCompressedTexImage2D"); set_proc_address(&glCompressedTexImage1D, "glCompressedTexImage1D"); set_proc_address(&glCompressedTexSubImage3D, "glCompressedTexSubImage3D"); set_proc_address(&glCompressedTexSubImage2D, "glCompressedTexSubImage2D"); set_proc_address(&glCompressedTexSubImage1D, "glCompressedTexSubImage1D"); set_proc_address(&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(&glBlendFuncSeparate, "glBlendFuncSeparate"); set_proc_address(&glMultiDrawArrays, "glMultiDrawArrays"); set_proc_address(&glMultiDrawElements, "glMultiDrawElements"); set_proc_address(&glPointParameterf, "glPointParameterf"); set_proc_address(&glPointParameterfv, "glPointParameterfv"); set_proc_address(&glPointParameteri, "glPointParameteri"); set_proc_address(&glPointParameteriv, "glPointParameteriv"); set_proc_address(&glBlendColor, "glBlendColor"); set_proc_address(&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(&glGenQueries, "glGenQueries"); set_proc_address(&glDeleteQueries, "glDeleteQueries"); set_proc_address(&glIsQuery, "glIsQuery"); set_proc_address(&glBeginQuery, "glBeginQuery"); set_proc_address(&glEndQuery, "glEndQuery"); set_proc_address(&glGetQueryiv, "glGetQueryiv"); set_proc_address(&glGetQueryObjectiv, "glGetQueryObjectiv"); set_proc_address(&glGetQueryObjectuiv, "glGetQueryObjectuiv"); set_proc_address(&glBindBuffer, "glBindBuffer"); set_proc_address(&glDeleteBuffers, "glDeleteBuffers"); set_proc_address(&glGenBuffers, "glGenBuffers"); set_proc_address(&glIsBuffer, "glIsBuffer"); set_proc_address(&glBufferData, "glBufferData"); set_proc_address(&glBufferSubData, "glBufferSubData"); set_proc_address(&glGetBufferSubData, "glGetBufferSubData"); set_proc_address(&glMapBuffer, "glMapBuffer"); set_proc_address(&glUnmapBuffer, "glUnmapBuffer"); set_proc_address(&glGetBufferParameteriv, "glGetBufferParameteriv"); set_proc_address(&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(&glBlendEquationSeparate, "glBlendEquationSeparate"); set_proc_address(&glDrawBuffers, "glDrawBuffers"); set_proc_address(&glStencilOpSeparate, "glStencilOpSeparate"); set_proc_address(&glStencilFuncSeparate, "glStencilFuncSeparate"); set_proc_address(&glStencilMaskSeparate, "glStencilMaskSeparate"); set_proc_address(&glAttachShader, "glAttachShader"); set_proc_address(&glBindAttribLocation, "glBindAttribLocation"); set_proc_address(&glCompileShader, "glCompileShader"); set_proc_address(&glCreateProgram, "glCreateProgram"); set_proc_address(&glCreateShader, "glCreateShader"); set_proc_address(&glDeleteProgram, "glDeleteProgram"); set_proc_address(&glDeleteShader, "glDeleteShader"); set_proc_address(&glDetachShader, "glDetachShader"); set_proc_address(&glDisableVertexAttribArray, "glDisableVertexAttribArray"); set_proc_address(&glEnableVertexAttribArray, "glEnableVertexAttribArray"); set_proc_address(&glGetActiveAttrib, "glGetActiveAttrib"); set_proc_address(&glGetActiveUniform, "glGetActiveUniform"); set_proc_address(&glGetAttachedShaders, "glGetAttachedShaders"); set_proc_address(&glGetAttribLocation, "glGetAttribLocation"); set_proc_address(&glGetProgramiv, "glGetProgramiv"); set_proc_address(&glGetProgramInfoLog, "glGetProgramInfoLog"); set_proc_address(&glGetShaderiv, "glGetShaderiv"); set_proc_address(&glGetShaderInfoLog, "glGetShaderInfoLog"); set_proc_address(&glGetShaderSource, "glGetShaderSource"); set_proc_address(&glGetUniformLocation, "glGetUniformLocation"); set_proc_address(&glGetUniformfv, "glGetUniformfv"); set_proc_address(&glGetUniformiv, "glGetUniformiv"); set_proc_address(&glGetVertexAttribdv, "glGetVertexAttribdv"); set_proc_address(&glGetVertexAttribfv, "glGetVertexAttribfv"); set_proc_address(&glGetVertexAttribiv, "glGetVertexAttribiv"); set_proc_address(&glGetVertexAttribPointerv, "glGetVertexAttribPointerv"); set_proc_address(&glIsProgram, "glIsProgram"); set_proc_address(&glIsShader, "glIsShader"); set_proc_address(&glLinkProgram, "glLinkProgram"); set_proc_address(&glShaderSource, "glShaderSource"); set_proc_address(&glUseProgram, "glUseProgram"); set_proc_address(&glUniform1f, "glUniform1f"); set_proc_address(&glUniform2f, "glUniform2f"); set_proc_address(&glUniform3f, "glUniform3f"); set_proc_address(&glUniform4f, "glUniform4f"); set_proc_address(&glUniform1i, "glUniform1i"); set_proc_address(&glUniform2i, "glUniform2i"); set_proc_address(&glUniform3i, "glUniform3i"); set_proc_address(&glUniform4i, "glUniform4i"); set_proc_address(&glUniform1fv, "glUniform1fv"); set_proc_address(&glUniform2fv, "glUniform2fv"); set_proc_address(&glUniform3fv, "glUniform3fv"); set_proc_address(&glUniform4fv, "glUniform4fv"); set_proc_address(&glUniform1iv, "glUniform1iv"); set_proc_address(&glUniform2iv, "glUniform2iv"); set_proc_address(&glUniform3iv, "glUniform3iv"); set_proc_address(&glUniform4iv, "glUniform4iv"); set_proc_address(&glUniformMatrix2fv, "glUniformMatrix2fv"); set_proc_address(&glUniformMatrix3fv, "glUniformMatrix3fv"); set_proc_address(&glUniformMatrix4fv, "glUniformMatrix4fv"); set_proc_address(&glValidateProgram, "glValidateProgram"); set_proc_address(&glVertexAttrib1d, "glVertexAttrib1d"); set_proc_address(&glVertexAttrib1dv, "glVertexAttrib1dv"); set_proc_address(&glVertexAttrib1f, "glVertexAttrib1f"); set_proc_address(&glVertexAttrib1fv, "glVertexAttrib1fv"); set_proc_address(&glVertexAttrib1s, "glVertexAttrib1s"); set_proc_address(&glVertexAttrib1sv, "glVertexAttrib1sv"); set_proc_address(&glVertexAttrib2d, "glVertexAttrib2d"); set_proc_address(&glVertexAttrib2dv, "glVertexAttrib2dv"); set_proc_address(&glVertexAttrib2f, "glVertexAttrib2f"); set_proc_address(&glVertexAttrib2fv, "glVertexAttrib2fv"); set_proc_address(&glVertexAttrib2s, "glVertexAttrib2s"); set_proc_address(&glVertexAttrib2sv, "glVertexAttrib2sv"); set_proc_address(&glVertexAttrib3d, "glVertexAttrib3d"); set_proc_address(&glVertexAttrib3dv, "glVertexAttrib3dv"); set_proc_address(&glVertexAttrib3f, "glVertexAttrib3f"); set_proc_address(&glVertexAttrib3fv, "glVertexAttrib3fv"); set_proc_address(&glVertexAttrib3s, "glVertexAttrib3s"); set_proc_address(&glVertexAttrib3sv, "glVertexAttrib3sv"); set_proc_address(&glVertexAttrib4Nbv, "glVertexAttrib4Nbv"); set_proc_address(&glVertexAttrib4Niv, "glVertexAttrib4Niv"); set_proc_address(&glVertexAttrib4Nsv, "glVertexAttrib4Nsv"); set_proc_address(&glVertexAttrib4Nub, "glVertexAttrib4Nub"); set_proc_address(&glVertexAttrib4Nubv, "glVertexAttrib4Nubv"); set_proc_address(&glVertexAttrib4Nuiv, "glVertexAttrib4Nuiv"); set_proc_address(&glVertexAttrib4Nusv, "glVertexAttrib4Nusv"); set_proc_address(&glVertexAttrib4bv, "glVertexAttrib4bv"); set_proc_address(&glVertexAttrib4d, "glVertexAttrib4d"); set_proc_address(&glVertexAttrib4dv, "glVertexAttrib4dv"); set_proc_address(&glVertexAttrib4f, "glVertexAttrib4f"); set_proc_address(&glVertexAttrib4fv, "glVertexAttrib4fv"); set_proc_address(&glVertexAttrib4iv, "glVertexAttrib4iv"); set_proc_address(&glVertexAttrib4s, "glVertexAttrib4s"); set_proc_address(&glVertexAttrib4sv, "glVertexAttrib4sv"); set_proc_address(&glVertexAttrib4ubv, "glVertexAttrib4ubv"); set_proc_address(&glVertexAttrib4uiv, "glVertexAttrib4uiv"); set_proc_address(&glVertexAttrib4usv, "glVertexAttrib4usv"); set_proc_address(&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(&glUniformMatrix2x3fv, "glUniformMatrix2x3fv"); set_proc_address(&glUniformMatrix3x2fv, "glUniformMatrix3x2fv"); set_proc_address(&glUniformMatrix2x4fv, "glUniformMatrix2x4fv"); set_proc_address(&glUniformMatrix4x2fv, "glUniformMatrix4x2fv"); set_proc_address(&glUniformMatrix3x4fv, "glUniformMatrix3x4fv"); set_proc_address(&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(&glColorMaski, "glColorMaski"); set_proc_address(&glGetBooleani_v, "glGetBooleani_v"); set_proc_address(&glGetIntegeri_v, "glGetIntegeri_v"); set_proc_address(&glEnablei, "glEnablei"); set_proc_address(&glDisablei, "glDisablei"); set_proc_address(&glIsEnabledi, "glIsEnabledi"); set_proc_address(&glBeginTransformFeedback, "glBeginTransformFeedback"); set_proc_address(&glEndTransformFeedback, "glEndTransformFeedback"); set_proc_address(&glBindBufferRange, "glBindBufferRange"); set_proc_address(&glBindBufferBase, "glBindBufferBase"); set_proc_address(&glTransformFeedbackVaryings, "glTransformFeedbackVaryings"); set_proc_address(&glGetTransformFeedbackVarying, "glGetTransformFeedbackVarying"); set_proc_address(&glClampColor, "glClampColor"); set_proc_address(&glBeginConditionalRender, "glBeginConditionalRender"); set_proc_address(&glEndConditionalRender, "glEndConditionalRender"); set_proc_address(&glVertexAttribIPointer, "glVertexAttribIPointer"); set_proc_address(&glGetVertexAttribIiv, "glGetVertexAttribIiv"); set_proc_address(&glGetVertexAttribIuiv, "glGetVertexAttribIuiv"); set_proc_address(&glVertexAttribI1i, "glVertexAttribI1i"); set_proc_address(&glVertexAttribI2i, "glVertexAttribI2i"); set_proc_address(&glVertexAttribI3i, "glVertexAttribI3i"); set_proc_address(&glVertexAttribI4i, "glVertexAttribI4i"); set_proc_address(&glVertexAttribI1ui, "glVertexAttribI1ui"); set_proc_address(&glVertexAttribI2ui, "glVertexAttribI2ui"); set_proc_address(&glVertexAttribI3ui, "glVertexAttribI3ui"); set_proc_address(&glVertexAttribI4ui, "glVertexAttribI4ui"); set_proc_address(&glVertexAttribI1iv, "glVertexAttribI1iv"); set_proc_address(&glVertexAttribI2iv, "glVertexAttribI2iv"); set_proc_address(&glVertexAttribI3iv, "glVertexAttribI3iv"); set_proc_address(&glVertexAttribI4iv, "glVertexAttribI4iv"); set_proc_address(&glVertexAttribI1uiv, "glVertexAttribI1uiv"); set_proc_address(&glVertexAttribI2uiv, "glVertexAttribI2uiv"); set_proc_address(&glVertexAttribI3uiv, "glVertexAttribI3uiv"); set_proc_address(&glVertexAttribI4uiv, "glVertexAttribI4uiv"); set_proc_address(&glVertexAttribI4bv, "glVertexAttribI4bv"); set_proc_address(&glVertexAttribI4sv, "glVertexAttribI4sv"); set_proc_address(&glVertexAttribI4ubv, "glVertexAttribI4ubv"); set_proc_address(&glVertexAttribI4usv, "glVertexAttribI4usv"); set_proc_address(&glGetUniformuiv, "glGetUniformuiv"); set_proc_address(&glBindFragDataLocation, "glBindFragDataLocation"); set_proc_address(&glGetFragDataLocation, "glGetFragDataLocation"); set_proc_address(&glUniform1ui, "glUniform1ui"); set_proc_address(&glUniform2ui, "glUniform2ui"); set_proc_address(&glUniform3ui, "glUniform3ui"); set_proc_address(&glUniform4ui, "glUniform4ui"); set_proc_address(&glUniform1uiv, "glUniform1uiv"); set_proc_address(&glUniform2uiv, "glUniform2uiv"); set_proc_address(&glUniform3uiv, "glUniform3uiv"); set_proc_address(&glUniform4uiv, "glUniform4uiv"); set_proc_address(&glTexParameterIiv, "glTexParameterIiv"); set_proc_address(&glTexParameterIuiv, "glTexParameterIuiv"); set_proc_address(&glGetTexParameterIiv, "glGetTexParameterIiv"); set_proc_address(&glGetTexParameterIuiv, "glGetTexParameterIuiv"); set_proc_address(&glClearBufferiv, "glClearBufferiv"); set_proc_address(&glClearBufferuiv, "glClearBufferuiv"); set_proc_address(&glClearBufferfv, "glClearBufferfv"); set_proc_address(&glClearBufferfi, "glClearBufferfi"); set_proc_address(&glGetStringi, "glGetStringi"); set_proc_address(&glIsRenderbuffer, "glIsRenderbuffer"); set_proc_address(&glBindRenderbuffer, "glBindRenderbuffer"); set_proc_address(&glDeleteRenderbuffers, "glDeleteRenderbuffers"); set_proc_address(&glGenRenderbuffers, "glGenRenderbuffers"); set_proc_address(&glRenderbufferStorage, "glRenderbufferStorage"); set_proc_address(&glGetRenderbufferParameteriv, "glGetRenderbufferParameteriv"); set_proc_address(&glIsFramebuffer, "glIsFramebuffer"); set_proc_address(&glBindFramebuffer, "glBindFramebuffer"); set_proc_address(&glDeleteFramebuffers, "glDeleteFramebuffers"); set_proc_address(&glGenFramebuffers, "glGenFramebuffers"); set_proc_address(&glCheckFramebufferStatus, "glCheckFramebufferStatus"); set_proc_address(&glFramebufferTexture1D, "glFramebufferTexture1D"); set_proc_address(&glFramebufferTexture2D, "glFramebufferTexture2D"); set_proc_address(&glFramebufferTexture3D, "glFramebufferTexture3D"); set_proc_address(&glFramebufferRenderbuffer, "glFramebufferRenderbuffer"); set_proc_address(&glGetFramebufferAttachmentParameteriv, "glGetFramebufferAttachmentParameteriv"); set_proc_address(&glGenerateMipmap, "glGenerateMipmap"); set_proc_address(&glBlitFramebuffer, "glBlitFramebuffer"); set_proc_address(&glRenderbufferStorageMultisample, "glRenderbufferStorageMultisample"); set_proc_address(&glFramebufferTextureLayer, "glFramebufferTextureLayer"); set_proc_address(&glMapBufferRange, "glMapBufferRange"); set_proc_address(&glFlushMappedBufferRange, "glFlushMappedBufferRange"); set_proc_address(&glBindVertexArray, "glBindVertexArray"); set_proc_address(&glDeleteVertexArrays, "glDeleteVertexArrays"); set_proc_address(&glGenVertexArrays, "glGenVertexArrays"); set_proc_address(&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(&glDrawArraysInstanced, "glDrawArraysInstanced"); set_proc_address(&glDrawElementsInstanced, "glDrawElementsInstanced"); set_proc_address(&glTexBuffer, "glTexBuffer"); set_proc_address(&glPrimitiveRestartIndex, "glPrimitiveRestartIndex"); set_proc_address(&glCopyBufferSubData, "glCopyBufferSubData"); set_proc_address(&glGetUniformIndices, "glGetUniformIndices"); set_proc_address(&glGetActiveUniformsiv, "glGetActiveUniformsiv"); set_proc_address(&glGetActiveUniformName, "glGetActiveUniformName"); set_proc_address(&glGetUniformBlockIndex, "glGetUniformBlockIndex"); set_proc_address(&glGetActiveUniformBlockiv, "glGetActiveUniformBlockiv"); set_proc_address(&glGetActiveUniformBlockName, "glGetActiveUniformBlockName"); set_proc_address(&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(&glDrawElementsBaseVertex, "glDrawElementsBaseVertex"); set_proc_address(&glDrawRangeElementsBaseVertex, "glDrawRangeElementsBaseVertex"); set_proc_address(&glDrawElementsInstancedBaseVertex, "glDrawElementsInstancedBaseVertex"); set_proc_address(&glMultiDrawElementsBaseVertex, "glMultiDrawElementsBaseVertex"); set_proc_address(&glProvokingVertex, "glProvokingVertex"); set_proc_address(&glFenceSync, "glFenceSync"); set_proc_address(&glIsSync, "glIsSync"); set_proc_address(&glDeleteSync, "glDeleteSync"); set_proc_address(&glClientWaitSync, "glClientWaitSync"); set_proc_address(&glWaitSync, "glWaitSync"); set_proc_address(&glGetInteger64v, "glGetInteger64v"); set_proc_address(&glGetSynciv, "glGetSynciv"); set_proc_address(&glGetInteger64i_v, "glGetInteger64i_v"); set_proc_address(&glGetBufferParameteri64v, "glGetBufferParameteri64v"); set_proc_address(&glFramebufferTexture, "glFramebufferTexture"); set_proc_address(&glTexImage2DMultisample, "glTexImage2DMultisample"); set_proc_address(&glTexImage3DMultisample, "glTexImage3DMultisample"); set_proc_address(&glGetMultisamplefv, "glGetMultisamplefv"); set_proc_address(&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(&glBindFragDataLocationIndexed, "glBindFragDataLocationIndexed"); set_proc_address(&glGetFragDataIndex, "glGetFragDataIndex"); set_proc_address(&glGenSamplers, "glGenSamplers"); set_proc_address(&glDeleteSamplers, "glDeleteSamplers"); set_proc_address(&glIsSampler, "glIsSampler"); set_proc_address(&glBindSampler, "glBindSampler"); set_proc_address(&glSamplerParameteri, "glSamplerParameteri"); set_proc_address(&glSamplerParameteriv, "glSamplerParameteriv"); set_proc_address(&glSamplerParameterf, "glSamplerParameterf"); set_proc_address(&glSamplerParameterfv, "glSamplerParameterfv"); set_proc_address(&glSamplerParameterIiv, "glSamplerParameterIiv"); set_proc_address(&glSamplerParameterIuiv, "glSamplerParameterIuiv"); set_proc_address(&glGetSamplerParameteriv, "glGetSamplerParameteriv"); set_proc_address(&glGetSamplerParameterIiv, "glGetSamplerParameterIiv"); set_proc_address(&glGetSamplerParameterfv, "glGetSamplerParameterfv"); set_proc_address(&glGetSamplerParameterIuiv, "glGetSamplerParameterIuiv"); set_proc_address(&glQueryCounter, "glQueryCounter"); set_proc_address(&glGetQueryObjecti64v, "glGetQueryObjecti64v"); set_proc_address(&glGetQueryObjectui64v, "glGetQueryObjectui64v"); set_proc_address(&glVertexAttribDivisor, "glVertexAttribDivisor"); set_proc_address(&glVertexAttribP1ui, "glVertexAttribP1ui"); set_proc_address(&glVertexAttribP1uiv, "glVertexAttribP1uiv"); set_proc_address(&glVertexAttribP2ui, "glVertexAttribP2ui"); set_proc_address(&glVertexAttribP2uiv, "glVertexAttribP2uiv"); set_proc_address(&glVertexAttribP3ui, "glVertexAttribP3ui"); set_proc_address(&glVertexAttribP3uiv, "glVertexAttribP3uiv"); set_proc_address(&glVertexAttribP4ui, "glVertexAttribP4ui"); set_proc_address(&glVertexAttribP4uiv, "glVertexAttribP4uiv"); set_proc_address(&glVertexP2ui, "glVertexP2ui"); set_proc_address(&glVertexP2uiv, "glVertexP2uiv"); set_proc_address(&glVertexP3ui, "glVertexP3ui"); set_proc_address(&glVertexP3uiv, "glVertexP3uiv"); set_proc_address(&glVertexP4ui, "glVertexP4ui"); set_proc_address(&glVertexP4uiv, "glVertexP4uiv"); set_proc_address(&glTexCoordP1ui, "glTexCoordP1ui"); set_proc_address(&glTexCoordP1uiv, "glTexCoordP1uiv"); set_proc_address(&glTexCoordP2ui, "glTexCoordP2ui"); set_proc_address(&glTexCoordP2uiv, "glTexCoordP2uiv"); set_proc_address(&glTexCoordP3ui, "glTexCoordP3ui"); set_proc_address(&glTexCoordP3uiv, "glTexCoordP3uiv"); set_proc_address(&glTexCoordP4ui, "glTexCoordP4ui"); set_proc_address(&glTexCoordP4uiv, "glTexCoordP4uiv"); set_proc_address(&glMultiTexCoordP1ui, "glMultiTexCoordP1ui"); set_proc_address(&glMultiTexCoordP1uiv, "glMultiTexCoordP1uiv"); set_proc_address(&glMultiTexCoordP2ui, "glMultiTexCoordP2ui"); set_proc_address(&glMultiTexCoordP2uiv, "glMultiTexCoordP2uiv"); set_proc_address(&glMultiTexCoordP3ui, "glMultiTexCoordP3ui"); set_proc_address(&glMultiTexCoordP3uiv, "glMultiTexCoordP3uiv"); set_proc_address(&glMultiTexCoordP4ui, "glMultiTexCoordP4ui"); set_proc_address(&glMultiTexCoordP4uiv, "glMultiTexCoordP4uiv"); set_proc_address(&glNormalP3ui, "glNormalP3ui"); set_proc_address(&glNormalP3uiv, "glNormalP3uiv"); set_proc_address(&glColorP3ui, "glColorP3ui"); set_proc_address(&glColorP3uiv, "glColorP3uiv"); set_proc_address(&glColorP4ui, "glColorP4ui"); set_proc_address(&glColorP4uiv, "glColorP4uiv"); set_proc_address(&glSecondaryColorP3ui, "glSecondaryColorP3ui"); set_proc_address(&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(&glMinSampleShading, "glMinSampleShading"); set_proc_address(&glBlendEquationi, "glBlendEquationi"); set_proc_address(&glBlendEquationSeparatei, "glBlendEquationSeparatei"); set_proc_address(&glBlendFunci, "glBlendFunci"); set_proc_address(&glBlendFuncSeparatei, "glBlendFuncSeparatei"); set_proc_address(&glDrawArraysIndirect, "glDrawArraysIndirect"); set_proc_address(&glDrawElementsIndirect, "glDrawElementsIndirect"); set_proc_address(&glUniform1d, "glUniform1d"); set_proc_address(&glUniform2d, "glUniform2d"); set_proc_address(&glUniform3d, "glUniform3d"); set_proc_address(&glUniform4d, "glUniform4d"); set_proc_address(&glUniform1dv, "glUniform1dv"); set_proc_address(&glUniform2dv, "glUniform2dv"); set_proc_address(&glUniform3dv, "glUniform3dv"); set_proc_address(&glUniform4dv, "glUniform4dv"); set_proc_address(&glUniformMatrix2dv, "glUniformMatrix2dv"); set_proc_address(&glUniformMatrix3dv, "glUniformMatrix3dv"); set_proc_address(&glUniformMatrix4dv, "glUniformMatrix4dv"); set_proc_address(&glUniformMatrix2x3dv, "glUniformMatrix2x3dv"); set_proc_address(&glUniformMatrix2x4dv, "glUniformMatrix2x4dv"); set_proc_address(&glUniformMatrix3x2dv, "glUniformMatrix3x2dv"); set_proc_address(&glUniformMatrix3x4dv, "glUniformMatrix3x4dv"); set_proc_address(&glUniformMatrix4x2dv, "glUniformMatrix4x2dv"); set_proc_address(&glUniformMatrix4x3dv, "glUniformMatrix4x3dv"); set_proc_address(&glGetUniformdv, "glGetUniformdv"); set_proc_address(&glGetSubroutineUniformLocation, "glGetSubroutineUniformLocation"); set_proc_address(&glGetSubroutineIndex, "glGetSubroutineIndex"); set_proc_address(&glGetActiveSubroutineUniformiv, "glGetActiveSubroutineUniformiv"); set_proc_address(&glGetActiveSubroutineUniformName, "glGetActiveSubroutineUniformName"); set_proc_address(&glGetActiveSubroutineName, "glGetActiveSubroutineName"); set_proc_address(&glUniformSubroutinesuiv, "glUniformSubroutinesuiv"); set_proc_address(&glGetUniformSubroutineuiv, "glGetUniformSubroutineuiv"); set_proc_address(&glGetProgramStageiv, "glGetProgramStageiv"); set_proc_address(&glPatchParameteri, "glPatchParameteri"); set_proc_address(&glPatchParameterfv, "glPatchParameterfv"); set_proc_address(&glBindTransformFeedback, "glBindTransformFeedback"); set_proc_address(&glDeleteTransformFeedbacks, "glDeleteTransformFeedbacks"); set_proc_address(&glGenTransformFeedbacks, "glGenTransformFeedbacks"); set_proc_address(&glIsTransformFeedback, "glIsTransformFeedback"); set_proc_address(&glPauseTransformFeedback, "glPauseTransformFeedback"); set_proc_address(&glResumeTransformFeedback, "glResumeTransformFeedback"); set_proc_address(&glDrawTransformFeedback, "glDrawTransformFeedback"); set_proc_address(&glDrawTransformFeedbackStream, "glDrawTransformFeedbackStream"); set_proc_address(&glBeginQueryIndexed, "glBeginQueryIndexed"); set_proc_address(&glEndQueryIndexed, "glEndQueryIndexed"); set_proc_address(&glGetQueryIndexediv, "glGetQueryIndexediv"); // Load ARB (architecture review board, vendor specific) extensions that might be available set_proc_address(&glGetTextureHandleARB, "glGetTextureHandleARB"); if !glGetTextureHandleARB { set_proc_address(&glGetTextureHandleARB, "glGetTextureHandleNV"); } set_proc_address(&glGetTextureSamplerHandleARB, "glGetTextureSamplerHandleARB"); if !glGetTextureSamplerHandleARB { set_proc_address(&glGetTextureSamplerHandleARB, "glGetTextureSamplerHandleNV"); } set_proc_address(&glGetImageHandleARB, "glGetImageHandleARB"); if !glGetImageHandleARB { set_proc_address(&glGetImageHandleARB, "glGetImageHandleNV"); } set_proc_address(&glMakeTextureHandleResidentARB, "glMakeTextureHandleResidentARB"); if !glMakeTextureHandleResidentARB { set_proc_address(&glMakeTextureHandleResidentARB, "glMakeTextureHandleResidentNV"); } set_proc_address(&glMakeImageHandleResidentARB, "glMakeImageHandleResidentARB"); if !glMakeImageHandleResidentARB { set_proc_address(&glMakeImageHandleResidentARB, "glMakeImageHandleResidentNV"); } set_proc_address(&glMakeTextureHandleNonResidentARB, "glMakeTextureHandleNonResidentARB"); if !glMakeTextureHandleNonResidentARB { set_proc_address(&glMakeTextureHandleNonResidentARB, "glMakeTextureHandleNonResidentNV"); } set_proc_address(&glMakeImageHandleNonResidentARB, "glMakeImageHandleNonResidentARB"); if !glMakeImageHandleNonResidentARB { set_proc_address(&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(&glReleaseShaderCompiler, "glReleaseShaderCompiler"); set_proc_address(&glShaderBinary, "glShaderBinary"); set_proc_address(&glGetShaderPrecisionFormat, "glGetShaderPrecisionFormat"); set_proc_address(&glDepthRangef, "glDepthRangef"); set_proc_address(&glClearDepthf, "glClearDepthf"); set_proc_address(&glGetProgramBinary, "glGetProgramBinary"); set_proc_address(&glProgramBinary, "glProgramBinary"); set_proc_address(&glProgramParameteri, "glProgramParameteri"); set_proc_address(&glUseProgramStages, "glUseProgramStages"); set_proc_address(&glActiveShaderProgram, "glActiveShaderProgram"); set_proc_address(&glCreateShaderProgramv, "glCreateShaderProgramv"); set_proc_address(&glBindProgramPipeline, "glBindProgramPipeline"); set_proc_address(&glDeleteProgramPipelines, "glDeleteProgramPipelines"); set_proc_address(&glGenProgramPipelines, "glGenProgramPipelines"); set_proc_address(&glIsProgramPipeline, "glIsProgramPipeline"); set_proc_address(&glGetProgramPipelineiv, "glGetProgramPipelineiv"); set_proc_address(&glProgramUniform1i, "glProgramUniform1i"); set_proc_address(&glProgramUniform1iv, "glProgramUniform1iv"); set_proc_address(&glProgramUniform1f, "glProgramUniform1f"); set_proc_address(&glProgramUniform1fv, "glProgramUniform1fv"); set_proc_address(&glProgramUniform1d, "glProgramUniform1d"); set_proc_address(&glProgramUniform1dv, "glProgramUniform1dv"); set_proc_address(&glProgramUniform1ui, "glProgramUniform1ui"); set_proc_address(&glProgramUniform1uiv, "glProgramUniform1uiv"); set_proc_address(&glProgramUniform2i, "glProgramUniform2i"); set_proc_address(&glProgramUniform2iv, "glProgramUniform2iv"); set_proc_address(&glProgramUniform2f, "glProgramUniform2f"); set_proc_address(&glProgramUniform2fv, "glProgramUniform2fv"); set_proc_address(&glProgramUniform2d, "glProgramUniform2d"); set_proc_address(&glProgramUniform2dv, "glProgramUniform2dv"); set_proc_address(&glProgramUniform2ui, "glProgramUniform2ui"); set_proc_address(&glProgramUniform2uiv, "glProgramUniform2uiv"); set_proc_address(&glProgramUniform3i, "glProgramUniform3i"); set_proc_address(&glProgramUniform3iv, "glProgramUniform3iv"); set_proc_address(&glProgramUniform3f, "glProgramUniform3f"); set_proc_address(&glProgramUniform3fv, "glProgramUniform3fv"); set_proc_address(&glProgramUniform3d, "glProgramUniform3d"); set_proc_address(&glProgramUniform3dv, "glProgramUniform3dv"); set_proc_address(&glProgramUniform3ui, "glProgramUniform3ui"); set_proc_address(&glProgramUniform3uiv, "glProgramUniform3uiv"); set_proc_address(&glProgramUniform4i, "glProgramUniform4i"); set_proc_address(&glProgramUniform4iv, "glProgramUniform4iv"); set_proc_address(&glProgramUniform4f, "glProgramUniform4f"); set_proc_address(&glProgramUniform4fv, "glProgramUniform4fv"); set_proc_address(&glProgramUniform4d, "glProgramUniform4d"); set_proc_address(&glProgramUniform4dv, "glProgramUniform4dv"); set_proc_address(&glProgramUniform4ui, "glProgramUniform4ui"); set_proc_address(&glProgramUniform4uiv, "glProgramUniform4uiv"); set_proc_address(&glProgramUniformMatrix2fv, "glProgramUniformMatrix2fv"); set_proc_address(&glProgramUniformMatrix3fv, "glProgramUniformMatrix3fv"); set_proc_address(&glProgramUniformMatrix4fv, "glProgramUniformMatrix4fv"); set_proc_address(&glProgramUniformMatrix2dv, "glProgramUniformMatrix2dv"); set_proc_address(&glProgramUniformMatrix3dv, "glProgramUniformMatrix3dv"); set_proc_address(&glProgramUniformMatrix4dv, "glProgramUniformMatrix4dv"); set_proc_address(&glProgramUniformMatrix2x3fv, "glProgramUniformMatrix2x3fv"); set_proc_address(&glProgramUniformMatrix3x2fv, "glProgramUniformMatrix3x2fv"); set_proc_address(&glProgramUniformMatrix2x4fv, "glProgramUniformMatrix2x4fv"); set_proc_address(&glProgramUniformMatrix4x2fv, "glProgramUniformMatrix4x2fv"); set_proc_address(&glProgramUniformMatrix3x4fv, "glProgramUniformMatrix3x4fv"); set_proc_address(&glProgramUniformMatrix4x3fv, "glProgramUniformMatrix4x3fv"); set_proc_address(&glProgramUniformMatrix2x3dv, "glProgramUniformMatrix2x3dv"); set_proc_address(&glProgramUniformMatrix3x2dv, "glProgramUniformMatrix3x2dv"); set_proc_address(&glProgramUniformMatrix2x4dv, "glProgramUniformMatrix2x4dv"); set_proc_address(&glProgramUniformMatrix4x2dv, "glProgramUniformMatrix4x2dv"); set_proc_address(&glProgramUniformMatrix3x4dv, "glProgramUniformMatrix3x4dv"); set_proc_address(&glProgramUniformMatrix4x3dv, "glProgramUniformMatrix4x3dv"); set_proc_address(&glValidateProgramPipeline, "glValidateProgramPipeline"); set_proc_address(&glGetProgramPipelineInfoLog, "glGetProgramPipelineInfoLog"); set_proc_address(&glVertexAttribL1d, "glVertexAttribL1d"); set_proc_address(&glVertexAttribL2d, "glVertexAttribL2d"); set_proc_address(&glVertexAttribL3d, "glVertexAttribL3d"); set_proc_address(&glVertexAttribL4d, "glVertexAttribL4d"); set_proc_address(&glVertexAttribL1dv, "glVertexAttribL1dv"); set_proc_address(&glVertexAttribL2dv, "glVertexAttribL2dv"); set_proc_address(&glVertexAttribL3dv, "glVertexAttribL3dv"); set_proc_address(&glVertexAttribL4dv, "glVertexAttribL4dv"); set_proc_address(&glVertexAttribLPointer, "glVertexAttribLPointer"); set_proc_address(&glGetVertexAttribLdv, "glGetVertexAttribLdv"); set_proc_address(&glViewportArrayv, "glViewportArrayv"); set_proc_address(&glViewportIndexedf, "glViewportIndexedf"); set_proc_address(&glViewportIndexedfv, "glViewportIndexedfv"); set_proc_address(&glScissorArrayv, "glScissorArrayv"); set_proc_address(&glScissorIndexed, "glScissorIndexed"); set_proc_address(&glScissorIndexedv, "glScissorIndexedv"); set_proc_address(&glDepthRangeArrayv, "glDepthRangeArrayv"); set_proc_address(&glDepthRangeIndexed, "glDepthRangeIndexed"); set_proc_address(&glGetFloati_v, "glGetFloati_v"); set_proc_address(&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(&glDrawArraysInstancedBaseInstance, "glDrawArraysInstancedBaseInstance"); set_proc_address(&glDrawElementsInstancedBaseInstance, "glDrawElementsInstancedBaseInstance"); set_proc_address(&glDrawElementsInstancedBaseVertexBaseInstance, "glDrawElementsInstancedBaseVertexBaseInstance"); set_proc_address(&glGetInternalformativ, "glGetInternalformativ"); set_proc_address(&glGetActiveAtomicCounterBufferiv, "glGetActiveAtomicCounterBufferiv"); set_proc_address(&glBindImageTexture, "glBindImageTexture"); set_proc_address(&glMemoryBarrier, "glMemoryBarrier"); set_proc_address(&glTexStorage1D, "glTexStorage1D"); set_proc_address(&glTexStorage2D, "glTexStorage2D"); set_proc_address(&glTexStorage3D, "glTexStorage3D"); set_proc_address(&glDrawTransformFeedbackInstanced, "glDrawTransformFeedbackInstanced"); set_proc_address(&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(&glClearBufferData, "glClearBufferData"); set_proc_address(&glClearBufferSubData, "glClearBufferSubData"); set_proc_address(&glDispatchCompute, "glDispatchCompute"); set_proc_address(&glDispatchComputeIndirect, "glDispatchComputeIndirect"); set_proc_address(&glCopyImageSubData, "glCopyImageSubData"); set_proc_address(&glFramebufferParameteri, "glFramebufferParameteri"); set_proc_address(&glGetFramebufferParameteriv, "glGetFramebufferParameteriv"); set_proc_address(&glGetInternalformati64v, "glGetInternalformati64v"); set_proc_address(&glInvalidateTexSubImage, "glInvalidateTexSubImage"); set_proc_address(&glInvalidateTexImage, "glInvalidateTexImage"); set_proc_address(&glInvalidateBufferSubData, "glInvalidateBufferSubData"); set_proc_address(&glInvalidateBufferData, "glInvalidateBufferData"); set_proc_address(&glInvalidateFramebuffer, "glInvalidateFramebuffer"); set_proc_address(&glInvalidateSubFramebuffer, "glInvalidateSubFramebuffer"); set_proc_address(&glMultiDrawArraysIndirect, "glMultiDrawArraysIndirect"); set_proc_address(&glMultiDrawElementsIndirect, "glMultiDrawElementsIndirect"); set_proc_address(&glGetProgramInterfaceiv, "glGetProgramInterfaceiv"); set_proc_address(&glGetProgramResourceIndex, "glGetProgramResourceIndex"); set_proc_address(&glGetProgramResourceName, "glGetProgramResourceName"); set_proc_address(&glGetProgramResourceiv, "glGetProgramResourceiv"); set_proc_address(&glGetProgramResourceLocation, "glGetProgramResourceLocation"); set_proc_address(&glGetProgramResourceLocationIndex, "glGetProgramResourceLocationIndex"); set_proc_address(&glShaderStorageBlockBinding, "glShaderStorageBlockBinding"); set_proc_address(&glTexBufferRange, "glTexBufferRange"); set_proc_address(&glTexStorage2DMultisample, "glTexStorage2DMultisample"); set_proc_address(&glTexStorage3DMultisample, "glTexStorage3DMultisample"); set_proc_address(&glTextureView, "glTextureView"); set_proc_address(&glBindVertexBuffer, "glBindVertexBuffer"); set_proc_address(&glVertexAttribFormat, "glVertexAttribFormat"); set_proc_address(&glVertexAttribIFormat, "glVertexAttribIFormat"); set_proc_address(&glVertexAttribLFormat, "glVertexAttribLFormat"); set_proc_address(&glVertexAttribBinding, "glVertexAttribBinding"); set_proc_address(&glVertexBindingDivisor, "glVertexBindingDivisor"); set_proc_address(&glDebugMessageControl, "glDebugMessageControl"); set_proc_address(&glDebugMessageInsert, "glDebugMessageInsert"); set_proc_address(&glDebugMessageCallback, "glDebugMessageCallback"); set_proc_address(&glGetDebugMessageLog, "glGetDebugMessageLog"); set_proc_address(&glPushDebugGroup, "glPushDebugGroup"); set_proc_address(&glPopDebugGroup, "glPopDebugGroup"); set_proc_address(&glObjectLabel, "glObjectLabel"); set_proc_address(&glGetObjectLabel, "glGetObjectLabel"); set_proc_address(&glObjectPtrLabel, "glObjectPtrLabel"); set_proc_address(&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(&glBufferStorage, "glBufferStorage"); set_proc_address(&glClearTexImage, "glClearTexImage"); set_proc_address(&glClearTexSubImage, "glClearTexSubImage"); set_proc_address(&glBindBuffersBase, "glBindBuffersBase"); set_proc_address(&glBindBuffersRange, "glBindBuffersRange"); set_proc_address(&glBindTextures, "glBindTextures"); set_proc_address(&glBindSamplers, "glBindSamplers"); set_proc_address(&glBindImageTextures, "glBindImageTextures"); set_proc_address(&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(&glClipControl, "glClipControl"); set_proc_address(&glCreateTransformFeedbacks, "glCreateTransformFeedbacks"); set_proc_address(&glTransformFeedbackBufferBase, "glTransformFeedbackBufferBase"); set_proc_address(&glTransformFeedbackBufferRange, "glTransformFeedbackBufferRange"); set_proc_address(&glGetTransformFeedbackiv, "glGetTransformFeedbackiv"); set_proc_address(&glGetTransformFeedbacki_v, "glGetTransformFeedbacki_v"); set_proc_address(&glGetTransformFeedbacki64_v, "glGetTransformFeedbacki64_v"); set_proc_address(&glCreateBuffers, "glCreateBuffers"); set_proc_address(&glNamedBufferStorage, "glNamedBufferStorage"); set_proc_address(&glNamedBufferData, "glNamedBufferData"); set_proc_address(&glNamedBufferSubData, "glNamedBufferSubData"); set_proc_address(&glCopyNamedBufferSubData, "glCopyNamedBufferSubData"); set_proc_address(&glClearNamedBufferData, "glClearNamedBufferData"); set_proc_address(&glClearNamedBufferSubData, "glClearNamedBufferSubData"); set_proc_address(&glMapNamedBuffer, "glMapNamedBuffer"); set_proc_address(&glMapNamedBufferRange, "glMapNamedBufferRange"); set_proc_address(&glUnmapNamedBuffer, "glUnmapNamedBuffer"); set_proc_address(&glFlushMappedNamedBufferRange, "glFlushMappedNamedBufferRange"); set_proc_address(&glGetNamedBufferParameteriv, "glGetNamedBufferParameteriv"); set_proc_address(&glGetNamedBufferParameteri64v, "glGetNamedBufferParameteri64v"); set_proc_address(&glGetNamedBufferPointerv, "glGetNamedBufferPointerv"); set_proc_address(&glGetNamedBufferSubData, "glGetNamedBufferSubData"); set_proc_address(&glCreateFramebuffers, "glCreateFramebuffers"); set_proc_address(&glNamedFramebufferRenderbuffer, "glNamedFramebufferRenderbuffer"); set_proc_address(&glNamedFramebufferParameteri, "glNamedFramebufferParameteri"); set_proc_address(&glNamedFramebufferTexture, "glNamedFramebufferTexture"); set_proc_address(&glNamedFramebufferTextureLayer, "glNamedFramebufferTextureLayer"); set_proc_address(&glNamedFramebufferDrawBuffer, "glNamedFramebufferDrawBuffer"); set_proc_address(&glNamedFramebufferDrawBuffers, "glNamedFramebufferDrawBuffers"); set_proc_address(&glNamedFramebufferReadBuffer, "glNamedFramebufferReadBuffer"); set_proc_address(&glInvalidateNamedFramebufferData, "glInvalidateNamedFramebufferData"); set_proc_address(&glInvalidateNamedFramebufferSubData, "glInvalidateNamedFramebufferSubData"); set_proc_address(&glClearNamedFramebufferiv, "glClearNamedFramebufferiv"); set_proc_address(&glClearNamedFramebufferuiv, "glClearNamedFramebufferuiv"); set_proc_address(&glClearNamedFramebufferfv, "glClearNamedFramebufferfv"); set_proc_address(&glClearNamedFramebufferfi, "glClearNamedFramebufferfi"); set_proc_address(&glBlitNamedFramebuffer, "glBlitNamedFramebuffer"); set_proc_address(&glCheckNamedFramebufferStatus, "glCheckNamedFramebufferStatus"); set_proc_address(&glGetNamedFramebufferParameteriv, "glGetNamedFramebufferParameteriv"); set_proc_address(&glGetNamedFramebufferAttachmentParameteriv, "glGetNamedFramebufferAttachmentParameteriv"); set_proc_address(&glCreateRenderbuffers, "glCreateRenderbuffers"); set_proc_address(&glNamedRenderbufferStorage, "glNamedRenderbufferStorage"); set_proc_address(&glNamedRenderbufferStorageMultisample, "glNamedRenderbufferStorageMultisample"); set_proc_address(&glGetNamedRenderbufferParameteriv, "glGetNamedRenderbufferParameteriv"); set_proc_address(&glCreateTextures, "glCreateTextures"); set_proc_address(&glTextureBuffer, "glTextureBuffer"); set_proc_address(&glTextureBufferRange, "glTextureBufferRange"); set_proc_address(&glTextureStorage1D, "glTextureStorage1D"); set_proc_address(&glTextureStorage2D, "glTextureStorage2D"); set_proc_address(&glTextureStorage3D, "glTextureStorage3D"); set_proc_address(&glTextureStorage2DMultisample, "glTextureStorage2DMultisample"); set_proc_address(&glTextureStorage3DMultisample, "glTextureStorage3DMultisample"); set_proc_address(&glTextureSubImage1D, "glTextureSubImage1D"); set_proc_address(&glTextureSubImage2D, "glTextureSubImage2D"); set_proc_address(&glTextureSubImage3D, "glTextureSubImage3D"); set_proc_address(&glCompressedTextureSubImage1D, "glCompressedTextureSubImage1D"); set_proc_address(&glCompressedTextureSubImage2D, "glCompressedTextureSubImage2D"); set_proc_address(&glCompressedTextureSubImage3D, "glCompressedTextureSubImage3D"); set_proc_address(&glCopyTextureSubImage1D, "glCopyTextureSubImage1D"); set_proc_address(&glCopyTextureSubImage2D, "glCopyTextureSubImage2D"); set_proc_address(&glCopyTextureSubImage3D, "glCopyTextureSubImage3D"); set_proc_address(&glTextureParameterf, "glTextureParameterf"); set_proc_address(&glTextureParameterfv, "glTextureParameterfv"); set_proc_address(&glTextureParameteri, "glTextureParameteri"); set_proc_address(&glTextureParameterIiv, "glTextureParameterIiv"); set_proc_address(&glTextureParameterIuiv, "glTextureParameterIuiv"); set_proc_address(&glTextureParameteriv, "glTextureParameteriv"); set_proc_address(&glGenerateTextureMipmap, "glGenerateTextureMipmap"); set_proc_address(&glBindTextureUnit, "glBindTextureUnit"); set_proc_address(&glGetTextureImage, "glGetTextureImage"); set_proc_address(&glGetCompressedTextureImage, "glGetCompressedTextureImage"); set_proc_address(&glGetTextureLevelParameterfv, "glGetTextureLevelParameterfv"); set_proc_address(&glGetTextureLevelParameteriv, "glGetTextureLevelParameteriv"); set_proc_address(&glGetTextureParameterfv, "glGetTextureParameterfv"); set_proc_address(&glGetTextureParameterIiv, "glGetTextureParameterIiv"); set_proc_address(&glGetTextureParameterIuiv, "glGetTextureParameterIuiv"); set_proc_address(&glGetTextureParameteriv, "glGetTextureParameteriv"); set_proc_address(&glCreateVertexArrays, "glCreateVertexArrays"); set_proc_address(&glDisableVertexArrayAttrib, "glDisableVertexArrayAttrib"); set_proc_address(&glEnableVertexArrayAttrib, "glEnableVertexArrayAttrib"); set_proc_address(&glVertexArrayElementBuffer, "glVertexArrayElementBuffer"); set_proc_address(&glVertexArrayVertexBuffer, "glVertexArrayVertexBuffer"); set_proc_address(&glVertexArrayVertexBuffers, "glVertexArrayVertexBuffers"); set_proc_address(&glVertexArrayAttribBinding, "glVertexArrayAttribBinding"); set_proc_address(&glVertexArrayAttribFormat, "glVertexArrayAttribFormat"); set_proc_address(&glVertexArrayAttribIFormat, "glVertexArrayAttribIFormat"); set_proc_address(&glVertexArrayAttribLFormat, "glVertexArrayAttribLFormat"); set_proc_address(&glVertexArrayBindingDivisor, "glVertexArrayBindingDivisor"); set_proc_address(&glGetVertexArrayiv, "glGetVertexArrayiv"); set_proc_address(&glGetVertexArrayIndexediv, "glGetVertexArrayIndexediv"); set_proc_address(&glGetVertexArrayIndexed64iv, "glGetVertexArrayIndexed64iv"); set_proc_address(&glCreateSamplers, "glCreateSamplers"); set_proc_address(&glCreateProgramPipelines, "glCreateProgramPipelines"); set_proc_address(&glCreateQueries, "glCreateQueries"); set_proc_address(&glGetQueryBufferObjecti64v, "glGetQueryBufferObjecti64v"); set_proc_address(&glGetQueryBufferObjectiv, "glGetQueryBufferObjectiv"); set_proc_address(&glGetQueryBufferObjectui64v, "glGetQueryBufferObjectui64v"); set_proc_address(&glGetQueryBufferObjectuiv, "glGetQueryBufferObjectuiv"); set_proc_address(&glMemoryBarrierByRegion, "glMemoryBarrierByRegion"); set_proc_address(&glGetTextureSubImage, "glGetTextureSubImage"); set_proc_address(&glGetCompressedTextureSubImage, "glGetCompressedTextureSubImage"); set_proc_address(&glGetGraphicsResetStatus, "glGetGraphicsResetStatus"); set_proc_address(&glGetnCompressedTexImage, "glGetnCompressedTexImage"); set_proc_address(&glGetnTexImage, "glGetnTexImage"); set_proc_address(&glGetnUniformdv, "glGetnUniformdv"); set_proc_address(&glGetnUniformfv, "glGetnUniformfv"); set_proc_address(&glGetnUniformiv, "glGetnUniformiv"); set_proc_address(&glGetnUniformuiv, "glGetnUniformuiv"); set_proc_address(&glReadnPixels, "glReadnPixels"); set_proc_address(&glGetnMapdv, "glGetnMapdv"); set_proc_address(&glGetnMapfv, "glGetnMapfv"); set_proc_address(&glGetnMapiv, "glGetnMapiv"); set_proc_address(&glGetnPixelMapfv, "glGetnPixelMapfv"); set_proc_address(&glGetnPixelMapuiv, "glGetnPixelMapuiv"); set_proc_address(&glGetnPixelMapusv, "glGetnPixelMapusv"); set_proc_address(&glGetnPolygonStipple, "glGetnPolygonStipple"); set_proc_address(&glGetnColorTable, "glGetnColorTable"); set_proc_address(&glGetnConvolutionFilter, "glGetnConvolutionFilter"); set_proc_address(&glGetnSeparableFilter, "glGetnSeparableFilter"); set_proc_address(&glGetnHistogram, "glGetnHistogram"); set_proc_address(&glGetnMinmax, "glGetnMinmax"); set_proc_address(&glTextureBarrier, "glTextureBarrier"); set_proc_address(&glGetUnsignedBytevEXT, "glGetUnsignedBytevEXT"); set_proc_address(&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(&glSpecializeShader, "glSpecializeShader"); set_proc_address(&glMultiDrawArraysIndirectCount, "glMultiDrawArraysIndirectCount"); set_proc_address(&glMultiDrawElementsIndirectCount, "glMultiDrawElementsIndirectCount"); set_proc_address(&glPolygonOffsetClamp, "glPolygonOffsetClamp"); }