/* automatically generated by rust-bindgen */

pub const __WORDSIZE: u32 = 64;
pub const __DARWIN_ONLY_64_BIT_INO_T: u32 = 0;
pub const __DARWIN_ONLY_VERS_1050: u32 = 0;
pub const __DARWIN_ONLY_UNIX_CONFORMANCE: u32 = 1;
pub const __DARWIN_UNIX03: u32 = 1;
pub const __DARWIN_64_BIT_INO_T: u32 = 1;
pub const __DARWIN_VERS_1050: u32 = 1;
pub const __DARWIN_NON_CANCELABLE: u32 = 0;
pub const __DARWIN_SUF_64_BIT_INO_T: &'static [u8; 9usize] = b"$INODE64\0";
pub const __DARWIN_SUF_1050: &'static [u8; 6usize] = b"$1050\0";
pub const __DARWIN_SUF_EXTSN: &'static [u8; 14usize] = b"$DARWIN_EXTSN\0";
pub const __DARWIN_C_ANSI: u32 = 4096;
pub const __DARWIN_C_FULL: u32 = 900000;
pub const __DARWIN_C_LEVEL: u32 = 900000;
pub const __STDC_WANT_LIB_EXT1__: u32 = 1;
pub const __DARWIN_NO_LONG_LONG: u32 = 0;
pub const _DARWIN_FEATURE_64_BIT_INODE: u32 = 1;
pub const _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE: u32 = 1;
pub const _DARWIN_FEATURE_UNIX_CONFORMANCE: u32 = 3;
pub const __PTHREAD_SIZE__: u32 = 8176;
pub const __PTHREAD_ATTR_SIZE__: u32 = 56;
pub const __PTHREAD_MUTEXATTR_SIZE__: u32 = 8;
pub const __PTHREAD_MUTEX_SIZE__: u32 = 56;
pub const __PTHREAD_CONDATTR_SIZE__: u32 = 8;
pub const __PTHREAD_COND_SIZE__: u32 = 40;
pub const __PTHREAD_ONCE_SIZE__: u32 = 8;
pub const __PTHREAD_RWLOCK_SIZE__: u32 = 192;
pub const __PTHREAD_RWLOCKATTR_SIZE__: u32 = 16;
pub const INT8_MAX: u32 = 127;
pub const INT16_MAX: u32 = 32767;
pub const INT32_MAX: u32 = 2147483647;
pub const INT64_MAX: u64 = 9223372036854775807;
pub const INT8_MIN: i32 = -128;
pub const INT16_MIN: i32 = -32768;
pub const INT32_MIN: i32 = -2147483648;
pub const INT64_MIN: i64 = -9223372036854775808;
pub const UINT8_MAX: u32 = 255;
pub const UINT16_MAX: u32 = 65535;
pub const UINT32_MAX: u32 = 4294967295;
pub const UINT64_MAX: i32 = -1;
pub const INT_LEAST8_MIN: i32 = -128;
pub const INT_LEAST16_MIN: i32 = -32768;
pub const INT_LEAST32_MIN: i32 = -2147483648;
pub const INT_LEAST64_MIN: i64 = -9223372036854775808;
pub const INT_LEAST8_MAX: u32 = 127;
pub const INT_LEAST16_MAX: u32 = 32767;
pub const INT_LEAST32_MAX: u32 = 2147483647;
pub const INT_LEAST64_MAX: u64 = 9223372036854775807;
pub const UINT_LEAST8_MAX: u32 = 255;
pub const UINT_LEAST16_MAX: u32 = 65535;
pub const UINT_LEAST32_MAX: u32 = 4294967295;
pub const UINT_LEAST64_MAX: i32 = -1;
pub const INT_FAST8_MIN: i32 = -128;
pub const INT_FAST16_MIN: i32 = -32768;
pub const INT_FAST32_MIN: i32 = -2147483648;
pub const INT_FAST64_MIN: i64 = -9223372036854775808;
pub const INT_FAST8_MAX: u32 = 127;
pub const INT_FAST16_MAX: u32 = 32767;
pub const INT_FAST32_MAX: u32 = 2147483647;
pub const INT_FAST64_MAX: u64 = 9223372036854775807;
pub const UINT_FAST8_MAX: u32 = 255;
pub const UINT_FAST16_MAX: u32 = 65535;
pub const UINT_FAST32_MAX: u32 = 4294967295;
pub const UINT_FAST64_MAX: i32 = -1;
pub const INTPTR_MAX: u64 = 9223372036854775807;
pub const INTPTR_MIN: i64 = -9223372036854775808;
pub const UINTPTR_MAX: i32 = -1;
pub const SIZE_MAX: i32 = -1;
pub const RSIZE_MAX: i32 = -1;
pub const WINT_MIN: i32 = -2147483648;
pub const WINT_MAX: u32 = 2147483647;
pub const SIG_ATOMIC_MIN: i32 = -2147483648;
pub const SIG_ATOMIC_MAX: u32 = 2147483647;
pub const API_TO_BE_DEPRECATED: u32 = 100000;
pub const __ENABLE_LEGACY_MAC_AVAILABILITY: u32 = 1;
pub const GL_DEPTH_BUFFER_BIT: u32 = 256;
pub const GL_STENCIL_BUFFER_BIT: u32 = 1024;
pub const GL_COLOR_BUFFER_BIT: u32 = 16384;
pub const GL_FALSE: u32 = 0;
pub const GL_TRUE: u32 = 1;
pub const GL_POINTS: u32 = 0;
pub const GL_LINES: u32 = 1;
pub const GL_LINE_LOOP: u32 = 2;
pub const GL_LINE_STRIP: u32 = 3;
pub const GL_TRIANGLES: u32 = 4;
pub const GL_TRIANGLE_STRIP: u32 = 5;
pub const GL_TRIANGLE_FAN: u32 = 6;
pub const GL_NEVER: u32 = 512;
pub const GL_LESS: u32 = 513;
pub const GL_EQUAL: u32 = 514;
pub const GL_LEQUAL: u32 = 515;
pub const GL_GREATER: u32 = 516;
pub const GL_NOTEQUAL: u32 = 517;
pub const GL_GEQUAL: u32 = 518;
pub const GL_ALWAYS: u32 = 519;
pub const GL_ZERO: u32 = 0;
pub const GL_ONE: u32 = 1;
pub const GL_SRC_COLOR: u32 = 768;
pub const GL_ONE_MINUS_SRC_COLOR: u32 = 769;
pub const GL_SRC_ALPHA: u32 = 770;
pub const GL_ONE_MINUS_SRC_ALPHA: u32 = 771;
pub const GL_DST_ALPHA: u32 = 772;
pub const GL_ONE_MINUS_DST_ALPHA: u32 = 773;
pub const GL_DST_COLOR: u32 = 774;
pub const GL_ONE_MINUS_DST_COLOR: u32 = 775;
pub const GL_SRC_ALPHA_SATURATE: u32 = 776;
pub const GL_NONE: u32 = 0;
pub const GL_FRONT_LEFT: u32 = 1024;
pub const GL_FRONT_RIGHT: u32 = 1025;
pub const GL_BACK_LEFT: u32 = 1026;
pub const GL_BACK_RIGHT: u32 = 1027;
pub const GL_FRONT: u32 = 1028;
pub const GL_BACK: u32 = 1029;
pub const GL_LEFT: u32 = 1030;
pub const GL_RIGHT: u32 = 1031;
pub const GL_FRONT_AND_BACK: u32 = 1032;
pub const GL_NO_ERROR: u32 = 0;
pub const GL_INVALID_ENUM: u32 = 1280;
pub const GL_INVALID_VALUE: u32 = 1281;
pub const GL_INVALID_OPERATION: u32 = 1282;
pub const GL_OUT_OF_MEMORY: u32 = 1285;
pub const GL_CW: u32 = 2304;
pub const GL_CCW: u32 = 2305;
pub const GL_POINT_SIZE: u32 = 2833;
pub const GL_POINT_SIZE_RANGE: u32 = 2834;
pub const GL_POINT_SIZE_GRANULARITY: u32 = 2835;
pub const GL_LINE_SMOOTH: u32 = 2848;
pub const GL_LINE_WIDTH: u32 = 2849;
pub const GL_LINE_WIDTH_RANGE: u32 = 2850;
pub const GL_LINE_WIDTH_GRANULARITY: u32 = 2851;
pub const GL_POLYGON_MODE: u32 = 2880;
pub const GL_POLYGON_SMOOTH: u32 = 2881;
pub const GL_CULL_FACE: u32 = 2884;
pub const GL_CULL_FACE_MODE: u32 = 2885;
pub const GL_FRONT_FACE: u32 = 2886;
pub const GL_DEPTH_RANGE: u32 = 2928;
pub const GL_DEPTH_TEST: u32 = 2929;
pub const GL_DEPTH_WRITEMASK: u32 = 2930;
pub const GL_DEPTH_CLEAR_VALUE: u32 = 2931;
pub const GL_DEPTH_FUNC: u32 = 2932;
pub const GL_STENCIL_TEST: u32 = 2960;
pub const GL_STENCIL_CLEAR_VALUE: u32 = 2961;
pub const GL_STENCIL_FUNC: u32 = 2962;
pub const GL_STENCIL_VALUE_MASK: u32 = 2963;
pub const GL_STENCIL_FAIL: u32 = 2964;
pub const GL_STENCIL_PASS_DEPTH_FAIL: u32 = 2965;
pub const GL_STENCIL_PASS_DEPTH_PASS: u32 = 2966;
pub const GL_STENCIL_REF: u32 = 2967;
pub const GL_STENCIL_WRITEMASK: u32 = 2968;
pub const GL_VIEWPORT: u32 = 2978;
pub const GL_DITHER: u32 = 3024;
pub const GL_BLEND_DST: u32 = 3040;
pub const GL_BLEND_SRC: u32 = 3041;
pub const GL_BLEND: u32 = 3042;
pub const GL_LOGIC_OP_MODE: u32 = 3056;
pub const GL_COLOR_LOGIC_OP: u32 = 3058;
pub const GL_DRAW_BUFFER: u32 = 3073;
pub const GL_READ_BUFFER: u32 = 3074;
pub const GL_SCISSOR_BOX: u32 = 3088;
pub const GL_SCISSOR_TEST: u32 = 3089;
pub const GL_COLOR_CLEAR_VALUE: u32 = 3106;
pub const GL_COLOR_WRITEMASK: u32 = 3107;
pub const GL_DOUBLEBUFFER: u32 = 3122;
pub const GL_STEREO: u32 = 3123;
pub const GL_LINE_SMOOTH_HINT: u32 = 3154;
pub const GL_POLYGON_SMOOTH_HINT: u32 = 3155;
pub const GL_UNPACK_SWAP_BYTES: u32 = 3312;
pub const GL_UNPACK_LSB_FIRST: u32 = 3313;
pub const GL_UNPACK_ROW_LENGTH: u32 = 3314;
pub const GL_UNPACK_SKIP_ROWS: u32 = 3315;
pub const GL_UNPACK_SKIP_PIXELS: u32 = 3316;
pub const GL_UNPACK_ALIGNMENT: u32 = 3317;
pub const GL_PACK_SWAP_BYTES: u32 = 3328;
pub const GL_PACK_LSB_FIRST: u32 = 3329;
pub const GL_PACK_ROW_LENGTH: u32 = 3330;
pub const GL_PACK_SKIP_ROWS: u32 = 3331;
pub const GL_PACK_SKIP_PIXELS: u32 = 3332;
pub const GL_PACK_ALIGNMENT: u32 = 3333;
pub const GL_MAX_TEXTURE_SIZE: u32 = 3379;
pub const GL_MAX_VIEWPORT_DIMS: u32 = 3386;
pub const GL_SUBPIXEL_BITS: u32 = 3408;
pub const GL_TEXTURE_1D: u32 = 3552;
pub const GL_TEXTURE_2D: u32 = 3553;
pub const GL_POLYGON_OFFSET_UNITS: u32 = 10752;
pub const GL_POLYGON_OFFSET_POINT: u32 = 10753;
pub const GL_POLYGON_OFFSET_LINE: u32 = 10754;
pub const GL_POLYGON_OFFSET_FILL: u32 = 32823;
pub const GL_POLYGON_OFFSET_FACTOR: u32 = 32824;
pub const GL_TEXTURE_BINDING_1D: u32 = 32872;
pub const GL_TEXTURE_BINDING_2D: u32 = 32873;
pub const GL_TEXTURE_WIDTH: u32 = 4096;
pub const GL_TEXTURE_HEIGHT: u32 = 4097;
pub const GL_TEXTURE_INTERNAL_FORMAT: u32 = 4099;
pub const GL_TEXTURE_BORDER_COLOR: u32 = 4100;
pub const GL_TEXTURE_RED_SIZE: u32 = 32860;
pub const GL_TEXTURE_GREEN_SIZE: u32 = 32861;
pub const GL_TEXTURE_BLUE_SIZE: u32 = 32862;
pub const GL_TEXTURE_ALPHA_SIZE: u32 = 32863;
pub const GL_DONT_CARE: u32 = 4352;
pub const GL_FASTEST: u32 = 4353;
pub const GL_NICEST: u32 = 4354;
pub const GL_BYTE: u32 = 5120;
pub const GL_UNSIGNED_BYTE: u32 = 5121;
pub const GL_SHORT: u32 = 5122;
pub const GL_UNSIGNED_SHORT: u32 = 5123;
pub const GL_INT: u32 = 5124;
pub const GL_UNSIGNED_INT: u32 = 5125;
pub const GL_FLOAT: u32 = 5126;
pub const GL_DOUBLE: u32 = 5130;
pub const GL_CLEAR: u32 = 5376;
pub const GL_AND: u32 = 5377;
pub const GL_AND_REVERSE: u32 = 5378;
pub const GL_COPY: u32 = 5379;
pub const GL_AND_INVERTED: u32 = 5380;
pub const GL_NOOP: u32 = 5381;
pub const GL_XOR: u32 = 5382;
pub const GL_OR: u32 = 5383;
pub const GL_NOR: u32 = 5384;
pub const GL_EQUIV: u32 = 5385;
pub const GL_INVERT: u32 = 5386;
pub const GL_OR_REVERSE: u32 = 5387;
pub const GL_COPY_INVERTED: u32 = 5388;
pub const GL_OR_INVERTED: u32 = 5389;
pub const GL_NAND: u32 = 5390;
pub const GL_SET: u32 = 5391;
pub const GL_TEXTURE: u32 = 5890;
pub const GL_COLOR: u32 = 6144;
pub const GL_DEPTH: u32 = 6145;
pub const GL_STENCIL: u32 = 6146;
pub const GL_STENCIL_INDEX: u32 = 6401;
pub const GL_DEPTH_COMPONENT: u32 = 6402;
pub const GL_RED: u32 = 6403;
pub const GL_GREEN: u32 = 6404;
pub const GL_BLUE: u32 = 6405;
pub const GL_ALPHA: u32 = 6406;
pub const GL_RGB: u32 = 6407;
pub const GL_RGBA: u32 = 6408;
pub const GL_POINT: u32 = 6912;
pub const GL_LINE: u32 = 6913;
pub const GL_FILL: u32 = 6914;
pub const GL_KEEP: u32 = 7680;
pub const GL_REPLACE: u32 = 7681;
pub const GL_INCR: u32 = 7682;
pub const GL_DECR: u32 = 7683;
pub const GL_VENDOR: u32 = 7936;
pub const GL_RENDERER: u32 = 7937;
pub const GL_VERSION: u32 = 7938;
pub const GL_EXTENSIONS: u32 = 7939;
pub const GL_NEAREST: u32 = 9728;
pub const GL_LINEAR: u32 = 9729;
pub const GL_NEAREST_MIPMAP_NEAREST: u32 = 9984;
pub const GL_LINEAR_MIPMAP_NEAREST: u32 = 9985;
pub const GL_NEAREST_MIPMAP_LINEAR: u32 = 9986;
pub const GL_LINEAR_MIPMAP_LINEAR: u32 = 9987;
pub const GL_TEXTURE_MAG_FILTER: u32 = 10240;
pub const GL_TEXTURE_MIN_FILTER: u32 = 10241;
pub const GL_TEXTURE_WRAP_S: u32 = 10242;
pub const GL_TEXTURE_WRAP_T: u32 = 10243;
pub const GL_PROXY_TEXTURE_1D: u32 = 32867;
pub const GL_PROXY_TEXTURE_2D: u32 = 32868;
pub const GL_REPEAT: u32 = 10497;
pub const GL_R3_G3_B2: u32 = 10768;
pub const GL_RGB4: u32 = 32847;
pub const GL_RGB5: u32 = 32848;
pub const GL_RGB8: u32 = 32849;
pub const GL_RGB10: u32 = 32850;
pub const GL_RGB12: u32 = 32851;
pub const GL_RGB16: u32 = 32852;
pub const GL_RGBA2: u32 = 32853;
pub const GL_RGBA4: u32 = 32854;
pub const GL_RGB5_A1: u32 = 32855;
pub const GL_RGBA8: u32 = 32856;
pub const GL_RGB10_A2: u32 = 32857;
pub const GL_RGBA12: u32 = 32858;
pub const GL_RGBA16: u32 = 32859;
pub const GL_UNSIGNED_BYTE_3_3_2: u32 = 32818;
pub const GL_UNSIGNED_SHORT_4_4_4_4: u32 = 32819;
pub const GL_UNSIGNED_SHORT_5_5_5_1: u32 = 32820;
pub const GL_UNSIGNED_INT_8_8_8_8: u32 = 32821;
pub const GL_UNSIGNED_INT_10_10_10_2: u32 = 32822;
pub const GL_TEXTURE_BINDING_3D: u32 = 32874;
pub const GL_PACK_SKIP_IMAGES: u32 = 32875;
pub const GL_PACK_IMAGE_HEIGHT: u32 = 32876;
pub const GL_UNPACK_SKIP_IMAGES: u32 = 32877;
pub const GL_UNPACK_IMAGE_HEIGHT: u32 = 32878;
pub const GL_TEXTURE_3D: u32 = 32879;
pub const GL_PROXY_TEXTURE_3D: u32 = 32880;
pub const GL_TEXTURE_DEPTH: u32 = 32881;
pub const GL_TEXTURE_WRAP_R: u32 = 32882;
pub const GL_MAX_3D_TEXTURE_SIZE: u32 = 32883;
pub const GL_UNSIGNED_BYTE_2_3_3_REV: u32 = 33634;
pub const GL_UNSIGNED_SHORT_5_6_5: u32 = 33635;
pub const GL_UNSIGNED_SHORT_5_6_5_REV: u32 = 33636;
pub const GL_UNSIGNED_SHORT_4_4_4_4_REV: u32 = 33637;
pub const GL_UNSIGNED_SHORT_1_5_5_5_REV: u32 = 33638;
pub const GL_UNSIGNED_INT_8_8_8_8_REV: u32 = 33639;
pub const GL_UNSIGNED_INT_2_10_10_10_REV: u32 = 33640;
pub const GL_BGR: u32 = 32992;
pub const GL_BGRA: u32 = 32993;
pub const GL_MAX_ELEMENTS_VERTICES: u32 = 33000;
pub const GL_MAX_ELEMENTS_INDICES: u32 = 33001;
pub const GL_CLAMP_TO_EDGE: u32 = 33071;
pub const GL_TEXTURE_MIN_LOD: u32 = 33082;
pub const GL_TEXTURE_MAX_LOD: u32 = 33083;
pub const GL_TEXTURE_BASE_LEVEL: u32 = 33084;
pub const GL_TEXTURE_MAX_LEVEL: u32 = 33085;
pub const GL_SMOOTH_POINT_SIZE_RANGE: u32 = 2834;
pub const GL_SMOOTH_POINT_SIZE_GRANULARITY: u32 = 2835;
pub const GL_SMOOTH_LINE_WIDTH_RANGE: u32 = 2850;
pub const GL_SMOOTH_LINE_WIDTH_GRANULARITY: u32 = 2851;
pub const GL_ALIASED_LINE_WIDTH_RANGE: u32 = 33902;
pub const GL_CONSTANT_COLOR: u32 = 32769;
pub const GL_ONE_MINUS_CONSTANT_COLOR: u32 = 32770;
pub const GL_CONSTANT_ALPHA: u32 = 32771;
pub const GL_ONE_MINUS_CONSTANT_ALPHA: u32 = 32772;
pub const GL_BLEND_COLOR: u32 = 32773;
pub const GL_FUNC_ADD: u32 = 32774;
pub const GL_MIN: u32 = 32775;
pub const GL_MAX: u32 = 32776;
pub const GL_BLEND_EQUATION: u32 = 32777;
pub const GL_FUNC_SUBTRACT: u32 = 32778;
pub const GL_FUNC_REVERSE_SUBTRACT: u32 = 32779;
pub const GL_TEXTURE0: u32 = 33984;
pub const GL_TEXTURE1: u32 = 33985;
pub const GL_TEXTURE2: u32 = 33986;
pub const GL_TEXTURE3: u32 = 33987;
pub const GL_TEXTURE4: u32 = 33988;
pub const GL_TEXTURE5: u32 = 33989;
pub const GL_TEXTURE6: u32 = 33990;
pub const GL_TEXTURE7: u32 = 33991;
pub const GL_TEXTURE8: u32 = 33992;
pub const GL_TEXTURE9: u32 = 33993;
pub const GL_TEXTURE10: u32 = 33994;
pub const GL_TEXTURE11: u32 = 33995;
pub const GL_TEXTURE12: u32 = 33996;
pub const GL_TEXTURE13: u32 = 33997;
pub const GL_TEXTURE14: u32 = 33998;
pub const GL_TEXTURE15: u32 = 33999;
pub const GL_TEXTURE16: u32 = 34000;
pub const GL_TEXTURE17: u32 = 34001;
pub const GL_TEXTURE18: u32 = 34002;
pub const GL_TEXTURE19: u32 = 34003;
pub const GL_TEXTURE20: u32 = 34004;
pub const GL_TEXTURE21: u32 = 34005;
pub const GL_TEXTURE22: u32 = 34006;
pub const GL_TEXTURE23: u32 = 34007;
pub const GL_TEXTURE24: u32 = 34008;
pub const GL_TEXTURE25: u32 = 34009;
pub const GL_TEXTURE26: u32 = 34010;
pub const GL_TEXTURE27: u32 = 34011;
pub const GL_TEXTURE28: u32 = 34012;
pub const GL_TEXTURE29: u32 = 34013;
pub const GL_TEXTURE30: u32 = 34014;
pub const GL_TEXTURE31: u32 = 34015;
pub const GL_ACTIVE_TEXTURE: u32 = 34016;
pub const GL_MULTISAMPLE: u32 = 32925;
pub const GL_SAMPLE_ALPHA_TO_COVERAGE: u32 = 32926;
pub const GL_SAMPLE_ALPHA_TO_ONE: u32 = 32927;
pub const GL_SAMPLE_COVERAGE: u32 = 32928;
pub const GL_SAMPLE_BUFFERS: u32 = 32936;
pub const GL_SAMPLES: u32 = 32937;
pub const GL_SAMPLE_COVERAGE_VALUE: u32 = 32938;
pub const GL_SAMPLE_COVERAGE_INVERT: u32 = 32939;
pub const GL_TEXTURE_CUBE_MAP: u32 = 34067;
pub const GL_TEXTURE_BINDING_CUBE_MAP: u32 = 34068;
pub const GL_TEXTURE_CUBE_MAP_POSITIVE_X: u32 = 34069;
pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_X: u32 = 34070;
pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Y: u32 = 34071;
pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: u32 = 34072;
pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Z: u32 = 34073;
pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: u32 = 34074;
pub const GL_PROXY_TEXTURE_CUBE_MAP: u32 = 34075;
pub const GL_MAX_CUBE_MAP_TEXTURE_SIZE: u32 = 34076;
pub const GL_COMPRESSED_RGB: u32 = 34029;
pub const GL_COMPRESSED_RGBA: u32 = 34030;
pub const GL_TEXTURE_COMPRESSION_HINT: u32 = 34031;
pub const GL_TEXTURE_COMPRESSED_IMAGE_SIZE: u32 = 34464;
pub const GL_TEXTURE_COMPRESSED: u32 = 34465;
pub const GL_NUM_COMPRESSED_TEXTURE_FORMATS: u32 = 34466;
pub const GL_COMPRESSED_TEXTURE_FORMATS: u32 = 34467;
pub const GL_CLAMP_TO_BORDER: u32 = 33069;
pub const GL_BLEND_DST_RGB: u32 = 32968;
pub const GL_BLEND_SRC_RGB: u32 = 32969;
pub const GL_BLEND_DST_ALPHA: u32 = 32970;
pub const GL_BLEND_SRC_ALPHA: u32 = 32971;
pub const GL_POINT_FADE_THRESHOLD_SIZE: u32 = 33064;
pub const GL_DEPTH_COMPONENT16: u32 = 33189;
pub const GL_DEPTH_COMPONENT24: u32 = 33190;
pub const GL_DEPTH_COMPONENT32: u32 = 33191;
pub const GL_MIRRORED_REPEAT: u32 = 33648;
pub const GL_MAX_TEXTURE_LOD_BIAS: u32 = 34045;
pub const GL_TEXTURE_LOD_BIAS: u32 = 34049;
pub const GL_INCR_WRAP: u32 = 34055;
pub const GL_DECR_WRAP: u32 = 34056;
pub const GL_TEXTURE_DEPTH_SIZE: u32 = 34890;
pub const GL_TEXTURE_COMPARE_MODE: u32 = 34892;
pub const GL_TEXTURE_COMPARE_FUNC: u32 = 34893;
pub const GL_BUFFER_SIZE: u32 = 34660;
pub const GL_BUFFER_USAGE: u32 = 34661;
pub const GL_QUERY_COUNTER_BITS: u32 = 34916;
pub const GL_CURRENT_QUERY: u32 = 34917;
pub const GL_QUERY_RESULT: u32 = 34918;
pub const GL_QUERY_RESULT_AVAILABLE: u32 = 34919;
pub const GL_ARRAY_BUFFER: u32 = 34962;
pub const GL_ELEMENT_ARRAY_BUFFER: u32 = 34963;
pub const GL_ARRAY_BUFFER_BINDING: u32 = 34964;
pub const GL_ELEMENT_ARRAY_BUFFER_BINDING: u32 = 34965;
pub const GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: u32 = 34975;
pub const GL_READ_ONLY: u32 = 35000;
pub const GL_WRITE_ONLY: u32 = 35001;
pub const GL_READ_WRITE: u32 = 35002;
pub const GL_BUFFER_ACCESS: u32 = 35003;
pub const GL_BUFFER_MAPPED: u32 = 35004;
pub const GL_BUFFER_MAP_POINTER: u32 = 35005;
pub const GL_STREAM_DRAW: u32 = 35040;
pub const GL_STREAM_READ: u32 = 35041;
pub const GL_STREAM_COPY: u32 = 35042;
pub const GL_STATIC_DRAW: u32 = 35044;
pub const GL_STATIC_READ: u32 = 35045;
pub const GL_STATIC_COPY: u32 = 35046;
pub const GL_DYNAMIC_DRAW: u32 = 35048;
pub const GL_DYNAMIC_READ: u32 = 35049;
pub const GL_DYNAMIC_COPY: u32 = 35050;
pub const GL_SAMPLES_PASSED: u32 = 35092;
pub const GL_BLEND_EQUATION_RGB: u32 = 32777;
pub const GL_VERTEX_ATTRIB_ARRAY_ENABLED: u32 = 34338;
pub const GL_VERTEX_ATTRIB_ARRAY_SIZE: u32 = 34339;
pub const GL_VERTEX_ATTRIB_ARRAY_STRIDE: u32 = 34340;
pub const GL_VERTEX_ATTRIB_ARRAY_TYPE: u32 = 34341;
pub const GL_CURRENT_VERTEX_ATTRIB: u32 = 34342;
pub const GL_VERTEX_PROGRAM_POINT_SIZE: u32 = 34370;
pub const GL_VERTEX_ATTRIB_ARRAY_POINTER: u32 = 34373;
pub const GL_STENCIL_BACK_FUNC: u32 = 34816;
pub const GL_STENCIL_BACK_FAIL: u32 = 34817;
pub const GL_STENCIL_BACK_PASS_DEPTH_FAIL: u32 = 34818;
pub const GL_STENCIL_BACK_PASS_DEPTH_PASS: u32 = 34819;
pub const GL_MAX_DRAW_BUFFERS: u32 = 34852;
pub const GL_DRAW_BUFFER0: u32 = 34853;
pub const GL_DRAW_BUFFER1: u32 = 34854;
pub const GL_DRAW_BUFFER2: u32 = 34855;
pub const GL_DRAW_BUFFER3: u32 = 34856;
pub const GL_DRAW_BUFFER4: u32 = 34857;
pub const GL_DRAW_BUFFER5: u32 = 34858;
pub const GL_DRAW_BUFFER6: u32 = 34859;
pub const GL_DRAW_BUFFER7: u32 = 34860;
pub const GL_DRAW_BUFFER8: u32 = 34861;
pub const GL_DRAW_BUFFER9: u32 = 34862;
pub const GL_DRAW_BUFFER10: u32 = 34863;
pub const GL_DRAW_BUFFER11: u32 = 34864;
pub const GL_DRAW_BUFFER12: u32 = 34865;
pub const GL_DRAW_BUFFER13: u32 = 34866;
pub const GL_DRAW_BUFFER14: u32 = 34867;
pub const GL_DRAW_BUFFER15: u32 = 34868;
pub const GL_BLEND_EQUATION_ALPHA: u32 = 34877;
pub const GL_MAX_VERTEX_ATTRIBS: u32 = 34921;
pub const GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: u32 = 34922;
pub const GL_MAX_TEXTURE_IMAGE_UNITS: u32 = 34930;
pub const GL_FRAGMENT_SHADER: u32 = 35632;
pub const GL_VERTEX_SHADER: u32 = 35633;
pub const GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: u32 = 35657;
pub const GL_MAX_VERTEX_UNIFORM_COMPONENTS: u32 = 35658;
pub const GL_MAX_VARYING_FLOATS: u32 = 35659;
pub const GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: u32 = 35660;
pub const GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: u32 = 35661;
pub const GL_SHADER_TYPE: u32 = 35663;
pub const GL_FLOAT_VEC2: u32 = 35664;
pub const GL_FLOAT_VEC3: u32 = 35665;
pub const GL_FLOAT_VEC4: u32 = 35666;
pub const GL_INT_VEC2: u32 = 35667;
pub const GL_INT_VEC3: u32 = 35668;
pub const GL_INT_VEC4: u32 = 35669;
pub const GL_BOOL: u32 = 35670;
pub const GL_BOOL_VEC2: u32 = 35671;
pub const GL_BOOL_VEC3: u32 = 35672;
pub const GL_BOOL_VEC4: u32 = 35673;
pub const GL_FLOAT_MAT2: u32 = 35674;
pub const GL_FLOAT_MAT3: u32 = 35675;
pub const GL_FLOAT_MAT4: u32 = 35676;
pub const GL_SAMPLER_1D: u32 = 35677;
pub const GL_SAMPLER_2D: u32 = 35678;
pub const GL_SAMPLER_3D: u32 = 35679;
pub const GL_SAMPLER_CUBE: u32 = 35680;
pub const GL_SAMPLER_1D_SHADOW: u32 = 35681;
pub const GL_SAMPLER_2D_SHADOW: u32 = 35682;
pub const GL_DELETE_STATUS: u32 = 35712;
pub const GL_COMPILE_STATUS: u32 = 35713;
pub const GL_LINK_STATUS: u32 = 35714;
pub const GL_VALIDATE_STATUS: u32 = 35715;
pub const GL_INFO_LOG_LENGTH: u32 = 35716;
pub const GL_ATTACHED_SHADERS: u32 = 35717;
pub const GL_ACTIVE_UNIFORMS: u32 = 35718;
pub const GL_ACTIVE_UNIFORM_MAX_LENGTH: u32 = 35719;
pub const GL_SHADER_SOURCE_LENGTH: u32 = 35720;
pub const GL_ACTIVE_ATTRIBUTES: u32 = 35721;
pub const GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: u32 = 35722;
pub const GL_FRAGMENT_SHADER_DERIVATIVE_HINT: u32 = 35723;
pub const GL_SHADING_LANGUAGE_VERSION: u32 = 35724;
pub const GL_CURRENT_PROGRAM: u32 = 35725;
pub const GL_POINT_SPRITE_COORD_ORIGIN: u32 = 36000;
pub const GL_LOWER_LEFT: u32 = 36001;
pub const GL_UPPER_LEFT: u32 = 36002;
pub const GL_STENCIL_BACK_REF: u32 = 36003;
pub const GL_STENCIL_BACK_VALUE_MASK: u32 = 36004;
pub const GL_STENCIL_BACK_WRITEMASK: u32 = 36005;
pub const GL_PIXEL_PACK_BUFFER: u32 = 35051;
pub const GL_PIXEL_UNPACK_BUFFER: u32 = 35052;
pub const GL_PIXEL_PACK_BUFFER_BINDING: u32 = 35053;
pub const GL_PIXEL_UNPACK_BUFFER_BINDING: u32 = 35055;
pub const GL_FLOAT_MAT2x3: u32 = 35685;
pub const GL_FLOAT_MAT2x4: u32 = 35686;
pub const GL_FLOAT_MAT3x2: u32 = 35687;
pub const GL_FLOAT_MAT3x4: u32 = 35688;
pub const GL_FLOAT_MAT4x2: u32 = 35689;
pub const GL_FLOAT_MAT4x3: u32 = 35690;
pub const GL_SRGB: u32 = 35904;
pub const GL_SRGB8: u32 = 35905;
pub const GL_SRGB_ALPHA: u32 = 35906;
pub const GL_SRGB8_ALPHA8: u32 = 35907;
pub const GL_COMPRESSED_SRGB: u32 = 35912;
pub const GL_COMPRESSED_SRGB_ALPHA: u32 = 35913;
pub const GL_COMPARE_REF_TO_TEXTURE: u32 = 34894;
pub const GL_CLIP_DISTANCE0: u32 = 12288;
pub const GL_CLIP_DISTANCE1: u32 = 12289;
pub const GL_CLIP_DISTANCE2: u32 = 12290;
pub const GL_CLIP_DISTANCE3: u32 = 12291;
pub const GL_CLIP_DISTANCE4: u32 = 12292;
pub const GL_CLIP_DISTANCE5: u32 = 12293;
pub const GL_CLIP_DISTANCE6: u32 = 12294;
pub const GL_CLIP_DISTANCE7: u32 = 12295;
pub const GL_MAX_CLIP_DISTANCES: u32 = 3378;
pub const GL_MAJOR_VERSION: u32 = 33307;
pub const GL_MINOR_VERSION: u32 = 33308;
pub const GL_NUM_EXTENSIONS: u32 = 33309;
pub const GL_CONTEXT_FLAGS: u32 = 33310;
pub const GL_COMPRESSED_RED: u32 = 33317;
pub const GL_COMPRESSED_RG: u32 = 33318;
pub const GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: u32 = 1;
pub const GL_RGBA32F: u32 = 34836;
pub const GL_RGB32F: u32 = 34837;
pub const GL_RGBA16F: u32 = 34842;
pub const GL_RGB16F: u32 = 34843;
pub const GL_VERTEX_ATTRIB_ARRAY_INTEGER: u32 = 35069;
pub const GL_MAX_ARRAY_TEXTURE_LAYERS: u32 = 35071;
pub const GL_MIN_PROGRAM_TEXEL_OFFSET: u32 = 35076;
pub const GL_MAX_PROGRAM_TEXEL_OFFSET: u32 = 35077;
pub const GL_CLAMP_READ_COLOR: u32 = 35100;
pub const GL_FIXED_ONLY: u32 = 35101;
pub const GL_MAX_VARYING_COMPONENTS: u32 = 35659;
pub const GL_TEXTURE_1D_ARRAY: u32 = 35864;
pub const GL_PROXY_TEXTURE_1D_ARRAY: u32 = 35865;
pub const GL_TEXTURE_2D_ARRAY: u32 = 35866;
pub const GL_PROXY_TEXTURE_2D_ARRAY: u32 = 35867;
pub const GL_TEXTURE_BINDING_1D_ARRAY: u32 = 35868;
pub const GL_TEXTURE_BINDING_2D_ARRAY: u32 = 35869;
pub const GL_R11F_G11F_B10F: u32 = 35898;
pub const GL_UNSIGNED_INT_10F_11F_11F_REV: u32 = 35899;
pub const GL_RGB9_E5: u32 = 35901;
pub const GL_UNSIGNED_INT_5_9_9_9_REV: u32 = 35902;
pub const GL_TEXTURE_SHARED_SIZE: u32 = 35903;
pub const GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: u32 = 35958;
pub const GL_TRANSFORM_FEEDBACK_BUFFER_MODE: u32 = 35967;
pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: u32 = 35968;
pub const GL_TRANSFORM_FEEDBACK_VARYINGS: u32 = 35971;
pub const GL_TRANSFORM_FEEDBACK_BUFFER_START: u32 = 35972;
pub const GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: u32 = 35973;
pub const GL_PRIMITIVES_GENERATED: u32 = 35975;
pub const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: u32 = 35976;
pub const GL_RASTERIZER_DISCARD: u32 = 35977;
pub const GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: u32 = 35978;
pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: u32 = 35979;
pub const GL_INTERLEAVED_ATTRIBS: u32 = 35980;
pub const GL_SEPARATE_ATTRIBS: u32 = 35981;
pub const GL_TRANSFORM_FEEDBACK_BUFFER: u32 = 35982;
pub const GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: u32 = 35983;
pub const GL_RGBA32UI: u32 = 36208;
pub const GL_RGB32UI: u32 = 36209;
pub const GL_RGBA16UI: u32 = 36214;
pub const GL_RGB16UI: u32 = 36215;
pub const GL_RGBA8UI: u32 = 36220;
pub const GL_RGB8UI: u32 = 36221;
pub const GL_RGBA32I: u32 = 36226;
pub const GL_RGB32I: u32 = 36227;
pub const GL_RGBA16I: u32 = 36232;
pub const GL_RGB16I: u32 = 36233;
pub const GL_RGBA8I: u32 = 36238;
pub const GL_RGB8I: u32 = 36239;
pub const GL_RED_INTEGER: u32 = 36244;
pub const GL_GREEN_INTEGER: u32 = 36245;
pub const GL_BLUE_INTEGER: u32 = 36246;
pub const GL_RGB_INTEGER: u32 = 36248;
pub const GL_RGBA_INTEGER: u32 = 36249;
pub const GL_BGR_INTEGER: u32 = 36250;
pub const GL_BGRA_INTEGER: u32 = 36251;
pub const GL_SAMPLER_1D_ARRAY: u32 = 36288;
pub const GL_SAMPLER_2D_ARRAY: u32 = 36289;
pub const GL_SAMPLER_1D_ARRAY_SHADOW: u32 = 36291;
pub const GL_SAMPLER_2D_ARRAY_SHADOW: u32 = 36292;
pub const GL_SAMPLER_CUBE_SHADOW: u32 = 36293;
pub const GL_UNSIGNED_INT_VEC2: u32 = 36294;
pub const GL_UNSIGNED_INT_VEC3: u32 = 36295;
pub const GL_UNSIGNED_INT_VEC4: u32 = 36296;
pub const GL_INT_SAMPLER_1D: u32 = 36297;
pub const GL_INT_SAMPLER_2D: u32 = 36298;
pub const GL_INT_SAMPLER_3D: u32 = 36299;
pub const GL_INT_SAMPLER_CUBE: u32 = 36300;
pub const GL_INT_SAMPLER_1D_ARRAY: u32 = 36302;
pub const GL_INT_SAMPLER_2D_ARRAY: u32 = 36303;
pub const GL_UNSIGNED_INT_SAMPLER_1D: u32 = 36305;
pub const GL_UNSIGNED_INT_SAMPLER_2D: u32 = 36306;
pub const GL_UNSIGNED_INT_SAMPLER_3D: u32 = 36307;
pub const GL_UNSIGNED_INT_SAMPLER_CUBE: u32 = 36308;
pub const GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: u32 = 36310;
pub const GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: u32 = 36311;
pub const GL_QUERY_WAIT: u32 = 36371;
pub const GL_QUERY_NO_WAIT: u32 = 36372;
pub const GL_QUERY_BY_REGION_WAIT: u32 = 36373;
pub const GL_QUERY_BY_REGION_NO_WAIT: u32 = 36374;
pub const GL_BUFFER_ACCESS_FLAGS: u32 = 37151;
pub const GL_BUFFER_MAP_LENGTH: u32 = 37152;
pub const GL_BUFFER_MAP_OFFSET: u32 = 37153;
pub const GL_SAMPLER_2D_RECT: u32 = 35683;
pub const GL_SAMPLER_2D_RECT_SHADOW: u32 = 35684;
pub const GL_SAMPLER_BUFFER: u32 = 36290;
pub const GL_INT_SAMPLER_2D_RECT: u32 = 36301;
pub const GL_INT_SAMPLER_BUFFER: u32 = 36304;
pub const GL_UNSIGNED_INT_SAMPLER_2D_RECT: u32 = 36309;
pub const GL_UNSIGNED_INT_SAMPLER_BUFFER: u32 = 36312;
pub const GL_TEXTURE_BUFFER: u32 = 35882;
pub const GL_MAX_TEXTURE_BUFFER_SIZE: u32 = 35883;
pub const GL_TEXTURE_BINDING_BUFFER: u32 = 35884;
pub const GL_TEXTURE_BUFFER_DATA_STORE_BINDING: u32 = 35885;
pub const GL_TEXTURE_RECTANGLE: u32 = 34037;
pub const GL_TEXTURE_BINDING_RECTANGLE: u32 = 34038;
pub const GL_PROXY_TEXTURE_RECTANGLE: u32 = 34039;
pub const GL_MAX_RECTANGLE_TEXTURE_SIZE: u32 = 34040;
pub const GL_R8_SNORM: u32 = 36756;
pub const GL_RG8_SNORM: u32 = 36757;
pub const GL_RGB8_SNORM: u32 = 36758;
pub const GL_RGBA8_SNORM: u32 = 36759;
pub const GL_R16_SNORM: u32 = 36760;
pub const GL_RG16_SNORM: u32 = 36761;
pub const GL_RGB16_SNORM: u32 = 36762;
pub const GL_RGBA16_SNORM: u32 = 36763;
pub const GL_SIGNED_NORMALIZED: u32 = 36764;
pub const GL_PRIMITIVE_RESTART: u32 = 36765;
pub const GL_PRIMITIVE_RESTART_INDEX: u32 = 36766;
pub const GL_CONTEXT_CORE_PROFILE_BIT: u32 = 1;
pub const GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: u32 = 2;
pub const GL_LINES_ADJACENCY: u32 = 10;
pub const GL_LINE_STRIP_ADJACENCY: u32 = 11;
pub const GL_TRIANGLES_ADJACENCY: u32 = 12;
pub const GL_TRIANGLE_STRIP_ADJACENCY: u32 = 13;
pub const GL_PROGRAM_POINT_SIZE: u32 = 34370;
pub const GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: u32 = 35881;
pub const GL_FRAMEBUFFER_ATTACHMENT_LAYERED: u32 = 36263;
pub const GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: u32 = 36264;
pub const GL_GEOMETRY_SHADER: u32 = 36313;
pub const GL_GEOMETRY_VERTICES_OUT: u32 = 35094;
pub const GL_GEOMETRY_INPUT_TYPE: u32 = 35095;
pub const GL_GEOMETRY_OUTPUT_TYPE: u32 = 35096;
pub const GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: u32 = 36319;
pub const GL_MAX_GEOMETRY_OUTPUT_VERTICES: u32 = 36320;
pub const GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: u32 = 36321;
pub const GL_MAX_VERTEX_OUTPUT_COMPONENTS: u32 = 37154;
pub const GL_MAX_GEOMETRY_INPUT_COMPONENTS: u32 = 37155;
pub const GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: u32 = 37156;
pub const GL_MAX_FRAGMENT_INPUT_COMPONENTS: u32 = 37157;
pub const GL_CONTEXT_PROFILE_MASK: u32 = 37158;
pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR: u32 = 35070;
pub const GL_SAMPLE_SHADING: u32 = 35894;
pub const GL_MIN_SAMPLE_SHADING_VALUE: u32 = 35895;
pub const GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: u32 = 36446;
pub const GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: u32 = 36447;
pub const GL_TEXTURE_CUBE_MAP_ARRAY: u32 = 36873;
pub const GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: u32 = 36874;
pub const GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: u32 = 36875;
pub const GL_SAMPLER_CUBE_MAP_ARRAY: u32 = 36876;
pub const GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: u32 = 36877;
pub const GL_INT_SAMPLER_CUBE_MAP_ARRAY: u32 = 36878;
pub const GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: u32 = 36879;
pub const GL_DEPTH_COMPONENT32F: u32 = 36012;
pub const GL_DEPTH32F_STENCIL8: u32 = 36013;
pub const GL_FLOAT_32_UNSIGNED_INT_24_8_REV: u32 = 36269;
pub const GL_INVALID_FRAMEBUFFER_OPERATION: u32 = 1286;
pub const GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: u32 = 33296;
pub const GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: u32 = 33297;
pub const GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: u32 = 33298;
pub const GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: u32 = 33299;
pub const GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: u32 = 33300;
pub const GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: u32 = 33301;
pub const GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: u32 = 33302;
pub const GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: u32 = 33303;
pub const GL_FRAMEBUFFER_DEFAULT: u32 = 33304;
pub const GL_FRAMEBUFFER_UNDEFINED: u32 = 33305;
pub const GL_DEPTH_STENCIL_ATTACHMENT: u32 = 33306;
pub const GL_MAX_RENDERBUFFER_SIZE: u32 = 34024;
pub const GL_DEPTH_STENCIL: u32 = 34041;
pub const GL_UNSIGNED_INT_24_8: u32 = 34042;
pub const GL_DEPTH24_STENCIL8: u32 = 35056;
pub const GL_TEXTURE_STENCIL_SIZE: u32 = 35057;
pub const GL_TEXTURE_RED_TYPE: u32 = 35856;
pub const GL_TEXTURE_GREEN_TYPE: u32 = 35857;
pub const GL_TEXTURE_BLUE_TYPE: u32 = 35858;
pub const GL_TEXTURE_ALPHA_TYPE: u32 = 35859;
pub const GL_TEXTURE_DEPTH_TYPE: u32 = 35862;
pub const GL_UNSIGNED_NORMALIZED: u32 = 35863;
pub const GL_FRAMEBUFFER_BINDING: u32 = 36006;
pub const GL_DRAW_FRAMEBUFFER_BINDING: u32 = 36006;
pub const GL_RENDERBUFFER_BINDING: u32 = 36007;
pub const GL_READ_FRAMEBUFFER: u32 = 36008;
pub const GL_DRAW_FRAMEBUFFER: u32 = 36009;
pub const GL_READ_FRAMEBUFFER_BINDING: u32 = 36010;
pub const GL_RENDERBUFFER_SAMPLES: u32 = 36011;
pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: u32 = 36048;
pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: u32 = 36049;
pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: u32 = 36050;
pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: u32 = 36051;
pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: u32 = 36052;
pub const GL_FRAMEBUFFER_COMPLETE: u32 = 36053;
pub const GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: u32 = 36054;
pub const GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: u32 = 36055;
pub const GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: u32 = 36059;
pub const GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: u32 = 36060;
pub const GL_FRAMEBUFFER_UNSUPPORTED: u32 = 36061;
pub const GL_MAX_COLOR_ATTACHMENTS: u32 = 36063;
pub const GL_COLOR_ATTACHMENT0: u32 = 36064;
pub const GL_COLOR_ATTACHMENT1: u32 = 36065;
pub const GL_COLOR_ATTACHMENT2: u32 = 36066;
pub const GL_COLOR_ATTACHMENT3: u32 = 36067;
pub const GL_COLOR_ATTACHMENT4: u32 = 36068;
pub const GL_COLOR_ATTACHMENT5: u32 = 36069;
pub const GL_COLOR_ATTACHMENT6: u32 = 36070;
pub const GL_COLOR_ATTACHMENT7: u32 = 36071;
pub const GL_COLOR_ATTACHMENT8: u32 = 36072;
pub const GL_COLOR_ATTACHMENT9: u32 = 36073;
pub const GL_COLOR_ATTACHMENT10: u32 = 36074;
pub const GL_COLOR_ATTACHMENT11: u32 = 36075;
pub const GL_COLOR_ATTACHMENT12: u32 = 36076;
pub const GL_COLOR_ATTACHMENT13: u32 = 36077;
pub const GL_COLOR_ATTACHMENT14: u32 = 36078;
pub const GL_COLOR_ATTACHMENT15: u32 = 36079;
pub const GL_DEPTH_ATTACHMENT: u32 = 36096;
pub const GL_STENCIL_ATTACHMENT: u32 = 36128;
pub const GL_FRAMEBUFFER: u32 = 36160;
pub const GL_RENDERBUFFER: u32 = 36161;
pub const GL_RENDERBUFFER_WIDTH: u32 = 36162;
pub const GL_RENDERBUFFER_HEIGHT: u32 = 36163;
pub const GL_RENDERBUFFER_INTERNAL_FORMAT: u32 = 36164;
pub const GL_STENCIL_INDEX1: u32 = 36166;
pub const GL_STENCIL_INDEX4: u32 = 36167;
pub const GL_STENCIL_INDEX8: u32 = 36168;
pub const GL_STENCIL_INDEX16: u32 = 36169;
pub const GL_RENDERBUFFER_RED_SIZE: u32 = 36176;
pub const GL_RENDERBUFFER_GREEN_SIZE: u32 = 36177;
pub const GL_RENDERBUFFER_BLUE_SIZE: u32 = 36178;
pub const GL_RENDERBUFFER_ALPHA_SIZE: u32 = 36179;
pub const GL_RENDERBUFFER_DEPTH_SIZE: u32 = 36180;
pub const GL_RENDERBUFFER_STENCIL_SIZE: u32 = 36181;
pub const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: u32 = 36182;
pub const GL_MAX_SAMPLES: u32 = 36183;
pub const GL_FRAMEBUFFER_SRGB: u32 = 36281;
pub const GL_HALF_FLOAT: u32 = 5131;
pub const GL_MAP_READ_BIT: u32 = 1;
pub const GL_MAP_WRITE_BIT: u32 = 2;
pub const GL_MAP_INVALIDATE_RANGE_BIT: u32 = 4;
pub const GL_MAP_INVALIDATE_BUFFER_BIT: u32 = 8;
pub const GL_MAP_FLUSH_EXPLICIT_BIT: u32 = 16;
pub const GL_MAP_UNSYNCHRONIZED_BIT: u32 = 32;
pub const GL_COMPRESSED_RED_RGTC1: u32 = 36283;
pub const GL_COMPRESSED_SIGNED_RED_RGTC1: u32 = 36284;
pub const GL_COMPRESSED_RG_RGTC2: u32 = 36285;
pub const GL_COMPRESSED_SIGNED_RG_RGTC2: u32 = 36286;
pub const GL_RG: u32 = 33319;
pub const GL_RG_INTEGER: u32 = 33320;
pub const GL_R8: u32 = 33321;
pub const GL_R16: u32 = 33322;
pub const GL_RG8: u32 = 33323;
pub const GL_RG16: u32 = 33324;
pub const GL_R16F: u32 = 33325;
pub const GL_R32F: u32 = 33326;
pub const GL_RG16F: u32 = 33327;
pub const GL_RG32F: u32 = 33328;
pub const GL_R8I: u32 = 33329;
pub const GL_R8UI: u32 = 33330;
pub const GL_R16I: u32 = 33331;
pub const GL_R16UI: u32 = 33332;
pub const GL_R32I: u32 = 33333;
pub const GL_R32UI: u32 = 33334;
pub const GL_RG8I: u32 = 33335;
pub const GL_RG8UI: u32 = 33336;
pub const GL_RG16I: u32 = 33337;
pub const GL_RG16UI: u32 = 33338;
pub const GL_RG32I: u32 = 33339;
pub const GL_RG32UI: u32 = 33340;
pub const GL_VERTEX_ARRAY_BINDING: u32 = 34229;
pub const GL_UNIFORM_BUFFER: u32 = 35345;
pub const GL_UNIFORM_BUFFER_BINDING: u32 = 35368;
pub const GL_UNIFORM_BUFFER_START: u32 = 35369;
pub const GL_UNIFORM_BUFFER_SIZE: u32 = 35370;
pub const GL_MAX_VERTEX_UNIFORM_BLOCKS: u32 = 35371;
pub const GL_MAX_GEOMETRY_UNIFORM_BLOCKS: u32 = 35372;
pub const GL_MAX_FRAGMENT_UNIFORM_BLOCKS: u32 = 35373;
pub const GL_MAX_COMBINED_UNIFORM_BLOCKS: u32 = 35374;
pub const GL_MAX_UNIFORM_BUFFER_BINDINGS: u32 = 35375;
pub const GL_MAX_UNIFORM_BLOCK_SIZE: u32 = 35376;
pub const GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: u32 = 35377;
pub const GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: u32 = 35378;
pub const GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: u32 = 35379;
pub const GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: u32 = 35380;
pub const GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: u32 = 35381;
pub const GL_ACTIVE_UNIFORM_BLOCKS: u32 = 35382;
pub const GL_UNIFORM_TYPE: u32 = 35383;
pub const GL_UNIFORM_SIZE: u32 = 35384;
pub const GL_UNIFORM_NAME_LENGTH: u32 = 35385;
pub const GL_UNIFORM_BLOCK_INDEX: u32 = 35386;
pub const GL_UNIFORM_OFFSET: u32 = 35387;
pub const GL_UNIFORM_ARRAY_STRIDE: u32 = 35388;
pub const GL_UNIFORM_MATRIX_STRIDE: u32 = 35389;
pub const GL_UNIFORM_IS_ROW_MAJOR: u32 = 35390;
pub const GL_UNIFORM_BLOCK_BINDING: u32 = 35391;
pub const GL_UNIFORM_BLOCK_DATA_SIZE: u32 = 35392;
pub const GL_UNIFORM_BLOCK_NAME_LENGTH: u32 = 35393;
pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: u32 = 35394;
pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: u32 = 35395;
pub const GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: u32 = 35396;
pub const GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: u32 = 35397;
pub const GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: u32 = 35398;
pub const GL_INVALID_INDEX: u32 = 4294967295;
pub const GL_COPY_READ_BUFFER: u32 = 36662;
pub const GL_COPY_WRITE_BUFFER: u32 = 36663;
pub const GL_DEPTH_CLAMP: u32 = 34383;
pub const GL_FIRST_VERTEX_CONVENTION: u32 = 36429;
pub const GL_LAST_VERTEX_CONVENTION: u32 = 36430;
pub const GL_PROVOKING_VERTEX: u32 = 36431;
pub const GL_TEXTURE_CUBE_MAP_SEAMLESS: u32 = 34895;
pub const GL_MAX_SERVER_WAIT_TIMEOUT: u32 = 37137;
pub const GL_OBJECT_TYPE: u32 = 37138;
pub const GL_SYNC_CONDITION: u32 = 37139;
pub const GL_SYNC_STATUS: u32 = 37140;
pub const GL_SYNC_FLAGS: u32 = 37141;
pub const GL_SYNC_FENCE: u32 = 37142;
pub const GL_SYNC_GPU_COMMANDS_COMPLETE: u32 = 37143;
pub const GL_UNSIGNALED: u32 = 37144;
pub const GL_SIGNALED: u32 = 37145;
pub const GL_ALREADY_SIGNALED: u32 = 37146;
pub const GL_TIMEOUT_EXPIRED: u32 = 37147;
pub const GL_CONDITION_SATISFIED: u32 = 37148;
pub const GL_WAIT_FAILED: u32 = 37149;
pub const GL_SYNC_FLUSH_COMMANDS_BIT: u32 = 1;
pub const GL_TIMEOUT_IGNORED: i32 = -1;
pub const GL_SAMPLE_POSITION: u32 = 36432;
pub const GL_SAMPLE_MASK: u32 = 36433;
pub const GL_SAMPLE_MASK_VALUE: u32 = 36434;
pub const GL_MAX_SAMPLE_MASK_WORDS: u32 = 36441;
pub const GL_TEXTURE_2D_MULTISAMPLE: u32 = 37120;
pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE: u32 = 37121;
pub const GL_TEXTURE_2D_MULTISAMPLE_ARRAY: u32 = 37122;
pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: u32 = 37123;
pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE: u32 = 37124;
pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: u32 = 37125;
pub const GL_TEXTURE_SAMPLES: u32 = 37126;
pub const GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: u32 = 37127;
pub const GL_SAMPLER_2D_MULTISAMPLE: u32 = 37128;
pub const GL_INT_SAMPLER_2D_MULTISAMPLE: u32 = 37129;
pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: u32 = 37130;
pub const GL_SAMPLER_2D_MULTISAMPLE_ARRAY: u32 = 37131;
pub const GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: u32 = 37132;
pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: u32 = 37133;
pub const GL_MAX_COLOR_TEXTURE_SAMPLES: u32 = 37134;
pub const GL_MAX_DEPTH_TEXTURE_SAMPLES: u32 = 37135;
pub const GL_MAX_INTEGER_SAMPLES: u32 = 37136;
pub const GL_SRC1_COLOR: u32 = 35065;
pub const GL_SRC1_ALPHA: u32 = 34185;
pub const GL_ONE_MINUS_SRC1_COLOR: u32 = 35066;
pub const GL_ONE_MINUS_SRC1_ALPHA: u32 = 35067;
pub const GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: u32 = 35068;
pub const GL_ANY_SAMPLES_PASSED: u32 = 35887;
pub const GL_SAMPLER_BINDING: u32 = 35097;
pub const GL_RGB10_A2UI: u32 = 36975;
pub const GL_TEXTURE_SWIZZLE_R: u32 = 36418;
pub const GL_TEXTURE_SWIZZLE_G: u32 = 36419;
pub const GL_TEXTURE_SWIZZLE_B: u32 = 36420;
pub const GL_TEXTURE_SWIZZLE_A: u32 = 36421;
pub const GL_TEXTURE_SWIZZLE_RGBA: u32 = 36422;
pub const GL_TIME_ELAPSED: u32 = 35007;
pub const GL_TIMESTAMP: u32 = 36392;
pub const GL_INT_2_10_10_10_REV: u32 = 36255;
pub const GL_DRAW_INDIRECT_BUFFER: u32 = 36671;
pub const GL_DRAW_INDIRECT_BUFFER_BINDING: u32 = 36675;
pub const GL_GEOMETRY_SHADER_INVOCATIONS: u32 = 34943;
pub const GL_MAX_GEOMETRY_SHADER_INVOCATIONS: u32 = 36442;
pub const GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: u32 = 36443;
pub const GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: u32 = 36444;
pub const GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: u32 = 36445;
pub const GL_DOUBLE_VEC2: u32 = 36860;
pub const GL_DOUBLE_VEC3: u32 = 36861;
pub const GL_DOUBLE_VEC4: u32 = 36862;
pub const GL_DOUBLE_MAT2: u32 = 36678;
pub const GL_DOUBLE_MAT3: u32 = 36679;
pub const GL_DOUBLE_MAT4: u32 = 36680;
pub const GL_DOUBLE_MAT2x3: u32 = 36681;
pub const GL_DOUBLE_MAT2x4: u32 = 36682;
pub const GL_DOUBLE_MAT3x2: u32 = 36683;
pub const GL_DOUBLE_MAT3x4: u32 = 36684;
pub const GL_DOUBLE_MAT4x2: u32 = 36685;
pub const GL_DOUBLE_MAT4x3: u32 = 36686;
pub const GL_ACTIVE_SUBROUTINES: u32 = 36325;
pub const GL_ACTIVE_SUBROUTINE_UNIFORMS: u32 = 36326;
pub const GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: u32 = 36423;
pub const GL_ACTIVE_SUBROUTINE_MAX_LENGTH: u32 = 36424;
pub const GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: u32 = 36425;
pub const GL_MAX_SUBROUTINES: u32 = 36327;
pub const GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: u32 = 36328;
pub const GL_NUM_COMPATIBLE_SUBROUTINES: u32 = 36426;
pub const GL_COMPATIBLE_SUBROUTINES: u32 = 36427;
pub const GL_PATCHES: u32 = 14;
pub const GL_PATCH_VERTICES: u32 = 36466;
pub const GL_PATCH_DEFAULT_INNER_LEVEL: u32 = 36467;
pub const GL_PATCH_DEFAULT_OUTER_LEVEL: u32 = 36468;
pub const GL_TESS_CONTROL_OUTPUT_VERTICES: u32 = 36469;
pub const GL_TESS_GEN_MODE: u32 = 36470;
pub const GL_TESS_GEN_SPACING: u32 = 36471;
pub const GL_TESS_GEN_VERTEX_ORDER: u32 = 36472;
pub const GL_TESS_GEN_POINT_MODE: u32 = 36473;
pub const GL_QUADS: u32 = 7;
pub const GL_ISOLINES: u32 = 36474;
pub const GL_FRACTIONAL_ODD: u32 = 36475;
pub const GL_FRACTIONAL_EVEN: u32 = 36476;
pub const GL_MAX_PATCH_VERTICES: u32 = 36477;
pub const GL_MAX_TESS_GEN_LEVEL: u32 = 36478;
pub const GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: u32 = 36479;
pub const GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: u32 = 36480;
pub const GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: u32 = 36481;
pub const GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: u32 = 36482;
pub const GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: u32 = 36483;
pub const GL_MAX_TESS_PATCH_COMPONENTS: u32 = 36484;
pub const GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: u32 = 36485;
pub const GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: u32 = 36486;
pub const GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: u32 = 36489;
pub const GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: u32 = 36490;
pub const GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: u32 = 34924;
pub const GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: u32 = 34925;
pub const GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: u32 = 36382;
pub const GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: u32 = 36383;
pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: u32 = 34032;
pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: u32 = 34033;
pub const GL_TESS_EVALUATION_SHADER: u32 = 36487;
pub const GL_TESS_CONTROL_SHADER: u32 = 36488;
pub const GL_TRANSFORM_FEEDBACK: u32 = 36386;
pub const GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: u32 = 36387;
pub const GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: u32 = 36388;
pub const GL_TRANSFORM_FEEDBACK_BINDING: u32 = 36389;
pub const GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: u32 = 36464;
pub const GL_MAX_VERTEX_STREAMS: u32 = 36465;
pub const GL_FIXED: u32 = 5132;
pub const GL_IMPLEMENTATION_COLOR_READ_TYPE: u32 = 35738;
pub const GL_IMPLEMENTATION_COLOR_READ_FORMAT: u32 = 35739;
pub const GL_LOW_FLOAT: u32 = 36336;
pub const GL_MEDIUM_FLOAT: u32 = 36337;
pub const GL_HIGH_FLOAT: u32 = 36338;
pub const GL_LOW_INT: u32 = 36339;
pub const GL_MEDIUM_INT: u32 = 36340;
pub const GL_HIGH_INT: u32 = 36341;
pub const GL_SHADER_COMPILER: u32 = 36346;
pub const GL_SHADER_BINARY_FORMATS: u32 = 36344;
pub const GL_NUM_SHADER_BINARY_FORMATS: u32 = 36345;
pub const GL_MAX_VERTEX_UNIFORM_VECTORS: u32 = 36347;
pub const GL_MAX_VARYING_VECTORS: u32 = 36348;
pub const GL_MAX_FRAGMENT_UNIFORM_VECTORS: u32 = 36349;
pub const GL_RGB565: u32 = 36194;
pub const GL_PROGRAM_BINARY_RETRIEVABLE_HINT: u32 = 33367;
pub const GL_PROGRAM_BINARY_LENGTH: u32 = 34625;
pub const GL_NUM_PROGRAM_BINARY_FORMATS: u32 = 34814;
pub const GL_PROGRAM_BINARY_FORMATS: u32 = 34815;
pub const GL_VERTEX_SHADER_BIT: u32 = 1;
pub const GL_FRAGMENT_SHADER_BIT: u32 = 2;
pub const GL_GEOMETRY_SHADER_BIT: u32 = 4;
pub const GL_TESS_CONTROL_SHADER_BIT: u32 = 8;
pub const GL_TESS_EVALUATION_SHADER_BIT: u32 = 16;
pub const GL_ALL_SHADER_BITS: u32 = 4294967295;
pub const GL_PROGRAM_SEPARABLE: u32 = 33368;
pub const GL_ACTIVE_PROGRAM: u32 = 33369;
pub const GL_PROGRAM_PIPELINE_BINDING: u32 = 33370;
pub const GL_MAX_VIEWPORTS: u32 = 33371;
pub const GL_VIEWPORT_SUBPIXEL_BITS: u32 = 33372;
pub const GL_VIEWPORT_BOUNDS_RANGE: u32 = 33373;
pub const GL_LAYER_PROVOKING_VERTEX: u32 = 33374;
pub const GL_VIEWPORT_INDEX_PROVOKING_VERTEX: u32 = 33375;
pub const GL_UNDEFINED_VERTEX: u32 = 33376;
pub const GL_VERSION_1_0: u32 = 1;
pub const GL_VERSION_1_1: u32 = 1;
pub const GL_VERSION_1_2: u32 = 1;
pub const GL_VERSION_1_3: u32 = 1;
pub const GL_VERSION_1_4: u32 = 1;
pub const GL_VERSION_1_5: u32 = 1;
pub const GL_VERSION_2_0: u32 = 1;
pub const GL_VERSION_2_1: u32 = 1;
pub const GL_VERSION_3_0: u32 = 1;
pub const GL_VERSION_3_1: u32 = 1;
pub const GL_VERSION_3_2: u32 = 1;
pub const GL_VERSION_3_3: u32 = 1;
pub const GL_VERSION_4_0: u32 = 1;
pub const GL_VERSION_4_1: u32 = 1;
pub const GL_ARB_depth_buffer_float: u32 = 1;
pub const GL_ARB_framebuffer_object: u32 = 1;
pub const GL_ARB_framebuffer_sRGB: u32 = 1;
pub const GL_ARB_half_float_vertex: u32 = 1;
pub const GL_ARB_map_buffer_range: u32 = 1;
pub const GL_ARB_texture_compression_rgtc: u32 = 1;
pub const GL_ARB_texture_rg: u32 = 1;
pub const GL_ARB_vertex_array_object: u32 = 1;
pub const GL_ARB_uniform_buffer_object: u32 = 1;
pub const GL_ARB_copy_buffer: u32 = 1;
pub const GL_ARB_depth_clamp: u32 = 1;
pub const GL_ARB_draw_elements_base_vertex: u32 = 1;
pub const GL_ARB_fragment_coord_conventions: u32 = 1;
pub const GL_ARB_provoking_vertex: u32 = 1;
pub const GL_ARB_seamless_cube_map: u32 = 1;
pub const GL_ARB_sync: u32 = 1;
pub const GL_ARB_texture_multisample: u32 = 1;
pub const GL_ARB_vertex_array_bgra: u32 = 1;
pub const GL_ARB_texture_query_lod: u32 = 1;
pub const GL_ARB_blend_func_extended: u32 = 1;
pub const GL_ARB_explicit_attrib_location: u32 = 1;
pub const GL_ARB_occlusion_query2: u32 = 1;
pub const GL_ARB_sampler_objects: u32 = 1;
pub const GL_ARB_shader_bit_encoding: u32 = 1;
pub const GL_ARB_texture_rgb10_a2ui: u32 = 1;
pub const GL_ARB_texture_swizzle: u32 = 1;
pub const GL_ARB_timer_query: u32 = 1;
pub const GL_ARB_vertex_type_2_10_10_10_rev: u32 = 1;
pub const GL_ARB_draw_indirect: u32 = 1;
pub const GL_ARB_gpu_shader5: u32 = 1;
pub const GL_ARB_gpu_shader_fp64: u32 = 1;
pub const GL_ARB_shader_subroutine: u32 = 1;
pub const GL_ARB_tessellation_shader: u32 = 1;
pub const GL_ARB_texture_buffer_object_rgb32: u32 = 1;
pub const GL_ARB_transform_feedback2: u32 = 1;
pub const GL_ARB_transform_feedback3: u32 = 1;
pub const GL_ARB_ES2_compatibility: u32 = 1;
pub const GL_ARB_get_program_binary: u32 = 1;
pub const GL_ARB_separate_shader_objects: u32 = 1;
pub const GL_ARB_shader_precision: u32 = 1;
pub const GL_ARB_vertex_attrib_64bit: u32 = 1;
pub const GL_ARB_viewport_array: u32 = 1;
pub type int_least8_t = i8;
pub type int_least16_t = i16;
pub type int_least32_t = i32;
pub type int_least64_t = i64;
pub type uint_least8_t = u8;
pub type uint_least16_t = u16;
pub type uint_least32_t = u32;
pub type uint_least64_t = u64;
pub type int_fast8_t = i8;
pub type int_fast16_t = i16;
pub type int_fast32_t = i32;
pub type int_fast64_t = i64;
pub type uint_fast8_t = u8;
pub type uint_fast16_t = u16;
pub type uint_fast32_t = u32;
pub type uint_fast64_t = u64;
pub type __int8_t = ::std::os::raw::c_schar;
pub type __uint8_t = ::std::os::raw::c_uchar;
pub type __int16_t = ::std::os::raw::c_short;
pub type __uint16_t = ::std::os::raw::c_ushort;
pub type __int32_t = ::std::os::raw::c_int;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __int64_t = ::std::os::raw::c_longlong;
pub type __uint64_t = ::std::os::raw::c_ulonglong;
pub type __darwin_intptr_t = ::std::os::raw::c_long;
pub type __darwin_natural_t = ::std::os::raw::c_uint;
pub type __darwin_ct_rune_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Copy, Clone)]
pub union __mbstate_t {
    pub __mbstate8: [::std::os::raw::c_char; 128usize],
    pub _mbstateL: ::std::os::raw::c_longlong,
    _bindgen_union_align: [u64; 16usize],
}
pub type __darwin_mbstate_t = __mbstate_t;
pub type __darwin_ptrdiff_t = ::std::os::raw::c_long;
pub type __darwin_size_t = ::std::os::raw::c_ulong;
pub type __darwin_va_list = __builtin_va_list;
pub type __darwin_wchar_t = ::std::os::raw::c_int;
pub type __darwin_rune_t = __darwin_wchar_t;
pub type __darwin_wint_t = ::std::os::raw::c_int;
pub type __darwin_clock_t = ::std::os::raw::c_ulong;
pub type __darwin_socklen_t = __uint32_t;
pub type __darwin_ssize_t = ::std::os::raw::c_long;
pub type __darwin_time_t = ::std::os::raw::c_long;
pub type __darwin_blkcnt_t = __int64_t;
pub type __darwin_blksize_t = __int32_t;
pub type __darwin_dev_t = __int32_t;
pub type __darwin_fsblkcnt_t = ::std::os::raw::c_uint;
pub type __darwin_fsfilcnt_t = ::std::os::raw::c_uint;
pub type __darwin_gid_t = __uint32_t;
pub type __darwin_id_t = __uint32_t;
pub type __darwin_ino64_t = __uint64_t;
pub type __darwin_ino_t = __darwin_ino64_t;
pub type __darwin_mach_port_name_t = __darwin_natural_t;
pub type __darwin_mach_port_t = __darwin_mach_port_name_t;
pub type __darwin_mode_t = __uint16_t;
pub type __darwin_off_t = __int64_t;
pub type __darwin_pid_t = __int32_t;
pub type __darwin_sigset_t = __uint32_t;
pub type __darwin_suseconds_t = __int32_t;
pub type __darwin_uid_t = __uint32_t;
pub type __darwin_useconds_t = __uint32_t;
pub type __darwin_uuid_t = [::std::os::raw::c_uchar; 16usize];
pub type __darwin_uuid_string_t = [::std::os::raw::c_char; 37usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __darwin_pthread_handler_rec {
    pub __routine: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
    pub __arg: *mut ::std::os::raw::c_void,
    pub __next: *mut __darwin_pthread_handler_rec,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _opaque_pthread_attr_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 56usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _opaque_pthread_cond_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 40usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _opaque_pthread_condattr_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 8usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _opaque_pthread_mutex_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 56usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _opaque_pthread_mutexattr_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 8usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _opaque_pthread_once_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 8usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _opaque_pthread_rwlock_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 192usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _opaque_pthread_rwlockattr_t {
    pub __sig: ::std::os::raw::c_long,
    pub __opaque: [::std::os::raw::c_char; 16usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _opaque_pthread_t {
    pub __sig: ::std::os::raw::c_long,
    pub __cleanup_stack: *mut __darwin_pthread_handler_rec,
    pub __opaque: [::std::os::raw::c_char; 8176usize],
}
pub type __darwin_pthread_attr_t = _opaque_pthread_attr_t;
pub type __darwin_pthread_cond_t = _opaque_pthread_cond_t;
pub type __darwin_pthread_condattr_t = _opaque_pthread_condattr_t;
pub type __darwin_pthread_key_t = ::std::os::raw::c_ulong;
pub type __darwin_pthread_mutex_t = _opaque_pthread_mutex_t;
pub type __darwin_pthread_mutexattr_t = _opaque_pthread_mutexattr_t;
pub type __darwin_pthread_once_t = _opaque_pthread_once_t;
pub type __darwin_pthread_rwlock_t = _opaque_pthread_rwlock_t;
pub type __darwin_pthread_rwlockattr_t = _opaque_pthread_rwlockattr_t;
pub type __darwin_pthread_t = *mut _opaque_pthread_t;
pub type u_int8_t = ::std::os::raw::c_uchar;
pub type u_int16_t = ::std::os::raw::c_ushort;
pub type u_int32_t = ::std::os::raw::c_uint;
pub type u_int64_t = ::std::os::raw::c_ulonglong;
pub type register_t = i64;
pub type user_addr_t = u_int64_t;
pub type user_size_t = u_int64_t;
pub type user_ssize_t = i64;
pub type user_long_t = i64;
pub type user_ulong_t = u_int64_t;
pub type user_time_t = i64;
pub type user_off_t = i64;
pub type syscall_arg_t = u_int64_t;
pub type intmax_t = ::std::os::raw::c_long;
pub type uintmax_t = ::std::os::raw::c_ulong;
pub type GLbitfield = u32;
pub type GLboolean = u8;
pub type GLbyte = i8;
pub type GLclampf = f32;
pub type GLenum = u32;
pub type GLfloat = f32;
pub type GLint = i32;
pub type GLshort = i16;
pub type GLsizei = i32;
pub type GLubyte = u8;
pub type GLuint = u32;
pub type GLushort = u16;
pub type GLvoid = ::std::os::raw::c_void;
pub type GLchar = ::std::os::raw::c_char;
pub type GLcharARB = ::std::os::raw::c_char;
pub type GLhandleARB = *mut ::std::os::raw::c_void;
pub type GLdouble = f64;
pub type GLclampd = f64;
pub type GLfixed = i32;
pub type GLhalf = u16;
pub type GLhalfARB = u16;
pub type GLint64 = i64;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __GLsync {
    _unused: [u8; 0],
}
pub type GLsync = *mut __GLsync;
pub type GLuint64 = u64;
pub type GLint64EXT = i64;
pub type GLuint64EXT = u64;
pub type GLintptr = isize;
pub type GLsizeiptr = isize;
pub type GLintptrARB = isize;
pub type GLsizeiptrARB = isize;
extern "C" {
    pub fn glCullFace(mode: GLenum);
}
extern "C" {
    pub fn glFrontFace(mode: GLenum);
}
extern "C" {
    pub fn glHint(target: GLenum, mode: GLenum);
}
extern "C" {
    pub fn glLineWidth(width: GLfloat);
}
extern "C" {
    pub fn glPointSize(size: GLfloat);
}
extern "C" {
    pub fn glPolygonMode(face: GLenum, mode: GLenum);
}
extern "C" {
    pub fn glScissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei);
}
extern "C" {
    pub fn glTexParameterf(target: GLenum, pname: GLenum, param: GLfloat);
}
extern "C" {
    pub fn glTexParameterfv(target: GLenum, pname: GLenum, params: *const GLfloat);
}
extern "C" {
    pub fn glTexParameteri(target: GLenum, pname: GLenum, param: GLint);
}
extern "C" {
    pub fn glTexParameteriv(target: GLenum, pname: GLenum, params: *const GLint);
}
extern "C" {
    pub fn glTexImage1D(
        target: GLenum,
        level: GLint,
        internalformat: GLint,
        width: GLsizei,
        border: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    );
}
extern "C" {
    pub fn glTexImage2D(
        target: GLenum,
        level: GLint,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        border: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    );
}
extern "C" {
    pub fn glDrawBuffer(mode: GLenum);
}
extern "C" {
    pub fn glClear(mask: GLbitfield);
}
extern "C" {
    pub fn glClearColor(red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat);
}
extern "C" {
    pub fn glClearStencil(s: GLint);
}
extern "C" {
    pub fn glClearDepth(depth: GLclampd);
}
extern "C" {
    pub fn glStencilMask(mask: GLuint);
}
extern "C" {
    pub fn glColorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean);
}
extern "C" {
    pub fn glDepthMask(flag: GLboolean);
}
extern "C" {
    pub fn glDisable(cap: GLenum);
}
extern "C" {
    pub fn glEnable(cap: GLenum);
}
extern "C" {
    pub fn glFinish();
}
extern "C" {
    pub fn glFlush();
}
extern "C" {
    pub fn glBlendFunc(sfactor: GLenum, dfactor: GLenum);
}
extern "C" {
    pub fn glLogicOp(opcode: GLenum);
}
extern "C" {
    pub fn glStencilFunc(func: GLenum, ref_: GLint, mask: GLuint);
}
extern "C" {
    pub fn glStencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum);
}
extern "C" {
    pub fn glDepthFunc(func: GLenum);
}
extern "C" {
    pub fn glPixelStoref(pname: GLenum, param: GLfloat);
}
extern "C" {
    pub fn glPixelStorei(pname: GLenum, param: GLint);
}
extern "C" {
    pub fn glReadBuffer(mode: GLenum);
}
extern "C" {
    pub fn glReadPixels(
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *mut GLvoid,
    );
}
extern "C" {
    pub fn glGetBooleanv(pname: GLenum, params: *mut GLboolean);
}
extern "C" {
    pub fn glGetDoublev(pname: GLenum, params: *mut GLdouble);
}
extern "C" {
    pub fn glGetError() -> GLenum;
}
extern "C" {
    pub fn glGetFloatv(pname: GLenum, params: *mut GLfloat);
}
extern "C" {
    pub fn glGetIntegerv(pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetString(name: GLenum) -> *const GLubyte;
}
extern "C" {
    pub fn glGetTexImage(
        target: GLenum,
        level: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *mut GLvoid,
    );
}
extern "C" {
    pub fn glGetTexParameterfv(target: GLenum, pname: GLenum, params: *mut GLfloat);
}
extern "C" {
    pub fn glGetTexParameteriv(target: GLenum, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetTexLevelParameterfv(
        target: GLenum,
        level: GLint,
        pname: GLenum,
        params: *mut GLfloat,
    );
}
extern "C" {
    pub fn glGetTexLevelParameteriv(
        target: GLenum,
        level: GLint,
        pname: GLenum,
        params: *mut GLint,
    );
}
extern "C" {
    pub fn glIsEnabled(cap: GLenum) -> GLboolean;
}
extern "C" {
    pub fn glDepthRange(near: GLclampd, far: GLclampd);
}
extern "C" {
    pub fn glViewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei);
}
pub type PFNGLCULLFACEPROC = ::std::option::Option<unsafe extern "C" fn(mode: GLenum)>;
pub type PFNGLFRONTFACEPROC = ::std::option::Option<unsafe extern "C" fn(mode: GLenum)>;
pub type PFNGLHINTPROC = ::std::option::Option<unsafe extern "C" fn(target: GLenum, mode: GLenum)>;
pub type PFNGLLINEWIDTHPROC = ::std::option::Option<unsafe extern "C" fn(width: GLfloat)>;
pub type PFNGLPOINTSIZEPROC = ::std::option::Option<unsafe extern "C" fn(size: GLfloat)>;
pub type PFNGLPOLYGONMODEPROC =
    ::std::option::Option<unsafe extern "C" fn(face: GLenum, mode: GLenum)>;
pub type PFNGLSCISSORPROC = ::std::option::Option<
    unsafe extern "C" fn(x: GLint, y: GLint, width: GLsizei, height: GLsizei),
>;
pub type PFNGLTEXPARAMETERFPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, param: GLfloat)>;
pub type PFNGLTEXPARAMETERFVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *const GLfloat),
>;
pub type PFNGLTEXPARAMETERIPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, param: GLint)>;
pub type PFNGLTEXPARAMETERIVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *const GLint),
>;
pub type PFNGLTEXIMAGE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLint,
        width: GLsizei,
        border: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    ),
>;
pub type PFNGLTEXIMAGE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        border: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    ),
>;
pub type PFNGLDRAWBUFFERPROC = ::std::option::Option<unsafe extern "C" fn(mode: GLenum)>;
pub type PFNGLCLEARPROC = ::std::option::Option<unsafe extern "C" fn(mask: GLbitfield)>;
pub type PFNGLCLEARCOLORPROC = ::std::option::Option<
    unsafe extern "C" fn(red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat),
>;
pub type PFNGLCLEARSTENCILPROC = ::std::option::Option<unsafe extern "C" fn(s: GLint)>;
pub type PFNGLCLEARDEPTHPROC = ::std::option::Option<unsafe extern "C" fn(depth: GLclampd)>;
pub type PFNGLSTENCILMASKPROC = ::std::option::Option<unsafe extern "C" fn(mask: GLuint)>;
pub type PFNGLCOLORMASKPROC = ::std::option::Option<
    unsafe extern "C" fn(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean),
>;
pub type PFNGLDEPTHMASKPROC = ::std::option::Option<unsafe extern "C" fn(flag: GLboolean)>;
pub type PFNGLDISABLEPROC = ::std::option::Option<unsafe extern "C" fn(cap: GLenum)>;
pub type PFNGLENABLEPROC = ::std::option::Option<unsafe extern "C" fn(cap: GLenum)>;
pub type PFNGLFINISHPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLFLUSHPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLBLENDFUNCPROC =
    ::std::option::Option<unsafe extern "C" fn(sfactor: GLenum, dfactor: GLenum)>;
pub type PFNGLLOGICOPPROC = ::std::option::Option<unsafe extern "C" fn(opcode: GLenum)>;
pub type PFNGLSTENCILFUNCPROC =
    ::std::option::Option<unsafe extern "C" fn(func: GLenum, ref_: GLint, mask: GLuint)>;
pub type PFNGLSTENCILOPPROC =
    ::std::option::Option<unsafe extern "C" fn(fail: GLenum, zfail: GLenum, zpass: GLenum)>;
pub type PFNGLDEPTHFUNCPROC = ::std::option::Option<unsafe extern "C" fn(func: GLenum)>;
pub type PFNGLPIXELSTOREFPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, param: GLfloat)>;
pub type PFNGLPIXELSTOREIPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, param: GLint)>;
pub type PFNGLREADBUFFERPROC = ::std::option::Option<unsafe extern "C" fn(mode: GLenum)>;
pub type PFNGLREADPIXELSPROC = ::std::option::Option<
    unsafe extern "C" fn(
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *mut GLvoid,
    ),
>;
pub type PFNGLGETBOOLEANVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *mut GLboolean)>;
pub type PFNGLGETDOUBLEVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *mut GLdouble)>;
pub type PFNGLGETERRORPROC = ::std::option::Option<unsafe extern "C" fn() -> GLenum>;
pub type PFNGLGETFLOATVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *mut GLfloat)>;
pub type PFNGLGETINTEGERVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETSTRINGPROC =
    ::std::option::Option<unsafe extern "C" fn(name: GLenum) -> *const GLubyte>;
pub type PFNGLGETTEXIMAGEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *mut GLvoid,
    ),
>;
pub type PFNGLGETTEXPARAMETERFVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLfloat),
>;
pub type PFNGLGETTEXPARAMETERIVPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETTEXLEVELPARAMETERFVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat),
>;
pub type PFNGLGETTEXLEVELPARAMETERIVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, level: GLint, pname: GLenum, params: *mut GLint),
>;
pub type PFNGLISENABLEDPROC = ::std::option::Option<unsafe extern "C" fn(cap: GLenum) -> GLboolean>;
pub type PFNGLDEPTHRANGEPROC =
    ::std::option::Option<unsafe extern "C" fn(near: GLclampd, far: GLclampd)>;
pub type PFNGLVIEWPORTPROC = ::std::option::Option<
    unsafe extern "C" fn(x: GLint, y: GLint, width: GLsizei, height: GLsizei),
>;
extern "C" {
    pub fn glDrawArrays(mode: GLenum, first: GLint, count: GLsizei);
}
extern "C" {
    pub fn glDrawElements(mode: GLenum, count: GLsizei, type_: GLenum, indices: *const GLvoid);
}
extern "C" {
    pub fn glPolygonOffset(factor: GLfloat, units: GLfloat);
}
extern "C" {
    pub fn glCopyTexImage1D(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        x: GLint,
        y: GLint,
        width: GLsizei,
        border: GLint,
    );
}
extern "C" {
    pub fn glCopyTexImage2D(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
        border: GLint,
    );
}
extern "C" {
    pub fn glCopyTexSubImage1D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        x: GLint,
        y: GLint,
        width: GLsizei,
    );
}
extern "C" {
    pub fn glCopyTexSubImage2D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
    );
}
extern "C" {
    pub fn glTexSubImage1D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        width: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    );
}
extern "C" {
    pub fn glTexSubImage2D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    );
}
extern "C" {
    pub fn glBindTexture(target: GLenum, texture: GLuint);
}
extern "C" {
    pub fn glDeleteTextures(n: GLsizei, textures: *const GLuint);
}
extern "C" {
    pub fn glGenTextures(n: GLsizei, textures: *mut GLuint);
}
extern "C" {
    pub fn glIsTexture(texture: GLuint) -> GLboolean;
}
pub type PFNGLDRAWARRAYSPROC =
    ::std::option::Option<unsafe extern "C" fn(mode: GLenum, first: GLint, count: GLsizei)>;
pub type PFNGLDRAWELEMENTSPROC = ::std::option::Option<
    unsafe extern "C" fn(mode: GLenum, count: GLsizei, type_: GLenum, indices: *const GLvoid),
>;
pub type PFNGLPOLYGONOFFSETPROC =
    ::std::option::Option<unsafe extern "C" fn(factor: GLfloat, units: GLfloat)>;
pub type PFNGLCOPYTEXIMAGE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        x: GLint,
        y: GLint,
        width: GLsizei,
        border: GLint,
    ),
>;
pub type PFNGLCOPYTEXIMAGE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
        border: GLint,
    ),
>;
pub type PFNGLCOPYTEXSUBIMAGE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        x: GLint,
        y: GLint,
        width: GLsizei,
    ),
>;
pub type PFNGLCOPYTEXSUBIMAGE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
    ),
>;
pub type PFNGLTEXSUBIMAGE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        width: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    ),
>;
pub type PFNGLTEXSUBIMAGE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    ),
>;
pub type PFNGLBINDTEXTUREPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, texture: GLuint)>;
pub type PFNGLDELETETEXTURESPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, textures: *const GLuint)>;
pub type PFNGLGENTEXTURESPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, textures: *mut GLuint)>;
pub type PFNGLISTEXTUREPROC =
    ::std::option::Option<unsafe extern "C" fn(texture: GLuint) -> GLboolean>;
extern "C" {
    pub fn glBlendColor(red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat);
}
extern "C" {
    pub fn glBlendEquation(mode: GLenum);
}
extern "C" {
    pub fn glDrawRangeElements(
        mode: GLenum,
        start: GLuint,
        end: GLuint,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
    );
}
extern "C" {
    pub fn glTexImage3D(
        target: GLenum,
        level: GLint,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        border: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    );
}
extern "C" {
    pub fn glTexSubImage3D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        zoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    );
}
extern "C" {
    pub fn glCopyTexSubImage3D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        zoffset: GLint,
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
    );
}
pub type PFNGLBLENDCOLORPROC = ::std::option::Option<
    unsafe extern "C" fn(red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat),
>;
pub type PFNGLBLENDEQUATIONPROC = ::std::option::Option<unsafe extern "C" fn(mode: GLenum)>;
pub type PFNGLDRAWRANGEELEMENTSPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        start: GLuint,
        end: GLuint,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
    ),
>;
pub type PFNGLTEXIMAGE3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        border: GLint,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    ),
>;
pub type PFNGLTEXSUBIMAGE3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        zoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        format: GLenum,
        type_: GLenum,
        pixels: *const GLvoid,
    ),
>;
pub type PFNGLCOPYTEXSUBIMAGE3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        zoffset: GLint,
        x: GLint,
        y: GLint,
        width: GLsizei,
        height: GLsizei,
    ),
>;
extern "C" {
    pub fn glActiveTexture(texture: GLenum);
}
extern "C" {
    pub fn glSampleCoverage(value: GLclampf, invert: GLboolean);
}
extern "C" {
    pub fn glCompressedTexImage3D(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        border: GLint,
        imageSize: GLsizei,
        data: *const GLvoid,
    );
}
extern "C" {
    pub fn glCompressedTexImage2D(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
        border: GLint,
        imageSize: GLsizei,
        data: *const GLvoid,
    );
}
extern "C" {
    pub fn glCompressedTexImage1D(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        width: GLsizei,
        border: GLint,
        imageSize: GLsizei,
        data: *const GLvoid,
    );
}
extern "C" {
    pub fn glCompressedTexSubImage3D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        zoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        format: GLenum,
        imageSize: GLsizei,
        data: *const GLvoid,
    );
}
extern "C" {
    pub fn glCompressedTexSubImage2D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        format: GLenum,
        imageSize: GLsizei,
        data: *const GLvoid,
    );
}
extern "C" {
    pub fn glCompressedTexSubImage1D(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        width: GLsizei,
        format: GLenum,
        imageSize: GLsizei,
        data: *const GLvoid,
    );
}
extern "C" {
    pub fn glGetCompressedTexImage(target: GLenum, level: GLint, img: *mut GLvoid);
}
pub type PFNGLACTIVETEXTUREPROC = ::std::option::Option<unsafe extern "C" fn(texture: GLenum)>;
pub type PFNGLSAMPLECOVERAGEPROC =
    ::std::option::Option<unsafe extern "C" fn(value: GLclampf, invert: GLboolean)>;
pub type PFNGLCOMPRESSEDTEXIMAGE3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        border: GLint,
        imageSize: GLsizei,
        data: *const GLvoid,
    ),
>;
pub type PFNGLCOMPRESSEDTEXIMAGE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
        border: GLint,
        imageSize: GLsizei,
        data: *const GLvoid,
    ),
>;
pub type PFNGLCOMPRESSEDTEXIMAGE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        internalformat: GLenum,
        width: GLsizei,
        border: GLint,
        imageSize: GLsizei,
        data: *const GLvoid,
    ),
>;
pub type PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        zoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        format: GLenum,
        imageSize: GLsizei,
        data: *const GLvoid,
    ),
>;
pub type PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        yoffset: GLint,
        width: GLsizei,
        height: GLsizei,
        format: GLenum,
        imageSize: GLsizei,
        data: *const GLvoid,
    ),
>;
pub type PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        level: GLint,
        xoffset: GLint,
        width: GLsizei,
        format: GLenum,
        imageSize: GLsizei,
        data: *const GLvoid,
    ),
>;
pub type PFNGLGETCOMPRESSEDTEXIMAGEPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, level: GLint, img: *mut GLvoid)>;
extern "C" {
    pub fn glBlendFuncSeparate(
        sfactorRGB: GLenum,
        dfactorRGB: GLenum,
        sfactorAlpha: GLenum,
        dfactorAlpha: GLenum,
    );
}
extern "C" {
    pub fn glMultiDrawArrays(
        mode: GLenum,
        first: *const GLint,
        count: *const GLsizei,
        drawcount: GLsizei,
    );
}
extern "C" {
    pub fn glMultiDrawElements(
        mode: GLenum,
        count: *const GLsizei,
        type_: GLenum,
        indices: *const *const GLvoid,
        drawcount: GLsizei,
    );
}
extern "C" {
    pub fn glPointParameterf(pname: GLenum, param: GLfloat);
}
extern "C" {
    pub fn glPointParameterfv(pname: GLenum, params: *const GLfloat);
}
extern "C" {
    pub fn glPointParameteri(pname: GLenum, param: GLint);
}
extern "C" {
    pub fn glPointParameteriv(pname: GLenum, params: *const GLint);
}
pub type PFNGLBLENDFUNCSEPARATEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        sfactorRGB: GLenum,
        dfactorRGB: GLenum,
        sfactorAlpha: GLenum,
        dfactorAlpha: GLenum,
    ),
>;
pub type PFNGLMULTIDRAWARRAYSPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        first: *const GLint,
        count: *const GLsizei,
        drawcount: GLsizei,
    ),
>;
pub type PFNGLMULTIDRAWELEMENTSPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        count: *const GLsizei,
        type_: GLenum,
        indices: *const *const GLvoid,
        drawcount: GLsizei,
    ),
>;
pub type PFNGLPOINTPARAMETERFPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, param: GLfloat)>;
pub type PFNGLPOINTPARAMETERFVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *const GLfloat)>;
pub type PFNGLPOINTPARAMETERIPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, param: GLint)>;
pub type PFNGLPOINTPARAMETERIVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *const GLint)>;
extern "C" {
    pub fn glGenQueries(n: GLsizei, ids: *mut GLuint);
}
extern "C" {
    pub fn glDeleteQueries(n: GLsizei, ids: *const GLuint);
}
extern "C" {
    pub fn glIsQuery(id: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glBeginQuery(target: GLenum, id: GLuint);
}
extern "C" {
    pub fn glEndQuery(target: GLenum);
}
extern "C" {
    pub fn glGetQueryiv(target: GLenum, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetQueryObjectiv(id: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetQueryObjectuiv(id: GLuint, pname: GLenum, params: *mut GLuint);
}
extern "C" {
    pub fn glBindBuffer(target: GLenum, buffer: GLuint);
}
extern "C" {
    pub fn glDeleteBuffers(n: GLsizei, buffers: *const GLuint);
}
extern "C" {
    pub fn glGenBuffers(n: GLsizei, buffers: *mut GLuint);
}
extern "C" {
    pub fn glIsBuffer(buffer: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glBufferData(target: GLenum, size: GLsizeiptr, data: *const GLvoid, usage: GLenum);
}
extern "C" {
    pub fn glBufferSubData(target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const GLvoid);
}
extern "C" {
    pub fn glGetBufferSubData(
        target: GLenum,
        offset: GLintptr,
        size: GLsizeiptr,
        data: *mut GLvoid,
    );
}
extern "C" {
    pub fn glMapBuffer(target: GLenum, access: GLenum) -> *mut GLvoid;
}
extern "C" {
    pub fn glUnmapBuffer(target: GLenum) -> GLboolean;
}
extern "C" {
    pub fn glGetBufferParameteriv(target: GLenum, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetBufferPointerv(target: GLenum, pname: GLenum, params: *mut *mut GLvoid);
}
pub type PFNGLGENQUERIESPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, ids: *mut GLuint)>;
pub type PFNGLDELETEQUERIESPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, ids: *const GLuint)>;
pub type PFNGLISQUERYPROC = ::std::option::Option<unsafe extern "C" fn(id: GLuint) -> GLboolean>;
pub type PFNGLBEGINQUERYPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, id: GLuint)>;
pub type PFNGLENDQUERYPROC = ::std::option::Option<unsafe extern "C" fn(target: GLenum)>;
pub type PFNGLGETQUERYIVPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETQUERYOBJECTIVPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETQUERYOBJECTUIVPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint, pname: GLenum, params: *mut GLuint)>;
pub type PFNGLBINDBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, buffer: GLuint)>;
pub type PFNGLDELETEBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, buffers: *const GLuint)>;
pub type PFNGLGENBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, buffers: *mut GLuint)>;
pub type PFNGLISBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(buffer: GLuint) -> GLboolean>;
pub type PFNGLBUFFERDATAPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, size: GLsizeiptr, data: *const GLvoid, usage: GLenum),
>;
pub type PFNGLBUFFERSUBDATAPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const GLvoid),
>;
pub type PFNGLGETBUFFERSUBDATAPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut GLvoid),
>;
pub type PFNGLMAPBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, access: GLenum) -> *mut GLvoid>;
pub type PFNGLUNMAPBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum) -> GLboolean>;
pub type PFNGLGETBUFFERPARAMETERIVPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETBUFFERPOINTERVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut *mut GLvoid),
>;
extern "C" {
    pub fn glBlendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum);
}
extern "C" {
    pub fn glDrawBuffers(n: GLsizei, bufs: *const GLenum);
}
extern "C" {
    pub fn glStencilOpSeparate(face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum);
}
extern "C" {
    pub fn glStencilFuncSeparate(face: GLenum, func: GLenum, ref_: GLint, mask: GLuint);
}
extern "C" {
    pub fn glStencilMaskSeparate(face: GLenum, mask: GLuint);
}
extern "C" {
    pub fn glAttachShader(program: GLuint, shader: GLuint);
}
extern "C" {
    pub fn glBindAttribLocation(program: GLuint, index: GLuint, name: *const GLchar);
}
extern "C" {
    pub fn glCompileShader(shader: GLuint);
}
extern "C" {
    pub fn glCreateProgram() -> GLuint;
}
extern "C" {
    pub fn glCreateShader(type_: GLenum) -> GLuint;
}
extern "C" {
    pub fn glDeleteProgram(program: GLuint);
}
extern "C" {
    pub fn glDeleteShader(shader: GLuint);
}
extern "C" {
    pub fn glDetachShader(program: GLuint, shader: GLuint);
}
extern "C" {
    pub fn glDisableVertexAttribArray(index: GLuint);
}
extern "C" {
    pub fn glEnableVertexAttribArray(index: GLuint);
}
extern "C" {
    pub fn glGetActiveAttrib(
        program: GLuint,
        index: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        size: *mut GLint,
        type_: *mut GLenum,
        name: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetActiveUniform(
        program: GLuint,
        index: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        size: *mut GLint,
        type_: *mut GLenum,
        name: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetAttachedShaders(
        program: GLuint,
        maxCount: GLsizei,
        count: *mut GLsizei,
        shaders: *mut GLuint,
    );
}
extern "C" {
    pub fn glGetAttribLocation(program: GLuint, name: *const GLchar) -> GLint;
}
extern "C" {
    pub fn glGetProgramiv(program: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetProgramInfoLog(
        program: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        infoLog: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetShaderiv(shader: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetShaderInfoLog(
        shader: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        infoLog: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetShaderSource(
        shader: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        source: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetUniformLocation(program: GLuint, name: *const GLchar) -> GLint;
}
extern "C" {
    pub fn glGetUniformfv(program: GLuint, location: GLint, params: *mut GLfloat);
}
extern "C" {
    pub fn glGetUniformiv(program: GLuint, location: GLint, params: *mut GLint);
}
extern "C" {
    pub fn glGetVertexAttribdv(index: GLuint, pname: GLenum, params: *mut GLdouble);
}
extern "C" {
    pub fn glGetVertexAttribfv(index: GLuint, pname: GLenum, params: *mut GLfloat);
}
extern "C" {
    pub fn glGetVertexAttribiv(index: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetVertexAttribPointerv(index: GLuint, pname: GLenum, pointer: *mut *mut GLvoid);
}
extern "C" {
    pub fn glIsProgram(program: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glIsShader(shader: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glLinkProgram(program: GLuint);
}
extern "C" {
    pub fn glShaderSource(
        shader: GLuint,
        count: GLsizei,
        string: *const *const GLchar,
        length: *const GLint,
    );
}
extern "C" {
    pub fn glUseProgram(program: GLuint);
}
extern "C" {
    pub fn glUniform1f(location: GLint, v0: GLfloat);
}
extern "C" {
    pub fn glUniform2f(location: GLint, v0: GLfloat, v1: GLfloat);
}
extern "C" {
    pub fn glUniform3f(location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat);
}
extern "C" {
    pub fn glUniform4f(location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat);
}
extern "C" {
    pub fn glUniform1i(location: GLint, v0: GLint);
}
extern "C" {
    pub fn glUniform2i(location: GLint, v0: GLint, v1: GLint);
}
extern "C" {
    pub fn glUniform3i(location: GLint, v0: GLint, v1: GLint, v2: GLint);
}
extern "C" {
    pub fn glUniform4i(location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint);
}
extern "C" {
    pub fn glUniform1fv(location: GLint, count: GLsizei, value: *const GLfloat);
}
extern "C" {
    pub fn glUniform2fv(location: GLint, count: GLsizei, value: *const GLfloat);
}
extern "C" {
    pub fn glUniform3fv(location: GLint, count: GLsizei, value: *const GLfloat);
}
extern "C" {
    pub fn glUniform4fv(location: GLint, count: GLsizei, value: *const GLfloat);
}
extern "C" {
    pub fn glUniform1iv(location: GLint, count: GLsizei, value: *const GLint);
}
extern "C" {
    pub fn glUniform2iv(location: GLint, count: GLsizei, value: *const GLint);
}
extern "C" {
    pub fn glUniform3iv(location: GLint, count: GLsizei, value: *const GLint);
}
extern "C" {
    pub fn glUniform4iv(location: GLint, count: GLsizei, value: *const GLint);
}
extern "C" {
    pub fn glUniformMatrix2fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix3fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix4fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glValidateProgram(program: GLuint);
}
extern "C" {
    pub fn glVertexAttrib1d(index: GLuint, x: GLdouble);
}
extern "C" {
    pub fn glVertexAttrib1dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttrib1f(index: GLuint, x: GLfloat);
}
extern "C" {
    pub fn glVertexAttrib1fv(index: GLuint, v: *const GLfloat);
}
extern "C" {
    pub fn glVertexAttrib1s(index: GLuint, x: GLshort);
}
extern "C" {
    pub fn glVertexAttrib1sv(index: GLuint, v: *const GLshort);
}
extern "C" {
    pub fn glVertexAttrib2d(index: GLuint, x: GLdouble, y: GLdouble);
}
extern "C" {
    pub fn glVertexAttrib2dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat);
}
extern "C" {
    pub fn glVertexAttrib2fv(index: GLuint, v: *const GLfloat);
}
extern "C" {
    pub fn glVertexAttrib2s(index: GLuint, x: GLshort, y: GLshort);
}
extern "C" {
    pub fn glVertexAttrib2sv(index: GLuint, v: *const GLshort);
}
extern "C" {
    pub fn glVertexAttrib3d(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble);
}
extern "C" {
    pub fn glVertexAttrib3dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat);
}
extern "C" {
    pub fn glVertexAttrib3fv(index: GLuint, v: *const GLfloat);
}
extern "C" {
    pub fn glVertexAttrib3s(index: GLuint, x: GLshort, y: GLshort, z: GLshort);
}
extern "C" {
    pub fn glVertexAttrib3sv(index: GLuint, v: *const GLshort);
}
extern "C" {
    pub fn glVertexAttrib4Nbv(index: GLuint, v: *const GLbyte);
}
extern "C" {
    pub fn glVertexAttrib4Niv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glVertexAttrib4Nsv(index: GLuint, v: *const GLshort);
}
extern "C" {
    pub fn glVertexAttrib4Nub(index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte);
}
extern "C" {
    pub fn glVertexAttrib4Nubv(index: GLuint, v: *const GLubyte);
}
extern "C" {
    pub fn glVertexAttrib4Nuiv(index: GLuint, v: *const GLuint);
}
extern "C" {
    pub fn glVertexAttrib4Nusv(index: GLuint, v: *const GLushort);
}
extern "C" {
    pub fn glVertexAttrib4bv(index: GLuint, v: *const GLbyte);
}
extern "C" {
    pub fn glVertexAttrib4d(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble);
}
extern "C" {
    pub fn glVertexAttrib4dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat);
}
extern "C" {
    pub fn glVertexAttrib4fv(index: GLuint, v: *const GLfloat);
}
extern "C" {
    pub fn glVertexAttrib4iv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glVertexAttrib4s(index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort);
}
extern "C" {
    pub fn glVertexAttrib4sv(index: GLuint, v: *const GLshort);
}
extern "C" {
    pub fn glVertexAttrib4ubv(index: GLuint, v: *const GLubyte);
}
extern "C" {
    pub fn glVertexAttrib4uiv(index: GLuint, v: *const GLuint);
}
extern "C" {
    pub fn glVertexAttrib4usv(index: GLuint, v: *const GLushort);
}
extern "C" {
    pub fn glVertexAttribPointer(
        index: GLuint,
        size: GLint,
        type_: GLenum,
        normalized: GLboolean,
        stride: GLsizei,
        pointer: *const GLvoid,
    );
}
pub type PFNGLBLENDEQUATIONSEPARATEPROC =
    ::std::option::Option<unsafe extern "C" fn(modeRGB: GLenum, modeAlpha: GLenum)>;
pub type PFNGLDRAWBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, bufs: *const GLenum)>;
pub type PFNGLSTENCILOPSEPARATEPROC = ::std::option::Option<
    unsafe extern "C" fn(face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum),
>;
pub type PFNGLSTENCILFUNCSEPARATEPROC = ::std::option::Option<
    unsafe extern "C" fn(face: GLenum, func: GLenum, ref_: GLint, mask: GLuint),
>;
pub type PFNGLSTENCILMASKSEPARATEPROC =
    ::std::option::Option<unsafe extern "C" fn(face: GLenum, mask: GLuint)>;
pub type PFNGLATTACHSHADERPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, shader: GLuint)>;
pub type PFNGLBINDATTRIBLOCATIONPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, index: GLuint, name: *const GLchar),
>;
pub type PFNGLCOMPILESHADERPROC = ::std::option::Option<unsafe extern "C" fn(shader: GLuint)>;
pub type PFNGLCREATEPROGRAMPROC = ::std::option::Option<unsafe extern "C" fn() -> GLuint>;
pub type PFNGLCREATESHADERPROC =
    ::std::option::Option<unsafe extern "C" fn(type_: GLenum) -> GLuint>;
pub type PFNGLDELETEPROGRAMPROC = ::std::option::Option<unsafe extern "C" fn(program: GLuint)>;
pub type PFNGLDELETESHADERPROC = ::std::option::Option<unsafe extern "C" fn(shader: GLuint)>;
pub type PFNGLDETACHSHADERPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, shader: GLuint)>;
pub type PFNGLDISABLEVERTEXATTRIBARRAYPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint)>;
pub type PFNGLENABLEVERTEXATTRIBARRAYPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint)>;
pub type PFNGLGETACTIVEATTRIBPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        index: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        size: *mut GLint,
        type_: *mut GLenum,
        name: *mut GLchar,
    ),
>;
pub type PFNGLGETACTIVEUNIFORMPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        index: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        size: *mut GLint,
        type_: *mut GLenum,
        name: *mut GLchar,
    ),
>;
pub type PFNGLGETATTACHEDSHADERSPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        maxCount: GLsizei,
        count: *mut GLsizei,
        shaders: *mut GLuint,
    ),
>;
pub type PFNGLGETATTRIBLOCATIONPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, name: *const GLchar) -> GLint>;
pub type PFNGLGETPROGRAMIVPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETPROGRAMINFOLOGPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        infoLog: *mut GLchar,
    ),
>;
pub type PFNGLGETSHADERIVPROC =
    ::std::option::Option<unsafe extern "C" fn(shader: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETSHADERINFOLOGPROC = ::std::option::Option<
    unsafe extern "C" fn(
        shader: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        infoLog: *mut GLchar,
    ),
>;
pub type PFNGLGETSHADERSOURCEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        shader: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        source: *mut GLchar,
    ),
>;
pub type PFNGLGETUNIFORMLOCATIONPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, name: *const GLchar) -> GLint>;
pub type PFNGLGETUNIFORMFVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, params: *mut GLfloat),
>;
pub type PFNGLGETUNIFORMIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, params: *mut GLint),
>;
pub type PFNGLGETVERTEXATTRIBDVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, pname: GLenum, params: *mut GLdouble),
>;
pub type PFNGLGETVERTEXATTRIBFVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, pname: GLenum, params: *mut GLfloat)>;
pub type PFNGLGETVERTEXATTRIBIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETVERTEXATTRIBPOINTERVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, pname: GLenum, pointer: *mut *mut GLvoid),
>;
pub type PFNGLISPROGRAMPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint) -> GLboolean>;
pub type PFNGLISSHADERPROC =
    ::std::option::Option<unsafe extern "C" fn(shader: GLuint) -> GLboolean>;
pub type PFNGLLINKPROGRAMPROC = ::std::option::Option<unsafe extern "C" fn(program: GLuint)>;
pub type PFNGLSHADERSOURCEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        shader: GLuint,
        count: GLsizei,
        string: *const *const GLchar,
        length: *const GLint,
    ),
>;
pub type PFNGLUSEPROGRAMPROC = ::std::option::Option<unsafe extern "C" fn(program: GLuint)>;
pub type PFNGLUNIFORM1FPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLfloat)>;
pub type PFNGLUNIFORM2FPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLfloat, v1: GLfloat)>;
pub type PFNGLUNIFORM3FPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat),
>;
pub type PFNGLUNIFORM4FPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat),
>;
pub type PFNGLUNIFORM1IPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLint)>;
pub type PFNGLUNIFORM2IPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLint, v1: GLint)>;
pub type PFNGLUNIFORM3IPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLint, v1: GLint, v2: GLint)>;
pub type PFNGLUNIFORM4IPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint),
>;
pub type PFNGLUNIFORM1FVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLUNIFORM2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLUNIFORM3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLUNIFORM4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLUNIFORM1IVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLUNIFORM2IVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLUNIFORM3IVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLUNIFORM4IVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLUNIFORMMATRIX2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLVALIDATEPROGRAMPROC = ::std::option::Option<unsafe extern "C" fn(program: GLuint)>;
pub type PFNGLVERTEXATTRIB1DPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLdouble)>;
pub type PFNGLVERTEXATTRIB1DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIB1FPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLfloat)>;
pub type PFNGLVERTEXATTRIB1FVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLfloat)>;
pub type PFNGLVERTEXATTRIB1SPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLshort)>;
pub type PFNGLVERTEXATTRIB1SVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLshort)>;
pub type PFNGLVERTEXATTRIB2DPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLdouble, y: GLdouble)>;
pub type PFNGLVERTEXATTRIB2DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIB2FPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLfloat, y: GLfloat)>;
pub type PFNGLVERTEXATTRIB2FVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLfloat)>;
pub type PFNGLVERTEXATTRIB2SPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLshort, y: GLshort)>;
pub type PFNGLVERTEXATTRIB2SVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLshort)>;
pub type PFNGLVERTEXATTRIB3DPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble),
>;
pub type PFNGLVERTEXATTRIB3DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIB3FPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat)>;
pub type PFNGLVERTEXATTRIB3FVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLfloat)>;
pub type PFNGLVERTEXATTRIB3SPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLshort, y: GLshort, z: GLshort)>;
pub type PFNGLVERTEXATTRIB3SVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLshort)>;
pub type PFNGLVERTEXATTRIB4NBVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLbyte)>;
pub type PFNGLVERTEXATTRIB4NIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLVERTEXATTRIB4NSVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLshort)>;
pub type PFNGLVERTEXATTRIB4NUBPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte),
>;
pub type PFNGLVERTEXATTRIB4NUBVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLubyte)>;
pub type PFNGLVERTEXATTRIB4NUIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLuint)>;
pub type PFNGLVERTEXATTRIB4NUSVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLushort)>;
pub type PFNGLVERTEXATTRIB4BVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLbyte)>;
pub type PFNGLVERTEXATTRIB4DPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble),
>;
pub type PFNGLVERTEXATTRIB4DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIB4FPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat),
>;
pub type PFNGLVERTEXATTRIB4FVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLfloat)>;
pub type PFNGLVERTEXATTRIB4IVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLVERTEXATTRIB4SPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort),
>;
pub type PFNGLVERTEXATTRIB4SVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLshort)>;
pub type PFNGLVERTEXATTRIB4UBVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLubyte)>;
pub type PFNGLVERTEXATTRIB4UIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLuint)>;
pub type PFNGLVERTEXATTRIB4USVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLushort)>;
pub type PFNGLVERTEXATTRIBPOINTERPROC = ::std::option::Option<
    unsafe extern "C" fn(
        index: GLuint,
        size: GLint,
        type_: GLenum,
        normalized: GLboolean,
        stride: GLsizei,
        pointer: *const GLvoid,
    ),
>;
extern "C" {
    pub fn glUniformMatrix2x3fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix3x2fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix2x4fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix4x2fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix3x4fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glUniformMatrix4x3fv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
pub type PFNGLUNIFORMMATRIX2X3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX3X2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX2X4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX4X2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX3X4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLUNIFORMMATRIX4X3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
extern "C" {
    pub fn glColorMaski(index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean);
}
extern "C" {
    pub fn glGetBooleani_v(target: GLenum, index: GLuint, data: *mut GLboolean);
}
extern "C" {
    pub fn glGetIntegeri_v(target: GLenum, index: GLuint, data: *mut GLint);
}
extern "C" {
    pub fn glEnablei(target: GLenum, index: GLuint);
}
extern "C" {
    pub fn glDisablei(target: GLenum, index: GLuint);
}
extern "C" {
    pub fn glIsEnabledi(target: GLenum, index: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glBeginTransformFeedback(primitiveMode: GLenum);
}
extern "C" {
    pub fn glEndTransformFeedback();
}
extern "C" {
    pub fn glBindBufferRange(
        target: GLenum,
        index: GLuint,
        buffer: GLuint,
        offset: GLintptr,
        size: GLsizeiptr,
    );
}
extern "C" {
    pub fn glBindBufferBase(target: GLenum, index: GLuint, buffer: GLuint);
}
extern "C" {
    pub fn glTransformFeedbackVaryings(
        program: GLuint,
        count: GLsizei,
        varyings: *const *const GLchar,
        bufferMode: GLenum,
    );
}
extern "C" {
    pub fn glGetTransformFeedbackVarying(
        program: GLuint,
        index: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        size: *mut GLsizei,
        type_: *mut GLenum,
        name: *mut GLchar,
    );
}
extern "C" {
    pub fn glClampColor(target: GLenum, clamp: GLenum);
}
extern "C" {
    pub fn glBeginConditionalRender(id: GLuint, mode: GLenum);
}
extern "C" {
    pub fn glEndConditionalRender();
}
extern "C" {
    pub fn glVertexAttribIPointer(
        index: GLuint,
        size: GLint,
        type_: GLenum,
        stride: GLsizei,
        pointer: *const GLvoid,
    );
}
extern "C" {
    pub fn glGetVertexAttribIiv(index: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetVertexAttribIuiv(index: GLuint, pname: GLenum, params: *mut GLuint);
}
extern "C" {
    pub fn glVertexAttribI1i(index: GLuint, x: GLint);
}
extern "C" {
    pub fn glVertexAttribI2i(index: GLuint, x: GLint, y: GLint);
}
extern "C" {
    pub fn glVertexAttribI3i(index: GLuint, x: GLint, y: GLint, z: GLint);
}
extern "C" {
    pub fn glVertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint);
}
extern "C" {
    pub fn glVertexAttribI1ui(index: GLuint, x: GLuint);
}
extern "C" {
    pub fn glVertexAttribI2ui(index: GLuint, x: GLuint, y: GLuint);
}
extern "C" {
    pub fn glVertexAttribI3ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint);
}
extern "C" {
    pub fn glVertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint);
}
extern "C" {
    pub fn glVertexAttribI1iv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glVertexAttribI2iv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glVertexAttribI3iv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glVertexAttribI4iv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glVertexAttribI1uiv(index: GLuint, v: *const GLuint);
}
extern "C" {
    pub fn glVertexAttribI2uiv(index: GLuint, v: *const GLuint);
}
extern "C" {
    pub fn glVertexAttribI3uiv(index: GLuint, v: *const GLuint);
}
extern "C" {
    pub fn glVertexAttribI4uiv(index: GLuint, v: *const GLuint);
}
extern "C" {
    pub fn glVertexAttribI4bv(index: GLuint, v: *const GLbyte);
}
extern "C" {
    pub fn glVertexAttribI4sv(index: GLuint, v: *const GLshort);
}
extern "C" {
    pub fn glVertexAttribI4ubv(index: GLuint, v: *const GLubyte);
}
extern "C" {
    pub fn glVertexAttribI4usv(index: GLuint, v: *const GLushort);
}
extern "C" {
    pub fn glGetUniformuiv(program: GLuint, location: GLint, params: *mut GLuint);
}
extern "C" {
    pub fn glBindFragDataLocation(program: GLuint, color: GLuint, name: *const GLchar);
}
extern "C" {
    pub fn glGetFragDataLocation(program: GLuint, name: *const GLchar) -> GLint;
}
extern "C" {
    pub fn glUniform1ui(location: GLint, v0: GLuint);
}
extern "C" {
    pub fn glUniform2ui(location: GLint, v0: GLuint, v1: GLuint);
}
extern "C" {
    pub fn glUniform3ui(location: GLint, v0: GLuint, v1: GLuint, v2: GLuint);
}
extern "C" {
    pub fn glUniform4ui(location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint);
}
extern "C" {
    pub fn glUniform1uiv(location: GLint, count: GLsizei, value: *const GLuint);
}
extern "C" {
    pub fn glUniform2uiv(location: GLint, count: GLsizei, value: *const GLuint);
}
extern "C" {
    pub fn glUniform3uiv(location: GLint, count: GLsizei, value: *const GLuint);
}
extern "C" {
    pub fn glUniform4uiv(location: GLint, count: GLsizei, value: *const GLuint);
}
extern "C" {
    pub fn glTexParameterIiv(target: GLenum, pname: GLenum, params: *const GLint);
}
extern "C" {
    pub fn glTexParameterIuiv(target: GLenum, pname: GLenum, params: *const GLuint);
}
extern "C" {
    pub fn glGetTexParameterIiv(target: GLenum, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetTexParameterIuiv(target: GLenum, pname: GLenum, params: *mut GLuint);
}
extern "C" {
    pub fn glClearBufferiv(buffer: GLenum, drawbuffer: GLint, value: *const GLint);
}
extern "C" {
    pub fn glClearBufferuiv(buffer: GLenum, drawbuffer: GLint, value: *const GLuint);
}
extern "C" {
    pub fn glClearBufferfv(buffer: GLenum, drawbuffer: GLint, value: *const GLfloat);
}
extern "C" {
    pub fn glClearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint);
}
extern "C" {
    pub fn glGetStringi(name: GLenum, index: GLuint) -> *const GLubyte;
}
pub type PFNGLCOLORMASKIPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean),
>;
pub type PFNGLGETBOOLEANI_VPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, index: GLuint, data: *mut GLboolean),
>;
pub type PFNGLGETINTEGERI_VPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint, data: *mut GLint)>;
pub type PFNGLENABLEIPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint)>;
pub type PFNGLDISABLEIPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint)>;
pub type PFNGLISENABLEDIPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint) -> GLboolean>;
pub type PFNGLBEGINTRANSFORMFEEDBACKPROC =
    ::std::option::Option<unsafe extern "C" fn(primitiveMode: GLenum)>;
pub type PFNGLENDTRANSFORMFEEDBACKPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLBINDBUFFERRANGEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        index: GLuint,
        buffer: GLuint,
        offset: GLintptr,
        size: GLsizeiptr,
    ),
>;
pub type PFNGLBINDBUFFERBASEPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint, buffer: GLuint)>;
pub type PFNGLTRANSFORMFEEDBACKVARYINGSPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        count: GLsizei,
        varyings: *const *const GLchar,
        bufferMode: GLenum,
    ),
>;
pub type PFNGLGETTRANSFORMFEEDBACKVARYINGPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        index: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        size: *mut GLsizei,
        type_: *mut GLenum,
        name: *mut GLchar,
    ),
>;
pub type PFNGLCLAMPCOLORPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, clamp: GLenum)>;
pub type PFNGLBEGINCONDITIONALRENDERPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint, mode: GLenum)>;
pub type PFNGLENDCONDITIONALRENDERPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLVERTEXATTRIBIPOINTERPROC = ::std::option::Option<
    unsafe extern "C" fn(
        index: GLuint,
        size: GLint,
        type_: GLenum,
        stride: GLsizei,
        pointer: *const GLvoid,
    ),
>;
pub type PFNGLGETVERTEXATTRIBIIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETVERTEXATTRIBIUIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, pname: GLenum, params: *mut GLuint)>;
pub type PFNGLVERTEXATTRIBI1IPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLint)>;
pub type PFNGLVERTEXATTRIBI2IPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLint, y: GLint)>;
pub type PFNGLVERTEXATTRIBI3IPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLint, y: GLint, z: GLint)>;
pub type PFNGLVERTEXATTRIBI4IPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint),
>;
pub type PFNGLVERTEXATTRIBI1UIPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLuint)>;
pub type PFNGLVERTEXATTRIBI2UIPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLuint, y: GLuint)>;
pub type PFNGLVERTEXATTRIBI3UIPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLuint, y: GLuint, z: GLuint)>;
pub type PFNGLVERTEXATTRIBI4UIPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint),
>;
pub type PFNGLVERTEXATTRIBI1IVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLVERTEXATTRIBI2IVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLVERTEXATTRIBI3IVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLVERTEXATTRIBI4IVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLVERTEXATTRIBI1UIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLuint)>;
pub type PFNGLVERTEXATTRIBI2UIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLuint)>;
pub type PFNGLVERTEXATTRIBI3UIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLuint)>;
pub type PFNGLVERTEXATTRIBI4UIVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLuint)>;
pub type PFNGLVERTEXATTRIBI4BVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLbyte)>;
pub type PFNGLVERTEXATTRIBI4SVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLshort)>;
pub type PFNGLVERTEXATTRIBI4UBVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLubyte)>;
pub type PFNGLVERTEXATTRIBI4USVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLushort)>;
pub type PFNGLGETUNIFORMUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, params: *mut GLuint),
>;
pub type PFNGLBINDFRAGDATALOCATIONPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, color: GLuint, name: *const GLchar),
>;
pub type PFNGLGETFRAGDATALOCATIONPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, name: *const GLchar) -> GLint>;
pub type PFNGLUNIFORM1UIPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLuint)>;
pub type PFNGLUNIFORM2UIPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, v0: GLuint, v1: GLuint)>;
pub type PFNGLUNIFORM3UIPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, v0: GLuint, v1: GLuint, v2: GLuint),
>;
pub type PFNGLUNIFORM4UIPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint),
>;
pub type PFNGLUNIFORM1UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLUNIFORM2UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLUNIFORM3UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLUNIFORM4UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLTEXPARAMETERIIVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *const GLint),
>;
pub type PFNGLTEXPARAMETERIUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *const GLuint),
>;
pub type PFNGLGETTEXPARAMETERIIVPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETTEXPARAMETERIUIVPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLuint)>;
pub type PFNGLCLEARBUFFERIVPROC = ::std::option::Option<
    unsafe extern "C" fn(buffer: GLenum, drawbuffer: GLint, value: *const GLint),
>;
pub type PFNGLCLEARBUFFERUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(buffer: GLenum, drawbuffer: GLint, value: *const GLuint),
>;
pub type PFNGLCLEARBUFFERFVPROC = ::std::option::Option<
    unsafe extern "C" fn(buffer: GLenum, drawbuffer: GLint, value: *const GLfloat),
>;
pub type PFNGLCLEARBUFFERFIPROC = ::std::option::Option<
    unsafe extern "C" fn(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint),
>;
pub type PFNGLGETSTRINGIPROC =
    ::std::option::Option<unsafe extern "C" fn(name: GLenum, index: GLuint) -> *const GLubyte>;
extern "C" {
    pub fn glDrawArraysInstanced(
        mode: GLenum,
        first: GLint,
        count: GLsizei,
        instancecount: GLsizei,
    );
}
extern "C" {
    pub fn glDrawElementsInstanced(
        mode: GLenum,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        instancecount: GLsizei,
    );
}
extern "C" {
    pub fn glTexBuffer(target: GLenum, internalformat: GLenum, buffer: GLuint);
}
extern "C" {
    pub fn glPrimitiveRestartIndex(index: GLuint);
}
pub type PFNGLDRAWARRAYSINSTANCEDPROC = ::std::option::Option<
    unsafe extern "C" fn(mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei),
>;
pub type PFNGLDRAWELEMENTSINSTANCEDPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        instancecount: GLsizei,
    ),
>;
pub type PFNGLTEXBUFFERPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, internalformat: GLenum, buffer: GLuint),
>;
pub type PFNGLPRIMITIVERESTARTINDEXPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint)>;
extern "C" {
    pub fn glGetInteger64i_v(target: GLenum, index: GLuint, data: *mut GLint64);
}
extern "C" {
    pub fn glGetBufferParameteri64v(target: GLenum, pname: GLenum, params: *mut GLint64);
}
extern "C" {
    pub fn glFramebufferTexture(target: GLenum, attachment: GLenum, texture: GLuint, level: GLint);
}
pub type PFNGLGETINTEGER64I_VPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint, data: *mut GLint64)>;
pub type PFNGLGETBUFFERPARAMETERI64VPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLint64),
>;
pub type PFNGLFRAMEBUFFERTEXTUREPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, attachment: GLenum, texture: GLuint, level: GLint),
>;
extern "C" {
    pub fn glVertexAttribDivisor(index: GLuint, divisor: GLuint);
}
pub type PFNGLVERTEXATTRIBDIVISORPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, divisor: GLuint)>;
extern "C" {
    pub fn glMinSampleShading(value: GLfloat);
}
extern "C" {
    pub fn glBlendEquationi(buf: GLuint, mode: GLenum);
}
extern "C" {
    pub fn glBlendEquationSeparatei(buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum);
}
extern "C" {
    pub fn glBlendFunci(buf: GLuint, src: GLenum, dst: GLenum);
}
extern "C" {
    pub fn glBlendFuncSeparatei(
        buf: GLuint,
        srcRGB: GLenum,
        dstRGB: GLenum,
        srcAlpha: GLenum,
        dstAlpha: GLenum,
    );
}
pub type PFNGLMINSAMPLESHADINGPROC = ::std::option::Option<unsafe extern "C" fn(value: GLfloat)>;
pub type PFNGLBLENDEQUATIONIPROC =
    ::std::option::Option<unsafe extern "C" fn(buf: GLuint, mode: GLenum)>;
pub type PFNGLBLENDEQUATIONSEPARATEIPROC =
    ::std::option::Option<unsafe extern "C" fn(buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum)>;
pub type PFNGLBLENDFUNCIPROC =
    ::std::option::Option<unsafe extern "C" fn(buf: GLuint, src: GLenum, dst: GLenum)>;
pub type PFNGLBLENDFUNCSEPARATEIPROC = ::std::option::Option<
    unsafe extern "C" fn(
        buf: GLuint,
        srcRGB: GLenum,
        dstRGB: GLenum,
        srcAlpha: GLenum,
        dstAlpha: GLenum,
    ),
>;
extern "C" {
    pub fn glIsRenderbuffer(renderbuffer: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glBindRenderbuffer(target: GLenum, renderbuffer: GLuint);
}
extern "C" {
    pub fn glDeleteRenderbuffers(n: GLsizei, renderbuffers: *const GLuint);
}
extern "C" {
    pub fn glGenRenderbuffers(n: GLsizei, renderbuffers: *mut GLuint);
}
extern "C" {
    pub fn glRenderbufferStorage(
        target: GLenum,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
    );
}
extern "C" {
    pub fn glGetRenderbufferParameteriv(target: GLenum, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glIsFramebuffer(framebuffer: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glBindFramebuffer(target: GLenum, framebuffer: GLuint);
}
extern "C" {
    pub fn glDeleteFramebuffers(n: GLsizei, framebuffers: *const GLuint);
}
extern "C" {
    pub fn glGenFramebuffers(n: GLsizei, framebuffers: *mut GLuint);
}
extern "C" {
    pub fn glCheckFramebufferStatus(target: GLenum) -> GLenum;
}
extern "C" {
    pub fn glFramebufferTexture1D(
        target: GLenum,
        attachment: GLenum,
        textarget: GLenum,
        texture: GLuint,
        level: GLint,
    );
}
extern "C" {
    pub fn glFramebufferTexture2D(
        target: GLenum,
        attachment: GLenum,
        textarget: GLenum,
        texture: GLuint,
        level: GLint,
    );
}
extern "C" {
    pub fn glFramebufferTexture3D(
        target: GLenum,
        attachment: GLenum,
        textarget: GLenum,
        texture: GLuint,
        level: GLint,
        zoffset: GLint,
    );
}
extern "C" {
    pub fn glFramebufferRenderbuffer(
        target: GLenum,
        attachment: GLenum,
        renderbuffertarget: GLenum,
        renderbuffer: GLuint,
    );
}
extern "C" {
    pub fn glGetFramebufferAttachmentParameteriv(
        target: GLenum,
        attachment: GLenum,
        pname: GLenum,
        params: *mut GLint,
    );
}
extern "C" {
    pub fn glGenerateMipmap(target: GLenum);
}
extern "C" {
    pub fn glBlitFramebuffer(
        srcX0: GLint,
        srcY0: GLint,
        srcX1: GLint,
        srcY1: GLint,
        dstX0: GLint,
        dstY0: GLint,
        dstX1: GLint,
        dstY1: GLint,
        mask: GLbitfield,
        filter: GLenum,
    );
}
extern "C" {
    pub fn glRenderbufferStorageMultisample(
        target: GLenum,
        samples: GLsizei,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
    );
}
extern "C" {
    pub fn glFramebufferTextureLayer(
        target: GLenum,
        attachment: GLenum,
        texture: GLuint,
        level: GLint,
        layer: GLint,
    );
}
pub type PFNGLISRENDERBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(renderbuffer: GLuint) -> GLboolean>;
pub type PFNGLBINDRENDERBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, renderbuffer: GLuint)>;
pub type PFNGLDELETERENDERBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, renderbuffers: *const GLuint)>;
pub type PFNGLGENRENDERBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, renderbuffers: *mut GLuint)>;
pub type PFNGLRENDERBUFFERSTORAGEPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei),
>;
pub type PFNGLGETRENDERBUFFERPARAMETERIVPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, pname: GLenum, params: *mut GLint)>;
pub type PFNGLISFRAMEBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(framebuffer: GLuint) -> GLboolean>;
pub type PFNGLBINDFRAMEBUFFERPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, framebuffer: GLuint)>;
pub type PFNGLDELETEFRAMEBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, framebuffers: *const GLuint)>;
pub type PFNGLGENFRAMEBUFFERSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, framebuffers: *mut GLuint)>;
pub type PFNGLCHECKFRAMEBUFFERSTATUSPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum) -> GLenum>;
pub type PFNGLFRAMEBUFFERTEXTURE1DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        attachment: GLenum,
        textarget: GLenum,
        texture: GLuint,
        level: GLint,
    ),
>;
pub type PFNGLFRAMEBUFFERTEXTURE2DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        attachment: GLenum,
        textarget: GLenum,
        texture: GLuint,
        level: GLint,
    ),
>;
pub type PFNGLFRAMEBUFFERTEXTURE3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        attachment: GLenum,
        textarget: GLenum,
        texture: GLuint,
        level: GLint,
        zoffset: GLint,
    ),
>;
pub type PFNGLFRAMEBUFFERRENDERBUFFERPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        attachment: GLenum,
        renderbuffertarget: GLenum,
        renderbuffer: GLuint,
    ),
>;
pub type PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint),
>;
pub type PFNGLGENERATEMIPMAPPROC = ::std::option::Option<unsafe extern "C" fn(target: GLenum)>;
pub type PFNGLBLITFRAMEBUFFERPROC = ::std::option::Option<
    unsafe extern "C" fn(
        srcX0: GLint,
        srcY0: GLint,
        srcX1: GLint,
        srcY1: GLint,
        dstX0: GLint,
        dstY0: GLint,
        dstX1: GLint,
        dstY1: GLint,
        mask: GLbitfield,
        filter: GLenum,
    ),
>;
pub type PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        samples: GLsizei,
        internalformat: GLenum,
        width: GLsizei,
        height: GLsizei,
    ),
>;
pub type PFNGLFRAMEBUFFERTEXTURELAYERPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        attachment: GLenum,
        texture: GLuint,
        level: GLint,
        layer: GLint,
    ),
>;
extern "C" {
    pub fn glMapBufferRange(
        target: GLenum,
        offset: GLintptr,
        length: GLsizeiptr,
        access: GLbitfield,
    ) -> *mut GLvoid;
}
extern "C" {
    pub fn glFlushMappedBufferRange(target: GLenum, offset: GLintptr, length: GLsizeiptr);
}
pub type PFNGLMAPBUFFERRANGEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        offset: GLintptr,
        length: GLsizeiptr,
        access: GLbitfield,
    ) -> *mut GLvoid,
>;
pub type PFNGLFLUSHMAPPEDBUFFERRANGEPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, offset: GLintptr, length: GLsizeiptr),
>;
extern "C" {
    pub fn glBindVertexArray(array: GLuint);
}
extern "C" {
    pub fn glDeleteVertexArrays(n: GLsizei, arrays: *const GLuint);
}
extern "C" {
    pub fn glGenVertexArrays(n: GLsizei, arrays: *mut GLuint);
}
extern "C" {
    pub fn glIsVertexArray(array: GLuint) -> GLboolean;
}
pub type PFNGLBINDVERTEXARRAYPROC = ::std::option::Option<unsafe extern "C" fn(array: GLuint)>;
pub type PFNGLDELETEVERTEXARRAYSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, arrays: *const GLuint)>;
pub type PFNGLGENVERTEXARRAYSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, arrays: *mut GLuint)>;
pub type PFNGLISVERTEXARRAYPROC =
    ::std::option::Option<unsafe extern "C" fn(array: GLuint) -> GLboolean>;
extern "C" {
    pub fn glGetUniformIndices(
        program: GLuint,
        uniformCount: GLsizei,
        uniformNames: *const *const GLchar,
        uniformIndices: *mut GLuint,
    );
}
extern "C" {
    pub fn glGetActiveUniformsiv(
        program: GLuint,
        uniformCount: GLsizei,
        uniformIndices: *const GLuint,
        pname: GLenum,
        params: *mut GLint,
    );
}
extern "C" {
    pub fn glGetActiveUniformName(
        program: GLuint,
        uniformIndex: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        uniformName: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetUniformBlockIndex(program: GLuint, uniformBlockName: *const GLchar) -> GLuint;
}
extern "C" {
    pub fn glGetActiveUniformBlockiv(
        program: GLuint,
        uniformBlockIndex: GLuint,
        pname: GLenum,
        params: *mut GLint,
    );
}
extern "C" {
    pub fn glGetActiveUniformBlockName(
        program: GLuint,
        uniformBlockIndex: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        uniformBlockName: *mut GLchar,
    );
}
extern "C" {
    pub fn glUniformBlockBinding(
        program: GLuint,
        uniformBlockIndex: GLuint,
        uniformBlockBinding: GLuint,
    );
}
pub type PFNGLGETUNIFORMINDICESPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        uniformCount: GLsizei,
        uniformNames: *const *const GLchar,
        uniformIndices: *mut GLuint,
    ),
>;
pub type PFNGLGETACTIVEUNIFORMSIVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        uniformCount: GLsizei,
        uniformIndices: *const GLuint,
        pname: GLenum,
        params: *mut GLint,
    ),
>;
pub type PFNGLGETACTIVEUNIFORMNAMEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        uniformIndex: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        uniformName: *mut GLchar,
    ),
>;
pub type PFNGLGETUNIFORMBLOCKINDEXPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, uniformBlockName: *const GLchar) -> GLuint,
>;
pub type PFNGLGETACTIVEUNIFORMBLOCKIVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        uniformBlockIndex: GLuint,
        pname: GLenum,
        params: *mut GLint,
    ),
>;
pub type PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        uniformBlockIndex: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        uniformBlockName: *mut GLchar,
    ),
>;
pub type PFNGLUNIFORMBLOCKBINDINGPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint),
>;
extern "C" {
    pub fn glCopyBufferSubData(
        readTarget: GLenum,
        writeTarget: GLenum,
        readOffset: GLintptr,
        writeOffset: GLintptr,
        size: GLsizeiptr,
    );
}
pub type PFNGLCOPYBUFFERSUBDATAPROC = ::std::option::Option<
    unsafe extern "C" fn(
        readTarget: GLenum,
        writeTarget: GLenum,
        readOffset: GLintptr,
        writeOffset: GLintptr,
        size: GLsizeiptr,
    ),
>;
extern "C" {
    pub fn glDrawElementsBaseVertex(
        mode: GLenum,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        basevertex: GLint,
    );
}
extern "C" {
    pub fn glDrawRangeElementsBaseVertex(
        mode: GLenum,
        start: GLuint,
        end: GLuint,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        basevertex: GLint,
    );
}
extern "C" {
    pub fn glDrawElementsInstancedBaseVertex(
        mode: GLenum,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        instancecount: GLsizei,
        basevertex: GLint,
    );
}
extern "C" {
    pub fn glMultiDrawElementsBaseVertex(
        mode: GLenum,
        count: *const GLsizei,
        type_: GLenum,
        indices: *const *const GLvoid,
        drawcount: GLsizei,
        basevertex: *const GLint,
    );
}
pub type PFNGLDRAWELEMENTSBASEVERTEXPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        basevertex: GLint,
    ),
>;
pub type PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        start: GLuint,
        end: GLuint,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        basevertex: GLint,
    ),
>;
pub type PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        count: GLsizei,
        type_: GLenum,
        indices: *const GLvoid,
        instancecount: GLsizei,
        basevertex: GLint,
    ),
>;
pub type PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC = ::std::option::Option<
    unsafe extern "C" fn(
        mode: GLenum,
        count: *const GLsizei,
        type_: GLenum,
        indices: *const *const GLvoid,
        drawcount: GLsizei,
        basevertex: *const GLint,
    ),
>;
extern "C" {
    pub fn glProvokingVertex(mode: GLenum);
}
pub type PFNGLPROVOKINGVERTEXPROC = ::std::option::Option<unsafe extern "C" fn(mode: GLenum)>;
extern "C" {
    pub fn glFenceSync(condition: GLenum, flags: GLbitfield) -> GLsync;
}
extern "C" {
    pub fn glIsSync(sync: GLsync) -> GLboolean;
}
extern "C" {
    pub fn glDeleteSync(sync: GLsync);
}
extern "C" {
    pub fn glClientWaitSync(sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> GLenum;
}
extern "C" {
    pub fn glWaitSync(sync: GLsync, flags: GLbitfield, timeout: GLuint64);
}
extern "C" {
    pub fn glGetInteger64v(pname: GLenum, params: *mut GLint64);
}
extern "C" {
    pub fn glGetSynciv(
        sync: GLsync,
        pname: GLenum,
        bufSize: GLsizei,
        length: *mut GLsizei,
        values: *mut GLint,
    );
}
pub type PFNGLFENCESYNCPROC =
    ::std::option::Option<unsafe extern "C" fn(condition: GLenum, flags: GLbitfield) -> GLsync>;
pub type PFNGLISSYNCPROC = ::std::option::Option<unsafe extern "C" fn(sync: GLsync) -> GLboolean>;
pub type PFNGLDELETESYNCPROC = ::std::option::Option<unsafe extern "C" fn(sync: GLsync)>;
pub type PFNGLCLIENTWAITSYNCPROC = ::std::option::Option<
    unsafe extern "C" fn(sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> GLenum,
>;
pub type PFNGLWAITSYNCPROC =
    ::std::option::Option<unsafe extern "C" fn(sync: GLsync, flags: GLbitfield, timeout: GLuint64)>;
pub type PFNGLGETINTEGER64VPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, params: *mut GLint64)>;
pub type PFNGLGETSYNCIVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        sync: GLsync,
        pname: GLenum,
        bufSize: GLsizei,
        length: *mut GLsizei,
        values: *mut GLint,
    ),
>;
extern "C" {
    pub fn glTexImage2DMultisample(
        target: GLenum,
        samples: GLsizei,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        fixedsamplelocations: GLboolean,
    );
}
extern "C" {
    pub fn glTexImage3DMultisample(
        target: GLenum,
        samples: GLsizei,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        fixedsamplelocations: GLboolean,
    );
}
extern "C" {
    pub fn glGetMultisamplefv(pname: GLenum, index: GLuint, val: *mut GLfloat);
}
extern "C" {
    pub fn glSampleMaski(index: GLuint, mask: GLbitfield);
}
pub type PFNGLTEXIMAGE2DMULTISAMPLEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        samples: GLsizei,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        fixedsamplelocations: GLboolean,
    ),
>;
pub type PFNGLTEXIMAGE3DMULTISAMPLEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        target: GLenum,
        samples: GLsizei,
        internalformat: GLint,
        width: GLsizei,
        height: GLsizei,
        depth: GLsizei,
        fixedsamplelocations: GLboolean,
    ),
>;
pub type PFNGLGETMULTISAMPLEFVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, index: GLuint, val: *mut GLfloat)>;
pub type PFNGLSAMPLEMASKIPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, mask: GLbitfield)>;
extern "C" {
    pub fn glBindFragDataLocationIndexed(
        program: GLuint,
        colorNumber: GLuint,
        index: GLuint,
        name: *const GLchar,
    );
}
extern "C" {
    pub fn glGetFragDataIndex(program: GLuint, name: *const GLchar) -> GLint;
}
pub type PFNGLBINDFRAGDATALOCATIONINDEXEDPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar),
>;
pub type PFNGLGETFRAGDATAINDEXPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, name: *const GLchar) -> GLint>;
extern "C" {
    pub fn glGenSamplers(count: GLsizei, samplers: *mut GLuint);
}
extern "C" {
    pub fn glDeleteSamplers(count: GLsizei, samplers: *const GLuint);
}
extern "C" {
    pub fn glIsSampler(sampler: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glBindSampler(unit: GLuint, sampler: GLuint);
}
extern "C" {
    pub fn glSamplerParameteri(sampler: GLuint, pname: GLenum, param: GLint);
}
extern "C" {
    pub fn glSamplerParameteriv(sampler: GLuint, pname: GLenum, param: *const GLint);
}
extern "C" {
    pub fn glSamplerParameterf(sampler: GLuint, pname: GLenum, param: GLfloat);
}
extern "C" {
    pub fn glSamplerParameterfv(sampler: GLuint, pname: GLenum, param: *const GLfloat);
}
extern "C" {
    pub fn glSamplerParameterIiv(sampler: GLuint, pname: GLenum, param: *const GLint);
}
extern "C" {
    pub fn glSamplerParameterIuiv(sampler: GLuint, pname: GLenum, param: *const GLuint);
}
extern "C" {
    pub fn glGetSamplerParameteriv(sampler: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetSamplerParameterIiv(sampler: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glGetSamplerParameterfv(sampler: GLuint, pname: GLenum, params: *mut GLfloat);
}
extern "C" {
    pub fn glGetSamplerParameterIuiv(sampler: GLuint, pname: GLenum, params: *mut GLuint);
}
pub type PFNGLGENSAMPLERSPROC =
    ::std::option::Option<unsafe extern "C" fn(count: GLsizei, samplers: *mut GLuint)>;
pub type PFNGLDELETESAMPLERSPROC =
    ::std::option::Option<unsafe extern "C" fn(count: GLsizei, samplers: *const GLuint)>;
pub type PFNGLISSAMPLERPROC =
    ::std::option::Option<unsafe extern "C" fn(sampler: GLuint) -> GLboolean>;
pub type PFNGLBINDSAMPLERPROC =
    ::std::option::Option<unsafe extern "C" fn(unit: GLuint, sampler: GLuint)>;
pub type PFNGLSAMPLERPARAMETERIPROC =
    ::std::option::Option<unsafe extern "C" fn(sampler: GLuint, pname: GLenum, param: GLint)>;
pub type PFNGLSAMPLERPARAMETERIVPROC = ::std::option::Option<
    unsafe extern "C" fn(sampler: GLuint, pname: GLenum, param: *const GLint),
>;
pub type PFNGLSAMPLERPARAMETERFPROC =
    ::std::option::Option<unsafe extern "C" fn(sampler: GLuint, pname: GLenum, param: GLfloat)>;
pub type PFNGLSAMPLERPARAMETERFVPROC = ::std::option::Option<
    unsafe extern "C" fn(sampler: GLuint, pname: GLenum, param: *const GLfloat),
>;
pub type PFNGLSAMPLERPARAMETERIIVPROC = ::std::option::Option<
    unsafe extern "C" fn(sampler: GLuint, pname: GLenum, param: *const GLint),
>;
pub type PFNGLSAMPLERPARAMETERIUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(sampler: GLuint, pname: GLenum, param: *const GLuint),
>;
pub type PFNGLGETSAMPLERPARAMETERIVPROC =
    ::std::option::Option<unsafe extern "C" fn(sampler: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETSAMPLERPARAMETERIIVPROC =
    ::std::option::Option<unsafe extern "C" fn(sampler: GLuint, pname: GLenum, params: *mut GLint)>;
pub type PFNGLGETSAMPLERPARAMETERFVPROC = ::std::option::Option<
    unsafe extern "C" fn(sampler: GLuint, pname: GLenum, params: *mut GLfloat),
>;
pub type PFNGLGETSAMPLERPARAMETERIUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(sampler: GLuint, pname: GLenum, params: *mut GLuint),
>;
extern "C" {
    pub fn glQueryCounter(id: GLuint, target: GLenum);
}
extern "C" {
    pub fn glGetQueryObjecti64v(id: GLuint, pname: GLenum, params: *mut GLint64);
}
extern "C" {
    pub fn glGetQueryObjectui64v(id: GLuint, pname: GLenum, params: *mut GLuint64);
}
pub type PFNGLQUERYCOUNTERPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint, target: GLenum)>;
pub type PFNGLGETQUERYOBJECTI64VPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint, pname: GLenum, params: *mut GLint64)>;
pub type PFNGLGETQUERYOBJECTUI64VPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint, pname: GLenum, params: *mut GLuint64)>;
extern "C" {
    pub fn glVertexAttribP1ui(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint);
}
extern "C" {
    pub fn glVertexAttribP1uiv(
        index: GLuint,
        type_: GLenum,
        normalized: GLboolean,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glVertexAttribP2ui(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint);
}
extern "C" {
    pub fn glVertexAttribP2uiv(
        index: GLuint,
        type_: GLenum,
        normalized: GLboolean,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glVertexAttribP3ui(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint);
}
extern "C" {
    pub fn glVertexAttribP3uiv(
        index: GLuint,
        type_: GLenum,
        normalized: GLboolean,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glVertexAttribP4ui(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint);
}
extern "C" {
    pub fn glVertexAttribP4uiv(
        index: GLuint,
        type_: GLenum,
        normalized: GLboolean,
        value: *const GLuint,
    );
}
pub type PFNGLVERTEXATTRIBP1UIPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint),
>;
pub type PFNGLVERTEXATTRIBP1UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint),
>;
pub type PFNGLVERTEXATTRIBP2UIPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint),
>;
pub type PFNGLVERTEXATTRIBP2UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint),
>;
pub type PFNGLVERTEXATTRIBP3UIPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint),
>;
pub type PFNGLVERTEXATTRIBP3UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint),
>;
pub type PFNGLVERTEXATTRIBP4UIPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint),
>;
pub type PFNGLVERTEXATTRIBP4UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint),
>;
extern "C" {
    pub fn glDrawArraysIndirect(mode: GLenum, indirect: *const GLvoid);
}
extern "C" {
    pub fn glDrawElementsIndirect(mode: GLenum, type_: GLenum, indirect: *const GLvoid);
}
pub type PFNGLDRAWARRAYSINDIRECTPROC =
    ::std::option::Option<unsafe extern "C" fn(mode: GLenum, indirect: *const GLvoid)>;
pub type PFNGLDRAWELEMENTSINDIRECTPROC = ::std::option::Option<
    unsafe extern "C" fn(mode: GLenum, type_: GLenum, indirect: *const GLvoid),
>;
extern "C" {
    pub fn glUniform1d(location: GLint, x: GLdouble);
}
extern "C" {
    pub fn glUniform2d(location: GLint, x: GLdouble, y: GLdouble);
}
extern "C" {
    pub fn glUniform3d(location: GLint, x: GLdouble, y: GLdouble, z: GLdouble);
}
extern "C" {
    pub fn glUniform4d(location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble);
}
extern "C" {
    pub fn glUniform1dv(location: GLint, count: GLsizei, value: *const GLdouble);
}
extern "C" {
    pub fn glUniform2dv(location: GLint, count: GLsizei, value: *const GLdouble);
}
extern "C" {
    pub fn glUniform3dv(location: GLint, count: GLsizei, value: *const GLdouble);
}
extern "C" {
    pub fn glUniform4dv(location: GLint, count: GLsizei, value: *const GLdouble);
}
extern "C" {
    pub fn glUniformMatrix2dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix3dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix4dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix2x3dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix2x4dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix3x2dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix3x4dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix4x2dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glUniformMatrix4x3dv(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glGetUniformdv(program: GLuint, location: GLint, params: *mut GLdouble);
}
pub type PFNGLUNIFORM1DPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, x: GLdouble)>;
pub type PFNGLUNIFORM2DPROC =
    ::std::option::Option<unsafe extern "C" fn(location: GLint, x: GLdouble, y: GLdouble)>;
pub type PFNGLUNIFORM3DPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, x: GLdouble, y: GLdouble, z: GLdouble),
>;
pub type PFNGLUNIFORM4DPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble),
>;
pub type PFNGLUNIFORM1DVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLUNIFORM2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLUNIFORM3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLUNIFORM4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLUNIFORMMATRIX2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX2X3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX2X4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX3X2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX3X4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX4X2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLUNIFORMMATRIX4X3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLGETUNIFORMDVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, params: *mut GLdouble),
>;
extern "C" {
    pub fn glGetSubroutineUniformLocation(
        program: GLuint,
        shadertype: GLenum,
        name: *const GLchar,
    ) -> GLint;
}
extern "C" {
    pub fn glGetSubroutineIndex(program: GLuint, shadertype: GLenum, name: *const GLchar)
        -> GLuint;
}
extern "C" {
    pub fn glGetActiveSubroutineUniformiv(
        program: GLuint,
        shadertype: GLenum,
        index: GLuint,
        pname: GLenum,
        values: *mut GLint,
    );
}
extern "C" {
    pub fn glGetActiveSubroutineUniformName(
        program: GLuint,
        shadertype: GLenum,
        index: GLuint,
        bufsize: GLsizei,
        length: *mut GLsizei,
        name: *mut GLchar,
    );
}
extern "C" {
    pub fn glGetActiveSubroutineName(
        program: GLuint,
        shadertype: GLenum,
        index: GLuint,
        bufsize: GLsizei,
        length: *mut GLsizei,
        name: *mut GLchar,
    );
}
extern "C" {
    pub fn glUniformSubroutinesuiv(shadertype: GLenum, count: GLsizei, indices: *const GLuint);
}
extern "C" {
    pub fn glGetUniformSubroutineuiv(shadertype: GLenum, location: GLint, params: *mut GLuint);
}
extern "C" {
    pub fn glGetProgramStageiv(
        program: GLuint,
        shadertype: GLenum,
        pname: GLenum,
        values: *mut GLint,
    );
}
pub type PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, shadertype: GLenum, name: *const GLchar) -> GLint,
>;
pub type PFNGLGETSUBROUTINEINDEXPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, shadertype: GLenum, name: *const GLchar) -> GLuint,
>;
pub type PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        shadertype: GLenum,
        index: GLuint,
        pname: GLenum,
        values: *mut GLint,
    ),
>;
pub type PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        shadertype: GLenum,
        index: GLuint,
        bufsize: GLsizei,
        length: *mut GLsizei,
        name: *mut GLchar,
    ),
>;
pub type PFNGLGETACTIVESUBROUTINENAMEPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        shadertype: GLenum,
        index: GLuint,
        bufsize: GLsizei,
        length: *mut GLsizei,
        name: *mut GLchar,
    ),
>;
pub type PFNGLUNIFORMSUBROUTINESUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(shadertype: GLenum, count: GLsizei, indices: *const GLuint),
>;
pub type PFNGLGETUNIFORMSUBROUTINEUIVPROC = ::std::option::Option<
    unsafe extern "C" fn(shadertype: GLenum, location: GLint, params: *mut GLuint),
>;
pub type PFNGLGETPROGRAMSTAGEIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint),
>;
extern "C" {
    pub fn glPatchParameteri(pname: GLenum, value: GLint);
}
extern "C" {
    pub fn glPatchParameterfv(pname: GLenum, values: *const GLfloat);
}
pub type PFNGLPATCHPARAMETERIPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, value: GLint)>;
pub type PFNGLPATCHPARAMETERFVPROC =
    ::std::option::Option<unsafe extern "C" fn(pname: GLenum, values: *const GLfloat)>;
extern "C" {
    pub fn glBindTransformFeedback(target: GLenum, id: GLuint);
}
extern "C" {
    pub fn glDeleteTransformFeedbacks(n: GLsizei, ids: *const GLuint);
}
extern "C" {
    pub fn glGenTransformFeedbacks(n: GLsizei, ids: *mut GLuint);
}
extern "C" {
    pub fn glIsTransformFeedback(id: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glPauseTransformFeedback();
}
extern "C" {
    pub fn glResumeTransformFeedback();
}
extern "C" {
    pub fn glDrawTransformFeedback(mode: GLenum, id: GLuint);
}
pub type PFNGLBINDTRANSFORMFEEDBACKPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, id: GLuint)>;
pub type PFNGLDELETETRANSFORMFEEDBACKSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, ids: *const GLuint)>;
pub type PFNGLGENTRANSFORMFEEDBACKSPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, ids: *mut GLuint)>;
pub type PFNGLISTRANSFORMFEEDBACKPROC =
    ::std::option::Option<unsafe extern "C" fn(id: GLuint) -> GLboolean>;
pub type PFNGLPAUSETRANSFORMFEEDBACKPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLRESUMETRANSFORMFEEDBACKPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLDRAWTRANSFORMFEEDBACKPROC =
    ::std::option::Option<unsafe extern "C" fn(mode: GLenum, id: GLuint)>;
extern "C" {
    pub fn glDrawTransformFeedbackStream(mode: GLenum, id: GLuint, stream: GLuint);
}
extern "C" {
    pub fn glBeginQueryIndexed(target: GLenum, index: GLuint, id: GLuint);
}
extern "C" {
    pub fn glEndQueryIndexed(target: GLenum, index: GLuint);
}
extern "C" {
    pub fn glGetQueryIndexediv(target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint);
}
pub type PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC =
    ::std::option::Option<unsafe extern "C" fn(mode: GLenum, id: GLuint, stream: GLuint)>;
pub type PFNGLBEGINQUERYINDEXEDPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint, id: GLuint)>;
pub type PFNGLENDQUERYINDEXEDPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint)>;
pub type PFNGLGETQUERYINDEXEDIVPROC = ::std::option::Option<
    unsafe extern "C" fn(target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint),
>;
extern "C" {
    pub fn glReleaseShaderCompiler();
}
extern "C" {
    pub fn glShaderBinary(
        count: GLsizei,
        shaders: *const GLuint,
        binaryformat: GLenum,
        binary: *const GLvoid,
        length: GLsizei,
    );
}
extern "C" {
    pub fn glGetShaderPrecisionFormat(
        shadertype: GLenum,
        precisiontype: GLenum,
        range: *mut GLint,
        precision: *mut GLint,
    );
}
extern "C" {
    pub fn glDepthRangef(n: GLclampf, f: GLclampf);
}
extern "C" {
    pub fn glClearDepthf(d: GLclampf);
}
pub type PFNGLRELEASESHADERCOMPILERPROC = ::std::option::Option<unsafe extern "C" fn()>;
pub type PFNGLSHADERBINARYPROC = ::std::option::Option<
    unsafe extern "C" fn(
        count: GLsizei,
        shaders: *const GLuint,
        binaryformat: GLenum,
        binary: *const GLvoid,
        length: GLsizei,
    ),
>;
pub type PFNGLGETSHADERPRECISIONFORMATPROC = ::std::option::Option<
    unsafe extern "C" fn(
        shadertype: GLenum,
        precisiontype: GLenum,
        range: *mut GLint,
        precision: *mut GLint,
    ),
>;
pub type PFNGLDEPTHRANGEFPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLclampf, f: GLclampf)>;
pub type PFNGLCLEARDEPTHFPROC = ::std::option::Option<unsafe extern "C" fn(d: GLclampf)>;
extern "C" {
    pub fn glGetProgramBinary(
        program: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        binaryFormat: *mut GLenum,
        binary: *mut GLvoid,
    );
}
extern "C" {
    pub fn glProgramBinary(
        program: GLuint,
        binaryFormat: GLenum,
        binary: *const GLvoid,
        length: GLsizei,
    );
}
extern "C" {
    pub fn glProgramParameteri(program: GLuint, pname: GLenum, value: GLint);
}
pub type PFNGLGETPROGRAMBINARYPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        binaryFormat: *mut GLenum,
        binary: *mut GLvoid,
    ),
>;
pub type PFNGLPROGRAMBINARYPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        binaryFormat: GLenum,
        binary: *const GLvoid,
        length: GLsizei,
    ),
>;
pub type PFNGLPROGRAMPARAMETERIPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, pname: GLenum, value: GLint)>;
extern "C" {
    pub fn glUseProgramStages(pipeline: GLuint, stages: GLbitfield, program: GLuint);
}
extern "C" {
    pub fn glActiveShaderProgram(pipeline: GLuint, program: GLuint);
}
extern "C" {
    pub fn glCreateShaderProgramv(
        type_: GLenum,
        count: GLsizei,
        strings: *const *const GLchar,
    ) -> GLuint;
}
extern "C" {
    pub fn glBindProgramPipeline(pipeline: GLuint);
}
extern "C" {
    pub fn glDeleteProgramPipelines(n: GLsizei, pipelines: *const GLuint);
}
extern "C" {
    pub fn glGenProgramPipelines(n: GLsizei, pipelines: *mut GLuint);
}
extern "C" {
    pub fn glIsProgramPipeline(pipeline: GLuint) -> GLboolean;
}
extern "C" {
    pub fn glGetProgramPipelineiv(pipeline: GLuint, pname: GLenum, params: *mut GLint);
}
extern "C" {
    pub fn glProgramUniform1i(program: GLuint, location: GLint, v0: GLint);
}
extern "C" {
    pub fn glProgramUniform1iv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLint,
    );
}
extern "C" {
    pub fn glProgramUniform1f(program: GLuint, location: GLint, v0: GLfloat);
}
extern "C" {
    pub fn glProgramUniform1fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniform1d(program: GLuint, location: GLint, v0: GLdouble);
}
extern "C" {
    pub fn glProgramUniform1dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniform1ui(program: GLuint, location: GLint, v0: GLuint);
}
extern "C" {
    pub fn glProgramUniform1uiv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glProgramUniform2i(program: GLuint, location: GLint, v0: GLint, v1: GLint);
}
extern "C" {
    pub fn glProgramUniform2iv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLint,
    );
}
extern "C" {
    pub fn glProgramUniform2f(program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat);
}
extern "C" {
    pub fn glProgramUniform2fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniform2d(program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble);
}
extern "C" {
    pub fn glProgramUniform2dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniform2ui(program: GLuint, location: GLint, v0: GLuint, v1: GLuint);
}
extern "C" {
    pub fn glProgramUniform2uiv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glProgramUniform3i(program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint);
}
extern "C" {
    pub fn glProgramUniform3iv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLint,
    );
}
extern "C" {
    pub fn glProgramUniform3f(
        program: GLuint,
        location: GLint,
        v0: GLfloat,
        v1: GLfloat,
        v2: GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniform3fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniform3d(
        program: GLuint,
        location: GLint,
        v0: GLdouble,
        v1: GLdouble,
        v2: GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniform3dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniform3ui(
        program: GLuint,
        location: GLint,
        v0: GLuint,
        v1: GLuint,
        v2: GLuint,
    );
}
extern "C" {
    pub fn glProgramUniform3uiv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glProgramUniform4i(
        program: GLuint,
        location: GLint,
        v0: GLint,
        v1: GLint,
        v2: GLint,
        v3: GLint,
    );
}
extern "C" {
    pub fn glProgramUniform4iv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLint,
    );
}
extern "C" {
    pub fn glProgramUniform4f(
        program: GLuint,
        location: GLint,
        v0: GLfloat,
        v1: GLfloat,
        v2: GLfloat,
        v3: GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniform4fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniform4d(
        program: GLuint,
        location: GLint,
        v0: GLdouble,
        v1: GLdouble,
        v2: GLdouble,
        v3: GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniform4dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniform4ui(
        program: GLuint,
        location: GLint,
        v0: GLuint,
        v1: GLuint,
        v2: GLuint,
        v3: GLuint,
    );
}
extern "C" {
    pub fn glProgramUniform4uiv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        value: *const GLuint,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix2fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix3fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix4fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix2dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix3dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix4dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix2x3fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix3x2fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix2x4fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix4x2fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix3x4fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix4x3fv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix2x3dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix3x2dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix2x4dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix4x2dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix3x4dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glProgramUniformMatrix4x3dv(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    );
}
extern "C" {
    pub fn glValidateProgramPipeline(pipeline: GLuint);
}
extern "C" {
    pub fn glGetProgramPipelineInfoLog(
        pipeline: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        infoLog: *mut GLchar,
    );
}
pub type PFNGLUSEPROGRAMSTAGESPROC = ::std::option::Option<
    unsafe extern "C" fn(pipeline: GLuint, stages: GLbitfield, program: GLuint),
>;
pub type PFNGLACTIVESHADERPROGRAMPROC =
    ::std::option::Option<unsafe extern "C" fn(pipeline: GLuint, program: GLuint)>;
pub type PFNGLCREATESHADERPROGRAMVPROC = ::std::option::Option<
    unsafe extern "C" fn(type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> GLuint,
>;
pub type PFNGLBINDPROGRAMPIPELINEPROC =
    ::std::option::Option<unsafe extern "C" fn(pipeline: GLuint)>;
pub type PFNGLDELETEPROGRAMPIPELINESPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, pipelines: *const GLuint)>;
pub type PFNGLGENPROGRAMPIPELINESPROC =
    ::std::option::Option<unsafe extern "C" fn(n: GLsizei, pipelines: *mut GLuint)>;
pub type PFNGLISPROGRAMPIPELINEPROC =
    ::std::option::Option<unsafe extern "C" fn(pipeline: GLuint) -> GLboolean>;
pub type PFNGLGETPROGRAMPIPELINEIVPROC = ::std::option::Option<
    unsafe extern "C" fn(pipeline: GLuint, pname: GLenum, params: *mut GLint),
>;
pub type PFNGLPROGRAMUNIFORM1IPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLint)>;
pub type PFNGLPROGRAMUNIFORM1IVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLPROGRAMUNIFORM1FPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLfloat)>;
pub type PFNGLPROGRAMUNIFORM1FVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLPROGRAMUNIFORM1DPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLdouble)>;
pub type PFNGLPROGRAMUNIFORM1DVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLPROGRAMUNIFORM1UIPROC =
    ::std::option::Option<unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLuint)>;
pub type PFNGLPROGRAMUNIFORM1UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLPROGRAMUNIFORM2IPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLint, v1: GLint),
>;
pub type PFNGLPROGRAMUNIFORM2IVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLPROGRAMUNIFORM2FPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat),
>;
pub type PFNGLPROGRAMUNIFORM2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLPROGRAMUNIFORM2DPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble),
>;
pub type PFNGLPROGRAMUNIFORM2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLPROGRAMUNIFORM2UIPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLuint, v1: GLuint),
>;
pub type PFNGLPROGRAMUNIFORM2UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLPROGRAMUNIFORM3IPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint),
>;
pub type PFNGLPROGRAMUNIFORM3IVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLPROGRAMUNIFORM3FPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat),
>;
pub type PFNGLPROGRAMUNIFORM3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLPROGRAMUNIFORM3DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        v0: GLdouble,
        v1: GLdouble,
        v2: GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORM3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLPROGRAMUNIFORM3UIPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint),
>;
pub type PFNGLPROGRAMUNIFORM3UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLPROGRAMUNIFORM4IPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        v0: GLint,
        v1: GLint,
        v2: GLint,
        v3: GLint,
    ),
>;
pub type PFNGLPROGRAMUNIFORM4IVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLint),
>;
pub type PFNGLPROGRAMUNIFORM4FPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        v0: GLfloat,
        v1: GLfloat,
        v2: GLfloat,
        v3: GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORM4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat),
>;
pub type PFNGLPROGRAMUNIFORM4DPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        v0: GLdouble,
        v1: GLdouble,
        v2: GLdouble,
        v3: GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORM4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble),
>;
pub type PFNGLPROGRAMUNIFORM4UIPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        v0: GLuint,
        v1: GLuint,
        v2: GLuint,
        v3: GLuint,
    ),
>;
pub type PFNGLPROGRAMUNIFORM4UIVPROC = ::std::option::Option<
    unsafe extern "C" fn(program: GLuint, location: GLint, count: GLsizei, value: *const GLuint),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLfloat,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC = ::std::option::Option<
    unsafe extern "C" fn(
        program: GLuint,
        location: GLint,
        count: GLsizei,
        transpose: GLboolean,
        value: *const GLdouble,
    ),
>;
pub type PFNGLVALIDATEPROGRAMPIPELINEPROC =
    ::std::option::Option<unsafe extern "C" fn(pipeline: GLuint)>;
pub type PFNGLGETPROGRAMPIPELINEINFOLOGPROC = ::std::option::Option<
    unsafe extern "C" fn(
        pipeline: GLuint,
        bufSize: GLsizei,
        length: *mut GLsizei,
        infoLog: *mut GLchar,
    ),
>;
extern "C" {
    pub fn glVertexAttribL1d(index: GLuint, x: GLdouble);
}
extern "C" {
    pub fn glVertexAttribL2d(index: GLuint, x: GLdouble, y: GLdouble);
}
extern "C" {
    pub fn glVertexAttribL3d(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble);
}
extern "C" {
    pub fn glVertexAttribL4d(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble);
}
extern "C" {
    pub fn glVertexAttribL1dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttribL2dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttribL3dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttribL4dv(index: GLuint, v: *const GLdouble);
}
extern "C" {
    pub fn glVertexAttribLPointer(
        index: GLuint,
        size: GLint,
        type_: GLenum,
        stride: GLsizei,
        pointer: *const GLvoid,
    );
}
extern "C" {
    pub fn glGetVertexAttribLdv(index: GLuint, pname: GLenum, params: *mut GLdouble);
}
pub type PFNGLVERTEXATTRIBL1DPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLdouble)>;
pub type PFNGLVERTEXATTRIBL2DPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, x: GLdouble, y: GLdouble)>;
pub type PFNGLVERTEXATTRIBL3DPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble),
>;
pub type PFNGLVERTEXATTRIBL4DPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble),
>;
pub type PFNGLVERTEXATTRIBL1DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIBL2DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIBL3DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIBL4DVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLdouble)>;
pub type PFNGLVERTEXATTRIBLPOINTERPROC = ::std::option::Option<
    unsafe extern "C" fn(
        index: GLuint,
        size: GLint,
        type_: GLenum,
        stride: GLsizei,
        pointer: *const GLvoid,
    ),
>;
pub type PFNGLGETVERTEXATTRIBLDVPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, pname: GLenum, params: *mut GLdouble),
>;
extern "C" {
    pub fn glViewportArrayv(first: GLuint, count: GLsizei, v: *const GLfloat);
}
extern "C" {
    pub fn glViewportIndexedf(index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat);
}
extern "C" {
    pub fn glViewportIndexedfv(index: GLuint, v: *const GLfloat);
}
extern "C" {
    pub fn glScissorArrayv(first: GLuint, count: GLsizei, v: *const GLint);
}
extern "C" {
    pub fn glScissorIndexed(
        index: GLuint,
        left: GLint,
        bottom: GLint,
        width: GLsizei,
        height: GLsizei,
    );
}
extern "C" {
    pub fn glScissorIndexedv(index: GLuint, v: *const GLint);
}
extern "C" {
    pub fn glDepthRangeArrayv(first: GLuint, count: GLsizei, v: *const GLclampd);
}
extern "C" {
    pub fn glDepthRangeIndexed(index: GLuint, n: GLclampd, f: GLclampd);
}
extern "C" {
    pub fn glGetFloati_v(target: GLenum, index: GLuint, data: *mut GLfloat);
}
extern "C" {
    pub fn glGetDoublei_v(target: GLenum, index: GLuint, data: *mut GLdouble);
}
pub type PFNGLVIEWPORTARRAYVPROC =
    ::std::option::Option<unsafe extern "C" fn(first: GLuint, count: GLsizei, v: *const GLfloat)>;
pub type PFNGLVIEWPORTINDEXEDFPROC = ::std::option::Option<
    unsafe extern "C" fn(index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat),
>;
pub type PFNGLVIEWPORTINDEXEDFVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLfloat)>;
pub type PFNGLSCISSORARRAYVPROC =
    ::std::option::Option<unsafe extern "C" fn(first: GLuint, count: GLsizei, v: *const GLint)>;
pub type PFNGLSCISSORINDEXEDPROC = ::std::option::Option<
    unsafe extern "C" fn(
        index: GLuint,
        left: GLint,
        bottom: GLint,
        width: GLsizei,
        height: GLsizei,
    ),
>;
pub type PFNGLSCISSORINDEXEDVPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, v: *const GLint)>;
pub type PFNGLDEPTHRANGEARRAYVPROC =
    ::std::option::Option<unsafe extern "C" fn(first: GLuint, count: GLsizei, v: *const GLclampd)>;
pub type PFNGLDEPTHRANGEINDEXEDPROC =
    ::std::option::Option<unsafe extern "C" fn(index: GLuint, n: GLclampd, f: GLclampd)>;
pub type PFNGLGETFLOATI_VPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint, data: *mut GLfloat)>;
pub type PFNGLGETDOUBLEI_VPROC =
    ::std::option::Option<unsafe extern "C" fn(target: GLenum, index: GLuint, data: *mut GLdouble)>;
pub type __builtin_va_list = [__va_list_tag; 1usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __va_list_tag {
    pub gp_offset: ::std::os::raw::c_uint,
    pub fp_offset: ::std::os::raw::c_uint,
    pub overflow_arg_area: *mut ::std::os::raw::c_void,
    pub reg_save_area: *mut ::std::os::raw::c_void,
}
