1#![cfg_attr(not(feature = "std"), no_std)]
11#![allow(non_snake_case)]
12
13#[cfg(feature = "std")]
14extern crate core;
15#[macro_use]
16extern crate alloc;
17
18use core::{ptr, mem};
19
20#[cfg(not(feature = "std"))]
21use alloc::string::String;
22#[cfg(not(feature = "std"))]
23use alloc::string::ToString;
24#[cfg(not(feature = "std"))]
25use alloc::vec::Vec;
26
27#[cfg(feature = "gleam_trait")]
28extern crate gleam;
29
30#[allow(non_camel_case_types, dead_code)]
31pub mod ctypes {
32 pub enum c_void {}
33 pub type c_char = i8;
34 pub type c_schar = i8;
35 pub type c_uchar = u8;
36 pub type c_short = i16;
37 pub type c_ushort = u16;
38 pub type c_int = i32;
39 pub type c_uint = u32;
40 pub type c_long = i64;
41 pub type c_ulong = u64;
42 pub type c_longlong = i64;
43 pub type c_ulonglong = u64;
44 pub type c_float = f32;
45 pub type c_double = f64;
46 pub type __int8 = i8;
47 pub type __uint8 = u8;
48 pub type __int16 = i16;
49 pub type __uint16 = u16;
50 pub type __int32 = i32;
51 pub type __uint32 = u32;
52 pub type __int64 = i64;
53 pub type __uint64 = u64;
54 pub type wchar_t = u16;
55}
56
57#[allow(non_camel_case_types, non_upper_case_globals)]
58pub mod gl {
59 use super::GLenum;
60
61 pub const ACCUM: GLenum = 0x0100;
62 pub const MAP_PERSISTENT_BIT: GLenum = 64;
63 pub const ACCUM_ALPHA_BITS: GLenum = 0x0D5B;
64 pub const ACCUM_BLUE_BITS: GLenum = 0x0D5A;
65 pub const ACCUM_BUFFER_BIT: GLenum = 0x00000200;
66 pub const ACCUM_CLEAR_VALUE: GLenum = 0x0B80;
67 pub const ACCUM_GREEN_BITS: GLenum = 0x0D59;
68 pub const ACCUM_RED_BITS: GLenum = 0x0D58;
69 pub const ACTIVE_ATTRIBUTES: GLenum = 0x8B89;
70 pub const ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A;
71 pub const ACTIVE_TEXTURE: GLenum = 0x84E0;
72 pub const ACTIVE_UNIFORMS: GLenum = 0x8B86;
73 pub const ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36;
74 pub const ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35;
75 pub const ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87;
76 pub const ADD: GLenum = 0x0104;
77 pub const ADD_SIGNED: GLenum = 0x8574;
78 pub const ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E;
79 pub const ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D;
80 pub const ALL_ATTRIB_BITS: GLenum = 0xFFFFFFFF;
81 pub const ALPHA: GLenum = 0x1906;
82 pub const ALPHA12: GLenum = 0x803D;
83 pub const ALPHA16: GLenum = 0x803E;
84 pub const ALPHA16F_EXT: GLenum = 0x881C;
85 pub const ALPHA32F_EXT: GLenum = 0x8816;
86 pub const ALPHA4: GLenum = 0x803B;
87 pub const ALPHA8: GLenum = 0x803C;
88 pub const ALPHA8_EXT: GLenum = 0x803C;
89 pub const ALPHA_BIAS: GLenum = 0x0D1D;
90 pub const ALPHA_BITS: GLenum = 0x0D55;
91 pub const ALPHA_INTEGER: GLenum = 0x8D97;
92 pub const ALPHA_SCALE: GLenum = 0x0D1C;
93 pub const ALPHA_TEST: GLenum = 0x0BC0;
94 pub const ALPHA_TEST_FUNC: GLenum = 0x0BC1;
95 pub const ALPHA_TEST_REF: GLenum = 0x0BC2;
96 pub const ALREADY_SIGNALED: GLenum = 0x911A;
97 pub const ALWAYS: GLenum = 0x0207;
98 pub const AMBIENT: GLenum = 0x1200;
99 pub const AMBIENT_AND_DIFFUSE: GLenum = 0x1602;
100 pub const AND: GLenum = 0x1501;
101 pub const AND_INVERTED: GLenum = 0x1504;
102 pub const AND_REVERSE: GLenum = 0x1502;
103 pub const ANY_SAMPLES_PASSED: GLenum = 0x8C2F;
104 pub const ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A;
105 pub const ARRAY_BUFFER: GLenum = 0x8892;
106 pub const ARRAY_BUFFER_BINDING: GLenum = 0x8894;
107 pub const ATTACHED_SHADERS: GLenum = 0x8B85;
108 pub const ATTRIB_STACK_DEPTH: GLenum = 0x0BB0;
109 pub const AUTO_NORMAL: GLenum = 0x0D80;
110 pub const AUX0: GLenum = 0x0409;
111 pub const AUX1: GLenum = 0x040A;
112 pub const AUX2: GLenum = 0x040B;
113 pub const AUX3: GLenum = 0x040C;
114 pub const AUX_BUFFERS: GLenum = 0x0C00;
115 pub const BACK: GLenum = 0x0405;
116 pub const BACK_LEFT: GLenum = 0x0402;
117 pub const BACK_RIGHT: GLenum = 0x0403;
118 pub const BGR: GLenum = 0x80E0;
119 pub const BGRA: GLenum = 0x80E1;
120 pub const BGRA8_EXT: GLenum = 0x93A1;
121 pub const BGRA_EXT: GLenum = 0x80E1;
122 pub const BGRA_INTEGER: GLenum = 0x8D9B;
123 pub const BGR_INTEGER: GLenum = 0x8D9A;
124 pub const BITMAP: GLenum = 0x1A00;
125 pub const BITMAP_TOKEN: GLenum = 0x0704;
126 pub const BLEND: GLenum = 0x0BE2;
127 pub const BLEND_ADVANCED_COHERENT_KHR: GLenum = 0x9285;
128 pub const BLEND_COLOR: GLenum = 0x8005;
129 pub const BLEND_DST: GLenum = 0x0BE0;
130 pub const BLEND_DST_ALPHA: GLenum = 0x80CA;
131 pub const BLEND_DST_RGB: GLenum = 0x80C8;
132 pub const BLEND_EQUATION: GLenum = 0x8009;
133 pub const BLEND_EQUATION_ALPHA: GLenum = 0x883D;
134 pub const BLEND_EQUATION_RGB: GLenum = 0x8009;
135 pub const BLEND_SRC: GLenum = 0x0BE1;
136 pub const BLEND_SRC_ALPHA: GLenum = 0x80CB;
137 pub const BLEND_SRC_RGB: GLenum = 0x80C9;
138 pub const BLUE: GLenum = 0x1905;
139 pub const BLUE_BIAS: GLenum = 0x0D1B;
140 pub const BLUE_BITS: GLenum = 0x0D54;
141 pub const BLUE_INTEGER: GLenum = 0x8D96;
142 pub const BLUE_SCALE: GLenum = 0x0D1A;
143 pub const BOOL: GLenum = 0x8B56;
144 pub const BOOL_VEC2: GLenum = 0x8B57;
145 pub const BOOL_VEC3: GLenum = 0x8B58;
146 pub const BOOL_VEC4: GLenum = 0x8B59;
147 pub const BUFFER: GLenum = 0x82E0;
148 pub const BUFFER_ACCESS: GLenum = 0x88BB;
149 pub const BUFFER_ACCESS_FLAGS: GLenum = 0x911F;
150 pub const BUFFER_KHR: GLenum = 0x82E0;
151 pub const BUFFER_MAPPED: GLenum = 0x88BC;
152 pub const BUFFER_MAP_LENGTH: GLenum = 0x9120;
153 pub const BUFFER_MAP_OFFSET: GLenum = 0x9121;
154 pub const BUFFER_MAP_POINTER: GLenum = 0x88BD;
155 pub const BUFFER_SIZE: GLenum = 0x8764;
156 pub const BUFFER_USAGE: GLenum = 0x8765;
157 pub const BYTE: GLenum = 0x1400;
158 pub const C3F_V3F: GLenum = 0x2A24;
159 pub const C4F_N3F_V3F: GLenum = 0x2A26;
160 pub const C4UB_V2F: GLenum = 0x2A22;
161 pub const C4UB_V3F: GLenum = 0x2A23;
162 pub const CCW: GLenum = 0x0901;
163 pub const CLAMP: GLenum = 0x2900;
164 pub const CLAMP_FRAGMENT_COLOR: GLenum = 0x891B;
165 pub const CLAMP_READ_COLOR: GLenum = 0x891C;
166 pub const CLAMP_TO_BORDER: GLenum = 0x812D;
167 pub const CLAMP_TO_EDGE: GLenum = 0x812F;
168 pub const CLAMP_VERTEX_COLOR: GLenum = 0x891A;
169 pub const CLEAR: GLenum = 0x1500;
170 pub const CLIENT_ACTIVE_TEXTURE: GLenum = 0x84E1;
171 pub const CLIENT_ALL_ATTRIB_BITS: GLenum = 0xFFFFFFFF;
172 pub const CLIENT_ATTRIB_STACK_DEPTH: GLenum = 0x0BB1;
173 pub const CLIENT_PIXEL_STORE_BIT: GLenum = 0x00000001;
174 pub const CLIENT_VERTEX_ARRAY_BIT: GLenum = 0x00000002;
175 pub const CLIP_DISTANCE0: GLenum = 0x3000;
176 pub const CLIP_DISTANCE1: GLenum = 0x3001;
177 pub const CLIP_DISTANCE2: GLenum = 0x3002;
178 pub const CLIP_DISTANCE3: GLenum = 0x3003;
179 pub const CLIP_DISTANCE4: GLenum = 0x3004;
180 pub const CLIP_DISTANCE5: GLenum = 0x3005;
181 pub const CLIP_DISTANCE6: GLenum = 0x3006;
182 pub const CLIP_DISTANCE7: GLenum = 0x3007;
183 pub const CLIP_PLANE0: GLenum = 0x3000;
184 pub const CLIP_PLANE1: GLenum = 0x3001;
185 pub const CLIP_PLANE2: GLenum = 0x3002;
186 pub const CLIP_PLANE3: GLenum = 0x3003;
187 pub const CLIP_PLANE4: GLenum = 0x3004;
188 pub const CLIP_PLANE5: GLenum = 0x3005;
189 pub const COEFF: GLenum = 0x0A00;
190 pub const COLOR: GLenum = 0x1800;
191 pub const COLORBURN_KHR: GLenum = 0x929A;
192 pub const COLORDODGE_KHR: GLenum = 0x9299;
193 pub const COLOR_ARRAY: GLenum = 0x8076;
194 pub const COLOR_ARRAY_BUFFER_BINDING: GLenum = 0x8898;
195 pub const COLOR_ARRAY_POINTER: GLenum = 0x8090;
196 pub const COLOR_ARRAY_SIZE: GLenum = 0x8081;
197 pub const COLOR_ARRAY_STRIDE: GLenum = 0x8083;
198 pub const COLOR_ARRAY_TYPE: GLenum = 0x8082;
199 pub const COLOR_ATTACHMENT0: GLenum = 0x8CE0;
200 pub const COLOR_ATTACHMENT1: GLenum = 0x8CE1;
201 pub const COLOR_ATTACHMENT10: GLenum = 0x8CEA;
202 pub const COLOR_ATTACHMENT11: GLenum = 0x8CEB;
203 pub const COLOR_ATTACHMENT12: GLenum = 0x8CEC;
204 pub const COLOR_ATTACHMENT13: GLenum = 0x8CED;
205 pub const COLOR_ATTACHMENT14: GLenum = 0x8CEE;
206 pub const COLOR_ATTACHMENT15: GLenum = 0x8CEF;
207 pub const COLOR_ATTACHMENT16: GLenum = 0x8CF0;
208 pub const COLOR_ATTACHMENT17: GLenum = 0x8CF1;
209 pub const COLOR_ATTACHMENT18: GLenum = 0x8CF2;
210 pub const COLOR_ATTACHMENT19: GLenum = 0x8CF3;
211 pub const COLOR_ATTACHMENT2: GLenum = 0x8CE2;
212 pub const COLOR_ATTACHMENT20: GLenum = 0x8CF4;
213 pub const COLOR_ATTACHMENT21: GLenum = 0x8CF5;
214 pub const COLOR_ATTACHMENT22: GLenum = 0x8CF6;
215 pub const COLOR_ATTACHMENT23: GLenum = 0x8CF7;
216 pub const COLOR_ATTACHMENT24: GLenum = 0x8CF8;
217 pub const COLOR_ATTACHMENT25: GLenum = 0x8CF9;
218 pub const COLOR_ATTACHMENT26: GLenum = 0x8CFA;
219 pub const COLOR_ATTACHMENT27: GLenum = 0x8CFB;
220 pub const COLOR_ATTACHMENT28: GLenum = 0x8CFC;
221 pub const COLOR_ATTACHMENT29: GLenum = 0x8CFD;
222 pub const COLOR_ATTACHMENT3: GLenum = 0x8CE3;
223 pub const COLOR_ATTACHMENT30: GLenum = 0x8CFE;
224 pub const COLOR_ATTACHMENT31: GLenum = 0x8CFF;
225 pub const COLOR_ATTACHMENT4: GLenum = 0x8CE4;
226 pub const COLOR_ATTACHMENT5: GLenum = 0x8CE5;
227 pub const COLOR_ATTACHMENT6: GLenum = 0x8CE6;
228 pub const COLOR_ATTACHMENT7: GLenum = 0x8CE7;
229 pub const COLOR_ATTACHMENT8: GLenum = 0x8CE8;
230 pub const COLOR_ATTACHMENT9: GLenum = 0x8CE9;
231 pub const COLOR_BUFFER_BIT: GLenum = 0x00004000;
232 pub const COLOR_CLEAR_VALUE: GLenum = 0x0C22;
233 pub const COLOR_INDEX: GLenum = 0x1900;
234 pub const COLOR_INDEXES: GLenum = 0x1603;
235 pub const COLOR_LOGIC_OP: GLenum = 0x0BF2;
236 pub const COLOR_MATERIAL: GLenum = 0x0B57;
237 pub const COLOR_MATERIAL_FACE: GLenum = 0x0B55;
238 pub const COLOR_MATERIAL_PARAMETER: GLenum = 0x0B56;
239 pub const COLOR_SUM: GLenum = 0x8458;
240 pub const COLOR_WRITEMASK: GLenum = 0x0C23;
241 pub const COMBINE: GLenum = 0x8570;
242 pub const COMBINE_ALPHA: GLenum = 0x8572;
243 pub const COMBINE_RGB: GLenum = 0x8571;
244 pub const COMPARE_REF_TO_TEXTURE: GLenum = 0x884E;
245 pub const COMPARE_R_TO_TEXTURE: GLenum = 0x884E;
246 pub const COMPILE: GLenum = 0x1300;
247 pub const COMPILE_AND_EXECUTE: GLenum = 0x1301;
248 pub const COMPILE_STATUS: GLenum = 0x8B81;
249 pub const COMPRESSED_ALPHA: GLenum = 0x84E9;
250 pub const COMPRESSED_INTENSITY: GLenum = 0x84EC;
251 pub const COMPRESSED_LUMINANCE: GLenum = 0x84EA;
252 pub const COMPRESSED_LUMINANCE_ALPHA: GLenum = 0x84EB;
253 pub const COMPRESSED_R11_EAC: GLenum = 0x9270;
254 pub const COMPRESSED_RED: GLenum = 0x8225;
255 pub const COMPRESSED_RED_RGTC1: GLenum = 0x8DBB;
256 pub const COMPRESSED_RG: GLenum = 0x8226;
257 pub const COMPRESSED_RG11_EAC: GLenum = 0x9272;
258 pub const COMPRESSED_RGB: GLenum = 0x84ED;
259 pub const COMPRESSED_RGB8_ETC2: GLenum = 0x9274;
260 pub const COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276;
261 pub const COMPRESSED_RGBA: GLenum = 0x84EE;
262 pub const COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278;
263 pub const COMPRESSED_RG_RGTC2: GLenum = 0x8DBD;
264 pub const COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271;
265 pub const COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC;
266 pub const COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273;
267 pub const COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE;
268 pub const COMPRESSED_SLUMINANCE: GLenum = 0x8C4A;
269 pub const COMPRESSED_SLUMINANCE_ALPHA: GLenum = 0x8C4B;
270 pub const COMPRESSED_SRGB: GLenum = 0x8C48;
271 pub const COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279;
272 pub const COMPRESSED_SRGB8_ETC2: GLenum = 0x9275;
273 pub const COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277;
274 pub const COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49;
275 pub const COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3;
276 pub const CONDITION_SATISFIED: GLenum = 0x911C;
277 pub const CONSTANT: GLenum = 0x8576;
278 pub const CONSTANT_ALPHA: GLenum = 0x8003;
279 pub const CONSTANT_ATTENUATION: GLenum = 0x1207;
280 pub const CONSTANT_COLOR: GLenum = 0x8001;
281 pub const CONTEXT_COMPATIBILITY_PROFILE_BIT: GLenum = 0x00000002;
282 pub const CONTEXT_CORE_PROFILE_BIT: GLenum = 0x00000001;
283 pub const CONTEXT_FLAGS: GLenum = 0x821E;
284 pub const CONTEXT_FLAG_DEBUG_BIT: GLenum = 0x00000002;
285 pub const CONTEXT_FLAG_DEBUG_BIT_KHR: GLenum = 0x00000002;
286 pub const CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLenum = 0x00000001;
287 pub const CONTEXT_PROFILE_MASK: GLenum = 0x9126;
288 pub const COORD_REPLACE: GLenum = 0x8862;
289 pub const COPY: GLenum = 0x1503;
290 pub const COPY_INVERTED: GLenum = 0x150C;
291 pub const COPY_PIXEL_TOKEN: GLenum = 0x0706;
292 pub const COPY_READ_BUFFER: GLenum = 0x8F36;
293 pub const COPY_READ_BUFFER_BINDING: GLenum = 0x8F36;
294 pub const COPY_WRITE_BUFFER: GLenum = 0x8F37;
295 pub const COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37;
296 pub const CULL_FACE: GLenum = 0x0B44;
297 pub const CULL_FACE_MODE: GLenum = 0x0B45;
298 pub const CURRENT_BIT: GLenum = 0x00000001;
299 pub const CURRENT_COLOR: GLenum = 0x0B00;
300 pub const CURRENT_FOG_COORD: GLenum = 0x8453;
301 pub const CURRENT_FOG_COORDINATE: GLenum = 0x8453;
302 pub const CURRENT_INDEX: GLenum = 0x0B01;
303 pub const CURRENT_NORMAL: GLenum = 0x0B02;
304 pub const CURRENT_PROGRAM: GLenum = 0x8B8D;
305 pub const CURRENT_QUERY: GLenum = 0x8865;
306 pub const CURRENT_QUERY_EXT: GLenum = 0x8865;
307 pub const CURRENT_RASTER_COLOR: GLenum = 0x0B04;
308 pub const CURRENT_RASTER_DISTANCE: GLenum = 0x0B09;
309 pub const CURRENT_RASTER_INDEX: GLenum = 0x0B05;
310 pub const CURRENT_RASTER_POSITION: GLenum = 0x0B07;
311 pub const CURRENT_RASTER_POSITION_VALID: GLenum = 0x0B08;
312 pub const CURRENT_RASTER_SECONDARY_COLOR: GLenum = 0x845F;
313 pub const CURRENT_RASTER_TEXTURE_COORDS: GLenum = 0x0B06;
314 pub const CURRENT_SECONDARY_COLOR: GLenum = 0x8459;
315 pub const CURRENT_TEXTURE_COORDS: GLenum = 0x0B03;
316 pub const CURRENT_VERTEX_ATTRIB: GLenum = 0x8626;
317 pub const CW: GLenum = 0x0900;
318 pub const DARKEN_KHR: GLenum = 0x9297;
319 pub const DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244;
320 pub const DEBUG_CALLBACK_FUNCTION_KHR: GLenum = 0x8244;
321 pub const DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245;
322 pub const DEBUG_CALLBACK_USER_PARAM_KHR: GLenum = 0x8245;
323 pub const DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D;
324 pub const DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826D;
325 pub const DEBUG_LOGGED_MESSAGES: GLenum = 0x9145;
326 pub const DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9145;
327 pub const DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243;
328 pub const DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR: GLenum = 0x8243;
329 pub const DEBUG_OUTPUT: GLenum = 0x92E0;
330 pub const DEBUG_OUTPUT_KHR: GLenum = 0x92E0;
331 pub const DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242;
332 pub const DEBUG_OUTPUT_SYNCHRONOUS_KHR: GLenum = 0x8242;
333 pub const DEBUG_SEVERITY_HIGH: GLenum = 0x9146;
334 pub const DEBUG_SEVERITY_HIGH_KHR: GLenum = 0x9146;
335 pub const DEBUG_SEVERITY_LOW: GLenum = 0x9148;
336 pub const DEBUG_SEVERITY_LOW_KHR: GLenum = 0x9148;
337 pub const DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147;
338 pub const DEBUG_SEVERITY_MEDIUM_KHR: GLenum = 0x9147;
339 pub const DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B;
340 pub const DEBUG_SEVERITY_NOTIFICATION_KHR: GLenum = 0x826B;
341 pub const DEBUG_SOURCE_API: GLenum = 0x8246;
342 pub const DEBUG_SOURCE_API_KHR: GLenum = 0x8246;
343 pub const DEBUG_SOURCE_APPLICATION: GLenum = 0x824A;
344 pub const DEBUG_SOURCE_APPLICATION_KHR: GLenum = 0x824A;
345 pub const DEBUG_SOURCE_OTHER: GLenum = 0x824B;
346 pub const DEBUG_SOURCE_OTHER_KHR: GLenum = 0x824B;
347 pub const DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248;
348 pub const DEBUG_SOURCE_SHADER_COMPILER_KHR: GLenum = 0x8248;
349 pub const DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249;
350 pub const DEBUG_SOURCE_THIRD_PARTY_KHR: GLenum = 0x8249;
351 pub const DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247;
352 pub const DEBUG_SOURCE_WINDOW_SYSTEM_KHR: GLenum = 0x8247;
353 pub const DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D;
354 pub const DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: GLenum = 0x824D;
355 pub const DEBUG_TYPE_ERROR: GLenum = 0x824C;
356 pub const DEBUG_TYPE_ERROR_KHR: GLenum = 0x824C;
357 pub const DEBUG_TYPE_MARKER: GLenum = 0x8268;
358 pub const DEBUG_TYPE_MARKER_KHR: GLenum = 0x8268;
359 pub const DEBUG_TYPE_OTHER: GLenum = 0x8251;
360 pub const DEBUG_TYPE_OTHER_KHR: GLenum = 0x8251;
361 pub const DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250;
362 pub const DEBUG_TYPE_PERFORMANCE_KHR: GLenum = 0x8250;
363 pub const DEBUG_TYPE_POP_GROUP: GLenum = 0x826A;
364 pub const DEBUG_TYPE_POP_GROUP_KHR: GLenum = 0x826A;
365 pub const DEBUG_TYPE_PORTABILITY: GLenum = 0x824F;
366 pub const DEBUG_TYPE_PORTABILITY_KHR: GLenum = 0x824F;
367 pub const DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269;
368 pub const DEBUG_TYPE_PUSH_GROUP_KHR: GLenum = 0x8269;
369 pub const DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E;
370 pub const DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: GLenum = 0x824E;
371 pub const DECAL: GLenum = 0x2101;
372 pub const DECR: GLenum = 0x1E03;
373 pub const DECR_WRAP: GLenum = 0x8508;
374 pub const DELETE_STATUS: GLenum = 0x8B80;
375 pub const DEPTH: GLenum = 0x1801;
376 pub const DEPTH24_STENCIL8: GLenum = 0x88F0;
377 pub const DEPTH32F_STENCIL8: GLenum = 0x8CAD;
378 pub const DEPTH_ATTACHMENT: GLenum = 0x8D00;
379 pub const DEPTH_BIAS: GLenum = 0x0D1F;
380 pub const DEPTH_BITS: GLenum = 0x0D56;
381 pub const DEPTH_BUFFER_BIT: GLenum = 0x00000100;
382 pub const DEPTH_CLAMP: GLenum = 0x864F;
383 pub const DEPTH_CLEAR_VALUE: GLenum = 0x0B73;
384 pub const DEPTH_COMPONENT: GLenum = 0x1902;
385 pub const DEPTH_COMPONENT16: GLenum = 0x81A5;
386 pub const DEPTH_COMPONENT24: GLenum = 0x81A6;
387 pub const DEPTH_COMPONENT32: GLenum = 0x81A7;
388 pub const DEPTH_COMPONENT32F: GLenum = 0x8CAC;
389 pub const DEPTH_FUNC: GLenum = 0x0B74;
390 pub const DEPTH_RANGE: GLenum = 0x0B70;
391 pub const DEPTH_SCALE: GLenum = 0x0D1E;
392 pub const DEPTH_STENCIL: GLenum = 0x84F9;
393 pub const DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A;
394 pub const DEPTH_TEST: GLenum = 0x0B71;
395 pub const DEPTH_TEXTURE_MODE: GLenum = 0x884B;
396 pub const DEPTH_WRITEMASK: GLenum = 0x0B72;
397 pub const DIFFERENCE_KHR: GLenum = 0x929E;
398 pub const DIFFUSE: GLenum = 0x1201;
399 pub const DISPLAY_LIST: GLenum = 0x82E7;
400 pub const DITHER: GLenum = 0x0BD0;
401 pub const DOMAIN: GLenum = 0x0A02;
402 pub const DONT_CARE: GLenum = 0x1100;
403 pub const DOT3_RGB: GLenum = 0x86AE;
404 pub const DOT3_RGBA: GLenum = 0x86AF;
405 pub const DOUBLE: GLenum = 0x140A;
406 pub const DOUBLEBUFFER: GLenum = 0x0C32;
407 pub const DRAW_BUFFER: GLenum = 0x0C01;
408 pub const DRAW_BUFFER0: GLenum = 0x8825;
409 pub const DRAW_BUFFER1: GLenum = 0x8826;
410 pub const DRAW_BUFFER10: GLenum = 0x882F;
411 pub const DRAW_BUFFER11: GLenum = 0x8830;
412 pub const DRAW_BUFFER12: GLenum = 0x8831;
413 pub const DRAW_BUFFER13: GLenum = 0x8832;
414 pub const DRAW_BUFFER14: GLenum = 0x8833;
415 pub const DRAW_BUFFER15: GLenum = 0x8834;
416 pub const DRAW_BUFFER2: GLenum = 0x8827;
417 pub const DRAW_BUFFER3: GLenum = 0x8828;
418 pub const DRAW_BUFFER4: GLenum = 0x8829;
419 pub const DRAW_BUFFER5: GLenum = 0x882A;
420 pub const DRAW_BUFFER6: GLenum = 0x882B;
421 pub const DRAW_BUFFER7: GLenum = 0x882C;
422 pub const DRAW_BUFFER8: GLenum = 0x882D;
423 pub const DRAW_BUFFER9: GLenum = 0x882E;
424 pub const DRAW_FRAMEBUFFER: GLenum = 0x8CA9;
425 pub const DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
426 pub const DRAW_PIXELS_APPLE: GLenum = 0x8A0A;
427 pub const DRAW_PIXEL_TOKEN: GLenum = 0x0705;
428 pub const DST_ALPHA: GLenum = 0x0304;
429 pub const DST_COLOR: GLenum = 0x0306;
430 pub const DYNAMIC_COPY: GLenum = 0x88EA;
431 pub const DYNAMIC_DRAW: GLenum = 0x88E8;
432 pub const DYNAMIC_READ: GLenum = 0x88E9;
433 pub const EDGE_FLAG: GLenum = 0x0B43;
434 pub const EDGE_FLAG_ARRAY: GLenum = 0x8079;
435 pub const EDGE_FLAG_ARRAY_BUFFER_BINDING: GLenum = 0x889B;
436 pub const EDGE_FLAG_ARRAY_POINTER: GLenum = 0x8093;
437 pub const EDGE_FLAG_ARRAY_STRIDE: GLenum = 0x808C;
438 pub const ELEMENT_ARRAY_BUFFER: GLenum = 0x8893;
439 pub const ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895;
440 pub const EMISSION: GLenum = 0x1600;
441 pub const ENABLE_BIT: GLenum = 0x00002000;
442 pub const EQUAL: GLenum = 0x0202;
443 pub const EQUIV: GLenum = 0x1509;
444 pub const EVAL_BIT: GLenum = 0x00010000;
445 pub const EXCLUSION_KHR: GLenum = 0x92A0;
446 pub const EXP: GLenum = 0x0800;
447 pub const EXP2: GLenum = 0x0801;
448 pub const EXTENSIONS: GLenum = 0x1F03;
449 pub const EYE_LINEAR: GLenum = 0x2400;
450 pub const EYE_PLANE: GLenum = 0x2502;
451 pub const FALSE: GLenum = 0;
452 pub const FASTEST: GLenum = 0x1101;
453 pub const FEEDBACK: GLenum = 0x1C01;
454 pub const FEEDBACK_BUFFER_POINTER: GLenum = 0x0DF0;
455 pub const FEEDBACK_BUFFER_SIZE: GLenum = 0x0DF1;
456 pub const FEEDBACK_BUFFER_TYPE: GLenum = 0x0DF2;
457 pub const FENCE_APPLE: GLenum = 0x8A0B;
458 pub const FILL: GLenum = 0x1B02;
459 pub const FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D;
460 pub const FIXED: GLenum = 0x140C;
461 pub const FIXED_ONLY: GLenum = 0x891D;
462 pub const FLAT: GLenum = 0x1D00;
463 pub const FLOAT: GLenum = 0x1406;
464 pub const FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD;
465 pub const FLOAT_MAT2: GLenum = 0x8B5A;
466 pub const FLOAT_MAT2x3: GLenum = 0x8B65;
467 pub const FLOAT_MAT2x4: GLenum = 0x8B66;
468 pub const FLOAT_MAT3: GLenum = 0x8B5B;
469 pub const FLOAT_MAT3x2: GLenum = 0x8B67;
470 pub const FLOAT_MAT3x4: GLenum = 0x8B68;
471 pub const FLOAT_MAT4: GLenum = 0x8B5C;
472 pub const FLOAT_MAT4x2: GLenum = 0x8B69;
473 pub const FLOAT_MAT4x3: GLenum = 0x8B6A;
474 pub const FLOAT_VEC2: GLenum = 0x8B50;
475 pub const FLOAT_VEC3: GLenum = 0x8B51;
476 pub const FLOAT_VEC4: GLenum = 0x8B52;
477 pub const FOG: GLenum = 0x0B60;
478 pub const FOG_BIT: GLenum = 0x00000080;
479 pub const FOG_COLOR: GLenum = 0x0B66;
480 pub const FOG_COORD: GLenum = 0x8451;
481 pub const FOG_COORDINATE: GLenum = 0x8451;
482 pub const FOG_COORDINATE_ARRAY: GLenum = 0x8457;
483 pub const FOG_COORDINATE_ARRAY_BUFFER_BINDING: GLenum = 0x889D;
484 pub const FOG_COORDINATE_ARRAY_POINTER: GLenum = 0x8456;
485 pub const FOG_COORDINATE_ARRAY_STRIDE: GLenum = 0x8455;
486 pub const FOG_COORDINATE_ARRAY_TYPE: GLenum = 0x8454;
487 pub const FOG_COORDINATE_SOURCE: GLenum = 0x8450;
488 pub const FOG_COORD_ARRAY: GLenum = 0x8457;
489 pub const FOG_COORD_ARRAY_BUFFER_BINDING: GLenum = 0x889D;
490 pub const FOG_COORD_ARRAY_POINTER: GLenum = 0x8456;
491 pub const FOG_COORD_ARRAY_STRIDE: GLenum = 0x8455;
492 pub const FOG_COORD_ARRAY_TYPE: GLenum = 0x8454;
493 pub const FOG_COORD_SRC: GLenum = 0x8450;
494 pub const FOG_DENSITY: GLenum = 0x0B62;
495 pub const FOG_END: GLenum = 0x0B64;
496 pub const FOG_HINT: GLenum = 0x0C54;
497 pub const FOG_INDEX: GLenum = 0x0B61;
498 pub const FOG_MODE: GLenum = 0x0B65;
499 pub const FOG_START: GLenum = 0x0B63;
500 pub const FRAGMENT_DEPTH: GLenum = 0x8452;
501 pub const FRAGMENT_SHADER: GLenum = 0x8B30;
502 pub const FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B;
503 pub const FRAMEBUFFER: GLenum = 0x8D40;
504 pub const FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215;
505 pub const FRAMEBUFFER_ATTACHMENT_ANGLE: GLenum = 0x93A3;
506 pub const FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214;
507 pub const FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210;
508 pub const FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211;
509 pub const FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216;
510 pub const FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213;
511 pub const FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7;
512 pub const FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1;
513 pub const FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0;
514 pub const FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212;
515 pub const FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217;
516 pub const FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3;
517 pub const FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4;
518 pub const FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2;
519 pub const FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
520 pub const FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5;
521 pub const FRAMEBUFFER_DEFAULT: GLenum = 0x8218;
522 pub const FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6;
523 pub const FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9;
524 pub const FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB;
525 pub const FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8;
526 pub const FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7;
527 pub const FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56;
528 pub const FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC;
529 pub const FRAMEBUFFER_SRGB: GLenum = 0x8DB9;
530 pub const FRAMEBUFFER_UNDEFINED: GLenum = 0x8219;
531 pub const FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD;
532 pub const FRONT: GLenum = 0x0404;
533 pub const FRONT_AND_BACK: GLenum = 0x0408;
534 pub const FRONT_FACE: GLenum = 0x0B46;
535 pub const FRONT_LEFT: GLenum = 0x0400;
536 pub const FRONT_RIGHT: GLenum = 0x0401;
537 pub const FUNC_ADD: GLenum = 0x8006;
538 pub const FUNC_REVERSE_SUBTRACT: GLenum = 0x800B;
539 pub const FUNC_SUBTRACT: GLenum = 0x800A;
540 pub const GENERATE_MIPMAP: GLenum = 0x8191;
541 pub const GENERATE_MIPMAP_HINT: GLenum = 0x8192;
542 pub const GEOMETRY_INPUT_TYPE: GLenum = 0x8917;
543 pub const GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918;
544 pub const GEOMETRY_SHADER: GLenum = 0x8DD9;
545 pub const GEOMETRY_VERTICES_OUT: GLenum = 0x8916;
546 pub const GEQUAL: GLenum = 0x0206;
547 pub const GPU_DISJOINT_EXT: GLenum = 0x8FBB;
548 pub const GREATER: GLenum = 0x0204;
549 pub const GREEN: GLenum = 0x1904;
550 pub const GREEN_BIAS: GLenum = 0x0D19;
551 pub const GREEN_BITS: GLenum = 0x0D53;
552 pub const GREEN_INTEGER: GLenum = 0x8D95;
553 pub const GREEN_SCALE: GLenum = 0x0D18;
554 pub const HALF_FLOAT: GLenum = 0x140B;
555 pub const HALF_FLOAT_OES: GLenum = 0x8D61;
556 pub const HARDLIGHT_KHR: GLenum = 0x929B;
557 pub const HIGH_FLOAT: GLenum = 0x8DF2;
558 pub const HIGH_INT: GLenum = 0x8DF5;
559 pub const HINT_BIT: GLenum = 0x00008000;
560 pub const HSL_COLOR_KHR: GLenum = 0x92AF;
561 pub const HSL_HUE_KHR: GLenum = 0x92AD;
562 pub const HSL_LUMINOSITY_KHR: GLenum = 0x92B0;
563 pub const HSL_SATURATION_KHR: GLenum = 0x92AE;
564 pub const IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B;
565 pub const IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A;
566 pub const INCR: GLenum = 0x1E02;
567 pub const INCR_WRAP: GLenum = 0x8507;
568 pub const INDEX: GLenum = 0x8222;
569 pub const INDEX_ARRAY: GLenum = 0x8077;
570 pub const INDEX_ARRAY_BUFFER_BINDING: GLenum = 0x8899;
571 pub const INDEX_ARRAY_POINTER: GLenum = 0x8091;
572 pub const INDEX_ARRAY_STRIDE: GLenum = 0x8086;
573 pub const INDEX_ARRAY_TYPE: GLenum = 0x8085;
574 pub const INDEX_BITS: GLenum = 0x0D51;
575 pub const INDEX_CLEAR_VALUE: GLenum = 0x0C20;
576 pub const INDEX_LOGIC_OP: GLenum = 0x0BF1;
577 pub const INDEX_MODE: GLenum = 0x0C30;
578 pub const INDEX_OFFSET: GLenum = 0x0D13;
579 pub const INDEX_SHIFT: GLenum = 0x0D12;
580 pub const INDEX_WRITEMASK: GLenum = 0x0C21;
581 pub const INFO_LOG_LENGTH: GLenum = 0x8B84;
582 pub const INT: GLenum = 0x1404;
583 pub const INTENSITY: GLenum = 0x8049;
584 pub const INTENSITY12: GLenum = 0x804C;
585 pub const INTENSITY16: GLenum = 0x804D;
586 pub const INTENSITY4: GLenum = 0x804A;
587 pub const INTENSITY8: GLenum = 0x804B;
588 pub const INTERLEAVED_ATTRIBS: GLenum = 0x8C8C;
589 pub const INTERPOLATE: GLenum = 0x8575;
590 pub const INT_2_10_10_10_REV: GLenum = 0x8D9F;
591 pub const INT_SAMPLER_1D: GLenum = 0x8DC9;
592 pub const INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE;
593 pub const INT_SAMPLER_2D: GLenum = 0x8DCA;
594 pub const INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF;
595 pub const INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109;
596 pub const INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C;
597 pub const INT_SAMPLER_2D_RECT: GLenum = 0x8DCD;
598 pub const INT_SAMPLER_3D: GLenum = 0x8DCB;
599 pub const INT_SAMPLER_BUFFER: GLenum = 0x8DD0;
600 pub const INT_SAMPLER_CUBE: GLenum = 0x8DCC;
601 pub const INT_VEC2: GLenum = 0x8B53;
602 pub const INT_VEC3: GLenum = 0x8B54;
603 pub const INT_VEC4: GLenum = 0x8B55;
604 pub const INVALID_ENUM: GLenum = 0x0500;
605 pub const INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506;
606 pub const INVALID_INDEX: GLenum = 0xFFFFFFFF;
607 pub const INVALID_OPERATION: GLenum = 0x0502;
608 pub const INVALID_VALUE: GLenum = 0x0501;
609 pub const INVERT: GLenum = 0x150A;
610 pub const KEEP: GLenum = 0x1E00;
611 pub const LAST_VERTEX_CONVENTION: GLenum = 0x8E4E;
612 pub const LEFT: GLenum = 0x0406;
613 pub const LEQUAL: GLenum = 0x0203;
614 pub const LESS: GLenum = 0x0201;
615 pub const LIGHT0: GLenum = 0x4000;
616 pub const LIGHT1: GLenum = 0x4001;
617 pub const LIGHT2: GLenum = 0x4002;
618 pub const LIGHT3: GLenum = 0x4003;
619 pub const LIGHT4: GLenum = 0x4004;
620 pub const LIGHT5: GLenum = 0x4005;
621 pub const LIGHT6: GLenum = 0x4006;
622 pub const LIGHT7: GLenum = 0x4007;
623 pub const LIGHTEN_KHR: GLenum = 0x9298;
624 pub const LIGHTING: GLenum = 0x0B50;
625 pub const LIGHTING_BIT: GLenum = 0x00000040;
626 pub const LIGHT_MODEL_AMBIENT: GLenum = 0x0B53;
627 pub const LIGHT_MODEL_COLOR_CONTROL: GLenum = 0x81F8;
628 pub const LIGHT_MODEL_LOCAL_VIEWER: GLenum = 0x0B51;
629 pub const LIGHT_MODEL_TWO_SIDE: GLenum = 0x0B52;
630 pub const LINE: GLenum = 0x1B01;
631 pub const LINEAR: GLenum = 0x2601;
632 pub const LINEAR_ATTENUATION: GLenum = 0x1208;
633 pub const LINEAR_MIPMAP_LINEAR: GLenum = 0x2703;
634 pub const LINEAR_MIPMAP_NEAREST: GLenum = 0x2701;
635 pub const LINES: GLenum = 0x0001;
636 pub const LINES_ADJACENCY: GLenum = 0x000A;
637 pub const LINE_BIT: GLenum = 0x00000004;
638 pub const LINE_LOOP: GLenum = 0x0002;
639 pub const LINE_RESET_TOKEN: GLenum = 0x0707;
640 pub const LINE_SMOOTH: GLenum = 0x0B20;
641 pub const LINE_SMOOTH_HINT: GLenum = 0x0C52;
642 pub const LINE_STIPPLE: GLenum = 0x0B24;
643 pub const LINE_STIPPLE_PATTERN: GLenum = 0x0B25;
644 pub const LINE_STIPPLE_REPEAT: GLenum = 0x0B26;
645 pub const LINE_STRIP: GLenum = 0x0003;
646 pub const LINE_STRIP_ADJACENCY: GLenum = 0x000B;
647 pub const LINE_TOKEN: GLenum = 0x0702;
648 pub const LINE_WIDTH: GLenum = 0x0B21;
649 pub const LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
650 pub const LINE_WIDTH_RANGE: GLenum = 0x0B22;
651 pub const LINK_STATUS: GLenum = 0x8B82;
652 pub const LIST_BASE: GLenum = 0x0B32;
653 pub const LIST_BIT: GLenum = 0x00020000;
654 pub const LIST_INDEX: GLenum = 0x0B33;
655 pub const LIST_MODE: GLenum = 0x0B30;
656 pub const LOAD: GLenum = 0x0101;
657 pub const LOGIC_OP: GLenum = 0x0BF1;
658 pub const LOGIC_OP_MODE: GLenum = 0x0BF0;
659 pub const LOWER_LEFT: GLenum = 0x8CA1;
660 pub const LOW_FLOAT: GLenum = 0x8DF0;
661 pub const LOW_INT: GLenum = 0x8DF3;
662 pub const LUMINANCE: GLenum = 0x1909;
663 pub const LUMINANCE12: GLenum = 0x8041;
664 pub const LUMINANCE12_ALPHA12: GLenum = 0x8047;
665 pub const LUMINANCE12_ALPHA4: GLenum = 0x8046;
666 pub const LUMINANCE16: GLenum = 0x8042;
667 pub const LUMINANCE16F_EXT: GLenum = 0x881E;
668 pub const LUMINANCE16_ALPHA16: GLenum = 0x8048;
669 pub const LUMINANCE32F_EXT: GLenum = 0x8818;
670 pub const LUMINANCE4: GLenum = 0x803F;
671 pub const LUMINANCE4_ALPHA4: GLenum = 0x8043;
672 pub const LUMINANCE6_ALPHA2: GLenum = 0x8044;
673 pub const LUMINANCE8: GLenum = 0x8040;
674 pub const LUMINANCE8_ALPHA8: GLenum = 0x8045;
675 pub const LUMINANCE8_ALPHA8_EXT: GLenum = 0x8045;
676 pub const LUMINANCE8_EXT: GLenum = 0x8040;
677 pub const LUMINANCE_ALPHA: GLenum = 0x190A;
678 pub const LUMINANCE_ALPHA16F_EXT: GLenum = 0x881F;
679 pub const LUMINANCE_ALPHA32F_EXT: GLenum = 0x8819;
680 pub const MAJOR_VERSION: GLenum = 0x821B;
681 pub const MAP1_COLOR_4: GLenum = 0x0D90;
682 pub const MAP1_GRID_DOMAIN: GLenum = 0x0DD0;
683 pub const MAP1_GRID_SEGMENTS: GLenum = 0x0DD1;
684 pub const MAP1_INDEX: GLenum = 0x0D91;
685 pub const MAP1_NORMAL: GLenum = 0x0D92;
686 pub const MAP1_TEXTURE_COORD_1: GLenum = 0x0D93;
687 pub const MAP1_TEXTURE_COORD_2: GLenum = 0x0D94;
688 pub const MAP1_TEXTURE_COORD_3: GLenum = 0x0D95;
689 pub const MAP1_TEXTURE_COORD_4: GLenum = 0x0D96;
690 pub const MAP1_VERTEX_3: GLenum = 0x0D97;
691 pub const MAP1_VERTEX_4: GLenum = 0x0D98;
692 pub const MAP2_COLOR_4: GLenum = 0x0DB0;
693 pub const MAP2_GRID_DOMAIN: GLenum = 0x0DD2;
694 pub const MAP2_GRID_SEGMENTS: GLenum = 0x0DD3;
695 pub const MAP2_INDEX: GLenum = 0x0DB1;
696 pub const MAP2_NORMAL: GLenum = 0x0DB2;
697 pub const MAP2_TEXTURE_COORD_1: GLenum = 0x0DB3;
698 pub const MAP2_TEXTURE_COORD_2: GLenum = 0x0DB4;
699 pub const MAP2_TEXTURE_COORD_3: GLenum = 0x0DB5;
700 pub const MAP2_TEXTURE_COORD_4: GLenum = 0x0DB6;
701 pub const MAP2_VERTEX_3: GLenum = 0x0DB7;
702 pub const MAP2_VERTEX_4: GLenum = 0x0DB8;
703 pub const MAP_COLOR: GLenum = 0x0D10;
704 pub const MAP_FLUSH_EXPLICIT_BIT: GLenum = 0x0010;
705 pub const MAP_INVALIDATE_BUFFER_BIT: GLenum = 0x0008;
706 pub const MAP_INVALIDATE_RANGE_BIT: GLenum = 0x0004;
707 pub const MAP_READ_BIT: GLenum = 0x0001;
708 pub const MAP_STENCIL: GLenum = 0x0D11;
709 pub const MAP_UNSYNCHRONIZED_BIT: GLenum = 0x0020;
710 pub const MAP_WRITE_BIT: GLenum = 0x0002;
711 pub const MATRIX_MODE: GLenum = 0x0BA0;
712 pub const MAX: GLenum = 0x8008;
713 pub const MAX_3D_TEXTURE_SIZE: GLenum = 0x8073;
714 pub const MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF;
715 pub const MAX_ATTRIB_STACK_DEPTH: GLenum = 0x0D35;
716 pub const MAX_CLIENT_ATTRIB_STACK_DEPTH: GLenum = 0x0D3B;
717 pub const MAX_CLIP_DISTANCES: GLenum = 0x0D32;
718 pub const MAX_CLIP_PLANES: GLenum = 0x0D32;
719 pub const MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF;
720 pub const MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E;
721 pub const MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33;
722 pub const MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32;
723 pub const MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D;
724 pub const MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E;
725 pub const MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31;
726 pub const MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C;
727 pub const MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C;
728 pub const MAX_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826C;
729 pub const MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144;
730 pub const MAX_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9144;
731 pub const MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143;
732 pub const MAX_DEBUG_MESSAGE_LENGTH_KHR: GLenum = 0x9143;
733 pub const MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F;
734 pub const MAX_DRAW_BUFFERS: GLenum = 0x8824;
735 pub const MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC;
736 pub const MAX_ELEMENTS_INDICES: GLenum = 0x80E9;
737 pub const MAX_ELEMENTS_VERTICES: GLenum = 0x80E8;
738 pub const MAX_ELEMENT_INDEX: GLenum = 0x8D6B;
739 pub const MAX_EVAL_ORDER: GLenum = 0x0D30;
740 pub const MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125;
741 pub const MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D;
742 pub const MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49;
743 pub const MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD;
744 pub const MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123;
745 pub const MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124;
746 pub const MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0;
747 pub const MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29;
748 pub const MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1;
749 pub const MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C;
750 pub const MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF;
751 pub const MAX_INTEGER_SAMPLES: GLenum = 0x9110;
752 pub const MAX_LABEL_LENGTH: GLenum = 0x82E8;
753 pub const MAX_LABEL_LENGTH_KHR: GLenum = 0x82E8;
754 pub const MAX_LIGHTS: GLenum = 0x0D31;
755 pub const MAX_LIST_NESTING: GLenum = 0x0B31;
756 pub const MAX_MODELVIEW_STACK_DEPTH: GLenum = 0x0D36;
757 pub const MAX_NAME_STACK_DEPTH: GLenum = 0x0D37;
758 pub const MAX_PIXEL_MAP_TABLE: GLenum = 0x0D34;
759 pub const MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905;
760 pub const MAX_PROJECTION_STACK_DEPTH: GLenum = 0x0D38;
761 pub const MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8;
762 pub const MAX_RECTANGLE_TEXTURE_SIZE_ARB: GLenum = 0x84F8;
763 pub const MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8;
764 pub const MAX_SAMPLES: GLenum = 0x8D57;
765 pub const MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59;
766 pub const MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111;
767 pub const MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT: GLenum = 0x8F63;
768 pub const MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT: GLenum = 0x8F67;
769 pub const MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B;
770 pub const MAX_TEXTURE_COORDS: GLenum = 0x8871;
771 pub const MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872;
772 pub const MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD;
773 pub const MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FF;
774 pub const MAX_TEXTURE_SIZE: GLenum = 0x0D33;
775 pub const MAX_TEXTURE_STACK_DEPTH: GLenum = 0x0D39;
776 pub const MAX_TEXTURE_UNITS: GLenum = 0x84E2;
777 pub const MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A;
778 pub const MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B;
779 pub const MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80;
780 pub const MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30;
781 pub const MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F;
782 pub const MAX_VARYING_COMPONENTS: GLenum = 0x8B4B;
783 pub const MAX_VARYING_FLOATS: GLenum = 0x8B4B;
784 pub const MAX_VARYING_VECTORS: GLenum = 0x8DFC;
785 pub const MAX_VERTEX_ATTRIBS: GLenum = 0x8869;
786 pub const MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122;
787 pub const MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C;
788 pub const MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B;
789 pub const MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A;
790 pub const MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB;
791 pub const MAX_VIEWPORT_DIMS: GLenum = 0x0D3A;
792 pub const MEDIUM_FLOAT: GLenum = 0x8DF1;
793 pub const MEDIUM_INT: GLenum = 0x8DF4;
794 pub const MIN: GLenum = 0x8007;
795 pub const MINOR_VERSION: GLenum = 0x821C;
796 pub const MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904;
797 pub const MIRRORED_REPEAT: GLenum = 0x8370;
798 pub const MODELVIEW: GLenum = 0x1700;
799 pub const MODELVIEW_MATRIX: GLenum = 0x0BA6;
800 pub const MODELVIEW_STACK_DEPTH: GLenum = 0x0BA3;
801 pub const MODULATE: GLenum = 0x2100;
802 pub const MULT: GLenum = 0x0103;
803 pub const MULTIPLY_KHR: GLenum = 0x9294;
804 pub const MULTISAMPLE: GLenum = 0x809D;
805 pub const MULTISAMPLE_BIT: GLenum = 0x20000000;
806 pub const N3F_V3F: GLenum = 0x2A25;
807 pub const NAME_STACK_DEPTH: GLenum = 0x0D70;
808 pub const NAND: GLenum = 0x150E;
809 pub const NEAREST: GLenum = 0x2600;
810 pub const NEAREST_MIPMAP_LINEAR: GLenum = 0x2702;
811 pub const NEAREST_MIPMAP_NEAREST: GLenum = 0x2700;
812 pub const NEVER: GLenum = 0x0200;
813 pub const NICEST: GLenum = 0x1102;
814 pub const NONE: GLenum = 0;
815 pub const NOOP: GLenum = 0x1505;
816 pub const NOR: GLenum = 0x1508;
817 pub const NORMALIZE: GLenum = 0x0BA1;
818 pub const NORMAL_ARRAY: GLenum = 0x8075;
819 pub const NORMAL_ARRAY_BUFFER_BINDING: GLenum = 0x8897;
820 pub const NORMAL_ARRAY_POINTER: GLenum = 0x808F;
821 pub const NORMAL_ARRAY_STRIDE: GLenum = 0x807F;
822 pub const NORMAL_ARRAY_TYPE: GLenum = 0x807E;
823 pub const NORMAL_MAP: GLenum = 0x8511;
824 pub const NOTEQUAL: GLenum = 0x0205;
825 pub const NO_ERROR: GLenum = 0;
826 pub const NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2;
827 pub const NUM_EXTENSIONS: GLenum = 0x821D;
828 pub const NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE;
829 pub const NUM_SAMPLE_COUNTS: GLenum = 0x9380;
830 pub const NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9;
831 pub const OBJECT_LINEAR: GLenum = 0x2401;
832 pub const OBJECT_PLANE: GLenum = 0x2501;
833 pub const OBJECT_TYPE: GLenum = 0x9112;
834 pub const ONE: GLenum = 1;
835 pub const ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004;
836 pub const ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002;
837 pub const ONE_MINUS_DST_ALPHA: GLenum = 0x0305;
838 pub const ONE_MINUS_DST_COLOR: GLenum = 0x0307;
839 pub const ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB;
840 pub const ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA;
841 pub const ONE_MINUS_SRC_ALPHA: GLenum = 0x0303;
842 pub const ONE_MINUS_SRC_COLOR: GLenum = 0x0301;
843 pub const OPERAND0_ALPHA: GLenum = 0x8598;
844 pub const OPERAND0_RGB: GLenum = 0x8590;
845 pub const OPERAND1_ALPHA: GLenum = 0x8599;
846 pub const OPERAND1_RGB: GLenum = 0x8591;
847 pub const OPERAND2_ALPHA: GLenum = 0x859A;
848 pub const OPERAND2_RGB: GLenum = 0x8592;
849 pub const OR: GLenum = 0x1507;
850 pub const ORDER: GLenum = 0x0A01;
851 pub const OR_INVERTED: GLenum = 0x150D;
852 pub const OR_REVERSE: GLenum = 0x150B;
853 pub const OUT_OF_MEMORY: GLenum = 0x0505;
854 pub const OVERLAY_KHR: GLenum = 0x9296;
855 pub const PACK_ALIGNMENT: GLenum = 0x0D05;
856 pub const PACK_IMAGE_HEIGHT: GLenum = 0x806C;
857 pub const PACK_LSB_FIRST: GLenum = 0x0D01;
858 pub const PACK_ROW_LENGTH: GLenum = 0x0D02;
859 pub const PACK_SKIP_IMAGES: GLenum = 0x806B;
860 pub const PACK_SKIP_PIXELS: GLenum = 0x0D04;
861 pub const PACK_SKIP_ROWS: GLenum = 0x0D03;
862 pub const PACK_SWAP_BYTES: GLenum = 0x0D00;
863 pub const PASS_THROUGH_TOKEN: GLenum = 0x0700;
864 pub const PERSPECTIVE_CORRECTION_HINT: GLenum = 0x0C50;
865 pub const PIXEL_MAP_A_TO_A: GLenum = 0x0C79;
866 pub const PIXEL_MAP_A_TO_A_SIZE: GLenum = 0x0CB9;
867 pub const PIXEL_MAP_B_TO_B: GLenum = 0x0C78;
868 pub const PIXEL_MAP_B_TO_B_SIZE: GLenum = 0x0CB8;
869 pub const PIXEL_MAP_G_TO_G: GLenum = 0x0C77;
870 pub const PIXEL_MAP_G_TO_G_SIZE: GLenum = 0x0CB7;
871 pub const PIXEL_MAP_I_TO_A: GLenum = 0x0C75;
872 pub const PIXEL_MAP_I_TO_A_SIZE: GLenum = 0x0CB5;
873 pub const PIXEL_MAP_I_TO_B: GLenum = 0x0C74;
874 pub const PIXEL_MAP_I_TO_B_SIZE: GLenum = 0x0CB4;
875 pub const PIXEL_MAP_I_TO_G: GLenum = 0x0C73;
876 pub const PIXEL_MAP_I_TO_G_SIZE: GLenum = 0x0CB3;
877 pub const PIXEL_MAP_I_TO_I: GLenum = 0x0C70;
878 pub const PIXEL_MAP_I_TO_I_SIZE: GLenum = 0x0CB0;
879 pub const PIXEL_MAP_I_TO_R: GLenum = 0x0C72;
880 pub const PIXEL_MAP_I_TO_R_SIZE: GLenum = 0x0CB2;
881 pub const PIXEL_MAP_R_TO_R: GLenum = 0x0C76;
882 pub const PIXEL_MAP_R_TO_R_SIZE: GLenum = 0x0CB6;
883 pub const PIXEL_MAP_S_TO_S: GLenum = 0x0C71;
884 pub const PIXEL_MAP_S_TO_S_SIZE: GLenum = 0x0CB1;
885 pub const PIXEL_MODE_BIT: GLenum = 0x00000020;
886 pub const PIXEL_PACK_BUFFER: GLenum = 0x88EB;
887 pub const PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED;
888 pub const PIXEL_UNPACK_BUFFER: GLenum = 0x88EC;
889 pub const PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF;
890 pub const POINT: GLenum = 0x1B00;
891 pub const POINTS: GLenum = 0x0000;
892 pub const POINT_BIT: GLenum = 0x00000002;
893 pub const POINT_DISTANCE_ATTENUATION: GLenum = 0x8129;
894 pub const POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128;
895 pub const POINT_SIZE: GLenum = 0x0B11;
896 pub const POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
897 pub const POINT_SIZE_MAX: GLenum = 0x8127;
898 pub const POINT_SIZE_MIN: GLenum = 0x8126;
899 pub const POINT_SIZE_RANGE: GLenum = 0x0B12;
900 pub const POINT_SMOOTH: GLenum = 0x0B10;
901 pub const POINT_SMOOTH_HINT: GLenum = 0x0C51;
902 pub const POINT_SPRITE: GLenum = 0x8861;
903 pub const POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0;
904 pub const POINT_TOKEN: GLenum = 0x0701;
905 pub const POLYGON: GLenum = 0x0009;
906 pub const POLYGON_BIT: GLenum = 0x00000008;
907 pub const POLYGON_MODE: GLenum = 0x0B40;
908 pub const POLYGON_OFFSET_FACTOR: GLenum = 0x8038;
909 pub const POLYGON_OFFSET_FILL: GLenum = 0x8037;
910 pub const POLYGON_OFFSET_LINE: GLenum = 0x2A02;
911 pub const POLYGON_OFFSET_POINT: GLenum = 0x2A01;
912 pub const POLYGON_OFFSET_UNITS: GLenum = 0x2A00;
913 pub const POLYGON_SMOOTH: GLenum = 0x0B41;
914 pub const POLYGON_SMOOTH_HINT: GLenum = 0x0C53;
915 pub const POLYGON_STIPPLE: GLenum = 0x0B42;
916 pub const POLYGON_STIPPLE_BIT: GLenum = 0x00000010;
917 pub const POLYGON_TOKEN: GLenum = 0x0703;
918 pub const POSITION: GLenum = 0x1203;
919 pub const PREVIOUS: GLenum = 0x8578;
920 pub const PRIMARY_COLOR: GLenum = 0x8577;
921 pub const PRIMITIVES_GENERATED: GLenum = 0x8C87;
922 pub const PRIMITIVE_RESTART: GLenum = 0x8F9D;
923 pub const PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69;
924 pub const PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E;
925 pub const PROGRAM: GLenum = 0x82E2;
926 pub const PROGRAM_BINARY_FORMATS: GLenum = 0x87FF;
927 pub const PROGRAM_BINARY_LENGTH: GLenum = 0x8741;
928 pub const PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257;
929 pub const PROGRAM_KHR: GLenum = 0x82E2;
930 pub const PROGRAM_PIPELINE: GLenum = 0x82E4;
931 pub const PROGRAM_PIPELINE_KHR: GLenum = 0x82E4;
932 pub const PROGRAM_POINT_SIZE: GLenum = 0x8642;
933 pub const PROJECTION: GLenum = 0x1701;
934 pub const PROJECTION_MATRIX: GLenum = 0x0BA7;
935 pub const PROJECTION_STACK_DEPTH: GLenum = 0x0BA4;
936 pub const PROVOKING_VERTEX: GLenum = 0x8E4F;
937 pub const PROXY_TEXTURE_1D: GLenum = 0x8063;
938 pub const PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19;
939 pub const PROXY_TEXTURE_2D: GLenum = 0x8064;
940 pub const PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B;
941 pub const PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101;
942 pub const PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103;
943 pub const PROXY_TEXTURE_3D: GLenum = 0x8070;
944 pub const PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B;
945 pub const PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7;
946 pub const PROXY_TEXTURE_RECTANGLE_ARB: GLenum = 0x84F7;
947 pub const Q: GLenum = 0x2003;
948 pub const QUADRATIC_ATTENUATION: GLenum = 0x1209;
949 pub const QUADS: GLenum = 0x0007;
950 pub const QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C;
951 pub const QUAD_STRIP: GLenum = 0x0008;
952 pub const QUERY: GLenum = 0x82E3;
953 pub const QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16;
954 pub const QUERY_BY_REGION_WAIT: GLenum = 0x8E15;
955 pub const QUERY_COUNTER_BITS: GLenum = 0x8864;
956 pub const QUERY_COUNTER_BITS_EXT: GLenum = 0x8864;
957 pub const QUERY_KHR: GLenum = 0x82E3;
958 pub const QUERY_NO_WAIT: GLenum = 0x8E14;
959 pub const QUERY_RESULT: GLenum = 0x8866;
960 pub const QUERY_RESULT_AVAILABLE: GLenum = 0x8867;
961 pub const QUERY_RESULT_AVAILABLE_EXT: GLenum = 0x8867;
962 pub const QUERY_RESULT_EXT: GLenum = 0x8866;
963 pub const QUERY_WAIT: GLenum = 0x8E13;
964 pub const R: GLenum = 0x2002;
965 pub const R11F_G11F_B10F: GLenum = 0x8C3A;
966 pub const R16: GLenum = 0x822A;
967 pub const R16F: GLenum = 0x822D;
968 pub const R16F_EXT: GLenum = 0x822D;
969 pub const R16I: GLenum = 0x8233;
970 pub const R16UI: GLenum = 0x8234;
971 pub const R16_SNORM: GLenum = 0x8F98;
972 pub const R32F: GLenum = 0x822E;
973 pub const R32F_EXT: GLenum = 0x822E;
974 pub const R32I: GLenum = 0x8235;
975 pub const R32UI: GLenum = 0x8236;
976 pub const R3_G3_B2: GLenum = 0x2A10;
977 pub const R8: GLenum = 0x8229;
978 pub const R8I: GLenum = 0x8231;
979 pub const R8UI: GLenum = 0x8232;
980 pub const R8_EXT: GLenum = 0x8229;
981 pub const R8_SNORM: GLenum = 0x8F94;
982 pub const RASTERIZER_DISCARD: GLenum = 0x8C89;
983 pub const READ_BUFFER: GLenum = 0x0C02;
984 pub const READ_FRAMEBUFFER: GLenum = 0x8CA8;
985 pub const READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA;
986 pub const READ_ONLY: GLenum = 0x88B8;
987 pub const READ_WRITE: GLenum = 0x88BA;
988 pub const RED: GLenum = 0x1903;
989 pub const RED_BIAS: GLenum = 0x0D15;
990 pub const RED_BITS: GLenum = 0x0D52;
991 pub const RED_INTEGER: GLenum = 0x8D94;
992 pub const RED_SCALE: GLenum = 0x0D14;
993 pub const REFLECTION_MAP: GLenum = 0x8512;
994 pub const RENDER: GLenum = 0x1C00;
995 pub const RENDERBUFFER: GLenum = 0x8D41;
996 pub const RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53;
997 pub const RENDERBUFFER_BINDING: GLenum = 0x8CA7;
998 pub const RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52;
999 pub const RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54;
1000 pub const RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51;
1001 pub const RENDERBUFFER_HEIGHT: GLenum = 0x8D43;
1002 pub const RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44;
1003 pub const RENDERBUFFER_RED_SIZE: GLenum = 0x8D50;
1004 pub const RENDERBUFFER_SAMPLES: GLenum = 0x8CAB;
1005 pub const RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55;
1006 pub const RENDERBUFFER_WIDTH: GLenum = 0x8D42;
1007 pub const RENDERER: GLenum = 0x1F01;
1008 pub const RENDER_MODE: GLenum = 0x0C40;
1009 pub const REPEAT: GLenum = 0x2901;
1010 pub const REPLACE: GLenum = 0x1E01;
1011 pub const REQUIRED_TEXTURE_IMAGE_UNITS_OES: GLenum = 0x8D68;
1012 pub const RESCALE_NORMAL: GLenum = 0x803A;
1013 pub const RETURN: GLenum = 0x0102;
1014 pub const RG: GLenum = 0x8227;
1015 pub const RG16: GLenum = 0x822C;
1016 pub const RG16F: GLenum = 0x822F;
1017 pub const RG16F_EXT: GLenum = 0x822F;
1018 pub const RG16I: GLenum = 0x8239;
1019 pub const RG16UI: GLenum = 0x823A;
1020 pub const RG16_SNORM: GLenum = 0x8F99;
1021 pub const RG32F: GLenum = 0x8230;
1022 pub const RG32F_EXT: GLenum = 0x8230;
1023 pub const RG32I: GLenum = 0x823B;
1024 pub const RG32UI: GLenum = 0x823C;
1025 pub const RG8: GLenum = 0x822B;
1026 pub const RG8I: GLenum = 0x8237;
1027 pub const RG8UI: GLenum = 0x8238;
1028 pub const RG8_EXT: GLenum = 0x822B;
1029 pub const RG8_SNORM: GLenum = 0x8F95;
1030 pub const RGB: GLenum = 0x1907;
1031 pub const RGB10: GLenum = 0x8052;
1032 pub const RGB10_A2: GLenum = 0x8059;
1033 pub const RGB10_A2UI: GLenum = 0x906F;
1034 pub const RGB10_A2_EXT: GLenum = 0x8059;
1035 pub const RGB10_EXT: GLenum = 0x8052;
1036 pub const RGB12: GLenum = 0x8053;
1037 pub const RGB16: GLenum = 0x8054;
1038 pub const RGB16F: GLenum = 0x881B;
1039 pub const RGB16F_EXT: GLenum = 0x881B;
1040 pub const RGB16I: GLenum = 0x8D89;
1041 pub const RGB16UI: GLenum = 0x8D77;
1042 pub const RGB16_SNORM: GLenum = 0x8F9A;
1043 pub const RGB32F: GLenum = 0x8815;
1044 pub const RGB32F_EXT: GLenum = 0x8815;
1045 pub const RGB32I: GLenum = 0x8D83;
1046 pub const RGB32UI: GLenum = 0x8D71;
1047 pub const RGB4: GLenum = 0x804F;
1048 pub const RGB5: GLenum = 0x8050;
1049 pub const RGB565: GLenum = 0x8D62;
1050 pub const RGB5_A1: GLenum = 0x8057;
1051 pub const RGB8: GLenum = 0x8051;
1052 pub const RGB8I: GLenum = 0x8D8F;
1053 pub const RGB8UI: GLenum = 0x8D7D;
1054 pub const RGB8_SNORM: GLenum = 0x8F96;
1055 pub const RGB9_E5: GLenum = 0x8C3D;
1056 pub const RGBA: GLenum = 0x1908;
1057 pub const RGBA12: GLenum = 0x805A;
1058 pub const RGBA16: GLenum = 0x805B;
1059 pub const RGBA16F: GLenum = 0x881A;
1060 pub const RGBA16F_EXT: GLenum = 0x881A;
1061 pub const RGBA16I: GLenum = 0x8D88;
1062 pub const RGBA16UI: GLenum = 0x8D76;
1063 pub const RGBA16_SNORM: GLenum = 0x8F9B;
1064 pub const RGBA2: GLenum = 0x8055;
1065 pub const RGBA32F: GLenum = 0x8814;
1066 pub const RGBA32F_EXT: GLenum = 0x8814;
1067 pub const RGBA32I: GLenum = 0x8D82;
1068 pub const RGBA32UI: GLenum = 0x8D70;
1069 pub const RGBA4: GLenum = 0x8056;
1070 pub const RGBA8: GLenum = 0x8058;
1071 pub const RGBA8I: GLenum = 0x8D8E;
1072 pub const RGBA8UI: GLenum = 0x8D7C;
1073 pub const RGBA8_SNORM: GLenum = 0x8F97;
1074 pub const RGBA_INTEGER: GLenum = 0x8D99;
1075 pub const RGBA_MODE: GLenum = 0x0C31;
1076 pub const RGB_INTEGER: GLenum = 0x8D98;
1077 pub const RGB_SCALE: GLenum = 0x8573;
1078 pub const RG_INTEGER: GLenum = 0x8228;
1079 pub const RIGHT: GLenum = 0x0407;
1080 pub const S: GLenum = 0x2000;
1081 pub const SAMPLER: GLenum = 0x82E6;
1082 pub const SAMPLER_1D: GLenum = 0x8B5D;
1083 pub const SAMPLER_1D_ARRAY: GLenum = 0x8DC0;
1084 pub const SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3;
1085 pub const SAMPLER_1D_SHADOW: GLenum = 0x8B61;
1086 pub const SAMPLER_2D: GLenum = 0x8B5E;
1087 pub const SAMPLER_2D_ARRAY: GLenum = 0x8DC1;
1088 pub const SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4;
1089 pub const SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108;
1090 pub const SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B;
1091 pub const SAMPLER_2D_RECT: GLenum = 0x8B63;
1092 pub const SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64;
1093 pub const SAMPLER_2D_SHADOW: GLenum = 0x8B62;
1094 pub const SAMPLER_3D: GLenum = 0x8B5F;
1095 pub const SAMPLER_BINDING: GLenum = 0x8919;
1096 pub const SAMPLER_BUFFER: GLenum = 0x8DC2;
1097 pub const SAMPLER_CUBE: GLenum = 0x8B60;
1098 pub const SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5;
1099 pub const SAMPLER_EXTERNAL_OES: GLenum = 0x8D66;
1100 pub const SAMPLER_KHR: GLenum = 0x82E6;
1101 pub const SAMPLES: GLenum = 0x80A9;
1102 pub const SAMPLES_PASSED: GLenum = 0x8914;
1103 pub const SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E;
1104 pub const SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F;
1105 pub const SAMPLE_BUFFERS: GLenum = 0x80A8;
1106 pub const SAMPLE_COVERAGE: GLenum = 0x80A0;
1107 pub const SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB;
1108 pub const SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA;
1109 pub const SAMPLE_MASK: GLenum = 0x8E51;
1110 pub const SAMPLE_MASK_VALUE: GLenum = 0x8E52;
1111 pub const SAMPLE_POSITION: GLenum = 0x8E50;
1112 pub const SCISSOR_BIT: GLenum = 0x00080000;
1113 pub const SCISSOR_BOX: GLenum = 0x0C10;
1114 pub const SCISSOR_TEST: GLenum = 0x0C11;
1115 pub const SCREEN_KHR: GLenum = 0x9295;
1116 pub const SECONDARY_COLOR_ARRAY: GLenum = 0x845E;
1117 pub const SECONDARY_COLOR_ARRAY_BUFFER_BINDING: GLenum = 0x889C;
1118 pub const SECONDARY_COLOR_ARRAY_POINTER: GLenum = 0x845D;
1119 pub const SECONDARY_COLOR_ARRAY_SIZE: GLenum = 0x845A;
1120 pub const SECONDARY_COLOR_ARRAY_STRIDE: GLenum = 0x845C;
1121 pub const SECONDARY_COLOR_ARRAY_TYPE: GLenum = 0x845B;
1122 pub const SELECT: GLenum = 0x1C02;
1123 pub const SELECTION_BUFFER_POINTER: GLenum = 0x0DF3;
1124 pub const SELECTION_BUFFER_SIZE: GLenum = 0x0DF4;
1125 pub const SEPARATE_ATTRIBS: GLenum = 0x8C8D;
1126 pub const SEPARATE_SPECULAR_COLOR: GLenum = 0x81FA;
1127 pub const SET: GLenum = 0x150F;
1128 pub const SHADER: GLenum = 0x82E1;
1129 pub const SHADER_BINARY_FORMATS: GLenum = 0x8DF8;
1130 pub const SHADER_COMPILER: GLenum = 0x8DFA;
1131 pub const SHADER_KHR: GLenum = 0x82E1;
1132 pub const SHADER_PIXEL_LOCAL_STORAGE_EXT: GLenum = 0x8F64;
1133 pub const SHADER_SOURCE_LENGTH: GLenum = 0x8B88;
1134 pub const SHADER_TYPE: GLenum = 0x8B4F;
1135 pub const SHADE_MODEL: GLenum = 0x0B54;
1136 pub const SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C;
1137 pub const SHININESS: GLenum = 0x1601;
1138 pub const SHORT: GLenum = 0x1402;
1139 pub const SIGNALED: GLenum = 0x9119;
1140 pub const SIGNED_NORMALIZED: GLenum = 0x8F9C;
1141 pub const SINGLE_COLOR: GLenum = 0x81F9;
1142 pub const SLUMINANCE: GLenum = 0x8C46;
1143 pub const SLUMINANCE8: GLenum = 0x8C47;
1144 pub const SLUMINANCE8_ALPHA8: GLenum = 0x8C45;
1145 pub const SLUMINANCE_ALPHA: GLenum = 0x8C44;
1146 pub const SMOOTH: GLenum = 0x1D01;
1147 pub const SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
1148 pub const SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22;
1149 pub const SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
1150 pub const SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12;
1151 pub const SOFTLIGHT_KHR: GLenum = 0x929C;
1152 pub const SOURCE0_ALPHA: GLenum = 0x8588;
1153 pub const SOURCE0_RGB: GLenum = 0x8580;
1154 pub const SOURCE1_ALPHA: GLenum = 0x8589;
1155 pub const SOURCE1_RGB: GLenum = 0x8581;
1156 pub const SOURCE2_ALPHA: GLenum = 0x858A;
1157 pub const SOURCE2_RGB: GLenum = 0x8582;
1158 pub const SPECULAR: GLenum = 0x1202;
1159 pub const SPHERE_MAP: GLenum = 0x2402;
1160 pub const SPOT_CUTOFF: GLenum = 0x1206;
1161 pub const SPOT_DIRECTION: GLenum = 0x1204;
1162 pub const SPOT_EXPONENT: GLenum = 0x1205;
1163 pub const SRC0_ALPHA: GLenum = 0x8588;
1164 pub const SRC0_RGB: GLenum = 0x8580;
1165 pub const SRC1_ALPHA: GLenum = 0x8589;
1166 pub const SRC1_COLOR: GLenum = 0x88F9;
1167 pub const SRC1_RGB: GLenum = 0x8581;
1168 pub const SRC2_ALPHA: GLenum = 0x858A;
1169 pub const SRC2_RGB: GLenum = 0x8582;
1170 pub const SRC_ALPHA: GLenum = 0x0302;
1171 pub const SRC_ALPHA_SATURATE: GLenum = 0x0308;
1172 pub const SRC_COLOR: GLenum = 0x0300;
1173 pub const SRGB: GLenum = 0x8C40;
1174 pub const SRGB8: GLenum = 0x8C41;
1175 pub const SRGB8_ALPHA8: GLenum = 0x8C43;
1176 pub const SRGB_ALPHA: GLenum = 0x8C42;
1177 pub const STACK_OVERFLOW: GLenum = 0x0503;
1178 pub const STACK_OVERFLOW_KHR: GLenum = 0x0503;
1179 pub const STACK_UNDERFLOW: GLenum = 0x0504;
1180 pub const STACK_UNDERFLOW_KHR: GLenum = 0x0504;
1181 pub const STATIC_COPY: GLenum = 0x88E6;
1182 pub const STATIC_DRAW: GLenum = 0x88E4;
1183 pub const STATIC_READ: GLenum = 0x88E5;
1184 pub const STENCIL: GLenum = 0x1802;
1185 pub const STENCIL_ATTACHMENT: GLenum = 0x8D20;
1186 pub const STENCIL_BACK_FAIL: GLenum = 0x8801;
1187 pub const STENCIL_BACK_FUNC: GLenum = 0x8800;
1188 pub const STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802;
1189 pub const STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803;
1190 pub const STENCIL_BACK_REF: GLenum = 0x8CA3;
1191 pub const STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4;
1192 pub const STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5;
1193 pub const STENCIL_BITS: GLenum = 0x0D57;
1194 pub const STENCIL_BUFFER_BIT: GLenum = 0x00000400;
1195 pub const STENCIL_CLEAR_VALUE: GLenum = 0x0B91;
1196 pub const STENCIL_FAIL: GLenum = 0x0B94;
1197 pub const STENCIL_FUNC: GLenum = 0x0B92;
1198 pub const STENCIL_INDEX: GLenum = 0x1901;
1199 pub const STENCIL_INDEX1: GLenum = 0x8D46;
1200 pub const STENCIL_INDEX16: GLenum = 0x8D49;
1201 pub const STENCIL_INDEX4: GLenum = 0x8D47;
1202 pub const STENCIL_INDEX8: GLenum = 0x8D48;
1203 pub const STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95;
1204 pub const STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96;
1205 pub const STENCIL_REF: GLenum = 0x0B97;
1206 pub const STENCIL_TEST: GLenum = 0x0B90;
1207 pub const STENCIL_VALUE_MASK: GLenum = 0x0B93;
1208 pub const STENCIL_WRITEMASK: GLenum = 0x0B98;
1209 pub const STEREO: GLenum = 0x0C33;
1210 pub const STORAGE_CACHED_APPLE: GLenum = 0x85BE;
1211 pub const STORAGE_PRIVATE_APPLE: GLenum = 0x85BD;
1212 pub const STORAGE_SHARED_APPLE: GLenum = 0x85BF;
1213 pub const STREAM_COPY: GLenum = 0x88E2;
1214 pub const STREAM_DRAW: GLenum = 0x88E0;
1215 pub const STREAM_READ: GLenum = 0x88E1;
1216 pub const SUBPIXEL_BITS: GLenum = 0x0D50;
1217 pub const SUBTRACT: GLenum = 0x84E7;
1218 pub const SYNC_CONDITION: GLenum = 0x9113;
1219 pub const SYNC_FENCE: GLenum = 0x9116;
1220 pub const SYNC_FLAGS: GLenum = 0x9115;
1221 pub const SYNC_FLUSH_COMMANDS_BIT: GLenum = 0x00000001;
1222 pub const SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117;
1223 pub const SYNC_STATUS: GLenum = 0x9114;
1224 pub const T: GLenum = 0x2001;
1225 pub const T2F_C3F_V3F: GLenum = 0x2A2A;
1226 pub const T2F_C4F_N3F_V3F: GLenum = 0x2A2C;
1227 pub const T2F_C4UB_V3F: GLenum = 0x2A29;
1228 pub const T2F_N3F_V3F: GLenum = 0x2A2B;
1229 pub const T2F_V3F: GLenum = 0x2A27;
1230 pub const T4F_C4F_N3F_V4F: GLenum = 0x2A2D;
1231 pub const T4F_V4F: GLenum = 0x2A28;
1232 pub const TEXTURE: GLenum = 0x1702;
1233 pub const TEXTURE0: GLenum = 0x84C0;
1234 pub const TEXTURE1: GLenum = 0x84C1;
1235 pub const TEXTURE10: GLenum = 0x84CA;
1236 pub const TEXTURE11: GLenum = 0x84CB;
1237 pub const TEXTURE12: GLenum = 0x84CC;
1238 pub const TEXTURE13: GLenum = 0x84CD;
1239 pub const TEXTURE14: GLenum = 0x84CE;
1240 pub const TEXTURE15: GLenum = 0x84CF;
1241 pub const TEXTURE16: GLenum = 0x84D0;
1242 pub const TEXTURE17: GLenum = 0x84D1;
1243 pub const TEXTURE18: GLenum = 0x84D2;
1244 pub const TEXTURE19: GLenum = 0x84D3;
1245 pub const TEXTURE2: GLenum = 0x84C2;
1246 pub const TEXTURE20: GLenum = 0x84D4;
1247 pub const TEXTURE21: GLenum = 0x84D5;
1248 pub const TEXTURE22: GLenum = 0x84D6;
1249 pub const TEXTURE23: GLenum = 0x84D7;
1250 pub const TEXTURE24: GLenum = 0x84D8;
1251 pub const TEXTURE25: GLenum = 0x84D9;
1252 pub const TEXTURE26: GLenum = 0x84DA;
1253 pub const TEXTURE27: GLenum = 0x84DB;
1254 pub const TEXTURE28: GLenum = 0x84DC;
1255 pub const TEXTURE29: GLenum = 0x84DD;
1256 pub const TEXTURE3: GLenum = 0x84C3;
1257 pub const TEXTURE30: GLenum = 0x84DE;
1258 pub const TEXTURE31: GLenum = 0x84DF;
1259 pub const TEXTURE4: GLenum = 0x84C4;
1260 pub const TEXTURE5: GLenum = 0x84C5;
1261 pub const TEXTURE6: GLenum = 0x84C6;
1262 pub const TEXTURE7: GLenum = 0x84C7;
1263 pub const TEXTURE8: GLenum = 0x84C8;
1264 pub const TEXTURE9: GLenum = 0x84C9;
1265 pub const TEXTURE_1D: GLenum = 0x0DE0;
1266 pub const TEXTURE_1D_ARRAY: GLenum = 0x8C18;
1267 pub const TEXTURE_2D: GLenum = 0x0DE1;
1268 pub const TEXTURE_2D_ARRAY: GLenum = 0x8C1A;
1269 pub const TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100;
1270 pub const TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102;
1271 pub const TEXTURE_3D: GLenum = 0x806F;
1272 pub const TEXTURE_ALPHA_SIZE: GLenum = 0x805F;
1273 pub const TEXTURE_ALPHA_TYPE: GLenum = 0x8C13;
1274 pub const TEXTURE_BASE_LEVEL: GLenum = 0x813C;
1275 pub const TEXTURE_BINDING_1D: GLenum = 0x8068;
1276 pub const TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C;
1277 pub const TEXTURE_BINDING_2D: GLenum = 0x8069;
1278 pub const TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D;
1279 pub const TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104;
1280 pub const TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105;
1281 pub const TEXTURE_BINDING_3D: GLenum = 0x806A;
1282 pub const TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C;
1283 pub const TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514;
1284 pub const TEXTURE_BINDING_EXTERNAL_OES: GLenum = 0x8D67;
1285 pub const TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6;
1286 pub const TEXTURE_BINDING_RECTANGLE_ARB: GLenum = 0x84F6;
1287 pub const TEXTURE_BIT: GLenum = 0x00040000;
1288 pub const TEXTURE_BLUE_SIZE: GLenum = 0x805E;
1289 pub const TEXTURE_BLUE_TYPE: GLenum = 0x8C12;
1290 pub const TEXTURE_BORDER: GLenum = 0x1005;
1291 pub const TEXTURE_BORDER_COLOR: GLenum = 0x1004;
1292 pub const TEXTURE_BUFFER: GLenum = 0x8C2A;
1293 pub const TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D;
1294 pub const TEXTURE_COMPARE_FUNC: GLenum = 0x884D;
1295 pub const TEXTURE_COMPARE_MODE: GLenum = 0x884C;
1296 pub const TEXTURE_COMPONENTS: GLenum = 0x1003;
1297 pub const TEXTURE_COMPRESSED: GLenum = 0x86A1;
1298 pub const TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0;
1299 pub const TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF;
1300 pub const TEXTURE_COORD_ARRAY: GLenum = 0x8078;
1301 pub const TEXTURE_COORD_ARRAY_BUFFER_BINDING: GLenum = 0x889A;
1302 pub const TEXTURE_COORD_ARRAY_POINTER: GLenum = 0x8092;
1303 pub const TEXTURE_COORD_ARRAY_SIZE: GLenum = 0x8088;
1304 pub const TEXTURE_COORD_ARRAY_STRIDE: GLenum = 0x808A;
1305 pub const TEXTURE_COORD_ARRAY_TYPE: GLenum = 0x8089;
1306 pub const TEXTURE_CUBE_MAP: GLenum = 0x8513;
1307 pub const TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516;
1308 pub const TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518;
1309 pub const TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A;
1310 pub const TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515;
1311 pub const TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517;
1312 pub const TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519;
1313 pub const TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F;
1314 pub const TEXTURE_DEPTH: GLenum = 0x8071;
1315 pub const TEXTURE_DEPTH_SIZE: GLenum = 0x884A;
1316 pub const TEXTURE_DEPTH_TYPE: GLenum = 0x8C16;
1317 pub const TEXTURE_ENV: GLenum = 0x2300;
1318 pub const TEXTURE_ENV_COLOR: GLenum = 0x2201;
1319 pub const TEXTURE_ENV_MODE: GLenum = 0x2200;
1320 pub const TEXTURE_EXTERNAL_OES: GLenum = 0x8D65;
1321 pub const TEXTURE_FILTER_CONTROL: GLenum = 0x8500;
1322 pub const TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107;
1323 pub const TEXTURE_GEN_MODE: GLenum = 0x2500;
1324 pub const TEXTURE_GEN_Q: GLenum = 0x0C63;
1325 pub const TEXTURE_GEN_R: GLenum = 0x0C62;
1326 pub const TEXTURE_GEN_S: GLenum = 0x0C60;
1327 pub const TEXTURE_GEN_T: GLenum = 0x0C61;
1328 pub const TEXTURE_GREEN_SIZE: GLenum = 0x805D;
1329 pub const TEXTURE_GREEN_TYPE: GLenum = 0x8C11;
1330 pub const TEXTURE_HEIGHT: GLenum = 0x1001;
1331 pub const TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F;
1332 pub const TEXTURE_IMMUTABLE_FORMAT_EXT: GLenum = 0x912F;
1333 pub const TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF;
1334 pub const TEXTURE_INTENSITY_SIZE: GLenum = 0x8061;
1335 pub const TEXTURE_INTENSITY_TYPE: GLenum = 0x8C15;
1336 pub const TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003;
1337 pub const TEXTURE_LOD_BIAS: GLenum = 0x8501;
1338 pub const TEXTURE_LUMINANCE_SIZE: GLenum = 0x8060;
1339 pub const TEXTURE_LUMINANCE_TYPE: GLenum = 0x8C14;
1340 pub const TEXTURE_MAG_FILTER: GLenum = 0x2800;
1341 pub const TEXTURE_MATRIX: GLenum = 0x0BA8;
1342 pub const TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FE;
1343 pub const TEXTURE_MAX_LEVEL: GLenum = 0x813D;
1344 pub const TEXTURE_MAX_LOD: GLenum = 0x813B;
1345 pub const TEXTURE_MIN_FILTER: GLenum = 0x2801;
1346 pub const TEXTURE_MIN_LOD: GLenum = 0x813A;
1347 pub const TEXTURE_PRIORITY: GLenum = 0x8066;
1348 pub const TEXTURE_RANGE_LENGTH_APPLE: GLenum = 0x85B7;
1349 pub const TEXTURE_RANGE_POINTER_APPLE: GLenum = 0x85B8;
1350 pub const TEXTURE_RECTANGLE: GLenum = 0x84F5;
1351 pub const TEXTURE_RECTANGLE_ARB: GLenum = 0x84F5;
1352 pub const TEXTURE_RED_SIZE: GLenum = 0x805C;
1353 pub const TEXTURE_RED_TYPE: GLenum = 0x8C10;
1354 pub const TEXTURE_RESIDENT: GLenum = 0x8067;
1355 pub const TEXTURE_SAMPLES: GLenum = 0x9106;
1356 pub const TEXTURE_SHARED_SIZE: GLenum = 0x8C3F;
1357 pub const TEXTURE_STACK_DEPTH: GLenum = 0x0BA5;
1358 pub const TEXTURE_STENCIL_SIZE: GLenum = 0x88F1;
1359 pub const TEXTURE_STORAGE_HINT_APPLE: GLenum = 0x85BC;
1360 pub const TEXTURE_SWIZZLE_A: GLenum = 0x8E45;
1361 pub const TEXTURE_SWIZZLE_B: GLenum = 0x8E44;
1362 pub const TEXTURE_SWIZZLE_G: GLenum = 0x8E43;
1363 pub const TEXTURE_SWIZZLE_R: GLenum = 0x8E42;
1364 pub const TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46;
1365 pub const TEXTURE_USAGE_ANGLE: GLenum = 0x93A2;
1366 pub const TEXTURE_WIDTH: GLenum = 0x1000;
1367 pub const TEXTURE_WRAP_R: GLenum = 0x8072;
1368 pub const TEXTURE_WRAP_S: GLenum = 0x2802;
1369 pub const TEXTURE_WRAP_T: GLenum = 0x2803;
1370 pub const TIMEOUT_EXPIRED: GLenum = 0x911B;
1371 pub const TIMEOUT_IGNORED: u64 = 0xFFFFFFFFFFFFFFFF;
1372 pub const TIMESTAMP: GLenum = 0x8E28;
1373 pub const TIMESTAMP_EXT: GLenum = 0x8E28;
1374 pub const TIME_ELAPSED: GLenum = 0x88BF;
1375 pub const TIME_ELAPSED_EXT: GLenum = 0x88BF;
1376 pub const TRANSFORM_BIT: GLenum = 0x00001000;
1377 pub const TRANSFORM_FEEDBACK: GLenum = 0x8E22;
1378 pub const TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24;
1379 pub const TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25;
1380 pub const TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E;
1381 pub const TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F;
1382 pub const TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F;
1383 pub const TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85;
1384 pub const TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84;
1385 pub const TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23;
1386 pub const TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88;
1387 pub const TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83;
1388 pub const TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76;
1389 pub const TRANSPOSE_COLOR_MATRIX: GLenum = 0x84E6;
1390 pub const TRANSPOSE_MODELVIEW_MATRIX: GLenum = 0x84E3;
1391 pub const TRANSPOSE_PROJECTION_MATRIX: GLenum = 0x84E4;
1392 pub const TRANSPOSE_TEXTURE_MATRIX: GLenum = 0x84E5;
1393 pub const TRIANGLES: GLenum = 0x0004;
1394 pub const TRIANGLES_ADJACENCY: GLenum = 0x000C;
1395 pub const TRIANGLE_FAN: GLenum = 0x0006;
1396 pub const TRIANGLE_STRIP: GLenum = 0x0005;
1397 pub const TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D;
1398 pub const TRUE: GLenum = 1;
1399 pub const UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C;
1400 pub const UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42;
1401 pub const UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43;
1402 pub const UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F;
1403 pub const UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40;
1404 pub const UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A;
1405 pub const UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41;
1406 pub const UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46;
1407 pub const UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45;
1408 pub const UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44;
1409 pub const UNIFORM_BUFFER: GLenum = 0x8A11;
1410 pub const UNIFORM_BUFFER_BINDING: GLenum = 0x8A28;
1411 pub const UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34;
1412 pub const UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A;
1413 pub const UNIFORM_BUFFER_START: GLenum = 0x8A29;
1414 pub const UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E;
1415 pub const UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D;
1416 pub const UNIFORM_NAME_LENGTH: GLenum = 0x8A39;
1417 pub const UNIFORM_OFFSET: GLenum = 0x8A3B;
1418 pub const UNIFORM_SIZE: GLenum = 0x8A38;
1419 pub const UNIFORM_TYPE: GLenum = 0x8A37;
1420 pub const UNPACK_ALIGNMENT: GLenum = 0x0CF5;
1421 pub const UNPACK_CLIENT_STORAGE_APPLE: GLenum = 0x85B2;
1422 pub const UNPACK_IMAGE_HEIGHT: GLenum = 0x806E;
1423 pub const UNPACK_LSB_FIRST: GLenum = 0x0CF1;
1424 pub const UNPACK_ROW_LENGTH: GLenum = 0x0CF2;
1425 pub const UNPACK_SKIP_IMAGES: GLenum = 0x806D;
1426 pub const UNPACK_SKIP_PIXELS: GLenum = 0x0CF4;
1427 pub const UNPACK_SKIP_ROWS: GLenum = 0x0CF3;
1428 pub const UNPACK_SWAP_BYTES: GLenum = 0x0CF0;
1429 pub const UNSIGNALED: GLenum = 0x9118;
1430 pub const UNSIGNED_BYTE: GLenum = 0x1401;
1431 pub const UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362;
1432 pub const UNSIGNED_BYTE_3_3_2: GLenum = 0x8032;
1433 pub const UNSIGNED_INT: GLenum = 0x1405;
1434 pub const UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B;
1435 pub const UNSIGNED_INT_10_10_10_2: GLenum = 0x8036;
1436 pub const UNSIGNED_INT_24_8: GLenum = 0x84FA;
1437 pub const UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368;
1438 pub const UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E;
1439 pub const UNSIGNED_INT_8_8_8_8: GLenum = 0x8035;
1440 pub const UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367;
1441 pub const UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1;
1442 pub const UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6;
1443 pub const UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2;
1444 pub const UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7;
1445 pub const UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A;
1446 pub const UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D;
1447 pub const UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5;
1448 pub const UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3;
1449 pub const UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8;
1450 pub const UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4;
1451 pub const UNSIGNED_INT_VEC2: GLenum = 0x8DC6;
1452 pub const UNSIGNED_INT_VEC3: GLenum = 0x8DC7;
1453 pub const UNSIGNED_INT_VEC4: GLenum = 0x8DC8;
1454 pub const UNSIGNED_NORMALIZED: GLenum = 0x8C17;
1455 pub const UNSIGNED_SHORT: GLenum = 0x1403;
1456 pub const UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366;
1457 pub const UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033;
1458 pub const UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365;
1459 pub const UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034;
1460 pub const UNSIGNED_SHORT_5_6_5: GLenum = 0x8363;
1461 pub const UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364;
1462 pub const UPPER_LEFT: GLenum = 0x8CA2;
1463 pub const V2F: GLenum = 0x2A20;
1464 pub const V3F: GLenum = 0x2A21;
1465 pub const VALIDATE_STATUS: GLenum = 0x8B83;
1466 pub const VENDOR: GLenum = 0x1F00;
1467 pub const VERSION: GLenum = 0x1F02;
1468 pub const VERTEX_ARRAY: GLenum = 0x8074;
1469 pub const VERTEX_ARRAY_BINDING: GLenum = 0x85B5;
1470 pub const VERTEX_ARRAY_BINDING_APPLE: GLenum = 0x85B5;
1471 pub const VERTEX_ARRAY_BUFFER_BINDING: GLenum = 0x8896;
1472 pub const VERTEX_ARRAY_KHR: GLenum = 0x8074;
1473 pub const VERTEX_ARRAY_POINTER: GLenum = 0x808E;
1474 pub const VERTEX_ARRAY_SIZE: GLenum = 0x807A;
1475 pub const VERTEX_ARRAY_STRIDE: GLenum = 0x807C;
1476 pub const VERTEX_ARRAY_TYPE: GLenum = 0x807B;
1477 pub const VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F;
1478 pub const VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE;
1479 pub const VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622;
1480 pub const VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD;
1481 pub const VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A;
1482 pub const VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645;
1483 pub const VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623;
1484 pub const VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624;
1485 pub const VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625;
1486 pub const VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642;
1487 pub const VERTEX_PROGRAM_TWO_SIDE: GLenum = 0x8643;
1488 pub const VERTEX_SHADER: GLenum = 0x8B31;
1489 pub const VIEWPORT: GLenum = 0x0BA2;
1490 pub const VIEWPORT_BIT: GLenum = 0x00000800;
1491 pub const WAIT_FAILED: GLenum = 0x911D;
1492 pub const WEIGHT_ARRAY_BUFFER_BINDING: GLenum = 0x889E;
1493 pub const WRITE_ONLY: GLenum = 0x88B9;
1494 pub const XOR: GLenum = 0x1506;
1495 pub const ZERO: GLenum = 0;
1496 pub const ZOOM_X: GLenum = 0x0D16;
1497 pub const ZOOM_Y: GLenum = 0x0D17;
1498}
1499
1500pub use self::ctypes::*;
1501
1502pub type GLuint = u32;
1504pub type GLint = i32;
1505pub type GLint64 = i64;
1506pub type GLuint64 = u64;
1507pub type GLenum = u32;
1508pub type GLintptr = isize;
1509pub type GLboolean = u8;
1510pub type GLsizeiptr = isize;
1511pub type GLvoid = core::ffi::c_void;
1512pub type GLbitfield = u32;
1513pub type GLsizei = i32;
1514pub type GLclampf = f32;
1515pub type GLfloat = f32;
1516pub type GLchar = c_char; pub type GLclampd = f64;
1518pub type GLubyte = c_uchar;
1519
1520#[cfg(feature = "gleam_trait")]
1521pub type GLeglImageOES = gleam::gl::GLeglImageOES; #[cfg(not(feature = "gleam_trait"))]
1523pub type GLeglImageOES = *const c_void;
1524
1525#[cfg(feature = "gleam_trait")]
1526pub type GLsync = gleam::gl::GLsync;
1527#[cfg(not(feature = "gleam_trait"))]
1528pub type GLsync = *const c_void;
1529
1530#[cfg(feature = "gleam_trait")]
1531pub use gleam::gl::DebugMessage;
1532
1533#[cfg(not(feature = "gleam_trait"))]
1534#[repr(C)]
1535pub struct DebugMessage {
1536 pub message: String,
1537 pub source: GLenum,
1538 pub ty: GLenum,
1539 pub id: GLenum,
1540 pub severity: GLenum,
1541}
1542
1543#[cfg(feature = "gleam_trait")]
1544pub use gleam::gl::GlType;
1545
1546#[cfg(not(feature = "gleam_trait"))]
1547#[repr(C)]
1548#[derive(Debug, Clone, Copy, PartialEq, Eq)]
1549pub enum GlType {
1550 Gl,
1551 GlEs,
1552}
1553
1554pub struct GenericGlContext {
1555 pub glAccum: *mut c_void,
1556 pub glActiveTexture: *mut c_void,
1557 pub glAlphaFunc: *mut c_void,
1558 pub glAreTexturesResident: *mut c_void,
1559 pub glArrayElement: *mut c_void,
1560 pub glAttachShader: *mut c_void,
1561 pub glBegin: *mut c_void,
1562 pub glBeginConditionalRender: *mut c_void,
1563 pub glBeginQuery: *mut c_void,
1564 pub glBeginTransformFeedback: *mut c_void,
1565 pub glBindAttribLocation: *mut c_void,
1566 pub glBindBuffer: *mut c_void,
1567 pub glBindBufferBase: *mut c_void,
1568 pub glBindBufferRange: *mut c_void,
1569 pub glBindFragDataLocation: *mut c_void,
1570 pub glBindFragDataLocationIndexed: *mut c_void,
1571 pub glBindFramebuffer: *mut c_void,
1572 pub glBindRenderbuffer: *mut c_void,
1573 pub glBindSampler: *mut c_void,
1574 pub glBindTexture: *mut c_void,
1575 pub glBindVertexArray: *mut c_void,
1576 pub glBindVertexArrayAPPLE: *mut c_void,
1577 pub glBitmap: *mut c_void,
1578 pub glBlendBarrierKHR: *mut c_void,
1579 pub glBlendColor: *mut c_void,
1580 pub glBlendEquation: *mut c_void,
1581 pub glBlendEquationSeparate: *mut c_void,
1582 pub glBlendFunc: *mut c_void,
1583 pub glBlendFuncSeparate: *mut c_void,
1584 pub glBlitFramebuffer: *mut c_void,
1585 pub glBufferData: *mut c_void,
1586 pub glBufferStorage: *mut c_void,
1587 pub glBufferSubData: *mut c_void,
1588 pub glCallList: *mut c_void,
1589 pub glCallLists: *mut c_void,
1590 pub glCheckFramebufferStatus: *mut c_void,
1591 pub glClampColor: *mut c_void,
1592 pub glClear: *mut c_void,
1593 pub glClearAccum: *mut c_void,
1594 pub glClearBufferfi: *mut c_void,
1595 pub glClearBufferfv: *mut c_void,
1596 pub glClearBufferiv: *mut c_void,
1597 pub glClearBufferuiv: *mut c_void,
1598 pub glClearColor: *mut c_void,
1599 pub glClearDepth: *mut c_void,
1600 pub glClearIndex: *mut c_void,
1601 pub glClearStencil: *mut c_void,
1602 pub glClientActiveTexture: *mut c_void,
1603 pub glClientWaitSync: *mut c_void,
1604 pub glClipPlane: *mut c_void,
1605 pub glColor3b: *mut c_void,
1606 pub glColor3bv: *mut c_void,
1607 pub glColor3d: *mut c_void,
1608 pub glColor3dv: *mut c_void,
1609 pub glColor3f: *mut c_void,
1610 pub glColor3fv: *mut c_void,
1611 pub glColor3i: *mut c_void,
1612 pub glColor3iv: *mut c_void,
1613 pub glColor3s: *mut c_void,
1614 pub glColor3sv: *mut c_void,
1615 pub glColor3ub: *mut c_void,
1616 pub glColor3ubv: *mut c_void,
1617 pub glColor3ui: *mut c_void,
1618 pub glColor3uiv: *mut c_void,
1619 pub glColor3us: *mut c_void,
1620 pub glColor3usv: *mut c_void,
1621 pub glColor4b: *mut c_void,
1622 pub glColor4bv: *mut c_void,
1623 pub glColor4d: *mut c_void,
1624 pub glColor4dv: *mut c_void,
1625 pub glColor4f: *mut c_void,
1626 pub glColor4fv: *mut c_void,
1627 pub glColor4i: *mut c_void,
1628 pub glColor4iv: *mut c_void,
1629 pub glColor4s: *mut c_void,
1630 pub glColor4sv: *mut c_void,
1631 pub glColor4ub: *mut c_void,
1632 pub glColor4ubv: *mut c_void,
1633 pub glColor4ui: *mut c_void,
1634 pub glColor4uiv: *mut c_void,
1635 pub glColor4us: *mut c_void,
1636 pub glColor4usv: *mut c_void,
1637 pub glColorMask: *mut c_void,
1638 pub glColorMaski: *mut c_void,
1639 pub glColorMaterial: *mut c_void,
1640 pub glColorP3ui: *mut c_void,
1641 pub glColorP3uiv: *mut c_void,
1642 pub glColorP4ui: *mut c_void,
1643 pub glColorP4uiv: *mut c_void,
1644 pub glColorPointer: *mut c_void,
1645 pub glCompileShader: *mut c_void,
1646 pub glCompressedTexImage1D: *mut c_void,
1647 pub glCompressedTexImage2D: *mut c_void,
1648 pub glCompressedTexImage3D: *mut c_void,
1649 pub glCompressedTexSubImage1D: *mut c_void,
1650 pub glCompressedTexSubImage2D: *mut c_void,
1651 pub glCompressedTexSubImage3D: *mut c_void,
1652 pub glCopyBufferSubData: *mut c_void,
1653 pub glCopyImageSubData: *mut c_void,
1654 pub glCopyPixels: *mut c_void,
1655 pub glCopyTexImage1D: *mut c_void,
1656 pub glCopyTexImage2D: *mut c_void,
1657 pub glCopyTexSubImage1D: *mut c_void,
1658 pub glCopyTexSubImage2D: *mut c_void,
1659 pub glCopyTexSubImage3D: *mut c_void,
1660 pub glCreateProgram: *mut c_void,
1661 pub glCreateShader: *mut c_void,
1662 pub glCullFace: *mut c_void,
1663 pub glDebugMessageCallback: *mut c_void,
1664 pub glDebugMessageCallbackKHR: *mut c_void,
1665 pub glDebugMessageControl: *mut c_void,
1666 pub glDebugMessageControlKHR: *mut c_void,
1667 pub glDebugMessageInsert: *mut c_void,
1668 pub glDebugMessageInsertKHR: *mut c_void,
1669 pub glDeleteBuffers: *mut c_void,
1670 pub glDeleteFencesAPPLE: *mut c_void,
1671 pub glDeleteFramebuffers: *mut c_void,
1672 pub glDeleteLists: *mut c_void,
1673 pub glDeleteProgram: *mut c_void,
1674 pub glDeleteQueries: *mut c_void,
1675 pub glDeleteRenderbuffers: *mut c_void,
1676 pub glDeleteSamplers: *mut c_void,
1677 pub glDeleteShader: *mut c_void,
1678 pub glDeleteSync: *mut c_void,
1679 pub glDeleteTextures: *mut c_void,
1680 pub glDeleteVertexArrays: *mut c_void,
1681 pub glDeleteVertexArraysAPPLE: *mut c_void,
1682 pub glDepthFunc: *mut c_void,
1683 pub glDepthMask: *mut c_void,
1684 pub glDepthRange: *mut c_void,
1685 pub glDetachShader: *mut c_void,
1686 pub glDisable: *mut c_void,
1687 pub glDisableClientState: *mut c_void,
1688 pub glDisableVertexAttribArray: *mut c_void,
1689 pub glDisablei: *mut c_void,
1690 pub glDrawArrays: *mut c_void,
1691 pub glDrawArraysInstanced: *mut c_void,
1692 pub glDrawBuffer: *mut c_void,
1693 pub glDrawBuffers: *mut c_void,
1694 pub glDrawElements: *mut c_void,
1695 pub glDrawElementsBaseVertex: *mut c_void,
1696 pub glDrawElementsInstanced: *mut c_void,
1697 pub glDrawElementsInstancedBaseVertex: *mut c_void,
1698 pub glDrawPixels: *mut c_void,
1699 pub glDrawRangeElements: *mut c_void,
1700 pub glDrawRangeElementsBaseVertex: *mut c_void,
1701 pub glEdgeFlag: *mut c_void,
1702 pub glEdgeFlagPointer: *mut c_void,
1703 pub glEdgeFlagv: *mut c_void,
1704 pub glEnable: *mut c_void,
1705 pub glEnableClientState: *mut c_void,
1706 pub glEnableVertexAttribArray: *mut c_void,
1707 pub glEnablei: *mut c_void,
1708 pub glEnd: *mut c_void,
1709 pub glEndConditionalRender: *mut c_void,
1710 pub glEndList: *mut c_void,
1711 pub glEndQuery: *mut c_void,
1712 pub glEndTransformFeedback: *mut c_void,
1713 pub glEvalCoord1d: *mut c_void,
1714 pub glEvalCoord1dv: *mut c_void,
1715 pub glEvalCoord1f: *mut c_void,
1716 pub glEvalCoord1fv: *mut c_void,
1717 pub glEvalCoord2d: *mut c_void,
1718 pub glEvalCoord2dv: *mut c_void,
1719 pub glEvalCoord2f: *mut c_void,
1720 pub glEvalCoord2fv: *mut c_void,
1721 pub glEvalMesh1: *mut c_void,
1722 pub glEvalMesh2: *mut c_void,
1723 pub glEvalPoint1: *mut c_void,
1724 pub glEvalPoint2: *mut c_void,
1725 pub glFeedbackBuffer: *mut c_void,
1726 pub glFenceSync: *mut c_void,
1727 pub glFinish: *mut c_void,
1728 pub glFinishFenceAPPLE: *mut c_void,
1729 pub glFinishObjectAPPLE: *mut c_void,
1730 pub glFlush: *mut c_void,
1731 pub glFlushMappedBufferRange: *mut c_void,
1732 pub glFogCoordPointer: *mut c_void,
1733 pub glFogCoordd: *mut c_void,
1734 pub glFogCoorddv: *mut c_void,
1735 pub glFogCoordf: *mut c_void,
1736 pub glFogCoordfv: *mut c_void,
1737 pub glFogf: *mut c_void,
1738 pub glFogfv: *mut c_void,
1739 pub glFogi: *mut c_void,
1740 pub glFogiv: *mut c_void,
1741 pub glFramebufferRenderbuffer: *mut c_void,
1742 pub glFramebufferTexture: *mut c_void,
1743 pub glFramebufferTexture1D: *mut c_void,
1744 pub glFramebufferTexture2D: *mut c_void,
1745 pub glFramebufferTexture3D: *mut c_void,
1746 pub glFramebufferTextureLayer: *mut c_void,
1747 pub glFrontFace: *mut c_void,
1748 pub glFrustum: *mut c_void,
1749 pub glGenBuffers: *mut c_void,
1750 pub glGenFencesAPPLE: *mut c_void,
1751 pub glGenFramebuffers: *mut c_void,
1752 pub glGenLists: *mut c_void,
1753 pub glGenQueries: *mut c_void,
1754 pub glGenRenderbuffers: *mut c_void,
1755 pub glGenSamplers: *mut c_void,
1756 pub glGenTextures: *mut c_void,
1757 pub glGenVertexArrays: *mut c_void,
1758 pub glGenVertexArraysAPPLE: *mut c_void,
1759 pub glGenerateMipmap: *mut c_void,
1760 pub glGetActiveAttrib: *mut c_void,
1761 pub glGetActiveUniform: *mut c_void,
1762 pub glGetActiveUniformBlockName: *mut c_void,
1763 pub glGetActiveUniformBlockiv: *mut c_void,
1764 pub glGetActiveUniformName: *mut c_void,
1765 pub glGetActiveUniformsiv: *mut c_void,
1766 pub glGetAttachedShaders: *mut c_void,
1767 pub glGetAttribLocation: *mut c_void,
1768 pub glGetBooleani_v: *mut c_void,
1769 pub glGetBooleanv: *mut c_void,
1770 pub glGetBufferParameteri64v: *mut c_void,
1771 pub glGetBufferParameteriv: *mut c_void,
1772 pub glGetBufferPointerv: *mut c_void,
1773 pub glGetBufferSubData: *mut c_void,
1774 pub glGetClipPlane: *mut c_void,
1775 pub glGetCompressedTexImage: *mut c_void,
1776 pub glGetDebugMessageLog: *mut c_void,
1777 pub glGetDebugMessageLogKHR: *mut c_void,
1778 pub glGetDoublev: *mut c_void,
1779 pub glGetError: *mut c_void,
1780 pub glGetFloatv: *mut c_void,
1781 pub glGetFragDataIndex: *mut c_void,
1782 pub glGetFragDataLocation: *mut c_void,
1783 pub glGetFramebufferAttachmentParameteriv: *mut c_void,
1784 pub glGetInteger64i_v: *mut c_void,
1785 pub glGetInteger64v: *mut c_void,
1786 pub glGetIntegeri_v: *mut c_void,
1787 pub glGetIntegerv: *mut c_void,
1788 pub glGetLightfv: *mut c_void,
1789 pub glGetLightiv: *mut c_void,
1790 pub glGetMapdv: *mut c_void,
1791 pub glGetMapfv: *mut c_void,
1792 pub glGetMapiv: *mut c_void,
1793 pub glGetMaterialfv: *mut c_void,
1794 pub glGetMaterialiv: *mut c_void,
1795 pub glGetMultisamplefv: *mut c_void,
1796 pub glGetObjectLabel: *mut c_void,
1797 pub glGetObjectLabelKHR: *mut c_void,
1798 pub glGetObjectPtrLabel: *mut c_void,
1799 pub glGetObjectPtrLabelKHR: *mut c_void,
1800 pub glGetPixelMapfv: *mut c_void,
1801 pub glGetPixelMapuiv: *mut c_void,
1802 pub glGetPixelMapusv: *mut c_void,
1803 pub glGetPointerv: *mut c_void,
1804 pub glGetPointervKHR: *mut c_void,
1805 pub glGetPolygonStipple: *mut c_void,
1806 pub glGetProgramBinary: *mut c_void,
1807 pub glGetProgramInfoLog: *mut c_void,
1808 pub glGetProgramiv: *mut c_void,
1809 pub glGetQueryObjecti64v: *mut c_void,
1810 pub glGetQueryObjectiv: *mut c_void,
1811 pub glGetQueryObjectui64v: *mut c_void,
1812 pub glGetQueryObjectuiv: *mut c_void,
1813 pub glGetQueryiv: *mut c_void,
1814 pub glGetRenderbufferParameteriv: *mut c_void,
1815 pub glGetSamplerParameterIiv: *mut c_void,
1816 pub glGetSamplerParameterIuiv: *mut c_void,
1817 pub glGetSamplerParameterfv: *mut c_void,
1818 pub glGetSamplerParameteriv: *mut c_void,
1819 pub glGetShaderInfoLog: *mut c_void,
1820 pub glGetShaderSource: *mut c_void,
1821 pub glGetShaderiv: *mut c_void,
1822 pub glGetString: *mut c_void,
1823 pub glGetStringi: *mut c_void,
1824 pub glGetSynciv: *mut c_void,
1825 pub glGetTexEnvfv: *mut c_void,
1826 pub glGetTexEnviv: *mut c_void,
1827 pub glGetTexGendv: *mut c_void,
1828 pub glGetTexGenfv: *mut c_void,
1829 pub glGetTexGeniv: *mut c_void,
1830 pub glGetTexImage: *mut c_void,
1831 pub glGetTexLevelParameterfv: *mut c_void,
1832 pub glGetTexLevelParameteriv: *mut c_void,
1833 pub glGetTexParameterIiv: *mut c_void,
1834 pub glGetTexParameterIuiv: *mut c_void,
1835 pub glGetTexParameterPointervAPPLE: *mut c_void,
1836 pub glGetTexParameterfv: *mut c_void,
1837 pub glGetTexParameteriv: *mut c_void,
1838 pub glGetTransformFeedbackVarying: *mut c_void,
1839 pub glGetUniformBlockIndex: *mut c_void,
1840 pub glGetUniformIndices: *mut c_void,
1841 pub glGetUniformLocation: *mut c_void,
1842 pub glGetUniformfv: *mut c_void,
1843 pub glGetUniformiv: *mut c_void,
1844 pub glGetUniformuiv: *mut c_void,
1845 pub glGetVertexAttribIiv: *mut c_void,
1846 pub glGetVertexAttribIuiv: *mut c_void,
1847 pub glGetVertexAttribPointerv: *mut c_void,
1848 pub glGetVertexAttribdv: *mut c_void,
1849 pub glGetVertexAttribfv: *mut c_void,
1850 pub glGetVertexAttribiv: *mut c_void,
1851 pub glHint: *mut c_void,
1852 pub glIndexMask: *mut c_void,
1853 pub glIndexPointer: *mut c_void,
1854 pub glIndexd: *mut c_void,
1855 pub glIndexdv: *mut c_void,
1856 pub glIndexf: *mut c_void,
1857 pub glIndexfv: *mut c_void,
1858 pub glIndexi: *mut c_void,
1859 pub glIndexiv: *mut c_void,
1860 pub glIndexs: *mut c_void,
1861 pub glIndexsv: *mut c_void,
1862 pub glIndexub: *mut c_void,
1863 pub glIndexubv: *mut c_void,
1864 pub glInitNames: *mut c_void,
1865 pub glInsertEventMarkerEXT: *mut c_void,
1866 pub glInterleavedArrays: *mut c_void,
1867 pub glInvalidateBufferData: *mut c_void,
1868 pub glInvalidateBufferSubData: *mut c_void,
1869 pub glInvalidateFramebuffer: *mut c_void,
1870 pub glInvalidateSubFramebuffer: *mut c_void,
1871 pub glInvalidateTexImage: *mut c_void,
1872 pub glInvalidateTexSubImage: *mut c_void,
1873 pub glIsBuffer: *mut c_void,
1874 pub glIsEnabled: *mut c_void,
1875 pub glIsEnabledi: *mut c_void,
1876 pub glIsFenceAPPLE: *mut c_void,
1877 pub glIsFramebuffer: *mut c_void,
1878 pub glIsList: *mut c_void,
1879 pub glIsProgram: *mut c_void,
1880 pub glIsQuery: *mut c_void,
1881 pub glIsRenderbuffer: *mut c_void,
1882 pub glIsSampler: *mut c_void,
1883 pub glIsShader: *mut c_void,
1884 pub glIsSync: *mut c_void,
1885 pub glIsTexture: *mut c_void,
1886 pub glIsVertexArray: *mut c_void,
1887 pub glIsVertexArrayAPPLE: *mut c_void,
1888 pub glLightModelf: *mut c_void,
1889 pub glLightModelfv: *mut c_void,
1890 pub glLightModeli: *mut c_void,
1891 pub glLightModeliv: *mut c_void,
1892 pub glLightf: *mut c_void,
1893 pub glLightfv: *mut c_void,
1894 pub glLighti: *mut c_void,
1895 pub glLightiv: *mut c_void,
1896 pub glLineStipple: *mut c_void,
1897 pub glLineWidth: *mut c_void,
1898 pub glLinkProgram: *mut c_void,
1899 pub glListBase: *mut c_void,
1900 pub glLoadIdentity: *mut c_void,
1901 pub glLoadMatrixd: *mut c_void,
1902 pub glLoadMatrixf: *mut c_void,
1903 pub glLoadName: *mut c_void,
1904 pub glLoadTransposeMatrixd: *mut c_void,
1905 pub glLoadTransposeMatrixf: *mut c_void,
1906 pub glLogicOp: *mut c_void,
1907 pub glMap1d: *mut c_void,
1908 pub glMap1f: *mut c_void,
1909 pub glMap2d: *mut c_void,
1910 pub glMap2f: *mut c_void,
1911 pub glMapBuffer: *mut c_void,
1912 pub glMapBufferRange: *mut c_void,
1913 pub glMapGrid1d: *mut c_void,
1914 pub glMapGrid1f: *mut c_void,
1915 pub glMapGrid2d: *mut c_void,
1916 pub glMapGrid2f: *mut c_void,
1917 pub glMaterialf: *mut c_void,
1918 pub glMaterialfv: *mut c_void,
1919 pub glMateriali: *mut c_void,
1920 pub glMaterialiv: *mut c_void,
1921 pub glMatrixMode: *mut c_void,
1922 pub glMultMatrixd: *mut c_void,
1923 pub glMultMatrixf: *mut c_void,
1924 pub glMultTransposeMatrixd: *mut c_void,
1925 pub glMultTransposeMatrixf: *mut c_void,
1926 pub glMultiDrawArrays: *mut c_void,
1927 pub glMultiDrawElements: *mut c_void,
1928 pub glMultiDrawElementsBaseVertex: *mut c_void,
1929 pub glMultiTexCoord1d: *mut c_void,
1930 pub glMultiTexCoord1dv: *mut c_void,
1931 pub glMultiTexCoord1f: *mut c_void,
1932 pub glMultiTexCoord1fv: *mut c_void,
1933 pub glMultiTexCoord1i: *mut c_void,
1934 pub glMultiTexCoord1iv: *mut c_void,
1935 pub glMultiTexCoord1s: *mut c_void,
1936 pub glMultiTexCoord1sv: *mut c_void,
1937 pub glMultiTexCoord2d: *mut c_void,
1938 pub glMultiTexCoord2dv: *mut c_void,
1939 pub glMultiTexCoord2f: *mut c_void,
1940 pub glMultiTexCoord2fv: *mut c_void,
1941 pub glMultiTexCoord2i: *mut c_void,
1942 pub glMultiTexCoord2iv: *mut c_void,
1943 pub glMultiTexCoord2s: *mut c_void,
1944 pub glMultiTexCoord2sv: *mut c_void,
1945 pub glMultiTexCoord3d: *mut c_void,
1946 pub glMultiTexCoord3dv: *mut c_void,
1947 pub glMultiTexCoord3f: *mut c_void,
1948 pub glMultiTexCoord3fv: *mut c_void,
1949 pub glMultiTexCoord3i: *mut c_void,
1950 pub glMultiTexCoord3iv: *mut c_void,
1951 pub glMultiTexCoord3s: *mut c_void,
1952 pub glMultiTexCoord3sv: *mut c_void,
1953 pub glMultiTexCoord4d: *mut c_void,
1954 pub glMultiTexCoord4dv: *mut c_void,
1955 pub glMultiTexCoord4f: *mut c_void,
1956 pub glMultiTexCoord4fv: *mut c_void,
1957 pub glMultiTexCoord4i: *mut c_void,
1958 pub glMultiTexCoord4iv: *mut c_void,
1959 pub glMultiTexCoord4s: *mut c_void,
1960 pub glMultiTexCoord4sv: *mut c_void,
1961 pub glMultiTexCoordP1ui: *mut c_void,
1962 pub glMultiTexCoordP1uiv: *mut c_void,
1963 pub glMultiTexCoordP2ui: *mut c_void,
1964 pub glMultiTexCoordP2uiv: *mut c_void,
1965 pub glMultiTexCoordP3ui: *mut c_void,
1966 pub glMultiTexCoordP3uiv: *mut c_void,
1967 pub glMultiTexCoordP4ui: *mut c_void,
1968 pub glMultiTexCoordP4uiv: *mut c_void,
1969 pub glNewList: *mut c_void,
1970 pub glNormal3b: *mut c_void,
1971 pub glNormal3bv: *mut c_void,
1972 pub glNormal3d: *mut c_void,
1973 pub glNormal3dv: *mut c_void,
1974 pub glNormal3f: *mut c_void,
1975 pub glNormal3fv: *mut c_void,
1976 pub glNormal3i: *mut c_void,
1977 pub glNormal3iv: *mut c_void,
1978 pub glNormal3s: *mut c_void,
1979 pub glNormal3sv: *mut c_void,
1980 pub glNormalP3ui: *mut c_void,
1981 pub glNormalP3uiv: *mut c_void,
1982 pub glNormalPointer: *mut c_void,
1983 pub glObjectLabel: *mut c_void,
1984 pub glObjectLabelKHR: *mut c_void,
1985 pub glObjectPtrLabel: *mut c_void,
1986 pub glObjectPtrLabelKHR: *mut c_void,
1987 pub glOrtho: *mut c_void,
1988 pub glPassThrough: *mut c_void,
1989 pub glPixelMapfv: *mut c_void,
1990 pub glPixelMapuiv: *mut c_void,
1991 pub glPixelMapusv: *mut c_void,
1992 pub glPixelStoref: *mut c_void,
1993 pub glPixelStorei: *mut c_void,
1994 pub glPixelTransferf: *mut c_void,
1995 pub glPixelTransferi: *mut c_void,
1996 pub glPixelZoom: *mut c_void,
1997 pub glPointParameterf: *mut c_void,
1998 pub glPointParameterfv: *mut c_void,
1999 pub glPointParameteri: *mut c_void,
2000 pub glPointParameteriv: *mut c_void,
2001 pub glPointSize: *mut c_void,
2002 pub glPolygonMode: *mut c_void,
2003 pub glPolygonOffset: *mut c_void,
2004 pub glPolygonStipple: *mut c_void,
2005 pub glPopAttrib: *mut c_void,
2006 pub glPopClientAttrib: *mut c_void,
2007 pub glPopDebugGroup: *mut c_void,
2008 pub glPopDebugGroupKHR: *mut c_void,
2009 pub glPopGroupMarkerEXT: *mut c_void,
2010 pub glPopMatrix: *mut c_void,
2011 pub glPopName: *mut c_void,
2012 pub glPrimitiveRestartIndex: *mut c_void,
2013 pub glPrioritizeTextures: *mut c_void,
2014 pub glProgramBinary: *mut c_void,
2015 pub glProgramParameteri: *mut c_void,
2016 pub glProvokingVertex: *mut c_void,
2017 pub glPushAttrib: *mut c_void,
2018 pub glPushClientAttrib: *mut c_void,
2019 pub glPushDebugGroup: *mut c_void,
2020 pub glPushDebugGroupKHR: *mut c_void,
2021 pub glPushGroupMarkerEXT: *mut c_void,
2022 pub glPushMatrix: *mut c_void,
2023 pub glPushName: *mut c_void,
2024 pub glQueryCounter: *mut c_void,
2025 pub glRasterPos2d: *mut c_void,
2026 pub glRasterPos2dv: *mut c_void,
2027 pub glRasterPos2f: *mut c_void,
2028 pub glRasterPos2fv: *mut c_void,
2029 pub glRasterPos2i: *mut c_void,
2030 pub glRasterPos2iv: *mut c_void,
2031 pub glRasterPos2s: *mut c_void,
2032 pub glRasterPos2sv: *mut c_void,
2033 pub glRasterPos3d: *mut c_void,
2034 pub glRasterPos3dv: *mut c_void,
2035 pub glRasterPos3f: *mut c_void,
2036 pub glRasterPos3fv: *mut c_void,
2037 pub glRasterPos3i: *mut c_void,
2038 pub glRasterPos3iv: *mut c_void,
2039 pub glRasterPos3s: *mut c_void,
2040 pub glRasterPos3sv: *mut c_void,
2041 pub glRasterPos4d: *mut c_void,
2042 pub glRasterPos4dv: *mut c_void,
2043 pub glRasterPos4f: *mut c_void,
2044 pub glRasterPos4fv: *mut c_void,
2045 pub glRasterPos4i: *mut c_void,
2046 pub glRasterPos4iv: *mut c_void,
2047 pub glRasterPos4s: *mut c_void,
2048 pub glRasterPos4sv: *mut c_void,
2049 pub glReadBuffer: *mut c_void,
2050 pub glReadPixels: *mut c_void,
2051 pub glRectd: *mut c_void,
2052 pub glRectdv: *mut c_void,
2053 pub glRectf: *mut c_void,
2054 pub glRectfv: *mut c_void,
2055 pub glRecti: *mut c_void,
2056 pub glRectiv: *mut c_void,
2057 pub glRects: *mut c_void,
2058 pub glRectsv: *mut c_void,
2059 pub glRenderMode: *mut c_void,
2060 pub glRenderbufferStorage: *mut c_void,
2061 pub glRenderbufferStorageMultisample: *mut c_void,
2062 pub glRotated: *mut c_void,
2063 pub glRotatef: *mut c_void,
2064 pub glSampleCoverage: *mut c_void,
2065 pub glSampleMaski: *mut c_void,
2066 pub glSamplerParameterIiv: *mut c_void,
2067 pub glSamplerParameterIuiv: *mut c_void,
2068 pub glSamplerParameterf: *mut c_void,
2069 pub glSamplerParameterfv: *mut c_void,
2070 pub glSamplerParameteri: *mut c_void,
2071 pub glSamplerParameteriv: *mut c_void,
2072 pub glScaled: *mut c_void,
2073 pub glScalef: *mut c_void,
2074 pub glScissor: *mut c_void,
2075 pub glSecondaryColor3b: *mut c_void,
2076 pub glSecondaryColor3bv: *mut c_void,
2077 pub glSecondaryColor3d: *mut c_void,
2078 pub glSecondaryColor3dv: *mut c_void,
2079 pub glSecondaryColor3f: *mut c_void,
2080 pub glSecondaryColor3fv: *mut c_void,
2081 pub glSecondaryColor3i: *mut c_void,
2082 pub glSecondaryColor3iv: *mut c_void,
2083 pub glSecondaryColor3s: *mut c_void,
2084 pub glSecondaryColor3sv: *mut c_void,
2085 pub glSecondaryColor3ub: *mut c_void,
2086 pub glSecondaryColor3ubv: *mut c_void,
2087 pub glSecondaryColor3ui: *mut c_void,
2088 pub glSecondaryColor3uiv: *mut c_void,
2089 pub glSecondaryColor3us: *mut c_void,
2090 pub glSecondaryColor3usv: *mut c_void,
2091 pub glSecondaryColorP3ui: *mut c_void,
2092 pub glSecondaryColorP3uiv: *mut c_void,
2093 pub glSecondaryColorPointer: *mut c_void,
2094 pub glSelectBuffer: *mut c_void,
2095 pub glSetFenceAPPLE: *mut c_void,
2096 pub glShadeModel: *mut c_void,
2097 pub glShaderSource: *mut c_void,
2098 pub glShaderStorageBlockBinding: *mut c_void,
2099 pub glStencilFunc: *mut c_void,
2100 pub glStencilFuncSeparate: *mut c_void,
2101 pub glStencilMask: *mut c_void,
2102 pub glStencilMaskSeparate: *mut c_void,
2103 pub glStencilOp: *mut c_void,
2104 pub glStencilOpSeparate: *mut c_void,
2105 pub glTestFenceAPPLE: *mut c_void,
2106 pub glTestObjectAPPLE: *mut c_void,
2107 pub glTexBuffer: *mut c_void,
2108 pub glTexCoord1d: *mut c_void,
2109 pub glTexCoord1dv: *mut c_void,
2110 pub glTexCoord1f: *mut c_void,
2111 pub glTexCoord1fv: *mut c_void,
2112 pub glTexCoord1i: *mut c_void,
2113 pub glTexCoord1iv: *mut c_void,
2114 pub glTexCoord1s: *mut c_void,
2115 pub glTexCoord1sv: *mut c_void,
2116 pub glTexCoord2d: *mut c_void,
2117 pub glTexCoord2dv: *mut c_void,
2118 pub glTexCoord2f: *mut c_void,
2119 pub glTexCoord2fv: *mut c_void,
2120 pub glTexCoord2i: *mut c_void,
2121 pub glTexCoord2iv: *mut c_void,
2122 pub glTexCoord2s: *mut c_void,
2123 pub glTexCoord2sv: *mut c_void,
2124 pub glTexCoord3d: *mut c_void,
2125 pub glTexCoord3dv: *mut c_void,
2126 pub glTexCoord3f: *mut c_void,
2127 pub glTexCoord3fv: *mut c_void,
2128 pub glTexCoord3i: *mut c_void,
2129 pub glTexCoord3iv: *mut c_void,
2130 pub glTexCoord3s: *mut c_void,
2131 pub glTexCoord3sv: *mut c_void,
2132 pub glTexCoord4d: *mut c_void,
2133 pub glTexCoord4dv: *mut c_void,
2134 pub glTexCoord4f: *mut c_void,
2135 pub glTexCoord4fv: *mut c_void,
2136 pub glTexCoord4i: *mut c_void,
2137 pub glTexCoord4iv: *mut c_void,
2138 pub glTexCoord4s: *mut c_void,
2139 pub glTexCoord4sv: *mut c_void,
2140 pub glTexCoordP1ui: *mut c_void,
2141 pub glTexCoordP1uiv: *mut c_void,
2142 pub glTexCoordP2ui: *mut c_void,
2143 pub glTexCoordP2uiv: *mut c_void,
2144 pub glTexCoordP3ui: *mut c_void,
2145 pub glTexCoordP3uiv: *mut c_void,
2146 pub glTexCoordP4ui: *mut c_void,
2147 pub glTexCoordP4uiv: *mut c_void,
2148 pub glTexCoordPointer: *mut c_void,
2149 pub glTexEnvf: *mut c_void,
2150 pub glTexEnvfv: *mut c_void,
2151 pub glTexEnvi: *mut c_void,
2152 pub glTexEnviv: *mut c_void,
2153 pub glTexGend: *mut c_void,
2154 pub glTexGendv: *mut c_void,
2155 pub glTexGenf: *mut c_void,
2156 pub glTexGenfv: *mut c_void,
2157 pub glTexGeni: *mut c_void,
2158 pub glTexGeniv: *mut c_void,
2159 pub glTexImage1D: *mut c_void,
2160 pub glTexImage2D: *mut c_void,
2161 pub glTexImage2DMultisample: *mut c_void,
2162 pub glTexImage3D: *mut c_void,
2163 pub glTexImage3DMultisample: *mut c_void,
2164 pub glTexParameterIiv: *mut c_void,
2165 pub glTexParameterIuiv: *mut c_void,
2166 pub glTexParameterf: *mut c_void,
2167 pub glTexParameterfv: *mut c_void,
2168 pub glTexParameteri: *mut c_void,
2169 pub glTexParameteriv: *mut c_void,
2170 pub glTexStorage1D: *mut c_void,
2171 pub glTexStorage2D: *mut c_void,
2172 pub glTexStorage3D: *mut c_void,
2173 pub glTexSubImage1D: *mut c_void,
2174 pub glTexSubImage2D: *mut c_void,
2175 pub glTexSubImage3D: *mut c_void,
2176 pub glTextureRangeAPPLE: *mut c_void,
2177 pub glTransformFeedbackVaryings: *mut c_void,
2178 pub glTranslated: *mut c_void,
2179 pub glTranslatef: *mut c_void,
2180 pub glUniform1f: *mut c_void,
2181 pub glUniform1fv: *mut c_void,
2182 pub glUniform1i: *mut c_void,
2183 pub glUniform1iv: *mut c_void,
2184 pub glUniform1ui: *mut c_void,
2185 pub glUniform1uiv: *mut c_void,
2186 pub glUniform2f: *mut c_void,
2187 pub glUniform2fv: *mut c_void,
2188 pub glUniform2i: *mut c_void,
2189 pub glUniform2iv: *mut c_void,
2190 pub glUniform2ui: *mut c_void,
2191 pub glUniform2uiv: *mut c_void,
2192 pub glUniform3f: *mut c_void,
2193 pub glUniform3fv: *mut c_void,
2194 pub glUniform3i: *mut c_void,
2195 pub glUniform3iv: *mut c_void,
2196 pub glUniform3ui: *mut c_void,
2197 pub glUniform3uiv: *mut c_void,
2198 pub glUniform4f: *mut c_void,
2199 pub glUniform4fv: *mut c_void,
2200 pub glUniform4i: *mut c_void,
2201 pub glUniform4iv: *mut c_void,
2202 pub glUniform4ui: *mut c_void,
2203 pub glUniform4uiv: *mut c_void,
2204 pub glUniformBlockBinding: *mut c_void,
2205 pub glUniformMatrix2fv: *mut c_void,
2206 pub glUniformMatrix2x3fv: *mut c_void,
2207 pub glUniformMatrix2x4fv: *mut c_void,
2208 pub glUniformMatrix3fv: *mut c_void,
2209 pub glUniformMatrix3x2fv: *mut c_void,
2210 pub glUniformMatrix3x4fv: *mut c_void,
2211 pub glUniformMatrix4fv: *mut c_void,
2212 pub glUniformMatrix4x2fv: *mut c_void,
2213 pub glUniformMatrix4x3fv: *mut c_void,
2214 pub glUnmapBuffer: *mut c_void,
2215 pub glUseProgram: *mut c_void,
2216 pub glValidateProgram: *mut c_void,
2217 pub glVertex2d: *mut c_void,
2218 pub glVertex2dv: *mut c_void,
2219 pub glVertex2f: *mut c_void,
2220 pub glVertex2fv: *mut c_void,
2221 pub glVertex2i: *mut c_void,
2222 pub glVertex2iv: *mut c_void,
2223 pub glVertex2s: *mut c_void,
2224 pub glVertex2sv: *mut c_void,
2225 pub glVertex3d: *mut c_void,
2226 pub glVertex3dv: *mut c_void,
2227 pub glVertex3f: *mut c_void,
2228 pub glVertex3fv: *mut c_void,
2229 pub glVertex3i: *mut c_void,
2230 pub glVertex3iv: *mut c_void,
2231 pub glVertex3s: *mut c_void,
2232 pub glVertex3sv: *mut c_void,
2233 pub glVertex4d: *mut c_void,
2234 pub glVertex4dv: *mut c_void,
2235 pub glVertex4f: *mut c_void,
2236 pub glVertex4fv: *mut c_void,
2237 pub glVertex4i: *mut c_void,
2238 pub glVertex4iv: *mut c_void,
2239 pub glVertex4s: *mut c_void,
2240 pub glVertex4sv: *mut c_void,
2241 pub glVertexAttrib1d: *mut c_void,
2242 pub glVertexAttrib1dv: *mut c_void,
2243 pub glVertexAttrib1f: *mut c_void,
2244 pub glVertexAttrib1fv: *mut c_void,
2245 pub glVertexAttrib1s: *mut c_void,
2246 pub glVertexAttrib1sv: *mut c_void,
2247 pub glVertexAttrib2d: *mut c_void,
2248 pub glVertexAttrib2dv: *mut c_void,
2249 pub glVertexAttrib2f: *mut c_void,
2250 pub glVertexAttrib2fv: *mut c_void,
2251 pub glVertexAttrib2s: *mut c_void,
2252 pub glVertexAttrib2sv: *mut c_void,
2253 pub glVertexAttrib3d: *mut c_void,
2254 pub glVertexAttrib3dv: *mut c_void,
2255 pub glVertexAttrib3f: *mut c_void,
2256 pub glVertexAttrib3fv: *mut c_void,
2257 pub glVertexAttrib3s: *mut c_void,
2258 pub glVertexAttrib3sv: *mut c_void,
2259 pub glVertexAttrib4Nbv: *mut c_void,
2260 pub glVertexAttrib4Niv: *mut c_void,
2261 pub glVertexAttrib4Nsv: *mut c_void,
2262 pub glVertexAttrib4Nub: *mut c_void,
2263 pub glVertexAttrib4Nubv: *mut c_void,
2264 pub glVertexAttrib4Nuiv: *mut c_void,
2265 pub glVertexAttrib4Nusv: *mut c_void,
2266 pub glVertexAttrib4bv: *mut c_void,
2267 pub glVertexAttrib4d: *mut c_void,
2268 pub glVertexAttrib4dv: *mut c_void,
2269 pub glVertexAttrib4f: *mut c_void,
2270 pub glVertexAttrib4fv: *mut c_void,
2271 pub glVertexAttrib4iv: *mut c_void,
2272 pub glVertexAttrib4s: *mut c_void,
2273 pub glVertexAttrib4sv: *mut c_void,
2274 pub glVertexAttrib4ubv: *mut c_void,
2275 pub glVertexAttrib4uiv: *mut c_void,
2276 pub glVertexAttrib4usv: *mut c_void,
2277 pub glVertexAttribDivisor: *mut c_void,
2278 pub glVertexAttribI1i: *mut c_void,
2279 pub glVertexAttribI1iv: *mut c_void,
2280 pub glVertexAttribI1ui: *mut c_void,
2281 pub glVertexAttribI1uiv: *mut c_void,
2282 pub glVertexAttribI2i: *mut c_void,
2283 pub glVertexAttribI2iv: *mut c_void,
2284 pub glVertexAttribI2ui: *mut c_void,
2285 pub glVertexAttribI2uiv: *mut c_void,
2286 pub glVertexAttribI3i: *mut c_void,
2287 pub glVertexAttribI3iv: *mut c_void,
2288 pub glVertexAttribI3ui: *mut c_void,
2289 pub glVertexAttribI3uiv: *mut c_void,
2290 pub glVertexAttribI4bv: *mut c_void,
2291 pub glVertexAttribI4i: *mut c_void,
2292 pub glVertexAttribI4iv: *mut c_void,
2293 pub glVertexAttribI4sv: *mut c_void,
2294 pub glVertexAttribI4ubv: *mut c_void,
2295 pub glVertexAttribI4ui: *mut c_void,
2296 pub glVertexAttribI4uiv: *mut c_void,
2297 pub glVertexAttribI4usv: *mut c_void,
2298 pub glVertexAttribIPointer: *mut c_void,
2299 pub glVertexAttribP1ui: *mut c_void,
2300 pub glVertexAttribP1uiv: *mut c_void,
2301 pub glVertexAttribP2ui: *mut c_void,
2302 pub glVertexAttribP2uiv: *mut c_void,
2303 pub glVertexAttribP3ui: *mut c_void,
2304 pub glVertexAttribP3uiv: *mut c_void,
2305 pub glVertexAttribP4ui: *mut c_void,
2306 pub glVertexAttribP4uiv: *mut c_void,
2307 pub glVertexAttribPointer: *mut c_void,
2308 pub glVertexP2ui: *mut c_void,
2309 pub glVertexP2uiv: *mut c_void,
2310 pub glVertexP3ui: *mut c_void,
2311 pub glVertexP3uiv: *mut c_void,
2312 pub glVertexP4ui: *mut c_void,
2313 pub glVertexP4uiv: *mut c_void,
2314 pub glVertexPointer: *mut c_void,
2315 pub glViewport: *mut c_void,
2316 pub glWaitSync: *mut c_void,
2317 pub glWindowPos2d: *mut c_void,
2318 pub glWindowPos2dv: *mut c_void,
2319 pub glWindowPos2f: *mut c_void,
2320 pub glWindowPos2fv: *mut c_void,
2321 pub glWindowPos2i: *mut c_void,
2322 pub glWindowPos2iv: *mut c_void,
2323 pub glWindowPos2s: *mut c_void,
2324 pub glWindowPos2sv: *mut c_void,
2325 pub glWindowPos3d: *mut c_void,
2326 pub glWindowPos3dv: *mut c_void,
2327 pub glWindowPos3f: *mut c_void,
2328 pub glWindowPos3fv: *mut c_void,
2329 pub glWindowPos3i: *mut c_void,
2330 pub glWindowPos3iv: *mut c_void,
2331 pub glWindowPos3s: *mut c_void,
2332 pub glWindowPos3sv: *mut c_void,
2333 pub glStartTilingQCOM: *mut c_void,
2334 pub glEndTilingQCOM: *mut c_void,
2335}
2336
2337fn encode_ascii(input: &str) -> Vec<i8> {
2338 input
2339 .chars()
2340 .filter(|c| c.is_ascii())
2341 .map(|c| c as i8)
2342 .chain(Some(0).into_iter())
2343 .collect::<Vec<_>>()
2344}
2345
2346pub unsafe fn cstr_from_ptr<'a>(ptr: *const c_char) -> &'a str {
2347
2348 #[inline]
2349 unsafe fn strlen(mut s: *const c_char) -> usize {
2350 let mut result = 0;
2351 while *s != 0 {
2352 s = s.offset(1);
2353 result += 1;
2354 }
2355 result
2356 }
2357
2358 let len = strlen(ptr);
2359 let ptr = ptr as *const u8; core::str::from_utf8_unchecked(core::slice::from_raw_parts(ptr, len as usize + 1))
2361}
2362
2363macro_rules! impl_gl_context {
2364 ($($opt:ident)?) => {
2365 $( $opt )? fn get_type(&self) -> GlType {
2366 let version_string = self.get_string(gl::VERSION);
2367 if version_string.contains("OpenGL ES") {
2368 GlType::GlEs
2369 } else {
2370 GlType::Gl
2371 }
2372 }
2373
2374 $( $opt )? fn buffer_data_untyped(
2375 &self,
2376 target: GLenum,
2377 size: GLsizeiptr,
2378 data: *const GLvoid,
2379 usage: GLenum,
2380 ) {
2381
2382 #[cfg(feature = "debug")] { _gl_print_debug("glBufferData"); }
2383 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2384
2385 if self.glBufferData == ptr::null_mut() {
2386 _gl_impl_panic("glBufferData");
2387 return;
2388 }
2389
2390 unsafe {
2391 let func: extern "system" fn(GLenum, GLsizeiptr, *const GLvoid, GLenum) = mem::transmute(self.glBufferData);
2392 (func)(target, size, data, usage)
2393 }
2394 }
2395
2396 $( $opt )? fn buffer_sub_data_untyped(
2397 &self,
2398 target: GLenum,
2399 offset: isize,
2400 size: GLsizeiptr,
2401 data: *const GLvoid,
2402 ) {
2403
2404 #[cfg(feature = "debug")] { _gl_print_debug("glBufferSubData"); }
2405 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2406
2407 if self.glBufferSubData == ptr::null_mut() {
2408 _gl_impl_panic("glBufferSubData");
2409 return;
2410 }
2411
2412 unsafe {
2413 let func: extern "system" fn(GLenum, isize, GLsizeiptr, *const GLvoid) = mem::transmute(self.glBufferSubData);
2414 (func)(target, offset, size, data)
2415 }
2416 }
2417
2418 $( $opt )? fn map_buffer(&self, target: GLenum, access: GLbitfield) -> *mut GLvoid {
2419
2420 #[cfg(feature = "debug")] { _gl_print_debug("glMapBuffer"); }
2421 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2422
2423 if self.glMapBuffer == ptr::null_mut() {
2424 _gl_impl_panic("glMapBuffer");
2425 return ptr::null_mut();
2426 }
2427
2428 unsafe {
2429 let func: extern "system" fn(GLenum, GLbitfield) -> *mut GLvoid = mem::transmute(self.glMapBuffer);
2430 (func)(target, access)
2431 }
2432 }
2433
2434 $( $opt )? fn map_buffer_range(
2435 &self,
2436 target: GLenum,
2437 offset: GLintptr,
2438 length: GLsizeiptr,
2439 access: GLbitfield,
2440 ) -> *mut GLvoid {
2441
2442 #[cfg(feature = "debug")] { _gl_print_debug("glMapBufferRange"); }
2443 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2444
2445 if self.glMapBufferRange == ptr::null_mut() {
2446 _gl_impl_panic("glMapBufferRange");
2447 return ptr::null_mut();
2448 }
2449
2450 unsafe {
2451 let func: extern "system" fn( GLenum, GLintptr, GLsizeiptr, GLbitfield) -> *mut GLvoid = mem::transmute(self.glMapBufferRange);
2452 (func)(target, offset, length, access)
2453 }
2454 }
2455
2456 $( $opt )? fn unmap_buffer(&self, target: GLenum) -> GLboolean {
2457
2458 #[cfg(feature = "debug")] { _gl_print_debug("glUnmapBuffer"); }
2459 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2460
2461 if self.glUnmapBuffer == ptr::null_mut() {
2462 _gl_impl_panic("glUnmapBuffer");
2463 return 1;
2464 }
2465 unsafe {
2466 let func: extern "system" fn(GLenum) -> GLboolean = mem::transmute(self.glUnmapBuffer);
2467 (func)(target)
2468 }
2469 }
2470
2471 $( $opt )? fn tex_buffer(&self, target: GLenum, internal_format: GLenum, buffer: GLuint) {
2472
2473 #[cfg(feature = "debug")] { _gl_print_debug("glTexBuffer"); }
2474 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2475
2476 if self.glTexBuffer == ptr::null_mut() {
2477 _gl_impl_panic("glTexBuffer");
2478 return;
2479 }
2480 unsafe {
2481 let func: extern "system" fn(GLenum, GLenum, GLuint) = mem::transmute(self.glTexBuffer);
2482 (func)(target, internal_format, buffer)
2483 }
2484 }
2485
2486 $( $opt )? fn shader_source(&self, shader: GLuint, strings: &[&[u8]]) {
2487
2488 #[cfg(feature = "debug")] { _gl_print_debug("glShaderSource"); }
2489 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2490
2491 let pointers: Vec<*const u8> = strings.iter().map(|string| (*string).as_ptr()).collect();
2492 let lengths: Vec<GLint> = strings.iter().map(|string| string.len() as GLint).collect();
2493
2494 if self.glShaderSource == ptr::null_mut() {
2495 _gl_impl_panic("glShaderSource");
2496 return;
2497 }
2498
2499 unsafe {
2500 let func: extern "system" fn(GLuint, GLsizei, *const *const GLchar, *const GLint) = mem::transmute(self.glShaderSource);
2501 (func)(shader, pointers.len() as GLsizei, pointers.as_ptr() as *const *const GLchar, lengths.as_ptr())
2502 }
2503
2504 mem::drop(lengths);
2505 mem::drop(pointers);
2506 }
2507
2508 $( $opt )? fn read_buffer(&self, mode: GLenum) {
2509
2510 #[cfg(feature = "debug")] { _gl_print_debug("glReadBuffer"); }
2511 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2512
2513 if self.glReadBuffer == ptr::null_mut() {
2514 _gl_impl_panic("glReadBuffer");
2515 return;
2516 }
2517 unsafe {
2518 let func: extern "system" fn(GLenum) = mem::transmute(self.glReadBuffer);
2519 (func)(mode)
2520 }
2521 }
2522
2523 $( $opt )? fn read_pixels_into_buffer(
2524 &self,
2525 x: GLint,
2526 y: GLint,
2527 width: GLsizei,
2528 height: GLsizei,
2529 format: GLenum,
2530 pixel_type: GLenum,
2531 dst_buffer: &mut [u8],
2532 ) {
2533
2534 #[cfg(feature = "debug")] { _gl_print_debug("glReadPixels"); }
2535 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2536
2537 if self.glReadPixels == ptr::null_mut() {
2538 _gl_impl_panic("glReadPixels");
2539 return;
2540 }
2541
2542
2543 #[cfg(feature = "debug")] { _gl_print_debug("glPixelStorei"); }
2544 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2545
2546 if self.glPixelStorei == ptr::null_mut() {
2547 _gl_impl_panic("glPixelStorei");
2548 return;
2549 }
2550
2551 unsafe {
2552 let glPixelStorei: extern "system" fn(GLenum, GLint) = mem::transmute(self.glPixelStorei);
2553 (glPixelStorei)(gl::PACK_ALIGNMENT, 1);
2554
2555 let func: extern "system" fn(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *mut u8) = mem::transmute(self.glReadPixels);
2556 (func)(x, y, width, height, format, pixel_type, dst_buffer.as_mut_ptr())
2557 }
2558 }
2559
2560 $( $opt )? fn read_pixels(
2561 &self,
2562 x: GLint,
2563 y: GLint,
2564 width: GLsizei,
2565 height: GLsizei,
2566 format: GLenum,
2567 pixel_type: GLenum,
2568 ) -> Vec<u8> {
2569
2570 use gl::*;
2571
2572 let bit_depth = match pixel_type {
2573
2574 UNSIGNED_BYTE |
2575 BYTE |
2576 UNSIGNED_BYTE_3_3_2 |
2577 UNSIGNED_BYTE_2_3_3_REV => 1,
2578
2579 UNSIGNED_SHORT |
2580 UNSIGNED_SHORT_5_6_5 |
2581 UNSIGNED_SHORT_5_6_5_REV |
2582 UNSIGNED_SHORT_4_4_4_4 |
2583 UNSIGNED_SHORT_4_4_4_4_REV |
2584 UNSIGNED_SHORT_5_5_5_1 |
2585 UNSIGNED_SHORT_1_5_5_5_REV |
2586 SHORT => 2,
2587
2588 UNSIGNED_INT |
2589 UNSIGNED_INT_8_8_8_8 |
2590 UNSIGNED_INT_8_8_8_8_REV |
2591 UNSIGNED_INT_10_10_10_2 |
2592 UNSIGNED_INT_2_10_10_10_REV |
2593 UNSIGNED_INT_24_8 |
2594 UNSIGNED_INT_10F_11F_11F_REV |
2595 UNSIGNED_INT_5_9_9_9_REV |
2596 INT => 4,
2597
2598 HALF_FLOAT => 2,
2599
2600 FLOAT |
2601 FLOAT_32_UNSIGNED_INT_24_8_REV => 4,
2602
2603 _ => 0,
2604 };
2605
2606 let mut v = vec![0;width as usize * height as usize * bit_depth];
2607 self.read_pixels_into_buffer(x, y, width, height, format, pixel_type, &mut v[..]);
2608 v
2609 }
2610
2611 $( $opt )? unsafe fn read_pixels_into_pbo(
2612 &self,
2613 x: GLint,
2614 y: GLint,
2615 width: GLsizei,
2616 height: GLsizei,
2617 format: GLenum,
2618 pixel_type: GLenum,
2619 ) {
2620
2621 #[cfg(feature = "debug")] { _gl_print_debug("glReadPixels"); }
2622 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2623
2624 if self.glReadPixels == ptr::null_mut() {
2625 _gl_impl_panic("glReadPixels");
2626 return;
2627 }
2628
2629 let func: extern "system" fn(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *mut u8) = mem::transmute(self.glReadPixels);
2630 (func)(x, y, width, height, format, pixel_type, ptr::null_mut())
2631 }
2632
2633 $( $opt )? fn sample_coverage(&self, value: GLclampf, invert: bool) {
2634
2635 #[cfg(feature = "debug")] { _gl_print_debug("glSampleCoverage"); }
2636 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2637
2638 if self.glSampleCoverage == ptr::null_mut() {
2639 _gl_impl_panic("glSampleCoverage");
2640 return;
2641 }
2642
2643 unsafe {
2644 let func: extern "system" fn(GLclampf, bool) = mem::transmute(self.glSampleCoverage);
2645 (func)(value, invert)
2646 }
2647 }
2648
2649 $( $opt )? fn polygon_offset(&self, factor: GLfloat, units: GLfloat) {
2650
2651 #[cfg(feature = "debug")] { _gl_print_debug("glPolygonOffset"); }
2652 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2653
2654 if self.glPolygonOffset == ptr::null_mut() {
2655 _gl_impl_panic("glPolygonOffset");
2656 return;
2657 }
2658
2659 unsafe {
2660 let func: extern "system" fn(GLfloat, GLfloat) = mem::transmute(self.glPolygonOffset);
2661 (func)(factor, units)
2662 }
2663 }
2664
2665 $( $opt )? fn pixel_store_i(&self, name: GLenum, param: GLint) {
2666
2667 #[cfg(feature = "debug")] { _gl_print_debug("glPixelStorei"); }
2668 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2669
2670 if self.glPixelStorei == ptr::null_mut() {
2671 _gl_impl_panic("glPixelStorei");
2672 return;
2673 }
2674
2675 unsafe {
2676 let func: extern "system" fn(GLenum, GLint) = mem::transmute(self.glPixelStorei);
2677 (func)(name, param)
2678 }
2679 }
2680
2681 $( $opt )? fn gen_buffers(&self, n: GLsizei) -> Vec<GLuint> {
2682
2683 #[cfg(feature = "debug")] { _gl_print_debug("glGenBuffers"); }
2684 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2685
2686 if self.glGenBuffers == ptr::null_mut() {
2687 _gl_impl_panic("glGenBuffers");
2688 return Vec::new();
2689 }
2690
2691 let mut v = vec![0;n.max(0) as usize];
2692 unsafe {
2693 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenBuffers);
2694 (func)(n, v.as_mut_ptr());
2695 }
2696 v
2697 }
2698
2699 $( $opt )? fn gen_renderbuffers(&self, n: GLsizei) -> Vec<GLuint> {
2700
2701 #[cfg(feature = "debug")] { _gl_print_debug("glGenRenderbuffers"); }
2702 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2703
2704 if self.glGenRenderbuffers == ptr::null_mut() {
2705 _gl_impl_panic("glGenRenderbuffers");
2706 return Vec::new();
2707 }
2708
2709 let mut v = vec![0;n.max(0) as usize];
2710 unsafe {
2711 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenRenderbuffers);
2712 (func)(n, v.as_mut_ptr());
2713 }
2714 v
2715 }
2716
2717 $( $opt )? fn gen_framebuffers(&self, n: GLsizei) -> Vec<GLuint> {
2718
2719 #[cfg(feature = "debug")] { _gl_print_debug("glGenFramebuffers"); }
2720 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2721
2722 if self.glGenFramebuffers == ptr::null_mut() {
2723 _gl_impl_panic("glGenFramebuffers");
2724 return Vec::new();
2725 }
2726
2727 let mut v = vec![0;n.max(0) as usize];
2728 unsafe {
2729 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenFramebuffers);
2730 (func)(n, v.as_mut_ptr());
2731 }
2732 v
2733 }
2734
2735 $( $opt )? fn gen_textures(&self, n: GLsizei) -> Vec<GLuint> {
2736
2737 #[cfg(feature = "debug")] { _gl_print_debug("glGenTextures"); }
2738 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2739
2740 if self.glGenTextures == ptr::null_mut() {
2741 _gl_impl_panic("glGenTextures");
2742 return Vec::new();
2743 }
2744
2745 let mut v = vec![0;n.max(0) as usize];
2746 unsafe {
2747 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenTextures);
2748 (func)(n, v.as_mut_ptr());
2749 }
2750 v
2751 }
2752
2753 $( $opt )? fn gen_vertex_arrays(&self, n: GLsizei) -> Vec<GLuint> {
2754
2755 #[cfg(feature = "debug")] { _gl_print_debug("glGenVertexArrays"); }
2756 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2757
2758 if self.glGenVertexArrays == ptr::null_mut() {
2759 _gl_impl_panic("glGenVertexArrays");
2760 return Vec::new();
2761 }
2762
2763 let mut v = vec![0;n.max(0) as usize];
2764 unsafe {
2765 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenVertexArrays);
2766 (func)(n, v.as_mut_ptr());
2767 }
2768 v
2769 }
2770
2771 $( $opt )? fn gen_vertex_arrays_apple(&self, n: GLsizei) -> Vec<GLuint> {
2772
2773 #[cfg(feature = "debug")] { _gl_print_debug("glGenVertexArraysAPPLE"); }
2774 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2775
2776 if self.glGenVertexArraysAPPLE == ptr::null_mut() {
2777 _gl_impl_panic("glGenVertexArraysAPPLE");
2778 return Vec::new();
2779 }
2780
2781 let mut v = vec![0;n.max(0) as usize];
2782 unsafe {
2783 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenVertexArraysAPPLE);
2784 (func)(n, v.as_mut_ptr());
2785 }
2786 v
2787 }
2788
2789 $( $opt )? fn gen_queries(&self, n: GLsizei) -> Vec<GLuint> {
2790
2791 #[cfg(feature = "debug")] { _gl_print_debug("glGenQueries"); }
2792 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2793
2794 if self.glGenQueries == ptr::null_mut() {
2795 _gl_impl_panic("glGenQueries");
2796 return Vec::new();
2797 }
2798
2799 let mut v = vec![0;n.max(0) as usize];
2800 unsafe {
2801 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenQueries);
2802 (func)(n, v.as_mut_ptr());
2803 }
2804 v
2805 }
2806
2807 $( $opt )? fn begin_query(&self, target: GLenum, id: GLuint) {
2808
2809 #[cfg(feature = "debug")] { _gl_print_debug("glBeginQuery"); }
2810 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2811
2812 if self.glBeginQuery == ptr::null_mut() {
2813 _gl_impl_panic("glBeginQuery");
2814 return;
2815 }
2816
2817 unsafe {
2818 let func: extern "system" fn(GLenum, GLuint) = mem::transmute(self.glBeginQuery);
2819 (func)(target, id)
2820 }
2821 }
2822
2823 $( $opt )? fn end_query(&self, target: GLenum) {
2824
2825 #[cfg(feature = "debug")] { _gl_print_debug("glEndQuery"); }
2826 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2827
2828 if self.glEndQuery == ptr::null_mut() {
2829 _gl_impl_panic("glEndQuery");
2830 return;
2831 }
2832
2833 unsafe {
2834 let func: extern "system" fn(GLenum) = mem::transmute(self.glEndQuery);
2835 (func)(target)
2836 }
2837 }
2838
2839 $( $opt )? fn query_counter(&self, id: GLuint, target: GLenum) {
2840
2841 #[cfg(feature = "debug")] { _gl_print_debug("glQueryCounter"); }
2842 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2843
2844 if self.glQueryCounter == ptr::null_mut() {
2845 _gl_impl_panic("glQueryCounter");
2846 return;
2847 }
2848
2849 unsafe {
2850 let func: extern "system" fn(GLuint, GLenum) = mem::transmute(self.glQueryCounter);
2851 (func)(id, target)
2852 }
2853 }
2854
2855 $( $opt )? fn get_query_object_iv(&self, id: GLuint, pname: GLenum) -> i32 {
2856
2857 #[cfg(feature = "debug")] { _gl_print_debug("glGetQueryObjectiv"); }
2858 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2859
2860 if self.glGetQueryObjectiv == ptr::null_mut() {
2861 _gl_impl_panic("glGetQueryObjectiv");
2862 return 0;
2863 }
2864
2865 unsafe {
2866 let func: extern "system" fn(GLuint, GLenum) -> i32 = mem::transmute(self.glGetQueryObjectiv);
2867 (func)(id, pname)
2868 }
2869 }
2870
2871 $( $opt )? fn get_query_object_uiv(&self, id: GLuint, pname: GLenum) -> u32 {
2872
2873 #[cfg(feature = "debug")] { _gl_print_debug("glGetQueryObjectuiv"); }
2874 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2875
2876 if self.glGetQueryObjectuiv == ptr::null_mut() {
2877 _gl_impl_panic("glGetQueryObjectuiv");
2878 return 0;
2879 }
2880
2881 unsafe {
2882 let func: extern "system" fn(GLuint, GLenum) -> u32 = mem::transmute(self.glGetQueryObjectuiv);
2883 (func)(id, pname)
2884 }
2885 }
2886
2887 $( $opt )? fn get_query_object_i64v(&self, id: GLuint, pname: GLenum) -> i64 {
2888
2889 #[cfg(feature = "debug")] { _gl_print_debug("glGetQueryObjecti64v"); }
2890 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2891
2892 if self.glGetQueryObjecti64v == ptr::null_mut() {
2893 _gl_impl_panic("glGetQueryObjecti64v");
2894 return 0;
2895 }
2896
2897 unsafe {
2898 let func: extern "system" fn(GLuint, GLenum) -> i64 = mem::transmute(self.glGetQueryObjecti64v);
2899 (func)(id, pname)
2900 }
2901 }
2902
2903 $( $opt )? fn get_query_object_ui64v(&self, id: GLuint, pname: GLenum) -> u64 {
2904
2905 #[cfg(feature = "debug")] { _gl_print_debug("glGetQueryObjectui64v"); }
2906 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2907
2908 if self.glGetQueryObjectui64v == ptr::null_mut() {
2909 _gl_impl_panic("glGetQueryObjectui64v");
2910 return 0;
2911 }
2912
2913 unsafe {
2914 let func: extern "system" fn(GLuint, GLenum) -> u64 = mem::transmute(self.glGetQueryObjectui64v);
2915 (func)(id, pname)
2916 }
2917 }
2918
2919 $( $opt )? fn delete_queries(&self, queries: &[GLuint]) {
2920
2921 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteQueries"); }
2922 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2923
2924 if self.glDeleteQueries == ptr::null_mut() {
2925 _gl_impl_panic("glDeleteQueries");
2926 return;
2927 }
2928
2929 unsafe {
2930 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteQueries);
2931 (func)(queries.len() as GLsizei, queries.as_ptr())
2932 }
2933 }
2934
2935 $( $opt )? fn delete_vertex_arrays(&self, vertex_arrays: &[GLuint]) {
2936
2937 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteVertexArrays"); }
2938 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2939
2940 if self.glDeleteVertexArrays == ptr::null_mut() {
2941 _gl_impl_panic("glDeleteVertexArrays");
2942 return;
2943 }
2944
2945 unsafe {
2946 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteVertexArrays);
2947 (func)(vertex_arrays.len() as GLsizei, vertex_arrays.as_ptr())
2948 }
2949 }
2950
2951 $( $opt )? fn delete_vertex_arrays_apple(&self, vertex_arrays: &[GLuint]) {
2952
2953 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteVertexArraysAPPLE"); }
2954 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2955
2956 if self.glDeleteVertexArraysAPPLE == ptr::null_mut() {
2957 _gl_impl_panic("glDeleteVertexArraysAPPLE");
2958 return;
2959 }
2960
2961 unsafe {
2962 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteVertexArraysAPPLE);
2963 (func)(vertex_arrays.len() as GLsizei, vertex_arrays.as_ptr())
2964 }
2965 }
2966
2967 $( $opt )? fn delete_buffers(&self, buffers: &[GLuint]) {
2968
2969 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteBuffers"); }
2970 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2971
2972 if self.glDeleteBuffers == ptr::null_mut() {
2973 _gl_impl_panic("glDeleteBuffers");
2974 return;
2975 }
2976
2977 unsafe {
2978 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteBuffers);
2979 (func)(buffers.len() as GLsizei, buffers.as_ptr())
2980 }
2981 }
2982
2983 $( $opt )? fn delete_renderbuffers(&self, renderbuffers: &[GLuint]) {
2984
2985 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteRenderbuffers"); }
2986 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
2987
2988 if self.glDeleteRenderbuffers == ptr::null_mut() {
2989 _gl_impl_panic("glDeleteRenderbuffers");
2990 return;
2991 }
2992
2993 unsafe {
2994 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteRenderbuffers);
2995 (func)(renderbuffers.len() as GLsizei, renderbuffers.as_ptr())
2996 }
2997 }
2998
2999 $( $opt )? fn delete_framebuffers(&self, framebuffers: &[GLuint]) {
3000
3001 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteFramebuffers"); }
3002 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3003
3004 if self.glDeleteFramebuffers == ptr::null_mut() {
3005 _gl_impl_panic("glDeleteFramebuffers");
3006 return;
3007 }
3008
3009 unsafe {
3010 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteFramebuffers);
3011 (func)(framebuffers.len() as GLsizei, framebuffers.as_ptr())
3012 }
3013 }
3014
3015 $( $opt )? fn delete_textures(&self, textures: &[GLuint]) {
3016
3017 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteTextures"); }
3018 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3019
3020 if self.glDeleteTextures == ptr::null_mut() {
3021 _gl_impl_panic("glDeleteTextures");
3022 return;
3023 }
3024
3025 unsafe {
3026 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteTextures);
3027 (func)(textures.len() as GLsizei, textures.as_ptr())
3028 }
3029 }
3030
3031 $( $opt )? fn framebuffer_renderbuffer(
3032 &self,
3033 target: GLenum,
3034 attachment: GLenum,
3035 renderbuffertarget: GLenum,
3036 renderbuffer: GLuint,
3037 ) {
3038
3039 #[cfg(feature = "debug")] { _gl_print_debug("glFramebufferRenderbuffer"); }
3040 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3041
3042 if self.glFramebufferRenderbuffer == ptr::null_mut() {
3043 _gl_impl_panic("glFramebufferRenderbuffer");
3044 return;
3045 }
3046
3047 unsafe {
3048 let func: extern "system" fn(GLenum, GLenum, GLenum, GLuint) = mem::transmute(self.glFramebufferRenderbuffer);
3049 (func)( target, attachment, renderbuffertarget, renderbuffer)
3050 }
3051 }
3052
3053 $( $opt )? fn renderbuffer_storage(
3054 &self,
3055 target: GLenum,
3056 internalformat: GLenum,
3057 width: GLsizei,
3058 height: GLsizei,
3059 ) {
3060
3061 #[cfg(feature = "debug")] { _gl_print_debug("glRenderbufferStorage"); }
3062 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3063
3064 if self.glRenderbufferStorage == ptr::null_mut() {
3065 _gl_impl_panic("glRenderbufferStorage");
3066 return;
3067 }
3068
3069 unsafe {
3070 let func: extern "system" fn(GLenum, GLenum, GLsizei, GLsizei) = mem::transmute(self.glRenderbufferStorage);
3071 (func)(target, internalformat, width, height)
3072 }
3073 }
3074
3075 $( $opt )? fn depth_func(&self, func: GLenum) {
3076
3077 #[cfg(feature = "debug")] { _gl_print_debug("glDepthFunc"); }
3078 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3079
3080 if self.glDepthFunc == ptr::null_mut() {
3081 _gl_impl_panic("glDepthFunc");
3082 return;
3083 }
3084
3085 unsafe {
3086 let glDepthFunc: extern "system" fn(GLenum) = mem::transmute(self.glDepthFunc);
3087 (glDepthFunc)(func)
3088 }
3089 }
3090
3091 $( $opt )? fn active_texture(&self, texture: GLenum) {
3092
3093 #[cfg(feature = "debug")] { _gl_print_debug("glActiveTexture"); }
3094 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3095
3096 if self.glActiveTexture == ptr::null_mut() {
3097 _gl_impl_panic("glActiveTexture");
3098 return;
3099 }
3100
3101 unsafe {
3102 let func: extern "system" fn(GLenum) = mem::transmute(self.glActiveTexture);
3103 (func)(texture)
3104 }
3105 }
3106
3107 $( $opt )? fn attach_shader(&self, program: GLuint, shader: GLuint) {
3108
3109 #[cfg(feature = "debug")] { _gl_print_debug("glAttachShader"); }
3110 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3111
3112 if self.glAttachShader == ptr::null_mut() {
3113 _gl_impl_panic("glAttachShader");
3114 return;
3115 }
3116
3117 unsafe {
3118 let func: extern "system" fn(GLuint, GLuint) = mem::transmute(self.glAttachShader);
3119 (func)(program, shader)
3120 }
3121 }
3122
3123 $( $opt )? fn bind_attrib_location(&self, program: GLuint, index: GLuint, name: &str) {
3124
3125
3126 #[cfg(feature = "debug")] { _gl_print_debug("glBindAttribLocation"); }
3127 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3128
3129 if self.glBindAttribLocation == ptr::null_mut() {
3130 _gl_impl_panic("glBindAttribLocation");
3131 return;
3132 }
3133
3134 let cstr = encode_ascii(name);
3135
3136 unsafe {
3137 let func: extern "system" fn(GLuint, GLuint, *const c_char) = mem::transmute(self.glBindAttribLocation);
3138 (func)(program, index, cstr.as_ptr())
3139 }
3140 }
3141
3142 $( $opt )? unsafe fn get_uniform_iv(&self, program: GLuint, location: GLint, result: &mut [GLint]) {
3143
3144 #[cfg(feature = "debug")] { _gl_print_debug("glGetUniformiv"); }
3145 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3146
3147 if self.glGetUniformiv == ptr::null_mut() {
3148 _gl_impl_panic("glGetUniformiv");
3149 return;
3150 }
3151
3152 let func: extern "system" fn(GLuint, GLint, *mut GLint) = mem::transmute(self.glGetUniformiv);
3153 (func)(program, location, result.as_mut_ptr())
3154 }
3155
3156 $( $opt )? unsafe fn get_uniform_fv(&self, program: GLuint, location: GLint, result: &mut [GLfloat]) {
3157
3158 #[cfg(feature = "debug")] { _gl_print_debug("glGetUniformfv"); }
3159 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3160
3161 if self.glGetUniformfv == ptr::null_mut() {
3162 _gl_impl_panic("glGetUniformfv");
3163 return;
3164 }
3165
3166 let func: extern "system" fn(GLuint, GLint, *mut GLfloat) = mem::transmute(self.glGetUniformfv);
3167 (func)(program, location, result.as_mut_ptr())
3168 }
3169
3170 $( $opt )? fn get_uniform_block_index(&self, program: GLuint, name: &str) -> GLuint {
3171
3172 #[cfg(feature = "debug")] { _gl_print_debug("glGetUniformBlockIndex"); }
3173 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3174
3175 if self.glGetUniformBlockIndex == ptr::null_mut() {
3176 _gl_impl_panic("glGetUniformBlockIndex");
3177 return 0;
3178 }
3179
3180 let cstr = encode_ascii(name);
3181
3182 unsafe {
3183 let func: extern "system" fn(GLuint, *const c_char) -> GLuint = mem::transmute(self.glGetUniformBlockIndex);
3184 (func)(program, cstr.as_ptr())
3185 }
3186 }
3187
3188 $( $opt )? fn get_uniform_indices(&self, program: GLuint, names: &[&str]) -> Vec<GLuint> {
3194
3195
3196 #[cfg(feature = "debug")] { _gl_print_debug("glGetUniformIndices"); }
3197 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3198
3199 if self.glGetUniformIndices == ptr::null_mut() {
3200 _gl_impl_panic("glGetUniformIndices");
3201 return Vec::new();
3202 }
3203
3204 let c_strings: Vec<Vec<i8>> = names.iter().map(|n| encode_ascii(*n)).collect();
3205 let pointers: Vec<*const GLchar> = c_strings.iter().map(|string| string.as_ptr()).collect();
3206 let mut result = vec![0;c_strings.len()];
3207 unsafe {
3208 let func: extern "system" fn(GLuint, GLsizei, *const *const GLchar, *const GLuint) -> GLuint = mem::transmute(self.glGetUniformIndices);
3209 (func)(
3210 program,
3211 pointers.len() as GLsizei,
3212 pointers.as_ptr(),
3213 result.as_mut_ptr(),
3214 );
3215 }
3216 result
3217 }
3218
3219 $( $opt )? fn bind_buffer_base(&self, target: GLenum, index: GLuint, buffer: GLuint) {
3220
3221
3222 #[cfg(feature = "debug")] { _gl_print_debug("glBindBufferBase"); }
3223 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3224
3225 if self.glBindBufferBase == ptr::null_mut() {
3226 _gl_impl_panic("glBindBufferBase");
3227 return;
3228 }
3229
3230 unsafe {
3231 let func: extern "system" fn(GLenum, GLuint, GLuint) = mem::transmute(self.glBindBufferBase);
3232 (func)(target, index, buffer);
3233 }
3234 }
3235
3236 $( $opt )? fn bind_buffer_range(
3237 &self,
3238 target: GLenum,
3239 index: GLuint,
3240 buffer: GLuint,
3241 offset: GLintptr,
3242 size: GLsizeiptr,
3243 ) {
3244
3245
3246 #[cfg(feature = "debug")] { _gl_print_debug("glBindBufferRange"); }
3247 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3248
3249 if self.glBindBufferRange == ptr::null_mut() {
3250 _gl_impl_panic("glBindBufferRange");
3251 return;
3252 }
3253
3254 unsafe {
3255 let func: extern "system" fn(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = mem::transmute(self.glBindBufferRange);
3256 (func)(target, index, buffer, offset, size);
3257 }
3258 }
3259
3260 $( $opt )? fn uniform_block_binding(
3261 &self,
3262 program: GLuint,
3263 uniform_block_index: GLuint,
3264 uniform_block_binding: GLuint,
3265 ) {
3266
3267
3268 #[cfg(feature = "debug")] { _gl_print_debug("glUniformBlockBinding"); }
3269 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3270
3271 if self.glUniformBlockBinding == ptr::null_mut() {
3272 _gl_impl_panic("glUniformBlockBinding");
3273 return;
3274 }
3275
3276 unsafe {
3277 let func: extern "system" fn(GLuint, GLuint, GLuint) = mem::transmute(self.glUniformBlockBinding);
3278 (func)(program, uniform_block_index, uniform_block_binding);
3279 }
3280 }
3281
3282 $( $opt )? fn bind_buffer(&self, target: GLenum, buffer: GLuint) {
3283
3284
3285 #[cfg(feature = "debug")] { _gl_print_debug("glBindBuffer"); }
3286 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3287
3288 if self.glBindBuffer == ptr::null_mut() {
3289 _gl_impl_panic("glBindBuffer");
3290 return;
3291 }
3292
3293 unsafe {
3294 let func: extern "system" fn(GLenum, GLuint) = mem::transmute(self.glBindBuffer);
3295 (func)(target, buffer);
3296 }
3297 }
3298
3299 $( $opt )? fn bind_vertex_array(&self, vao: GLuint) {
3300
3301
3302 #[cfg(feature = "debug")] { _gl_print_debug("glBindVertexArray"); }
3303 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3304
3305 if self.glBindVertexArray == ptr::null_mut() {
3306 _gl_impl_panic("glBindVertexArray");
3307 return;
3308 }
3309
3310 unsafe {
3311 let func: extern "system" fn(GLuint) = mem::transmute(self.glBindVertexArray);
3312 (func)(vao);
3313 }
3314 }
3315
3316 $( $opt )? fn bind_vertex_array_apple(&self, vao: GLuint) {
3317
3318
3319 #[cfg(feature = "debug")] { _gl_print_debug("glBindVertexArrayAPPLE"); }
3320 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3321
3322 if self.glBindVertexArrayAPPLE == ptr::null_mut() {
3323 _gl_impl_panic("glBindVertexArrayAPPLE");
3324 return;
3325 }
3326
3327 unsafe {
3328 let func: extern "system" fn(GLuint) = mem::transmute(self.glBindVertexArrayAPPLE);
3329 (func)(vao)
3330 }
3331 }
3332
3333 $( $opt )? fn bind_renderbuffer(&self, target: GLenum, renderbuffer: GLuint) {
3334
3335
3336 #[cfg(feature = "debug")] { _gl_print_debug("glBindRenderbuffer"); }
3337 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3338
3339 if self.glBindRenderbuffer == ptr::null_mut() {
3340 _gl_impl_panic("glBindRenderbuffer");
3341 return;
3342 }
3343
3344 unsafe {
3345 let func: extern "system" fn(GLenum, GLuint) = mem::transmute(self.glBindRenderbuffer);
3346 (func)(target, renderbuffer);
3347 }
3348 }
3349
3350 $( $opt )? fn bind_framebuffer(&self, target: GLenum, framebuffer: GLuint) {
3351
3352
3353 #[cfg(feature = "debug")] { _gl_print_debug("glBindFramebuffer"); }
3354 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3355
3356 if self.glBindFramebuffer == ptr::null_mut() {
3357 _gl_impl_panic("glBindFramebuffer");
3358 return;
3359 }
3360
3361 unsafe {
3362 let func: extern "system" fn(GLenum, GLuint) = mem::transmute(self.glBindFramebuffer);
3363 (func)(target, framebuffer);
3364 }
3365 }
3366
3367 $( $opt )? fn bind_texture(&self, target: GLenum, texture: GLuint) {
3368
3369
3370 #[cfg(feature = "debug")] { _gl_print_debug("glBindTexture"); }
3371 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3372
3373 if self.glBindTexture == ptr::null_mut() {
3374 _gl_impl_panic("glBindTexture");
3375 return;
3376 }
3377
3378 unsafe {
3379 let func: extern "system" fn(GLenum, GLuint) = mem::transmute(self.glBindTexture);
3380 (func)(target, texture);
3381 }
3382 }
3383
3384 $( $opt )? fn draw_buffers(&self, bufs: &[GLenum]) {
3385
3386
3387 #[cfg(feature = "debug")] { _gl_print_debug("glDrawBuffers"); }
3388 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3389
3390 if self.glDrawBuffers == ptr::null_mut() {
3391 _gl_impl_panic("glDrawBuffers");
3392 return;
3393 }
3394
3395 unsafe {
3396 let func: extern "system" fn(GLsizei, *const GLenum) = mem::transmute(self.glDrawBuffers);
3397 (func)(bufs.len() as GLsizei, bufs.as_ptr());
3398 }
3399 }
3400
3401 $( $opt )? fn tex_image_2d(
3403 &self,
3404 target: GLenum,
3405 level: GLint,
3406 internal_format: GLint,
3407 width: GLsizei,
3408 height: GLsizei,
3409 border: GLint,
3410 format: GLenum,
3411 ty: GLenum,
3412 opt_data: Option<&[u8]>,
3413 ) {
3414
3415 #[cfg(feature = "debug")] { _gl_print_debug("glTexImage2D"); }
3416 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3417
3418 if self.glTexImage2D == ptr::null_mut() {
3419 _gl_impl_panic("glTexImage2D");
3420 return;
3421 }
3422
3423 unsafe {
3424 let func: extern "system" fn(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, *const GLvoid) = mem::transmute(self.glTexImage2D);
3425
3426 match opt_data {
3427 Some(data) => {
3428 (func)(
3429 target,
3430 level,
3431 internal_format,
3432 width,
3433 height,
3434 border,
3435 format,
3436 ty,
3437 data.as_ptr() as *const GLvoid,
3438 );
3439 },
3440 None => {
3441 (func)(
3442 target,
3443 level,
3444 internal_format,
3445 width,
3446 height,
3447 border,
3448 format,
3449 ty,
3450 ptr::null(),
3451 );
3452 },
3453 }
3454 }
3455 }
3456
3457 $( $opt )? fn compressed_tex_image_2d(
3458 &self,
3459 target: GLenum,
3460 level: GLint,
3461 internal_format: GLenum,
3462 width: GLsizei,
3463 height: GLsizei,
3464 border: GLint,
3465 data: &[u8],
3466 ) {
3467
3468
3469 #[cfg(feature = "debug")] { _gl_print_debug("glCompressedTexImage2D"); }
3470 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3471
3472 if self.glCompressedTexImage2D == ptr::null_mut() {
3473 _gl_impl_panic("glCompressedTexImage2D");
3474 return;
3475 }
3476
3477 unsafe {
3478 let func: extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, *const GLvoid) = mem::transmute(self.glCompressedTexImage2D);
3479 (func)(
3480 target,
3481 level,
3482 internal_format,
3483 width,
3484 height,
3485 border,
3486 data.len() as GLsizei,
3487 data.as_ptr() as *const GLvoid,
3488 );
3489 }
3490 }
3491
3492 $( $opt )? fn compressed_tex_sub_image_2d(
3493 &self,
3494 target: GLenum,
3495 level: GLint,
3496 xoffset: GLint,
3497 yoffset: GLint,
3498 width: GLsizei,
3499 height: GLsizei,
3500 format: GLenum,
3501 data: &[u8],
3502 ) {
3503
3504 #[cfg(feature = "debug")] { _gl_print_debug("glCompressedTexSubImage2D"); }
3505 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3506
3507 if self.glCompressedTexSubImage2D == ptr::null_mut() {
3508 _gl_impl_panic("glCompressedTexSubImage2D");
3509 return;
3510 }
3511
3512 unsafe {
3513 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, *const GLvoid) = mem::transmute(self.glCompressedTexSubImage2D);
3514 (func)(
3515 target,
3516 level,
3517 xoffset,
3518 yoffset,
3519 width,
3520 height,
3521 format,
3522 data.len() as GLsizei,
3523 data.as_ptr() as *const GLvoid,
3524 );
3525 }
3526 }
3527
3528 $( $opt )? fn tex_image_3d(
3530 &self,
3531 target: GLenum,
3532 level: GLint,
3533 internal_format: GLint,
3534 width: GLsizei,
3535 height: GLsizei,
3536 depth: GLsizei,
3537 border: GLint,
3538 format: GLenum,
3539 ty: GLenum,
3540 opt_data: Option<&[u8]>,
3541 ) {
3542
3543 #[cfg(feature = "debug")] { _gl_print_debug("glTexImage3D"); }
3544 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3545
3546 if self.glTexImage3D == ptr::null_mut() {
3547 _gl_impl_panic("glTexImage3D");
3548 return;
3549 }
3550
3551 unsafe {
3552 let pdata = match opt_data {
3553 Some(data) => mem::transmute(data.as_ptr()),
3554 None => ptr::null(),
3555 };
3556 let func: extern "system" fn(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, *const GLvoid) = mem::transmute(self.glTexImage3D);
3557 (func)(
3558 target,
3559 level,
3560 internal_format,
3561 width,
3562 height,
3563 depth,
3564 border,
3565 format,
3566 ty,
3567 pdata,
3568 );
3569 }
3570 }
3571
3572 $( $opt )? fn copy_tex_image_2d(
3573 &self,
3574 target: GLenum,
3575 level: GLint,
3576 internal_format: GLenum,
3577 x: GLint,
3578 y: GLint,
3579 width: GLsizei,
3580 height: GLsizei,
3581 border: GLint,
3582 ) {
3583
3584 #[cfg(feature = "debug")] { _gl_print_debug("glCopyTexImage2D"); }
3585 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3586
3587 if self.glCopyTexImage2D == ptr::null_mut() {
3588 _gl_impl_panic("glCopyTexImage2D");
3589 return;
3590 }
3591
3592 unsafe {
3593 let func: extern "system" fn(GLenum,GLint,GLenum,GLint,GLint,GLsizei,GLsizei,GLint) = mem::transmute(self.glCopyTexImage2D);
3594 (func)(
3595 target,
3596 level,
3597 internal_format,
3598 x,
3599 y,
3600 width,
3601 height,
3602 border,
3603 );
3604 }
3605 }
3606
3607 $( $opt )? fn copy_tex_sub_image_2d(
3608 &self,
3609 target: GLenum,
3610 level: GLint,
3611 xoffset: GLint,
3612 yoffset: GLint,
3613 x: GLint,
3614 y: GLint,
3615 width: GLsizei,
3616 height: GLsizei,
3617 ) {
3618
3619 #[cfg(feature = "debug")] { _gl_print_debug("glCopyTexSubImage2D"); }
3620 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3621
3622 if self.glCopyTexSubImage2D == ptr::null_mut() {
3623 _gl_impl_panic("glCopyTexSubImage2D");
3624 return;
3625 }
3626
3627 unsafe {
3628 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = mem::transmute(self.glCopyTexSubImage2D);
3629 (func)(target, level, xoffset, yoffset, x, y, width, height);
3630 }
3631 }
3632
3633 $( $opt )? fn copy_tex_sub_image_3d(
3634 &self,
3635 target: GLenum,
3636 level: GLint,
3637 xoffset: GLint,
3638 yoffset: GLint,
3639 zoffset: GLint,
3640 x: GLint,
3641 y: GLint,
3642 width: GLsizei,
3643 height: GLsizei,
3644 ) {
3645
3646 #[cfg(feature = "debug")] { _gl_print_debug("glCopyTexSubImage3D"); }
3647 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3648
3649 if self.glCopyTexSubImage3D == ptr::null_mut() {
3650 _gl_impl_panic("glCopyTexSubImage3D");
3651 return;
3652 }
3653
3654 unsafe {
3655 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = mem::transmute(self.glCopyTexSubImage3D);
3656 (func)(
3657 target, level, xoffset, yoffset, zoffset, x, y, width, height,
3658 );
3659 }
3660 }
3661
3662 $( $opt )? fn tex_sub_image_2d(
3663 &self,
3664 target: GLenum,
3665 level: GLint,
3666 xoffset: GLint,
3667 yoffset: GLint,
3668 width: GLsizei,
3669 height: GLsizei,
3670 format: GLenum,
3671 ty: GLenum,
3672 data: &[u8],
3673 ) {
3674
3675 #[cfg(feature = "debug")] { _gl_print_debug("glTexSubImage2D"); }
3676 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3677
3678 if self.glTexSubImage2D == ptr::null_mut() {
3679 _gl_impl_panic("glTexSubImage2D");
3680 return;
3681 }
3682
3683 unsafe {
3684 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *const c_void) = mem::transmute(self.glTexSubImage2D);
3685 (func)(
3686 target,
3687 level,
3688 xoffset,
3689 yoffset,
3690 width,
3691 height,
3692 format,
3693 ty,
3694 data.as_ptr() as *const c_void,
3695 );
3696 }
3697 }
3698
3699 $( $opt )? fn tex_sub_image_2d_pbo(
3700 &self,
3701 target: GLenum,
3702 level: GLint,
3703 xoffset: GLint,
3704 yoffset: GLint,
3705 width: GLsizei,
3706 height: GLsizei,
3707 format: GLenum,
3708 ty: GLenum,
3709 offset: usize,
3710 ) {
3711
3712 #[cfg(feature = "debug")] { _gl_print_debug("glTexSubImage2D"); }
3713 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3714
3715 if self.glTexSubImage2D == ptr::null_mut() {
3716 _gl_impl_panic("glTexSubImage2D");
3717 return;
3718 }
3719
3720 unsafe {
3721 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *const c_void) = mem::transmute(self.glTexSubImage2D);
3722 (func)(
3723 target,
3724 level,
3725 xoffset,
3726 yoffset,
3727 width,
3728 height,
3729 format,
3730 ty,
3731 offset as *const c_void,
3732 );
3733 }
3734 }
3735
3736 $( $opt )? fn tex_sub_image_3d(
3737 &self,
3738 target: GLenum,
3739 level: GLint,
3740 xoffset: GLint,
3741 yoffset: GLint,
3742 zoffset: GLint,
3743 width: GLsizei,
3744 height: GLsizei,
3745 depth: GLsizei,
3746 format: GLenum,
3747 ty: GLenum,
3748 data: &[u8],
3749 ) {
3750
3751 #[cfg(feature = "debug")] { _gl_print_debug("glTexSubImage3D"); }
3752 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3753
3754 if self.glTexSubImage3D == ptr::null_mut() {
3755 _gl_impl_panic("glTexSubImage3D");
3756 return;
3757 }
3758
3759 unsafe {
3760 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void) = mem::transmute(self.glTexSubImage3D);
3761 (func)(
3762 target,
3763 level,
3764 xoffset,
3765 yoffset,
3766 zoffset,
3767 width,
3768 height,
3769 depth,
3770 format,
3771 ty,
3772 data.as_ptr() as *const c_void,
3773 );
3774 }
3775 }
3776
3777 $( $opt )? fn tex_sub_image_3d_pbo(
3778 &self,
3779 target: GLenum,
3780 level: GLint,
3781 xoffset: GLint,
3782 yoffset: GLint,
3783 zoffset: GLint,
3784 width: GLsizei,
3785 height: GLsizei,
3786 depth: GLsizei,
3787 format: GLenum,
3788 ty: GLenum,
3789 offset: usize,
3790 ) {
3791
3792 #[cfg(feature = "debug")] { _gl_print_debug("glTexSubImage3D"); }
3793 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3794
3795 if self.glTexSubImage3D == ptr::null_mut() {
3796 _gl_impl_panic("glTexSubImage3D");
3797 return;
3798 }
3799
3800 unsafe {
3801 let func: extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void) = mem::transmute(self.glTexSubImage3D);
3802 (func)(
3803 target,
3804 level,
3805 xoffset,
3806 yoffset,
3807 zoffset,
3808 width,
3809 height,
3810 depth,
3811 format,
3812 ty,
3813 offset as *const c_void,
3814 );
3815 }
3816 }
3817
3818 $( $opt )? fn tex_storage_2d(
3819 &self,
3820 target: GLenum,
3821 levels: GLint,
3822 internal_format: GLenum,
3823 width: GLsizei,
3824 height: GLsizei,
3825 ) {
3826
3827 #[cfg(feature = "debug")] { _gl_print_debug("glTexStorage2D"); }
3828 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3829
3830 if self.glTexStorage2D == ptr::null_mut() {
3831 _gl_impl_panic("glTexStorage2D");
3832 return;
3833 }
3834
3835 unsafe {
3836 let func: extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = mem::transmute(self.glTexStorage2D);
3837 (func)(target, levels, internal_format, width, height);
3838 }
3839 }
3840
3841 $( $opt )? fn tex_storage_3d(
3842 &self,
3843 target: GLenum,
3844 levels: GLint,
3845 internal_format: GLenum,
3846 width: GLsizei,
3847 height: GLsizei,
3848 depth: GLsizei,
3849 ) {
3850
3851 #[cfg(feature = "debug")] { _gl_print_debug("glTexStorage3D"); }
3852 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3853
3854 if self.glTexStorage3D == ptr::null_mut() {
3855 _gl_impl_panic("glTexStorage3D");
3856 return;
3857 }
3858
3859 unsafe {
3860 let func: extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = mem::transmute(self.glTexStorage3D);
3861 (func)(target, levels, internal_format, width, height, depth);
3862 }
3863 }
3864
3865 $( $opt )? fn get_tex_image_into_buffer(
3866 &self,
3867 target: GLenum,
3868 level: GLint,
3869 format: GLenum,
3870 ty: GLenum,
3871 output: &mut [u8],
3872 ) {
3873
3874 #[cfg(feature = "debug")] { _gl_print_debug("glGetTexImage"); }
3875 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3876
3877 if self.glGetTexImage == ptr::null_mut() {
3878 _gl_impl_panic("glGetTexImage");
3879 return;
3880 }
3881
3882 unsafe {
3883 let func: extern "system" fn(GLenum, GLint, GLenum, GLenum, *mut GLvoid) = mem::transmute(self.glGetTexImage);
3884 (func)(target, level, format, ty, output.as_mut_ptr() as *mut _);
3885 }
3886 }
3887
3888 $( $opt )? unsafe fn copy_image_sub_data(
3889 &self,
3890 src_name: GLuint,
3891 src_target: GLenum,
3892 src_level: GLint,
3893 src_x: GLint,
3894 src_y: GLint,
3895 src_z: GLint,
3896 dst_name: GLuint,
3897 dst_target: GLenum,
3898 dst_level: GLint,
3899 dst_x: GLint,
3900 dst_y: GLint,
3901 dst_z: GLint,
3902 src_width: GLsizei,
3903 src_height: GLsizei,
3904 src_depth: GLsizei,
3905 ) {
3906
3907 #[cfg(feature = "debug")] { _gl_print_debug("glCopyImageSubData"); }
3908 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3909
3910 if self.glCopyImageSubData == ptr::null_mut() {
3911 _gl_impl_panic("glCopyImageSubData");
3912 return;
3913 }
3914
3915 let func: extern "system" fn(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei) = mem::transmute(self.glCopyImageSubData);
3916 (func)(
3917 src_name, src_target, src_level, src_x, src_y, src_z, dst_name, dst_target, dst_level,
3918 dst_x, dst_y, dst_z, src_width, src_height, src_depth,
3919 );
3920 }
3921
3922 $( $opt )? fn invalidate_framebuffer(&self, target: GLenum, attachments: &[GLenum]) {
3923
3924
3925 #[cfg(feature = "debug")] { _gl_print_debug("glInvalidateFramebuffer"); }
3926 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3927
3928 if self.glInvalidateFramebuffer == ptr::null_mut() {
3929 _gl_impl_panic("glInvalidateFramebuffer");
3930 return;
3931 }
3932
3933 unsafe {
3934 let func: extern "system" fn(GLenum, GLsizei, *const GLenum) = mem::transmute(self.glInvalidateFramebuffer);
3935 (func)(
3936 target,
3937 attachments.len() as GLsizei,
3938 attachments.as_ptr(),
3939 );
3940 }
3941 }
3942
3943 $( $opt )? fn invalidate_sub_framebuffer(
3944 &self,
3945 target: GLenum,
3946 attachments: &[GLenum],
3947 xoffset: GLint,
3948 yoffset: GLint,
3949 width: GLsizei,
3950 height: GLsizei,
3951 ) {
3952
3953
3954 #[cfg(feature = "debug")] { _gl_print_debug("glInvalidateSubFramebuffer"); }
3955 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3956
3957 if self.glInvalidateSubFramebuffer == ptr::null_mut() {
3958 _gl_impl_panic("glInvalidateSubFramebuffer");
3959 return;
3960 }
3961
3962 unsafe {
3963 let func: extern "system" fn(GLenum, GLsizei, *const GLenum, GLint, GLint, GLsizei, GLsizei) = mem::transmute(self.glInvalidateSubFramebuffer);
3964 (func)(
3965 target,
3966 attachments.len() as GLsizei,
3967 attachments.as_ptr(),
3968 xoffset,
3969 yoffset,
3970 width,
3971 height,
3972 );
3973 }
3974 }
3975
3976 $( $opt )? unsafe fn get_integer_v(&self, name: GLenum, result: &mut [GLint]) {
3977
3978 #[cfg(feature = "debug")] { _gl_print_debug("glGetIntegerv"); }
3979 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3980
3981 if self.glGetIntegerv == ptr::null_mut() {
3982 _gl_impl_panic("glGetIntegerv");
3983 return;
3984 }
3985
3986 let func: extern "system" fn(GLenum, *mut GLint) = mem::transmute(self.glGetIntegerv);
3987 (func)(name, result.as_mut_ptr());
3988 }
3989
3990 $( $opt )? unsafe fn get_integer_64v(&self, name: GLenum, result: &mut [GLint64]) {
3991
3992 #[cfg(feature = "debug")] { _gl_print_debug("glGetInteger64v"); }
3993 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
3994
3995 if self.glGetInteger64v == ptr::null_mut() {
3996 _gl_impl_panic("glGetInteger64v");
3997 return;
3998 }
3999 let func: extern "system" fn(GLenum, *mut GLint64) = mem::transmute(self.glGetInteger64v);
4000 (func)(name, result.as_mut_ptr());
4001 }
4002
4003 $( $opt )? unsafe fn get_integer_iv(&self, name: GLenum, index: GLuint, result: &mut [GLint]) {
4004
4005 #[cfg(feature = "debug")] { _gl_print_debug("glGetIntegeri_v"); }
4006 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4007
4008 if self.glGetIntegeri_v == ptr::null_mut() {
4009 _gl_impl_panic("glGetIntegeri_v");
4010 return;
4011 }
4012 let func: extern "system" fn(GLenum, GLuint, *mut GLint) = mem::transmute(self.glGetIntegeri_v);
4013 (func)(name, index, result.as_mut_ptr());
4014 }
4015
4016 #[inline]
4017 $( $opt )? unsafe fn get_integer_64iv(&self, name: GLenum, index: GLuint, result: &mut [GLint64]) {
4018
4019 #[cfg(feature = "debug")] { _gl_print_debug("glGetInteger64i_v"); }
4020 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4021
4022 if self.glGetInteger64i_v == ptr::null_mut() {
4023 _gl_impl_panic("glGetInteger64i_v");
4024 return;
4025 }
4026 let func: extern "system" fn(GLenum, GLuint, *mut GLint64) = mem::transmute(self.glGetInteger64i_v);
4027 (func)(name, index, result.as_mut_ptr());
4028 }
4029
4030 #[inline]
4031 $( $opt )? unsafe fn get_boolean_v(&self, name: GLenum, result: &mut [GLboolean]) {
4032
4033 #[cfg(feature = "debug")] { _gl_print_debug("glGetBooleanv"); }
4034 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4035
4036 if self.glGetBooleanv == ptr::null_mut() {
4037 _gl_impl_panic("glGetBooleanv");
4038 return;
4039 }
4040 let func: extern "system" fn(GLenum, *mut GLboolean) = mem::transmute(self.glGetBooleanv);
4041 (func)(name, result.as_mut_ptr());
4042 }
4043
4044 #[inline]
4045 $( $opt )? unsafe fn get_float_v(&self, name: GLenum, result: &mut [GLfloat]) {
4046
4047 #[cfg(feature = "debug")] { _gl_print_debug("glGetFloatv"); }
4048 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4049
4050 if self.glGetFloatv == ptr::null_mut() {
4051 _gl_impl_panic("glGetFloatv");
4052 return;
4053 }
4054 let func: extern "system" fn(GLenum, *mut GLfloat) = mem::transmute(self.glGetFloatv);
4055 (func)(name, result.as_mut_ptr());
4056 }
4057
4058 $( $opt )? fn get_framebuffer_attachment_parameter_iv(
4059 &self,
4060 target: GLenum,
4061 attachment: GLenum,
4062 pname: GLenum,
4063 ) -> GLint {
4064
4065 #[cfg(feature = "debug")] { _gl_print_debug("glGetFramebufferAttachmentParameteriv"); }
4066 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4067
4068 if self.glGetFramebufferAttachmentParameteriv == ptr::null_mut() {
4069 _gl_impl_panic("glGetFramebufferAttachmentParameteriv");
4070 return 0;
4071 }
4072 let mut result: GLint = 0;
4073 unsafe {
4074 let func: extern "system" fn(GLenum, GLenum, GLenum, *mut GLint) = mem::transmute(self.glGetFramebufferAttachmentParameteriv);
4075 (func)(
4076 target,
4077 attachment,
4078 pname,
4079 &mut result,
4080 );
4081 }
4082 result
4083 }
4084
4085 $( $opt )? fn get_renderbuffer_parameter_iv(&self, target: GLenum, pname: GLenum) -> GLint {
4086
4087 #[cfg(feature = "debug")] { _gl_print_debug("glGetRenderbufferParameteriv"); }
4088 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4089
4090 if self.glGetRenderbufferParameteriv == ptr::null_mut() {
4091 _gl_impl_panic("glGetRenderbufferParameteriv");
4092 return 0;
4093 }
4094
4095 let mut result: GLint = 0;
4096 unsafe {
4097 let func: extern "system" fn(GLenum, GLenum, *mut GLint) = mem::transmute(self.glGetRenderbufferParameteriv);
4098 (func)(target, pname, &mut result);
4099 }
4100 result
4101 }
4102
4103 $( $opt )? fn get_tex_parameter_iv(&self, target: GLenum, pname: GLenum) -> GLint {
4104
4105
4106 #[cfg(feature = "debug")] { _gl_print_debug("glGetTexParameteriv"); }
4107 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4108
4109 if self.glGetTexParameteriv == ptr::null_mut() {
4110 _gl_impl_panic("glGetTexParameteriv");
4111 return 0;
4112 }
4113
4114 let mut result: GLint = 0;
4115 unsafe {
4116 let func: extern "system" fn(GLenum, GLenum, *mut GLint) = mem::transmute(self.glGetTexParameteriv);
4117 (func)(target, pname, &mut result);
4118 }
4119 result
4120 }
4121
4122 $( $opt )? fn get_tex_parameter_fv(&self, target: GLenum, pname: GLenum) -> GLfloat {
4123
4124
4125 #[cfg(feature = "debug")] { _gl_print_debug("glGetTexParameterfv"); }
4126 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4127
4128 if self.glGetTexParameterfv == ptr::null_mut() {
4129 _gl_impl_panic("glGetTexParameterfv");
4130 return 0.0;
4131 }
4132
4133 let mut result: GLfloat = 0.0;
4134 unsafe {
4135 let func: extern "system" fn(GLenum, GLenum, *mut GLfloat) = mem::transmute(self.glGetTexParameterfv);
4136 (func)(target, pname, &mut result);
4137 }
4138 result
4139 }
4140
4141 $( $opt )? fn tex_parameter_i(&self, target: GLenum, pname: GLenum, param: GLint) {
4142
4143
4144 #[cfg(feature = "debug")] { _gl_print_debug("glTexParameteri"); }
4145 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4146
4147 if self.glTexParameteri == ptr::null_mut() {
4148 _gl_impl_panic("glTexParameteri");
4149 return;
4150 }
4151
4152 unsafe {
4153 let func: extern "system" fn(GLenum, GLenum, GLint) = mem::transmute(self.glTexParameteri);
4154 (func)(target, pname, param);
4155 }
4156 }
4157
4158 $( $opt )? fn tex_parameter_f(&self, target: GLenum, pname: GLenum, param: GLfloat) {
4159
4160
4161 #[cfg(feature = "debug")] { _gl_print_debug("glTexParameterf"); }
4162 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4163
4164 if self.glTexParameterf == ptr::null_mut() {
4165 _gl_impl_panic("glTexParameterf");
4166 return;
4167 }
4168
4169 unsafe {
4170 let func: extern "system" fn(GLenum, GLenum, GLfloat) = mem::transmute(self.glTexParameterf);
4171 (func)(target, pname, param);
4172 }
4173 }
4174
4175 $( $opt )? fn framebuffer_texture_2d(
4176 &self,
4177 target: GLenum,
4178 attachment: GLenum,
4179 textarget: GLenum,
4180 texture: GLuint,
4181 level: GLint,
4182 ) {
4183
4184
4185 #[cfg(feature = "debug")] { _gl_print_debug("glFramebufferTexture2D"); }
4186 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4187
4188 if self.glFramebufferTexture2D == ptr::null_mut() {
4189 _gl_impl_panic("glFramebufferTexture2D");
4190 return;
4191 }
4192
4193 unsafe {
4194 let func: extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint) = mem::transmute(self.glFramebufferTexture2D);
4195 (func)(target, attachment, textarget, texture, level);
4196 }
4197 }
4198
4199 $( $opt )? fn framebuffer_texture_layer(
4200 &self,
4201 target: GLenum,
4202 attachment: GLenum,
4203 texture: GLuint,
4204 level: GLint,
4205 layer: GLint,
4206 ) {
4207
4208 #[cfg(feature = "debug")] { _gl_print_debug("glFramebufferTextureLayer"); }
4209 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4210
4211 if self.glFramebufferTextureLayer == ptr::null_mut() {
4212 _gl_impl_panic("glFramebufferTextureLayer");
4213 return;
4214 }
4215
4216 unsafe {
4217 let func: extern "system" fn(GLenum, GLenum, GLuint, GLint, GLint) = mem::transmute(self.glFramebufferTextureLayer);
4218 (func)(target, attachment, texture, level, layer);
4219 }
4220 }
4221
4222 $( $opt )? fn blit_framebuffer(
4223 &self,
4224 src_x0: GLint,
4225 src_y0: GLint,
4226 src_x1: GLint,
4227 src_y1: GLint,
4228 dst_x0: GLint,
4229 dst_y0: GLint,
4230 dst_x1: GLint,
4231 dst_y1: GLint,
4232 mask: GLbitfield,
4233 filter: GLenum,
4234 ) {
4235
4236 #[cfg(feature = "debug")] { _gl_print_debug("glBlitFramebuffer"); }
4237 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4238
4239 if self.glBlitFramebuffer == ptr::null_mut() {
4240 _gl_impl_panic("glBlitFramebuffer");
4241 return;
4242 }
4243
4244 unsafe {
4245 let func: extern "system" fn(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = mem::transmute(self.glBlitFramebuffer);
4246 (func)(
4247 src_x0, src_y0, src_x1, src_y1, dst_x0, dst_y0, dst_x1, dst_y1, mask, filter,
4248 );
4249 }
4250 }
4251
4252 $( $opt )? fn vertex_attrib_4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) {
4253
4254 #[cfg(feature = "debug")] { _gl_print_debug("glVertexAttrib4f"); }
4255 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4256
4257 if self.glVertexAttrib4f == ptr::null_mut() {
4258 _gl_impl_panic("glVertexAttrib4f");
4259 return;
4260 }
4261
4262 unsafe {
4263 let func: extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat, GLfloat) = mem::transmute(self.glVertexAttrib4f);
4264 (func)(index, x, y, z, w)
4265 }
4266 }
4267
4268 $( $opt )? fn vertex_attrib_pointer_f32(
4269 &self,
4270 index: GLuint,
4271 size: GLint,
4272 normalized: bool,
4273 stride: GLsizei,
4274 offset: GLuint,
4275 ) {
4276
4277 #[cfg(feature = "debug")] { _gl_print_debug("glVertexAttribPointer"); }
4278 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4279
4280 if self.glVertexAttribPointer == ptr::null_mut() {
4281 _gl_impl_panic("glVertexAttribPointer");
4282 return;
4283 }
4284
4285 unsafe {
4286 let func: extern "system" fn(GLuint, GLint, GLenum, GLboolean, GLsizei, *const GLvoid) = mem::transmute(self.glVertexAttribPointer);
4287 (func)(
4288 index,
4289 size,
4290 gl::FLOAT,
4291 normalized as GLboolean,
4292 stride,
4293 offset as *const GLvoid,
4294 )
4295 }
4296 }
4297
4298 $( $opt )? fn vertex_attrib_pointer(
4299 &self,
4300 index: GLuint,
4301 size: GLint,
4302 type_: GLenum,
4303 normalized: bool,
4304 stride: GLsizei,
4305 offset: GLuint,
4306 ) {
4307
4308 #[cfg(feature = "debug")] { _gl_print_debug("glVertexAttribPointer"); }
4309 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4310
4311 if self.glVertexAttribPointer == ptr::null_mut() {
4312 _gl_impl_panic("glVertexAttribPointer");
4313 return;
4314 }
4315
4316 unsafe {
4317 let func: extern "system" fn(GLuint, GLint, GLenum, GLboolean, GLsizei, *const GLvoid) = mem::transmute(self.glVertexAttribPointer);
4318 (func)(
4319 index,
4320 size,
4321 type_,
4322 normalized as GLboolean,
4323 stride,
4324 offset as *const GLvoid,
4325 )
4326 }
4327 }
4328
4329 $( $opt )? fn vertex_attrib_i_pointer(
4330 &self,
4331 index: GLuint,
4332 size: GLint,
4333 type_: GLenum,
4334 stride: GLsizei,
4335 offset: GLuint,
4336 ) {
4337
4338 #[cfg(feature = "debug")] { _gl_print_debug("glVertexAttribIPointer"); }
4339 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4340
4341 if self.glVertexAttribIPointer == ptr::null_mut() {
4342 _gl_impl_panic("glVertexAttribIPointer");
4343 return;
4344 }
4345
4346 unsafe {
4347 let func: extern "system" fn(GLuint, GLint, GLenum, GLsizei, *const GLvoid) = mem::transmute(self.glVertexAttribIPointer);
4348 (func)(index, size, type_, stride, offset as *const GLvoid)
4349 }
4350 }
4351
4352 $( $opt )? fn vertex_attrib_divisor(&self, index: GLuint, divisor: GLuint) {
4353
4354
4355 #[cfg(feature = "debug")] { _gl_print_debug("glVertexAttribDivisor"); }
4356 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4357
4358 if self.glVertexAttribDivisor == ptr::null_mut() {
4359 _gl_impl_panic("glVertexAttribDivisor");
4360 return;
4361 }
4362
4363 unsafe {
4364 let func: extern "system" fn(GLuint, GLuint) = mem::transmute(self.glVertexAttribDivisor);
4365 (func)(index, divisor)
4366 }
4367 }
4368
4369 $( $opt )? fn viewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
4370
4371
4372 #[cfg(feature = "debug")] { _gl_print_debug("glViewport"); }
4373 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4374
4375 if self.glViewport == ptr::null_mut() {
4376 _gl_impl_panic("glViewport");
4377 return;
4378 }
4379
4380 unsafe {
4381 let func: extern "system" fn(GLint, GLint, GLsizei, GLsizei) = mem::transmute(self.glViewport);
4382 (func)(x, y, width, height);
4383 }
4384 }
4385
4386 $( $opt )? fn scissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
4387
4388
4389 #[cfg(feature = "debug")] { _gl_print_debug("glScissor"); }
4390 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4391
4392 if self.glScissor == ptr::null_mut() {
4393 _gl_impl_panic("glScissor");
4394 return;
4395 }
4396
4397 unsafe {
4398 let func: extern "system" fn(GLint, GLint, GLsizei, GLsizei) = mem::transmute(self.glScissor);
4399 (func)(x, y, width, height);
4400 }
4401 }
4402
4403 $( $opt )? fn line_width(&self, width: GLfloat) {
4404
4405
4406 #[cfg(feature = "debug")] { _gl_print_debug("glLineWidth"); }
4407 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4408
4409 if self.glLineWidth == ptr::null_mut() {
4410 _gl_impl_panic("glLineWidth");
4411 return;
4412 }
4413
4414 unsafe {
4415 let func: extern "system" fn(GLfloat) = mem::transmute(self.glLineWidth);
4416 (func)(width);
4417 }
4418 }
4419
4420 $( $opt )? fn use_program(&self, program: GLuint) {
4421
4422
4423 #[cfg(feature = "debug")] { _gl_print_debug("glUseProgram"); }
4424 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4425
4426 if self.glUseProgram == ptr::null_mut() {
4427 _gl_impl_panic("glUseProgram");
4428 return;
4429 }
4430
4431 unsafe {
4432 let func: extern "system" fn(GLuint) = mem::transmute(self.glUseProgram);
4433 (func)(program);
4434 }
4435 }
4436
4437 $( $opt )? fn validate_program(&self, program: GLuint) {
4438
4439
4440 #[cfg(feature = "debug")] { _gl_print_debug("glValidateProgram"); }
4441 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4442
4443 if self.glValidateProgram == ptr::null_mut() {
4444 _gl_impl_panic("glValidateProgram");
4445 return;
4446 }
4447
4448 unsafe {
4449 let func: extern "system" fn(GLuint) = mem::transmute(self.glValidateProgram);
4450 (func)(program);
4451 }
4452 }
4453
4454 $( $opt )? fn draw_arrays(&self, mode: GLenum, first: GLint, count: GLsizei) {
4455
4456
4457 #[cfg(feature = "debug")] { _gl_print_debug("glDrawArrays"); }
4458 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4459
4460 if self.glDrawArrays == ptr::null_mut() {
4461 _gl_impl_panic("glDrawArrays");
4462 return;
4463 }
4464
4465 unsafe {
4466 let func: extern "system" fn(GLenum, GLint, GLsizei) = mem::transmute(self.glDrawArrays);
4467 return (func)(mode, first, count);
4468 }
4469 }
4470
4471 $( $opt )? fn draw_arrays_instanced(
4472 &self,
4473 mode: GLenum,
4474 first: GLint,
4475 count: GLsizei,
4476 primcount: GLsizei,
4477 ) {
4478
4479
4480 #[cfg(feature = "debug")] { _gl_print_debug("glDrawArraysInstanced"); }
4481 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4482
4483 if self.glDrawArraysInstanced == ptr::null_mut() {
4484 _gl_impl_panic("glDrawArraysInstanced");
4485 return;
4486 }
4487
4488 unsafe {
4489 let func: extern "system" fn(GLenum,GLint,GLsizei,GLsizei) = mem::transmute(self.glDrawArraysInstanced);
4490 return (func)(mode, first, count, primcount);
4491 }
4492 }
4493
4494 $( $opt )? fn draw_elements(
4495 &self,
4496 mode: GLenum,
4497 count: GLsizei,
4498 element_type: GLenum,
4499 indices_offset: GLuint,
4500 ) {
4501
4502 #[cfg(feature = "debug")] { _gl_print_debug("glDrawElements"); }
4503 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4504
4505 if self.glDrawElements == ptr::null_mut() {
4506 _gl_impl_panic("glDrawElements");
4507 return;
4508 }
4509
4510 unsafe {
4511 let func: extern "system" fn(GLenum, GLsizei, GLenum, *const c_void) = mem::transmute(self.glDrawElements);
4512 return (func)(
4513 mode,
4514 count,
4515 element_type,
4516 indices_offset as *const c_void,
4517 );
4518 }
4519 }
4520
4521 $( $opt )? fn draw_elements_instanced(
4522 &self,
4523 mode: GLenum,
4524 count: GLsizei,
4525 element_type: GLenum,
4526 indices_offset: GLuint,
4527 primcount: GLsizei,
4528 ) {
4529
4530 #[cfg(feature = "debug")] { _gl_print_debug("glDrawElementsInstanced"); }
4531 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4532
4533 if self.glDrawElementsInstanced == ptr::null_mut() {
4534 _gl_impl_panic("glDrawElementsInstanced");
4535 return;
4536 }
4537
4538 unsafe {
4539 let func: extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei) = mem::transmute(self.glDrawElementsInstanced);
4540 return (func)(
4541 mode,
4542 count,
4543 element_type,
4544 indices_offset as *const c_void,
4545 primcount,
4546 );
4547 }
4548 }
4549
4550 $( $opt )? fn blend_color(&self, r: f32, g: f32, b: f32, a: f32) {
4551
4552
4553 #[cfg(feature = "debug")] { _gl_print_debug("glBlendColor"); }
4554 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4555
4556 if self.glBlendColor == ptr::null_mut() {
4557 _gl_impl_panic("glBlendColor");
4558 return;
4559 }
4560
4561 unsafe {
4562 let func: extern "system" fn(GLclampf, GLclampf, GLclampf, GLclampf) = mem::transmute(self.glBlendColor);
4563 (func)(r, g, b, a);
4564 }
4565 }
4566
4567 $( $opt )? fn blend_func(&self, sfactor: GLenum, dfactor: GLenum) {
4568
4569
4570 #[cfg(feature = "debug")] { _gl_print_debug("glBlendFunc"); }
4571 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4572
4573 if self.glBlendFunc == ptr::null_mut() {
4574 _gl_impl_panic("glBlendFunc");
4575 return;
4576 }
4577
4578 unsafe {
4579 let func: extern "system" fn(GLenum, GLenum) = mem::transmute(self.glBlendFunc);
4580 (func)(sfactor, dfactor);
4581 }
4582 }
4583
4584 $( $opt )? fn blend_func_separate(
4585 &self,
4586 src_rgb: GLenum,
4587 dest_rgb: GLenum,
4588 src_alpha: GLenum,
4589 dest_alpha: GLenum,
4590 ) {
4591
4592 #[cfg(feature = "debug")] { _gl_print_debug("glBlendFuncSeparate"); }
4593 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4594
4595 if self.glBlendFuncSeparate == ptr::null_mut() {
4596 _gl_impl_panic("glBlendFuncSeparate");
4597 return;
4598 }
4599
4600 unsafe {
4601 let func: extern "system" fn(GLenum, GLenum, GLenum, GLenum) = mem::transmute(self.glBlendFuncSeparate);
4602 (func)(src_rgb, dest_rgb, src_alpha, dest_alpha);
4603 }
4604 }
4605
4606 $( $opt )? fn blend_equation(&self, mode: GLenum) {
4607
4608
4609 #[cfg(feature = "debug")] { _gl_print_debug("glBlendEquation"); }
4610 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4611
4612 if self.glBlendEquation == ptr::null_mut() {
4613 _gl_impl_panic("glBlendEquation");
4614 return;
4615 }
4616
4617 unsafe {
4618 let func: extern "system" fn(GLenum) = mem::transmute(self.glBlendEquation);
4619 (func)(mode);
4620 }
4621 }
4622
4623 $( $opt )? fn blend_equation_separate(&self, mode_rgb: GLenum, mode_alpha: GLenum) {
4624
4625
4626 #[cfg(feature = "debug")] { _gl_print_debug("glBlendEquationSeparate"); }
4627 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4628
4629 if self.glBlendEquationSeparate == ptr::null_mut() {
4630 _gl_impl_panic("glBlendEquationSeparate");
4631 return;
4632 }
4633
4634 unsafe {
4635 let func: extern "system" fn(GLenum, GLenum) = mem::transmute(self.glBlendEquationSeparate);
4636 (func)(mode_rgb, mode_alpha);
4637 }
4638 }
4639
4640 $( $opt )? fn color_mask(&self, r: bool, g: bool, b: bool, a: bool) {
4641
4642
4643 #[cfg(feature = "debug")] { _gl_print_debug("glColorMask"); }
4644 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4645
4646 if self.glColorMask == ptr::null_mut() {
4647 _gl_impl_panic("glColorMask");
4648 return;
4649 }
4650
4651 unsafe {
4652 let func: extern "system" fn(GLboolean, GLboolean, GLboolean, GLboolean) = mem::transmute(self.glColorMask);
4653 (func)(
4654 r as GLboolean,
4655 g as GLboolean,
4656 b as GLboolean,
4657 a as GLboolean,
4658 );
4659 }
4660 }
4661
4662 $( $opt )? fn cull_face(&self, mode: GLenum) {
4663
4664
4665 #[cfg(feature = "debug")] { _gl_print_debug("glCullFace"); }
4666 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4667
4668 if self.glCullFace == ptr::null_mut() {
4669 _gl_impl_panic("glCullFace");
4670 return;
4671 }
4672
4673 unsafe {
4674 let func: extern "system" fn(GLenum) = mem::transmute(self.glCullFace);
4675 (func)(mode);
4676 }
4677 }
4678
4679 $( $opt )? fn front_face(&self, mode: GLenum) {
4680
4681
4682 #[cfg(feature = "debug")] { _gl_print_debug("glFrontFace"); }
4683 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4684
4685 if self.glFrontFace == ptr::null_mut() {
4686 _gl_impl_panic("glFrontFace");
4687 return;
4688 }
4689
4690 unsafe {
4691 let func: extern "system" fn(GLenum) = mem::transmute(self.glFrontFace);
4692 (func)(mode);
4693 }
4694 }
4695
4696 $( $opt )? fn enable(&self, cap: GLenum) {
4697
4698
4699 #[cfg(feature = "debug")] { _gl_print_debug("glEnable"); }
4700 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4701
4702 if self.glEnable == ptr::null_mut() {
4703 _gl_impl_panic("glEnable");
4704 return;
4705 }
4706
4707 unsafe {
4708 let func: extern "system" fn(GLenum) = mem::transmute(self.glEnable);
4709 (func)(cap);
4710 }
4711 }
4712
4713 $( $opt )? fn disable(&self, cap: GLenum) {
4714
4715
4716 #[cfg(feature = "debug")] { _gl_print_debug("glDisable"); }
4717 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4718
4719 if self.glDisable == ptr::null_mut() {
4720 _gl_impl_panic("glDisable");
4721 return;
4722 }
4723
4724 unsafe {
4725 let func: extern "system" fn(GLenum) = mem::transmute(self.glDisable);
4726 (func)(cap);
4727 }
4728 }
4729
4730 $( $opt )? fn hint(&self, param_name: GLenum, param_val: GLenum) {
4731
4732
4733 #[cfg(feature = "debug")] { _gl_print_debug("glHint"); }
4734 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4735
4736 if self.glHint == ptr::null_mut() {
4737 _gl_impl_panic("glHint");
4738 return;
4739 }
4740
4741 unsafe {
4742 let func: extern "system" fn(GLenum, GLenum) = mem::transmute(self.glHint);
4743 (func)(param_name, param_val);
4744 }
4745 }
4746
4747 $( $opt )? fn is_enabled(&self, cap: GLenum) -> GLboolean {
4748
4749
4750 #[cfg(feature = "debug")] { _gl_print_debug("glIsEnabled"); }
4751 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4752
4753 if self.glIsEnabled == ptr::null_mut() {
4754 _gl_impl_panic("glIsEnabled");
4755 return 0;
4756 }
4757
4758 unsafe {
4759 let func: extern "system" fn(GLenum) -> GLboolean = mem::transmute(self.glIsEnabled);
4760 (func)(cap)
4761 }
4762 }
4763
4764 $( $opt )? fn is_shader(&self, shader: GLuint) -> GLboolean {
4765
4766
4767 #[cfg(feature = "debug")] { _gl_print_debug("glIsShader"); }
4768 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4769
4770 if self.glIsShader == ptr::null_mut() {
4771 _gl_impl_panic("glIsShader");
4772 return 0;
4773 }
4774
4775 unsafe {
4776 let func: extern "system" fn(GLuint) -> GLboolean = mem::transmute(self.glIsShader);
4777 (func)(shader)
4778 }
4779 }
4780
4781 $( $opt )? fn is_texture(&self, texture: GLenum) -> GLboolean {
4782
4783
4784 #[cfg(feature = "debug")] { _gl_print_debug("glIsTexture"); }
4785 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4786
4787 if self.glIsTexture == ptr::null_mut() {
4788 _gl_impl_panic("glIsTexture");
4789 return 0;
4790 }
4791
4792 unsafe {
4793 let func: extern "system" fn(GLenum) -> GLboolean = mem::transmute(self.glIsTexture);
4794 (func)(texture)
4795 }
4796 }
4797
4798 $( $opt )? fn is_framebuffer(&self, framebuffer: GLenum) -> GLboolean {
4799
4800
4801 #[cfg(feature = "debug")] { _gl_print_debug("glIsFramebuffer"); }
4802 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4803
4804 if self.glIsFramebuffer == ptr::null_mut() {
4805 _gl_impl_panic("glIsFramebuffer");
4806 return 0;
4807 }
4808
4809 unsafe {
4810 let func: extern "system" fn(GLenum) -> GLboolean = mem::transmute(self.glIsFramebuffer);
4811 (func)(framebuffer)
4812 }
4813 }
4814
4815 $( $opt )? fn is_renderbuffer(&self, renderbuffer: GLenum) -> GLboolean {
4816
4817
4818 #[cfg(feature = "debug")] { _gl_print_debug("glIsRenderbuffer"); }
4819 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4820
4821 if self.glIsRenderbuffer == ptr::null_mut() {
4822 _gl_impl_panic("glIsRenderbuffer");
4823 return 0;
4824 }
4825
4826 unsafe {
4827 let func: extern "system" fn(GLenum) -> GLboolean = mem::transmute(self.glIsRenderbuffer);
4828 (func)(renderbuffer)
4829 }
4830 }
4831
4832 $( $opt )? fn check_frame_buffer_status(&self, target: GLenum) -> GLenum {
4833
4834
4835 #[cfg(feature = "debug")] { _gl_print_debug("glCheckFramebufferStatus"); }
4836 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4837
4838 if self.glCheckFramebufferStatus == ptr::null_mut() {
4839 _gl_impl_panic("glCheckFramebufferStatus");
4840 return 0;
4841 }
4842
4843 unsafe {
4844 let func: extern "system" fn(GLenum) -> GLenum = mem::transmute(self.glCheckFramebufferStatus);
4845 (func)(target)
4846 }
4847 }
4848
4849 $( $opt )? fn enable_vertex_attrib_array(&self, index: GLuint) {
4850
4851
4852 #[cfg(feature = "debug")] { _gl_print_debug("glEnableVertexAttribArray"); }
4853 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4854
4855 if self.glEnableVertexAttribArray == ptr::null_mut() {
4856 _gl_impl_panic("glEnableVertexAttribArray");
4857 return;
4858 }
4859
4860 unsafe {
4861 let func: extern "system" fn(GLuint) = mem::transmute(self.glEnableVertexAttribArray);
4862 (func)(index);
4863 }
4864 }
4865
4866 $( $opt )? fn disable_vertex_attrib_array(&self, index: GLuint) {
4867
4868
4869 #[cfg(feature = "debug")] { _gl_print_debug("glDisableVertexAttribArray"); }
4870 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4871
4872 if self.glDisableVertexAttribArray == ptr::null_mut() {
4873 _gl_impl_panic("glDisableVertexAttribArray");
4874 return;
4875 }
4876
4877 unsafe {
4878 let func: extern "system" fn(GLuint) = mem::transmute(self.glDisableVertexAttribArray);
4879 (func)(index);
4880 }
4881 }
4882
4883 $( $opt )? fn uniform_1f(&self, location: GLint, v0: GLfloat) {
4884
4885
4886 #[cfg(feature = "debug")] { _gl_print_debug("glUniform1f"); }
4887 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4888
4889 if self.glUniform1f == ptr::null_mut() {
4890 _gl_impl_panic("glUniform1f");
4891 return;
4892 }
4893
4894 unsafe {
4895 let func: extern "system" fn(GLint, GLfloat) = mem::transmute(self.glUniform1f);
4896 (func)(location, v0);
4897 }
4898 }
4899
4900 $( $opt )? fn uniform_1fv(&self, location: GLint, values: &[f32]) {
4901
4902
4903 #[cfg(feature = "debug")] { _gl_print_debug("glUniform1fv"); }
4904 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4905
4906 if self.glUniform1fv == ptr::null_mut() {
4907 _gl_impl_panic("glUniform1fv");
4908 return;
4909 }
4910
4911 unsafe {
4912 let func: extern "system" fn(GLint, GLsizei, *const GLfloat) = mem::transmute(self.glUniform1fv);
4913 (func)(location, values.len() as GLsizei, values.as_ptr());
4914 }
4915 }
4916
4917 $( $opt )? fn uniform_1i(&self, location: GLint, v0: GLint) {
4918
4919
4920 #[cfg(feature = "debug")] { _gl_print_debug("glUniform1i"); }
4921 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4922
4923 if self.glUniform1i == ptr::null_mut() {
4924 _gl_impl_panic("glUniform1i");
4925 return;
4926 }
4927
4928 unsafe {
4929 let func: extern "system" fn(GLint, GLint) = mem::transmute(self.glUniform1i);
4930 (func)(location, v0);
4931 }
4932 }
4933
4934 $( $opt )? fn uniform_1iv(&self, location: GLint, values: &[i32]) {
4935
4936
4937 #[cfg(feature = "debug")] { _gl_print_debug("glUniform1iv"); }
4938 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4939
4940 if self.glUniform1iv == ptr::null_mut() {
4941 _gl_impl_panic("glUniform1iv");
4942 return;
4943 }
4944
4945 unsafe {
4946 let func: extern "system" fn(GLint, GLsizei, *const GLint) = mem::transmute(self.glUniform1iv);
4947 (func)(location, values.len() as GLsizei, values.as_ptr());
4948 }
4949 }
4950
4951 $( $opt )? fn uniform_1ui(&self, location: GLint, v0: GLuint) {
4952
4953
4954 #[cfg(feature = "debug")] { _gl_print_debug("glUniform1ui"); }
4955 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4956
4957 if self.glUniform1ui == ptr::null_mut() {
4958 _gl_impl_panic("glUniform1ui");
4959 return;
4960 }
4961
4962 unsafe {
4963 let func: extern "system" fn(GLint, GLuint) = mem::transmute(self.glUniform1ui);
4964 (func)(location, v0);
4965 }
4966 }
4967
4968 $( $opt )? fn uniform_2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) {
4969
4970
4971 #[cfg(feature = "debug")] { _gl_print_debug("glUniform2f"); }
4972 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4973
4974 if self.glUniform2f == ptr::null_mut() {
4975 _gl_impl_panic("glUniform2f");
4976 return;
4977 }
4978
4979 unsafe {
4980 let func: extern "system" fn(GLint, GLfloat, GLfloat) = mem::transmute(self.glUniform2f);
4981 (func)(location, v0, v1);
4982 }
4983 }
4984
4985 $( $opt )? fn uniform_2fv(&self, location: GLint, values: &[f32]) {
4986
4987
4988 #[cfg(feature = "debug")] { _gl_print_debug("glUniform2fv"); }
4989 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
4990
4991 if self.glUniform2fv == ptr::null_mut() {
4992 _gl_impl_panic("glUniform2fv");
4993 return;
4994 }
4995
4996 unsafe {
4997 let func: extern "system" fn(GLint, GLsizei, *const GLfloat) = mem::transmute(self.glUniform2fv);
4998 (func)(location, (values.len() / 2) as GLsizei, values.as_ptr());
4999 }
5000 }
5001
5002 $( $opt )? fn uniform_2i(&self, location: GLint, v0: GLint, v1: GLint) {
5003
5004
5005 #[cfg(feature = "debug")] { _gl_print_debug("glUniform2i"); }
5006 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5007
5008 if self.glUniform2i == ptr::null_mut() {
5009 _gl_impl_panic("glUniform2i");
5010 return;
5011 }
5012
5013 unsafe {
5014 let func: extern "system" fn(GLint, GLint, GLint) = mem::transmute(self.glUniform2i);
5015 (func)(location, v0, v1);
5016 }
5017 }
5018
5019 $( $opt )? fn uniform_2iv(&self, location: GLint, values: &[i32]) {
5020
5021
5022 #[cfg(feature = "debug")] { _gl_print_debug("glUniform2iv"); }
5023 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5024
5025 if self.glUniform2iv == ptr::null_mut() {
5026 _gl_impl_panic("glUniform2iv");
5027 return;
5028 }
5029
5030 unsafe {
5031 let func: extern "system" fn(GLint, GLsizei, *const GLint) = mem::transmute(self.glUniform2iv);
5032 (func)(location, (values.len() / 2) as GLsizei, values.as_ptr());
5033 }
5034 }
5035
5036 $( $opt )? fn uniform_2ui(&self, location: GLint, v0: GLuint, v1: GLuint) {
5037
5038
5039 #[cfg(feature = "debug")] { _gl_print_debug("glUniform2ui"); }
5040 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5041
5042 if self.glUniform2ui == ptr::null_mut() {
5043 _gl_impl_panic("glUniform2ui");
5044 return;
5045 }
5046
5047 unsafe {
5048 let func: extern "system" fn(GLint, GLuint, GLuint) = mem::transmute(self.glUniform2ui);
5049 (func)(location, v0, v1);
5050 }
5051 }
5052
5053 $( $opt )? fn uniform_3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) {
5054
5055
5056 #[cfg(feature = "debug")] { _gl_print_debug("glUniform3f"); }
5057 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5058
5059 if self.glUniform3f == ptr::null_mut() {
5060 _gl_impl_panic("glUniform3f");
5061 return;
5062 }
5063
5064 unsafe {
5065 let func: extern "system" fn(GLint, GLfloat, GLfloat, GLfloat) = mem::transmute(self.glUniform3f);
5066 (func)(location, v0, v1, v2);
5067 }
5068 }
5069
5070 $( $opt )? fn uniform_3fv(&self, location: GLint, values: &[f32]) {
5071
5072
5073 #[cfg(feature = "debug")] { _gl_print_debug("glUniform3fv"); }
5074 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5075
5076 if self.glUniform3fv == ptr::null_mut() {
5077 _gl_impl_panic("glUniform3fv");
5078 return;
5079 }
5080
5081 unsafe {
5082 let func: extern "system" fn(GLint, GLsizei, *const GLfloat) = mem::transmute(self.glUniform3fv);
5083 (func)(location, (values.len() / 3) as GLsizei, values.as_ptr());
5084 }
5085 }
5086
5087 $( $opt )? fn uniform_3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) {
5088
5089
5090 #[cfg(feature = "debug")] { _gl_print_debug("glUniform3i"); }
5091 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5092
5093 if self.glUniform3i == ptr::null_mut() {
5094 _gl_impl_panic("glUniform3i");
5095 return;
5096 }
5097
5098 unsafe {
5099 let func: extern "system" fn(GLint, GLint, GLint, GLint) = mem::transmute(self.glUniform3i);
5100 (func)(location, v0, v1, v2);
5101 }
5102 }
5103
5104 $( $opt )? fn uniform_3iv(&self, location: GLint, values: &[i32]) {
5105
5106
5107 #[cfg(feature = "debug")] { _gl_print_debug("glUniform3iv"); }
5108 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5109
5110 if self.glUniform3iv == ptr::null_mut() {
5111 _gl_impl_panic("glUniform3iv");
5112 return;
5113 }
5114
5115 unsafe {
5116 let func: extern "system" fn(GLint, GLsizei, *const GLint) = mem::transmute(self.glUniform3iv);
5117 (func)(location, (values.len() / 3) as GLsizei, values.as_ptr());
5118 }
5119 }
5120
5121 $( $opt )? fn uniform_3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) {
5122
5123
5124 #[cfg(feature = "debug")] { _gl_print_debug("glUniform3ui"); }
5125 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5126
5127 if self.glUniform3ui == ptr::null_mut() {
5128 _gl_impl_panic("glUniform3ui");
5129 return;
5130 }
5131
5132 unsafe {
5133 let func: extern "system" fn(GLint, GLuint, GLuint, GLuint) = mem::transmute(self.glUniform3ui);
5134 (func)(location, v0, v1, v2);
5135 }
5136 }
5137
5138 $( $opt )? fn uniform_4f(&self, location: GLint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) {
5139
5140
5141 #[cfg(feature = "debug")] { _gl_print_debug("glUniform4f"); }
5142 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5143
5144 if self.glUniform4f == ptr::null_mut() {
5145 _gl_impl_panic("glUniform4f");
5146 return;
5147 }
5148
5149 unsafe {
5150 let func: extern "system" fn(GLint, GLfloat, GLfloat, GLfloat, GLfloat) = mem::transmute(self.glUniform4f);
5151 (func)(location, x, y, z, w);
5152 }
5153 }
5154
5155 $( $opt )? fn uniform_4i(&self, location: GLint, x: GLint, y: GLint, z: GLint, w: GLint) {
5156
5157
5158 #[cfg(feature = "debug")] { _gl_print_debug("glUniform4i"); }
5159 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5160
5161 if self.glUniform4i == ptr::null_mut() {
5162 _gl_impl_panic("glUniform4i");
5163 return;
5164 }
5165
5166 unsafe {
5167 let func: extern "system" fn(GLint, GLint, GLint, GLint, GLint) = mem::transmute(self.glUniform4i);
5168 (func)(location, x, y, z, w);
5169 }
5170 }
5171
5172 $( $opt )? fn uniform_4iv(&self, location: GLint, values: &[i32]) {
5173
5174
5175 #[cfg(feature = "debug")] { _gl_print_debug("glUniform4iv"); }
5176 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5177
5178 if self.glUniform4iv == ptr::null_mut() {
5179 _gl_impl_panic("glUniform4iv");
5180 return;
5181 }
5182
5183 unsafe {
5184 let func: extern "system" fn(GLint, GLsizei, *const GLint) = mem::transmute(self.glUniform4iv);
5185 (func)(location, (values.len() / 4) as GLsizei, values.as_ptr());
5186 }
5187 }
5188
5189 $( $opt )? fn uniform_4ui(&self, location: GLint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) {
5190
5191
5192 #[cfg(feature = "debug")] { _gl_print_debug("glUniform4ui"); }
5193 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5194
5195 if self.glUniform4ui == ptr::null_mut() {
5196 _gl_impl_panic("glUniform4ui");
5197 return;
5198 }
5199
5200 unsafe {
5201 let func: extern "system" fn(GLint, GLuint, GLuint, GLuint, GLuint) = mem::transmute(self.glUniform4ui);
5202 (func)(location, x, y, z, w);
5203 }
5204 }
5205
5206 $( $opt )? fn uniform_4fv(&self, location: GLint, values: &[f32]) {
5207
5208
5209 #[cfg(feature = "debug")] { _gl_print_debug("glUniform4fv"); }
5210 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5211
5212 if self.glUniform4fv == ptr::null_mut() {
5213 _gl_impl_panic("glUniform4fv");
5214 return;
5215 }
5216
5217 unsafe {
5218 let func: extern "system" fn(GLint, GLsizei, *const GLfloat) = mem::transmute(self.glUniform4fv);
5219 (func)(location, (values.len() / 4) as GLsizei, values.as_ptr());
5220 }
5221 }
5222
5223 $( $opt )? fn uniform_matrix_2fv(&self, location: GLint, transpose: bool, value: &[f32]) {
5224
5225
5226 #[cfg(feature = "debug")] { _gl_print_debug("glUniformMatrix2fv"); }
5227 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5228
5229 if self.glUniformMatrix2fv == ptr::null_mut() {
5230 _gl_impl_panic("glUniformMatrix2fv");
5231 return;
5232 }
5233
5234 unsafe {
5235 let func: extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat) = mem::transmute(self.glUniformMatrix2fv);
5236 (func)(
5237 location,
5238 (value.len() / 4) as GLsizei,
5239 transpose as GLboolean,
5240 value.as_ptr(),
5241 );
5242 }
5243 }
5244
5245 $( $opt )? fn uniform_matrix_3fv(&self, location: GLint, transpose: bool, value: &[f32]) {
5246
5247
5248 #[cfg(feature = "debug")] { _gl_print_debug("glUniformMatrix3fv"); }
5249 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5250
5251 if self.glUniformMatrix3fv == ptr::null_mut() {
5252 _gl_impl_panic("glUniformMatrix3fv");
5253 return;
5254 }
5255
5256 unsafe {
5257 let func: extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat) = mem::transmute(self.glUniformMatrix3fv);
5258 (func)(
5259 location,
5260 (value.len() / 9) as GLsizei,
5261 transpose as GLboolean,
5262 value.as_ptr(),
5263 );
5264 }
5265 }
5266
5267 $( $opt )? fn uniform_matrix_4fv(&self, location: GLint, transpose: bool, value: &[f32]) {
5268
5269
5270 #[cfg(feature = "debug")] { _gl_print_debug("glUniformMatrix4fv"); }
5271 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5272
5273 if self.glUniformMatrix4fv == ptr::null_mut() {
5274 _gl_impl_panic("glUniformMatrix4fv");
5275 return;
5276 }
5277
5278 unsafe {
5279 let func: extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat) = mem::transmute(self.glUniformMatrix4fv);
5280 (func)(
5281 location,
5282 (value.len() / 16) as GLsizei,
5283 transpose as GLboolean,
5284 value.as_ptr(),
5285 );
5286 }
5287 }
5288
5289 $( $opt )? fn depth_mask(&self, flag: bool) {
5290
5291
5292 #[cfg(feature = "debug")] { _gl_print_debug("glDepthMask"); }
5293 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5294
5295 if self.glDepthMask == ptr::null_mut() {
5296 _gl_impl_panic("glDepthMask");
5297 return;
5298 }
5299
5300 unsafe {
5301 let func: extern "system" fn(GLboolean) = mem::transmute(self.glDepthMask);
5302 (func)(flag as GLboolean);
5303 }
5304 }
5305
5306 $( $opt )? fn depth_range(&self, near: f64, far: f64) {
5307
5308
5309 #[cfg(feature = "debug")] { _gl_print_debug("glDepthRange"); }
5310 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5311
5312 if self.glDepthRange == ptr::null_mut() {
5313 _gl_impl_panic("glDepthRange");
5314 return;
5315 }
5316
5317 unsafe {
5318 let func: extern "system" fn(GLclampd, GLclampd) = mem::transmute(self.glDepthRange);
5319 (func)(near as GLclampd, far as GLclampd);
5320 }
5321 }
5322
5323 $( $opt )? fn get_active_attrib(&self, program: GLuint, index: GLuint) -> (i32, u32, String) {
5324
5325
5326 #[cfg(feature = "debug")] { _gl_print_debug("glGetActiveAttrib"); }
5327 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5328
5329 if self.glGetActiveAttrib == ptr::null_mut() {
5330 _gl_impl_panic("glGetActiveAttrib");
5331 return (0, 0, String::new());
5332 }
5333
5334 let mut buf_size = [0];
5335 unsafe {
5336 self.get_program_iv(program, gl::ACTIVE_ATTRIBUTE_MAX_LENGTH, &mut buf_size);
5337 }
5338 let mut name = vec![0u8; buf_size[0] as usize];
5339 let mut length = 0 as GLsizei;
5340 let mut size = 0 as i32;
5341 let mut type_ = 0 as u32;
5342 unsafe {
5343 let func: extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLint, *mut GLenum, *mut GLchar) = mem::transmute(self.glGetActiveAttrib);
5344 (func)(
5345 program,
5346 index,
5347 buf_size[0],
5348 &mut length,
5349 &mut size,
5350 &mut type_,
5351 name.as_mut_ptr() as *mut GLchar,
5352 );
5353 }
5354 name.truncate(if length > 0 { length as usize } else { 0 });
5355 (size, type_, String::from_utf8(name).unwrap())
5356 }
5357
5358 $( $opt )? fn get_active_uniform(&self, program: GLuint, index: GLuint) -> (i32, u32, String) {
5359
5360
5361 #[cfg(feature = "debug")] { _gl_print_debug("glGetActiveUniform"); }
5362 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5363
5364 if self.glGetActiveUniform == ptr::null_mut() {
5365 _gl_impl_panic("glGetActiveUniform");
5366 return (0, 0, String::new());
5367 }
5368
5369 let mut buf_size = [0];
5370 unsafe {
5371 self.get_program_iv(program, gl::ACTIVE_UNIFORM_MAX_LENGTH, &mut buf_size);
5372 }
5373 let mut name = vec![0 as u8; buf_size[0] as usize];
5374 let mut length: GLsizei = 0;
5375 let mut size: i32 = 0;
5376 let mut type_: u32 = 0;
5377
5378 unsafe {
5379 let func: extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLint, *mut GLenum, *mut GLchar) = mem::transmute(self.glGetActiveUniform);
5380 (func)(
5381 program,
5382 index,
5383 buf_size[0],
5384 &mut length,
5385 &mut size,
5386 &mut type_,
5387 name.as_mut_ptr() as *mut GLchar,
5388 );
5389 }
5390
5391 name.truncate(if length > 0 { length as usize } else { 0 });
5392
5393 (size, type_, String::from_utf8(name).unwrap())
5394 }
5395
5396 $( $opt )? fn get_active_uniforms_iv(
5397 &self,
5398 program: GLuint,
5399 indices: Vec<GLuint>,
5400 pname: GLenum,
5401 ) -> Vec<GLint> {
5402
5403
5404 #[cfg(feature = "debug")] { _gl_print_debug("glGetActiveUniformsiv"); }
5405 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5406
5407 if self.glGetActiveUniformsiv == ptr::null_mut() {
5408 _gl_impl_panic("glGetActiveUniformsiv");
5409 return Vec::new();
5410 }
5411
5412 let mut result = Vec::with_capacity(indices.len());
5413 unsafe {
5414 result.set_len(indices.len());
5415 let func: extern "system" fn(GLuint, GLsizei, *const GLuint, GLenum, *mut GLint) = mem::transmute(self.glGetActiveUniformsiv);
5416 (func)(
5417 program,
5418 indices.len() as GLsizei,
5419 indices.as_ptr(),
5420 pname,
5421 result.as_mut_ptr(),
5422 );
5423 }
5424 result
5425 }
5426
5427 $( $opt )? fn get_active_uniform_block_i(&self, program: GLuint, index: GLuint, pname: GLenum) -> GLint {
5428
5429
5430 #[cfg(feature = "debug")] { _gl_print_debug("glGetActiveUniformBlockiv"); }
5431 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5432
5433 if self.glGetActiveUniformBlockiv == ptr::null_mut() {
5434 _gl_impl_panic("glGetActiveUniformBlockiv");
5435 return 0;
5436 }
5437
5438 let mut result = 0;
5439 unsafe {
5440 let func: extern "system" fn(GLuint, GLuint, GLenum, *mut GLint) = mem::transmute(self.glGetActiveUniformBlockiv);
5441 (func)(program, index, pname, &mut result);
5442 }
5443 result
5444 }
5445
5446 $( $opt )? fn get_active_uniform_block_iv(
5447 &self,
5448 program: GLuint,
5449 index: GLuint,
5450 pname: GLenum,
5451 ) -> Vec<GLint> {
5452
5453
5454 #[cfg(feature = "debug")] { _gl_print_debug("glGetActiveUniformBlockiv"); }
5455 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5456
5457 if self.glGetActiveUniformBlockiv == ptr::null_mut() {
5458 _gl_impl_panic("glGetActiveUniformBlockiv");
5459 return Vec::new();
5460 }
5461
5462 let count = self.get_active_uniform_block_i(program, index, gl::UNIFORM_BLOCK_ACTIVE_UNIFORMS);
5463 let mut result = Vec::with_capacity(count as usize);
5464 unsafe {
5465 result.set_len(count as usize);
5466 let func: extern "system" fn(GLuint, GLuint, GLenum, *mut GLint) = mem::transmute(self.glGetActiveUniformBlockiv);
5467 (func)(program, index, pname, result.as_mut_ptr());
5468 }
5469 result
5470 }
5471
5472 $( $opt )? fn get_active_uniform_block_name(&self, program: GLuint, index: GLuint) -> String {
5473
5474
5475 #[cfg(feature = "debug")] { _gl_print_debug("glGetActiveUniformBlockName"); }
5476 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5477
5478 if self.glGetActiveUniformBlockName == ptr::null_mut() {
5479 _gl_impl_panic("glGetActiveUniformBlockName");
5480 return String::new();
5481 }
5482
5483 let buf_size = self.get_active_uniform_block_i(program, index, gl::UNIFORM_BLOCK_NAME_LENGTH);
5484 let mut name = vec![0 as u8; buf_size as usize];
5485 let mut length: GLsizei = 0;
5486 unsafe {
5487 let func: extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLchar) = mem::transmute(self.glGetActiveUniformBlockName);
5488 (func)(
5489 program,
5490 index,
5491 buf_size,
5492 &mut length,
5493 name.as_mut_ptr() as *mut GLchar,
5494 );
5495 }
5496 name.truncate(if length > 0 { length as usize } else { 0 });
5497
5498 String::from_utf8(name).unwrap()
5499 }
5500
5501 $( $opt )? fn get_attrib_location(&self, program: GLuint, name: &str) -> c_int {
5502
5503
5504 #[cfg(feature = "debug")] { _gl_print_debug("glGetAttribLocation"); }
5505 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5506
5507 if self.glGetAttribLocation == ptr::null_mut() {
5508 _gl_impl_panic("glGetAttribLocation");
5509 return 0;
5510 }
5511
5512 let name = encode_ascii(name);
5513 unsafe {
5514 let func: extern "system" fn(GLuint, *const GLchar) -> c_int = mem::transmute(self.glGetAttribLocation);
5515 (func)(program, name.as_ptr())
5516 }
5517 }
5518
5519 $( $opt )? fn get_frag_data_location(&self, program: GLuint, name: &str) -> c_int {
5520
5521
5522 #[cfg(feature = "debug")] { _gl_print_debug("glGetFragDataLocation"); }
5523 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5524
5525 if self.glGetFragDataLocation == ptr::null_mut() {
5526 _gl_impl_panic("glGetFragDataLocation");
5527 return 0;
5528 }
5529
5530 let name = encode_ascii(name);
5531 unsafe {
5532 let func: extern "system" fn(GLuint, *const c_char) -> c_int = mem::transmute(self.glGetFragDataLocation);
5533 (func)(program, name.as_ptr())
5534 }
5535 }
5536
5537 $( $opt )? fn get_uniform_location(&self, program: GLuint, name: &str) -> c_int {
5538
5539
5540 #[cfg(feature = "debug")] { _gl_print_debug("glGetUniformLocation"); }
5541 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5542
5543 if self.glGetUniformLocation == ptr::null_mut() {
5544 _gl_impl_panic("glGetUniformLocation");
5545 return 0;
5546 }
5547
5548 let name = encode_ascii(name);
5549 unsafe {
5550 let func: extern "system" fn(GLuint, *const GLchar) -> c_int = mem::transmute(self.glGetUniformLocation);
5551 (func)(program, name.as_ptr())
5552 }
5553 }
5554
5555 $( $opt )? fn get_program_info_log(&self, program: GLuint) -> String {
5556
5557
5558 #[cfg(feature = "debug")] { _gl_print_debug("glGetProgramInfoLog"); }
5559 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5560
5561 if self.glGetProgramInfoLog == ptr::null_mut() {
5562 _gl_impl_panic("glGetProgramInfoLog");
5563 return String::new();
5564 }
5565
5566 let mut max_len = [0];
5567 unsafe {
5568 self.get_program_iv(program, gl::INFO_LOG_LENGTH, &mut max_len);
5569 }
5570 if max_len[0] == 0 {
5571 return String::new();
5572 }
5573 let mut result = vec![0u8; max_len[0] as usize];
5574 let mut result_len = 0 as GLsizei;
5575 unsafe {
5576 let func: extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar) = mem::transmute(self.glGetProgramInfoLog);
5577 (func)(
5578 program,
5579 max_len[0] as GLsizei,
5580 &mut result_len,
5581 result.as_mut_ptr() as *mut GLchar,
5582 );
5583 }
5584 result.truncate(if result_len > 0 {
5585 result_len as usize
5586 } else {
5587 0
5588 });
5589 String::from_utf8(result).unwrap()
5590 }
5591
5592 #[inline]
5593 $( $opt )? unsafe fn get_program_iv(&self, program: GLuint, pname: GLenum, result: &mut [GLint]) {
5594
5595 #[cfg(feature = "debug")] { _gl_print_debug("glGetProgramiv"); }
5596 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5597
5598 if self.glGetProgramiv == ptr::null_mut() {
5599 _gl_impl_panic("glGetProgramiv");
5600 return;
5601 }
5602 let func: extern "system" fn(GLuint, GLenum, *mut GLint) = mem::transmute(self.glGetProgramiv);
5603 (func)(program, pname, result.as_mut_ptr());
5604 }
5605
5606 $( $opt )? fn get_program_binary(&self, program: GLuint) -> (Vec<u8>, GLenum) {
5607
5608 const NONE: GLenum = 0;
5609
5610
5611 #[cfg(feature = "debug")] { _gl_print_debug("glGetProgramBinary"); }
5612 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5613
5614 if self.glGetProgramBinary == ptr::null_mut() {
5615 _gl_impl_panic("glGetProgramBinary");
5616 return (Vec::new(), NONE);
5617 }
5618
5619 let mut len = [0];
5620 unsafe {
5621 self.get_program_iv(program, gl::PROGRAM_BINARY_LENGTH, &mut len);
5622 }
5623 if len[0] <= 0 {
5624 return (Vec::new(), NONE);
5625 }
5626 let mut binary: Vec<u8> = Vec::with_capacity(len[0] as usize);
5627 let mut format = NONE;
5628 let mut out_len = 0;
5629 unsafe {
5630 binary.set_len(len[0] as usize);
5631 let func: extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLenum, *mut c_void) = mem::transmute(self.glGetProgramBinary);
5632 (func)(
5633 program,
5634 len[0],
5635 &mut out_len as *mut GLsizei,
5636 &mut format,
5637 binary.as_mut_ptr() as *mut c_void,
5638 );
5639 }
5640 if len[0] != out_len {
5641 return (Vec::new(), NONE);
5642 }
5643
5644 (binary, format)
5645 }
5646
5647 $( $opt )? fn program_binary(&self, program: GLuint, format: GLenum, binary: &[u8]) {
5648
5649 #[cfg(feature = "debug")] { _gl_print_debug("glProgramBinary"); }
5650 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5651
5652 if self.glProgramBinary == ptr::null_mut() {
5653 _gl_impl_panic("glProgramBinary");
5654 return;
5655 }
5656
5657 unsafe {
5658 let func: extern "system" fn(GLuint, GLenum, *const c_void, GLsizei) = mem::transmute(self.glProgramBinary);
5659 (func)(
5660 program,
5661 format,
5662 binary.as_ptr() as *const c_void,
5663 binary.len() as GLsizei,
5664 );
5665 }
5666 }
5667
5668 $( $opt )? fn program_parameter_i(&self, program: GLuint, pname: GLenum, value: GLint) {
5669
5670 #[cfg(feature = "debug")] { _gl_print_debug("glProgramParameteri"); }
5671 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5672
5673 if self.glProgramParameteri == ptr::null_mut() {
5674 _gl_impl_panic("glProgramParameteri");
5675 return;
5676 }
5677 unsafe {
5678 let func: extern "system" fn(GLuint, GLenum, GLint) = mem::transmute(self.glProgramParameteri);
5679 (func)(program, pname, value);
5680 }
5681 }
5682
5683 #[inline]
5684 $( $opt )? unsafe fn get_vertex_attrib_iv(&self, index: GLuint, pname: GLenum, result: &mut [GLint]) {
5685
5686 #[cfg(feature = "debug")] { _gl_print_debug("glGetVertexAttribiv"); }
5687 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5688
5689 if self.glGetVertexAttribiv == ptr::null_mut() {
5690 _gl_impl_panic("glGetVertexAttribiv");
5691 return;
5692 }
5693 let func: extern "system" fn(GLuint, GLenum, *mut GLint) = mem::transmute(self.glGetVertexAttribiv);
5694 (func)(index, pname, result.as_mut_ptr());
5695 }
5696
5697 #[inline]
5698 $( $opt )? unsafe fn get_vertex_attrib_fv(&self, index: GLuint, pname: GLenum, result: &mut [GLfloat]) {
5699
5700 #[cfg(feature = "debug")] { _gl_print_debug("glGetVertexAttribfv"); }
5701 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5702
5703 if self.glGetVertexAttribfv == ptr::null_mut() {
5704 _gl_impl_panic("glGetVertexAttribfv");
5705 return;
5706 }
5707 let func: extern "system" fn(GLuint, GLenum, *mut GLfloat) = mem::transmute(self.glGetVertexAttribfv);
5708 (func)(index, pname, result.as_mut_ptr());
5709 }
5710
5711 $( $opt )? fn get_vertex_attrib_pointer_v(&self, index: GLuint, pname: GLenum) -> GLsizeiptr {
5712
5713
5714 #[cfg(feature = "debug")] { _gl_print_debug("glGetVertexAttribPointerv"); }
5715 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5716
5717 if self.glGetVertexAttribPointerv == ptr::null_mut() {
5718 _gl_impl_panic("glGetVertexAttribPointerv");
5719 return 0;
5720 }
5721
5722 let mut result = 0 as *mut GLvoid;
5723 unsafe {
5724 let func: extern "system" fn(GLuint, GLenum, *mut *mut GLvoid) = mem::transmute(self.glGetVertexAttribPointerv);
5725 (func)(index, pname, &mut result)
5726 }
5727 result as GLsizeiptr
5728 }
5729
5730 $( $opt )? fn get_buffer_parameter_iv(&self, target: GLuint, pname: GLenum) -> GLint {
5731
5732
5733 #[cfg(feature = "debug")] { _gl_print_debug("glGetBufferParameteriv"); }
5734 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5735
5736 if self.glGetBufferParameteriv == ptr::null_mut() {
5737 _gl_impl_panic("glGetBufferParameteriv");
5738 return 0;
5739 }
5740
5741 let mut result = 0 as GLint;
5742 unsafe {
5743 let func: extern "system" fn(GLenum, GLenum, *mut GLint) = mem::transmute(self.glGetBufferParameteriv);
5744 (func)(target, pname, &mut result);
5745 }
5746 result
5747 }
5748
5749 $( $opt )? fn get_shader_info_log(&self, shader: GLuint) -> String {
5750
5751
5752 #[cfg(feature = "debug")] { _gl_print_debug("glGetShaderInfoLog"); }
5753 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5754
5755 if self.glGetShaderInfoLog == ptr::null_mut() {
5756 _gl_impl_panic("glGetShaderInfoLog");
5757 return String::new();
5758 }
5759
5760 let mut max_len = [0];
5761 unsafe {
5762 self.get_shader_iv(shader, gl::INFO_LOG_LENGTH, &mut max_len);
5763 }
5764 if max_len[0] == 0 {
5765 return String::new();
5766 }
5767 let mut result = vec![0u8; max_len[0] as usize];
5768 let mut result_len = 0 as GLsizei;
5769 unsafe {
5770 let func: extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar) = mem::transmute(self.glGetShaderInfoLog);
5771 (func)(
5772 shader,
5773 max_len[0] as GLsizei,
5774 &mut result_len,
5775 result.as_mut_ptr() as *mut GLchar,
5776 );
5777 }
5778 result.truncate(if result_len > 0 {
5779 result_len as usize
5780 } else {
5781 0
5782 });
5783 String::from_utf8(result).unwrap()
5784 }
5785
5786 $( $opt )? fn get_string(&self, which: GLenum) -> String {
5787
5788
5789 #[cfg(feature = "debug")] { _gl_print_debug("glGetString"); }
5790 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5791
5792 if self.glGetString == ptr::null_mut() {
5793 _gl_impl_panic("glGetString");
5794 return String::new();
5795 }
5796
5797 unsafe {
5798 let func: extern "system" fn(GLenum) -> *mut GLubyte = mem::transmute(self.glGetString);
5799 let llstr = (func)(which);
5800 if !llstr.is_null() {
5801 cstr_from_ptr(llstr as *const c_char).to_string()
5802 } else {
5803 String::new()
5804 }
5805 }
5806 }
5807
5808 $( $opt )? fn get_string_i(&self, which: GLenum, index: GLuint) -> String {
5809
5810
5811 #[cfg(feature = "debug")] { _gl_print_debug("glGetStringi"); }
5812 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5813
5814 if self.glGetStringi == ptr::null_mut() {
5815 _gl_impl_panic("glGetStringi");
5816 return String::new();
5817 }
5818
5819 unsafe {
5820 let func: extern "system" fn(GLenum, GLuint) -> *mut GLubyte = mem::transmute(self.glGetStringi);
5821 let llstr = (func)(which, index);
5822 if !llstr.is_null() {
5823 cstr_from_ptr(llstr as *const c_char).to_string()
5824 } else {
5825 String::new()
5826 }
5827 }
5828 }
5829
5830 $( $opt )? unsafe fn get_shader_iv(&self, shader: GLuint, pname: GLenum, result: &mut [GLint]) {
5831
5832
5833 #[cfg(feature = "debug")] { _gl_print_debug("glGetShaderiv"); }
5834 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5835
5836 if self.glGetShaderiv == ptr::null_mut() {
5837 _gl_impl_panic("glGetShaderiv");
5838 return;
5839 }
5840
5841 let func: extern "system" fn(GLuint, GLenum, *mut GLint) = mem::transmute(self.glGetShaderiv);
5842 (func)(shader, pname, result.as_mut_ptr());
5843 }
5844
5845 $( $opt )? fn get_shader_precision_format(
5846 &self,
5847 _shader_type: GLuint,
5848 precision_type: GLuint,
5849 ) -> (GLint, GLint, GLint) {
5850
5851
5852 #[cfg(feature = "debug")] { _gl_print_debug("glGetShaderPrecisionFormat"); }
5853 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5854
5855 match precision_type {
5863 gl::LOW_FLOAT | gl::MEDIUM_FLOAT | gl::HIGH_FLOAT => {
5864 (127, 127, 23)
5868 }
5869 gl::LOW_INT | gl::MEDIUM_INT | gl::HIGH_INT => {
5870 (24, 24, 0)
5874 }
5875 _ => (0, 0, 0),
5876 }
5877 }
5878
5879 $( $opt )? fn compile_shader(&self, shader: GLuint) {
5880
5881
5882 #[cfg(feature = "debug")] { _gl_print_debug("glCompileShader"); }
5883 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5884
5885 if self.glCompileShader == ptr::null_mut() {
5886 _gl_impl_panic("glCompileShader");
5887 return;
5888 }
5889
5890 unsafe {
5891 let func: extern "system" fn(GLuint) = mem::transmute(self.glCompileShader);
5892 (func)(shader);
5893 }
5894 }
5895
5896 $( $opt )? fn create_program(&self) -> GLuint {
5897
5898
5899 #[cfg(feature = "debug")] { _gl_print_debug("glCreateProgram"); }
5900 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5901
5902 if self.glCreateProgram == ptr::null_mut() {
5903 _gl_impl_panic("glCreateProgram");
5904 return 0;
5905 }
5906
5907 unsafe {
5908 let func: extern "system" fn() -> GLuint = mem::transmute(self.glCreateProgram);
5909 return (func)();
5910 }
5911 }
5912
5913 $( $opt )? fn delete_program(&self, program: GLuint) {
5914
5915
5916 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteProgram"); }
5917 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5918
5919 if self.glDeleteProgram == ptr::null_mut() {
5920 _gl_impl_panic("glDeleteProgram");
5921 return;
5922 }
5923
5924 unsafe {
5925 let func: extern "system" fn(GLuint) = mem::transmute(self.glDeleteProgram);
5926 (func)(program);
5927 }
5928 }
5929
5930 $( $opt )? fn create_shader(&self, shader_type: GLenum) -> GLuint {
5931
5932
5933 #[cfg(feature = "debug")] { _gl_print_debug("glCreateShader"); }
5934 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5935
5936 if self.glCreateShader == ptr::null_mut() {
5937 _gl_impl_panic("glCreateShader");
5938 return 0;
5939 }
5940
5941 unsafe {
5942 let func: extern "system" fn(GLenum) -> GLuint = mem::transmute(self.glCreateShader);
5943 return (func)(shader_type);
5944 }
5945 }
5946
5947 $( $opt )? fn delete_shader(&self, shader: GLuint) {
5948
5949
5950 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteShader"); }
5951 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5952
5953 if self.glDeleteShader == ptr::null_mut() {
5954 _gl_impl_panic("glDeleteShader");
5955 return;
5956 }
5957
5958 unsafe {
5959 let func: extern "system" fn(GLuint) = mem::transmute(self.glDeleteShader);
5960 (func)(shader);
5961 }
5962 }
5963
5964 $( $opt )? fn detach_shader(&self, program: GLuint, shader: GLuint) {
5965
5966
5967 #[cfg(feature = "debug")] { _gl_print_debug("glDetachShader"); }
5968 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5969
5970 if self.glDetachShader == ptr::null_mut() {
5971 _gl_impl_panic("glDetachShader");
5972 return;
5973 }
5974
5975 unsafe {
5976 let func: extern "system" fn(GLuint, GLuint) = mem::transmute(self.glDetachShader);
5977 (func)(program, shader);
5978 }
5979 }
5980
5981 $( $opt )? fn link_program(&self, program: GLuint) {
5982
5983
5984 #[cfg(feature = "debug")] { _gl_print_debug("glLinkProgram"); }
5985 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
5986
5987 if self.glLinkProgram == ptr::null_mut() {
5988 _gl_impl_panic("glLinkProgram");
5989 return;
5990 }
5991
5992 unsafe {
5993 let func: extern "system" fn(GLuint) = mem::transmute(self.glLinkProgram);
5994 return (func)(program);
5995 }
5996 }
5997
5998 $( $opt )? fn clear_color(&self, r: f32, g: f32, b: f32, a: f32) {
5999
6000
6001 #[cfg(feature = "debug")] { _gl_print_debug("glClearColor"); }
6002 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6003
6004 if self.glClearColor == ptr::null_mut() {
6005 _gl_impl_panic("glClearColor");
6006 return;
6007 }
6008
6009 unsafe {
6010 let func: extern "system" fn(GLclampf, GLclampf, GLclampf, GLclampf) = mem::transmute(self.glClearColor);
6011 (func)(r, g, b, a);
6012 }
6013 }
6014
6015 $( $opt )? fn clear(&self, buffer_mask: GLbitfield) {
6016
6017
6018 #[cfg(feature = "debug")] { _gl_print_debug("glClear"); }
6019 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6020
6021 if self.glClear == ptr::null_mut() {
6022 _gl_impl_panic("glClear");
6023 return;
6024 }
6025
6026 unsafe {
6027 let func: extern "system" fn(GLbitfield) = mem::transmute(self.glClear);
6028 (func)(buffer_mask);
6029 }
6030 }
6031
6032 $( $opt )? fn clear_depth(&self, depth: f64) {
6033
6034
6035 #[cfg(feature = "debug")] { _gl_print_debug("glClearDepth"); }
6036 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6037
6038 if self.glClearDepth == ptr::null_mut() {
6039 _gl_impl_panic("glClearDepth");
6040 return;
6041 }
6042
6043 unsafe {
6044 let func: extern "system" fn(GLclampd) = mem::transmute(self.glClearDepth);
6045 (func)(depth as GLclampd);
6046 }
6047 }
6048
6049 $( $opt )? fn clear_stencil(&self, s: GLint) {
6050
6051
6052 #[cfg(feature = "debug")] { _gl_print_debug("glClearStencil"); }
6053 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6054
6055 if self.glClearStencil == ptr::null_mut() {
6056 _gl_impl_panic("glClearStencil");
6057 return;
6058 }
6059
6060 unsafe {
6061 let func: extern "system" fn(GLint) = mem::transmute(self.glClearStencil);
6062 (func)(s);
6063 }
6064 }
6065
6066 $( $opt )? fn flush(&self) {
6067
6068
6069 #[cfg(feature = "debug")] { _gl_print_debug("glFlush"); }
6070 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6071
6072 if self.glFlush == ptr::null_mut() {
6073 _gl_impl_panic("glFlush");
6074 return;
6075 }
6076
6077 unsafe {
6078 let func: extern "system" fn() = mem::transmute(self.glFlush);
6079 (func)();
6080 }
6081 }
6082
6083 $( $opt )? fn finish(&self) {
6084
6085
6086 #[cfg(feature = "debug")] { _gl_print_debug("glFinish"); }
6087 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6088
6089 if self.glFinish == ptr::null_mut() {
6090 _gl_impl_panic("glFinish");
6091 return;
6092 }
6093
6094 unsafe {
6095 let func: extern "system" fn() = mem::transmute(self.glFinish);
6096 (func)();
6097 }
6098 }
6099
6100 $( $opt )? fn get_error(&self) -> GLenum {
6101
6102
6103 #[cfg(feature = "debug")] { #[cfg(not(feature = "error"))] { _gl_print_debug("glGetError"); } }
6104
6105 if self.glGetError == ptr::null_mut() {
6106 _gl_impl_panic("glGetError");
6107 return 0;
6108 }
6109
6110 unsafe {
6111 let func: extern "system" fn() -> GLenum = mem::transmute(self.glGetError);
6112 (func)()
6113 }
6114 }
6115
6116 $( $opt )? fn stencil_mask(&self, mask: GLuint) {
6117
6118
6119 #[cfg(feature = "debug")] { _gl_print_debug("glStencilMask"); }
6120 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6121
6122 if self.glStencilMask == ptr::null_mut() {
6123 _gl_impl_panic("glStencilMask");
6124 return;
6125 }
6126
6127 unsafe {
6128 let func: extern "system" fn(GLuint) = mem::transmute(self.glStencilMask);
6129 (func)(mask)
6130 }
6131 }
6132
6133 $( $opt )? fn stencil_mask_separate(&self, face: GLenum, mask: GLuint) {
6134
6135
6136 #[cfg(feature = "debug")] { _gl_print_debug("glStencilMaskSeparate"); }
6137 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6138
6139 if self.glStencilMaskSeparate == ptr::null_mut() {
6140 _gl_impl_panic("glStencilMaskSeparate");
6141 return;
6142 }
6143
6144 unsafe {
6145 let func: extern "system" fn(GLenum, GLuint) = mem::transmute(self.glStencilMaskSeparate);
6146 (func)(face, mask)
6147 }
6148 }
6149
6150 $( $opt )? fn stencil_func(&self, func: GLenum, ref_: GLint, mask: GLuint) {
6151
6152
6153 #[cfg(feature = "debug")] { _gl_print_debug("glStencilFunc"); }
6154 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6155
6156 if self.glStencilFunc == ptr::null_mut() {
6157 _gl_impl_panic("glStencilFunc");
6158 return;
6159 }
6160
6161 unsafe {
6162 let glStencilFunc: extern "system" fn(GLenum, GLint, GLuint) = mem::transmute(self.glStencilFunc);
6163 (glStencilFunc)(func, ref_, mask)
6164 }
6165 }
6166
6167 $( $opt )? fn stencil_func_separate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) {
6168
6169
6170 #[cfg(feature = "debug")] { _gl_print_debug("glStencilFuncSeparate"); }
6171 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6172
6173 if self.glStencilFuncSeparate == ptr::null_mut() {
6174 _gl_impl_panic("glStencilFuncSeparate");
6175 return;
6176 }
6177
6178 unsafe {
6179 let glStencilFuncSeparate: extern "system" fn(GLenum, GLenum, GLint, GLuint) = mem::transmute(self.glStencilFuncSeparate);
6180 (glStencilFuncSeparate)(face, func, ref_, mask)
6181 }
6182 }
6183
6184 $( $opt )? fn stencil_op(&self, sfail: GLenum, dpfail: GLenum, dppass: GLenum) {
6185
6186
6187 #[cfg(feature = "debug")] { _gl_print_debug("glStencilOp"); }
6188 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6189
6190 if self.glStencilOp == ptr::null_mut() {
6191 _gl_impl_panic("glStencilOp");
6192 return;
6193 }
6194
6195 unsafe {
6196 let func: extern "system" fn(GLenum, GLenum, GLenum) = mem::transmute(self.glStencilOp);
6197 (func)(sfail, dpfail, dppass)
6198 }
6199 }
6200
6201 $( $opt )? fn stencil_op_separate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) {
6202
6203
6204 #[cfg(feature = "debug")] { _gl_print_debug("glStencilOpSeparate"); }
6205 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6206
6207 if self.glStencilOpSeparate == ptr::null_mut() {
6208 _gl_impl_panic("glStencilOpSeparate");
6209 return;
6210 }
6211
6212 unsafe {
6213 let func: extern "system" fn(GLenum, GLenum, GLenum, GLenum) = mem::transmute(self.glStencilOpSeparate);
6214 (func)(face, sfail, dpfail, dppass)
6215 }
6216 }
6217
6218 #[allow(unused_variables)]
6219 $( $opt )? fn egl_image_target_texture2d_oes(&self, target: GLenum, image: GLeglImageOES) {
6220
6221 #[cfg(feature = "debug")] { _gl_print_debug("glEglImageTargetTexture2dOes"); }
6222 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6223
6224 return; }
6231
6232 #[allow(unused_variables)]
6233 $( $opt )? fn egl_image_target_renderbuffer_storage_oes(&self, target: GLenum, image: GLeglImageOES) {
6234
6235 #[cfg(feature = "debug")] { _gl_print_debug("glEglImageTargetRenderbufferStorageOes"); }
6236 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6237
6238 return; }
6245
6246 $( $opt )? fn generate_mipmap(&self, target: GLenum) {
6247
6248 #[cfg(feature = "debug")] { _gl_print_debug("glGenerateMipmap"); }
6249 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6250
6251 if self.glGenerateMipmap == ptr::null_mut() {
6252 _gl_impl_panic("glGenerateMipmap");
6253 return;
6254 }
6255
6256 unsafe {
6257 let func: extern "system" fn(GLenum) = mem::transmute(self.glGenerateMipmap);
6258 (func)(target)
6259 }
6260 }
6261
6262 $( $opt )? fn insert_event_marker_ext(&self, message: &str) {
6263
6264
6265 #[cfg(feature = "debug")] { _gl_print_debug("glInsertEventMarkerEXT"); }
6266 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6267
6268 if self.glInsertEventMarkerEXT == ptr::null_mut() {
6269 _gl_impl_panic("glInsertEventMarkerEXT");
6270 return;
6271 }
6272
6273 unsafe {
6274 let func: extern "system" fn(GLsizei, *const GLchar) = mem::transmute(self.glInsertEventMarkerEXT);
6275 (func)(message.len() as GLsizei, message.as_ptr() as *const _);
6276 }
6277 }
6278
6279 $( $opt )? fn push_group_marker_ext(&self, message: &str) {
6280
6281
6282 #[cfg(feature = "debug")] { _gl_print_debug("glPushGroupMarkerEXT"); }
6283 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6284
6285 if self.glPushGroupMarkerEXT == ptr::null_mut() {
6286 _gl_impl_panic("glPushGroupMarkerEXT");
6287 return;
6288 }
6289
6290 unsafe {
6291 let func: extern "system" fn(GLsizei, *const GLchar) = mem::transmute(self.glPushGroupMarkerEXT);
6292 (func)(message.len() as GLsizei, message.as_ptr() as *const _);
6293 }
6294 }
6295
6296 $( $opt )? fn pop_group_marker_ext(&self) {
6297
6298
6299 #[cfg(feature = "debug")] { _gl_print_debug("glPopGroupMarkerEXT"); }
6300 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6301
6302 if self.glPopGroupMarkerEXT == ptr::null_mut() {
6303 _gl_impl_panic("glPopGroupMarkerEXT");
6304 return;
6305 }
6306
6307 unsafe {
6308 let func: extern "system" fn() = mem::transmute(self.glPopGroupMarkerEXT);
6309 (func)();
6310 }
6311 }
6312
6313 $( $opt )? fn debug_message_insert_khr(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, message: &str) {
6314
6315
6316 #[cfg(feature = "debug")] { _gl_print_debug("glDebugMessageInsertKHR"); }
6317 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6318
6319 if self.glDebugMessageInsertKHR == ptr::null_mut() {
6320 _gl_impl_panic("glDebugMessageInsertKHR");
6321 return;
6322 }
6323
6324 unsafe {
6325 let func: extern "system" fn(GLenum, GLenum, GLuint, GLenum, GLsizei, *const c_char) = mem::transmute(self.glDebugMessageInsertKHR);
6327 (func)(source, type_, id, severity, message.len() as GLsizei, message.as_ptr() as *const _);
6328 }
6329 }
6330
6331 $( $opt )? fn push_debug_group_khr(&self, source: GLenum, id: GLuint, message: &str) {
6332
6333
6334 #[cfg(feature = "debug")] { _gl_print_debug("glPushDebugGroupKHR"); }
6335 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6336
6337 if self.glPushDebugGroupKHR == ptr::null_mut() {
6338 _gl_impl_panic("glPushDebugGroupKHR");
6339 return;
6340 }
6341
6342 unsafe {
6343 let func: extern "system" fn(GLenum, GLuint, GLsizei, *const c_char) = mem::transmute(self.glPushDebugGroupKHR);
6344 (func)(source, id, message.len() as GLsizei, message.as_ptr() as *const _);
6345 }
6346 }
6347
6348 $( $opt )? fn pop_debug_group_khr(&self) {
6349
6350
6351 #[cfg(feature = "debug")] { _gl_print_debug("glPopDebugGroupKHR"); }
6352 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6353
6354 if self.glPopDebugGroupKHR == ptr::null_mut() {
6355 _gl_impl_panic("glPopDebugGroupKHR");
6356 return;
6357 }
6358
6359 unsafe {
6360 let func: extern "system" fn() = mem::transmute(self.glPopDebugGroupKHR);
6361 (func)();
6362 }
6363 }
6364
6365 $( $opt )? fn fence_sync(&self, condition: GLenum, flags: GLbitfield) -> GLsync {
6366
6367
6368 #[cfg(feature = "debug")] { _gl_print_debug("glFenceSync"); }
6369 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6370
6371 if self.glFenceSync == ptr::null_mut() {
6372 _gl_impl_panic("glFenceSync");
6373 return ptr::null_mut();
6374 }
6375
6376 unsafe {
6377 let func: extern "system" fn(GLenum, GLbitfield) -> GLsync = mem::transmute(self.glFenceSync);
6378 (func)(condition, flags) as *const _
6379 }
6380 }
6381
6382 $( $opt )? fn client_wait_sync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> GLenum {
6383
6384
6385 #[cfg(feature = "debug")] { _gl_print_debug("glClientWaitSync"); }
6386 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6387
6388 if self.glClientWaitSync == ptr::null_mut() {
6389 _gl_impl_panic("glClientWaitSync");
6390 return 0;
6391 }
6392
6393 unsafe {
6394 let func: extern "system" fn(GLsync, GLbitfield, GLuint64) -> GLenum = mem::transmute(self.glClientWaitSync);
6395 (func)(sync as *const _, flags, timeout)
6396 }
6397 }
6398
6399 $( $opt )? fn wait_sync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) {
6400
6401
6402 #[cfg(feature = "debug")] { _gl_print_debug("glWaitSync"); }
6403 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6404
6405 if self.glWaitSync == ptr::null_mut() {
6406 _gl_impl_panic("glWaitSync");
6407 return;
6408 }
6409
6410 unsafe {
6411 let func: extern "system" fn(GLsync, GLbitfield, GLuint64) = mem::transmute(self.glWaitSync);
6412 (func)(sync as *const _, flags, timeout);
6413 }
6414 }
6415
6416 $( $opt )? fn texture_range_apple(&self, target: GLenum, data: &[u8]) {
6417
6418
6419 #[cfg(feature = "debug")] { _gl_print_debug("glTextureRangeAPPLE"); }
6420 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6421
6422 if self.glTextureRangeAPPLE == ptr::null_mut() {
6423 _gl_impl_panic("glTextureRangeAPPLE");
6424 return;
6425 }
6426
6427 unsafe {
6428 let func: extern "system" fn(GLenum, GLsizei, *const c_void) = mem::transmute(self.glTextureRangeAPPLE);
6429 (func)(
6430 target,
6431 data.len() as GLsizei,
6432 data.as_ptr() as *const c_void,
6433 );
6434 }
6435 }
6436
6437 $( $opt )? fn delete_sync(&self, sync: GLsync) {
6438
6439
6440 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteSync"); }
6441 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6442
6443 if self.glDeleteSync == ptr::null_mut() {
6444 _gl_impl_panic("glDeleteSync");
6445 return;
6446 }
6447
6448 unsafe {
6449 let func: extern "system" fn(GLsync) = mem::transmute(self.glDeleteSync);
6450 (func)(sync as *const _);
6451 }
6452 }
6453
6454 $( $opt )? fn gen_fences_apple(&self, n: GLsizei) -> Vec<GLuint> {
6455
6456 let mut result = vec![0 as GLuint; n as usize];
6457
6458
6459 #[cfg(feature = "debug")] { _gl_print_debug("glGenFencesAPPLE"); }
6460 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6461
6462 if self.glGenFencesAPPLE == ptr::null_mut() {
6463 _gl_impl_panic("glGenFencesAPPLE");
6464 return result;
6465 }
6466
6467 unsafe {
6468 let func: extern "system" fn(GLsizei, *mut GLuint) = mem::transmute(self.glGenFencesAPPLE);
6469 (func)(n, result.as_mut_ptr());
6470 }
6471 result
6472 }
6473
6474 $( $opt )? fn delete_fences_apple(&self, fences: &[GLuint]) {
6475
6476
6477 #[cfg(feature = "debug")] { _gl_print_debug("glDeleteFencesAPPLE"); }
6478 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6479
6480 if self.glDeleteFencesAPPLE == ptr::null_mut() {
6481 _gl_impl_panic("glDeleteFencesAPPLE");
6482 return;
6483 }
6484
6485 unsafe {
6486 let func: extern "system" fn(GLsizei, *const GLuint) = mem::transmute(self.glDeleteFencesAPPLE);
6487 (func)(fences.len() as GLsizei, fences.as_ptr());
6488 }
6489 }
6490
6491 $( $opt )? fn set_fence_apple(&self, fence: GLuint) {
6492
6493
6494 #[cfg(feature = "debug")] { _gl_print_debug("glSetFenceAPPLE"); }
6495 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6496
6497 if self.glSetFenceAPPLE == ptr::null_mut() {
6498 _gl_impl_panic("glSetFenceAPPLE");
6499 return;
6500 }
6501
6502 unsafe {
6503 let func: extern "system" fn(GLuint) = mem::transmute(self.glSetFenceAPPLE);
6504 (func)(fence);
6505 }
6506 }
6507
6508 $( $opt )? fn finish_fence_apple(&self, fence: GLuint) {
6509
6510
6511 #[cfg(feature = "debug")] { _gl_print_debug("glFinishFenceAPPLE"); }
6512 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6513
6514 if self.glFinishFenceAPPLE == ptr::null_mut() {
6515 _gl_impl_panic("glFinishFenceAPPLE");
6516 return;
6517 }
6518
6519 unsafe {
6520 let func: extern "system" fn(GLuint) = mem::transmute(self.glFinishFenceAPPLE);
6521 (func)(fence);
6522 }
6523 }
6524
6525 $( $opt )? fn test_fence_apple(&self, fence: GLuint) {
6526
6527
6528 #[cfg(feature = "debug")] { _gl_print_debug("glTestFenceAPPLE"); }
6529 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6530
6531 if self.glTestFenceAPPLE == ptr::null_mut() {
6532 _gl_impl_panic("glTestFenceAPPLE");
6533 return;
6534 }
6535
6536 unsafe {
6537 let func: extern "system" fn(GLuint) = mem::transmute(self.glTestFenceAPPLE);
6538 (func)(fence);
6539 }
6540 }
6541
6542 $( $opt )? fn test_object_apple(&self, object: GLenum, name: GLuint) -> GLboolean {
6543
6544
6545 #[cfg(feature = "debug")] { _gl_print_debug("glTestObjectAPPLE"); }
6546 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6547
6548 if self.glTestObjectAPPLE == ptr::null_mut() {
6549 _gl_impl_panic("glTestObjectAPPLE");
6550 return 0;
6551 }
6552
6553 unsafe {
6554 let func: extern "system" fn(GLenum, GLuint) -> GLboolean = mem::transmute(self.glTestObjectAPPLE);
6555 (func)(object, name)
6556 }
6557 }
6558
6559 $( $opt )? fn finish_object_apple(&self, object: GLenum, name: GLuint) {
6560
6561
6562 #[cfg(feature = "debug")] { _gl_print_debug("glFinishObjectAPPLE"); }
6563 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6564
6565 if self.glTestObjectAPPLE == ptr::null_mut() {
6566 _gl_impl_panic("glFinishObjectAPPLE");
6567 return;
6568 }
6569
6570 unsafe {
6571 let func: extern "system" fn(GLenum, GLint) = mem::transmute(self.glFinishObjectAPPLE);
6573 (func)(object, name as GLint);
6574 }
6575 }
6576
6577 $( $opt )? fn bind_frag_data_location_indexed(
6579 &self,
6580 program: GLuint,
6581 color_number: GLuint,
6582 index: GLuint,
6583 name: &str,
6584 ) {
6585
6586 #[cfg(feature = "debug")] { _gl_print_debug("glBindFragDataLocationIndexed"); }
6587 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6588
6589 if self.glBindFragDataLocationIndexed == ptr::null_mut() {
6590 _gl_impl_panic("glBindFragDataLocationIndexed");
6591 return;
6592 }
6593
6594 let c_string = encode_ascii(name);
6595
6596 unsafe {
6597 let func: extern "system" fn(GLuint, GLuint, GLuint, *const c_char) = mem::transmute(self.glBindFragDataLocationIndexed);
6598 (func)(
6599 program,
6600 color_number,
6601 index,
6602 c_string.as_ptr(),
6603 )
6604 }
6605 }
6606
6607 $( $opt )? fn get_frag_data_index(&self, program: GLuint, name: &str) -> GLint {
6608
6609
6610 #[cfg(feature = "debug")] { _gl_print_debug("glGetFragDataIndex"); }
6611 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6612
6613 if self.glGetFragDataIndex == ptr::null_mut() {
6614 _gl_impl_panic("glGetFragDataIndex");
6615 return -1;
6616 }
6617
6618 let c_string = encode_ascii(name);
6619
6620 unsafe {
6621 let func: extern "system" fn(GLuint, *const c_char) -> GLint = mem::transmute(self.glGetFragDataIndex);
6622 (func)(program, c_string.as_ptr())
6623 }
6624 }
6625
6626 $( $opt )? fn get_debug_messages(&self) -> Vec<DebugMessage> {
6628
6629
6630 #[cfg(feature = "debug")] { _gl_print_debug("glGetDebugMessageLog"); }
6631 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6632
6633 if self.glGetDebugMessageLog == ptr::null_mut() {
6634 _gl_impl_panic("glGetDebugMessageLog");
6635 return Vec::new();
6636 }
6637
6638 let mut max_message_len = [0];
6639 unsafe {
6640 self.get_integer_v(gl::MAX_DEBUG_MESSAGE_LENGTH, &mut max_message_len[..])
6641 }
6642
6643 let mut output = Vec::new();
6644 const CAPACITY: usize = 4;
6645
6646 let mut msg_data = vec![0u8; CAPACITY * max_message_len[0] as usize];
6647 let mut sources = [0 as GLenum; CAPACITY];
6648 let mut types = [0 as GLenum; CAPACITY];
6649 let mut severities = [0 as GLenum; CAPACITY];
6650 let mut ids = [0 as GLuint; CAPACITY];
6651 let mut lengths = [0 as GLsizei; CAPACITY];
6652
6653 loop {
6654 let count = unsafe {
6655 let func: extern "system" fn(GLuint, GLsizei, *mut GLenum, *mut GLenum, *mut GLuint, *mut GLenum, *mut GLsizei, *mut GLchar) -> GLuint = mem::transmute(self.glGetDebugMessageLog);
6656 (func)(
6657 CAPACITY as _,
6658 msg_data.len() as _,
6659 sources.as_mut_ptr(),
6660 types.as_mut_ptr(),
6661 ids.as_mut_ptr(),
6662 severities.as_mut_ptr(),
6663 lengths.as_mut_ptr(),
6664 msg_data.as_mut_ptr() as *mut _,
6665 )
6666 };
6667
6668 let mut offset = 0;
6669 output.extend((0..count as usize).map(|i| {
6670 let len = lengths[i] as usize;
6671 let slice = &msg_data[offset..offset + len];
6672 offset += len;
6673 DebugMessage {
6674 message: String::from_utf8_lossy(slice).to_string(),
6675 source: sources[i],
6676 ty: types[i],
6677 id: ids[i],
6678 severity: severities[i],
6679 }
6680 }));
6681
6682 if (count as usize) < CAPACITY {
6683 return output;
6684 }
6685 }
6686 }
6687
6688 $( $opt )? fn provoking_vertex_angle(&self, _mode: GLenum) {
6689
6690 #[cfg(feature = "debug")] { _gl_print_debug("glProvokingVertexAngle"); }
6691 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6692
6693 _gl_impl_panic("glProvokingVertexAngle"); return;
6695 }
6696
6697 $( $opt )? fn blend_barrier_khr(&self) {
6699
6700
6701 #[cfg(feature = "debug")] { _gl_print_debug("glBlendBarrierKHR"); }
6702 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6703
6704 if self.glBlendBarrierKHR == ptr::null_mut() {
6705 _gl_impl_panic("glBlendBarrierKHR");
6706 return;
6707 }
6708
6709 unsafe {
6710 let func: extern "system" fn() = mem::transmute(self.glBlendBarrierKHR);
6711 (func)();
6712 }
6713 }
6714
6715 $( $opt )? fn copy_texture_chromium(&self,
6717 _source_id: GLuint, _source_level: GLint,
6718 _dest_target: GLenum, _dest_id: GLuint, _dest_level: GLint,
6719 _internal_format: GLint, _dest_type: GLenum,
6720 _unpack_flip_y: GLboolean, _unpack_premultiply_alpha: GLboolean, _unpack_unmultiply_alpha: GLboolean)
6721 {
6722 #[cfg(feature = "debug")] { _gl_print_debug("glCopyTextureChromium"); }
6723 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6724
6725 _gl_impl_panic("glCopyTextureChromium"); return;
6727 }
6728 $( $opt )? fn copy_sub_texture_chromium(&self,
6729 _source_id: GLuint, _source_level: GLint,
6730 _dest_target: GLenum, _dest_id: GLuint, _dest_level: GLint,
6731 _x_offset: GLint, _y_offset: GLint, _x: GLint, _y: GLint, _width: GLsizei, _height: GLsizei,
6732 _unpack_flip_y: GLboolean, _unpack_premultiply_alpha: GLboolean, _unpack_unmultiply_alpha: GLboolean)
6733 {
6734 #[cfg(feature = "debug")] { _gl_print_debug("glCopySubTextureChromium"); }
6735 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6736
6737 _gl_impl_panic("glCopySubTextureChromium"); return;
6739 }
6740
6741 $( $opt )? fn copy_texture_3d_angle(
6743 &self,
6744 _source_id: GLuint,
6745 _source_level: GLint,
6746 _dest_target: GLenum,
6747 _dest_id: GLuint,
6748 _dest_level: GLint,
6749 _internal_format: GLint,
6750 _dest_type: GLenum,
6751 _unpack_flip_y: GLboolean,
6752 _unpack_premultiply_alpha: GLboolean,
6753 _unpack_unmultiply_alpha: GLboolean,
6754 ) {
6755
6756 #[cfg(feature = "debug")] { _gl_print_debug("glANGLECopyTexture3D"); }
6757 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6758 _gl_impl_panic("glANGLECopyTexture3D"); return;
6760 }
6761
6762 $( $opt )? fn copy_sub_texture_3d_angle(
6763 &self,
6764 _source_id: GLuint,
6765 _source_level: GLint,
6766 _dest_target: GLenum,
6767 _dest_id: GLuint,
6768 _dest_level: GLint,
6769 _x_offset: GLint,
6770 _y_offset: GLint,
6771 _z_offset: GLint,
6772 _x: GLint,
6773 _y: GLint,
6774 _z: GLint,
6775 _width: GLsizei,
6776 _height: GLsizei,
6777 _depth: GLsizei,
6778 _unpack_flip_y: GLboolean,
6779 _unpack_premultiply_alpha: GLboolean,
6780 _unpack_unmultiply_alpha: GLboolean,
6781 ) {
6782
6783 #[cfg(feature = "debug")] { _gl_print_debug("glANGLECopySubTexture3D"); }
6784 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6785
6786 _gl_impl_panic("glANGLECopySubTexture3D"); }
6789
6790 $( $opt )? fn buffer_storage(
6791 &self,
6792 target: GLenum,
6793 size: GLsizeiptr,
6794 data: *const GLvoid,
6795 flags: GLbitfield,
6796 ) {
6797
6798 #[cfg(feature = "debug")] { _gl_print_debug("glBufferStorage"); }
6799 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6800
6801 if self.glBufferStorage == ptr::null_mut() {
6802 _gl_impl_panic("glBufferStorage");
6803 return;
6804 }
6805
6806 unsafe {
6807 let func: extern "system" fn(GLenum, GLsizeiptr, *const GLvoid, GLbitfield) = mem::transmute(self.glBufferStorage);
6808 (func)(target, size, data, flags);
6809 }
6810 }
6811
6812 $( $opt )? fn flush_mapped_buffer_range(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) {
6813
6814
6815 #[cfg(feature = "debug")] { _gl_print_debug("glFlushMappedBufferRange"); }
6816 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6817
6818 if self.glFlushMappedBufferRange == ptr::null_mut() {
6819 _gl_impl_panic("glFlushMappedBufferRange");
6820 return;
6821 }
6822
6823 unsafe {
6824 let func: extern "system" fn(GLenum, GLintptr, GLsizeiptr) = mem::transmute(self.glFlushMappedBufferRange);
6825 (func)(target, offset, length);
6826 }
6827 }
6828 };
6829}
6830
6831#[cfg(feature = "gleam_trait")]
6832impl gleam::gl::Gl for GenericGlContext {
6833 impl_gl_context!();
6834}
6835
6836#[cfg(not(feature = "gleam_trait"))]
6837#[allow(dead_code)]
6838impl GenericGlContext {
6839 impl_gl_context!(pub);
6840
6841 pub fn start_tiling_qcom(&self, x: GLuint, y: GLuint, width: GLuint, height: GLuint, preserve_mask: GLbitfield) {
6842
6843
6844 #[cfg(feature = "debug")] { _gl_print_debug("glStartTilingQCOM"); }
6845 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6846
6847 if self.glStartTilingQCOM == ptr::null_mut() {
6848 _gl_impl_panic("glStartTilingQCOM");
6849 return;
6850 }
6851
6852 unsafe {
6853 let func: extern "system" fn(GLuint, GLuint, GLuint, GLuint, GLbitfield) = mem::transmute(self.glStartTilingQCOM);
6854 (func)(x, y, width, height, preserve_mask);
6855 }
6856 }
6857
6858 pub fn end_tiling_qcom(&self, preserve_mask: GLbitfield) {
6859
6860
6861 #[cfg(feature = "debug")] { _gl_print_debug("glEndTilingQCOM"); }
6862 #[cfg(feature = "error")] { _gl_check_for_last_error(self); }
6863
6864 if self.glEndTilingQCOM == ptr::null_mut() {
6865 _gl_impl_panic("glEndTilingQCOM");
6866 return;
6867 }
6868
6869 unsafe {
6870 let func: extern "system" fn(GLbitfield) = mem::transmute(self.glEndTilingQCOM);
6871 (func)(preserve_mask);
6872 }
6873 }
6874}
6875
6876
6877#[cfg(feature = "std")]
6878fn _gl_impl_panic(s: &str) { println!("OpenGL function not loaded: {}", s); }
6879
6880#[cfg(not(feature = "std"))]
6881#[inline(always)]
6882fn _gl_impl_panic(_s: &str) { }
6883
6884#[cfg(feature = "debug")]
6885fn _gl_print_debug(s: &str) { println!("Called OpenGL function: {}", s); }
6886
6887#[cfg(feature = "error")]
6888fn _gl_check_for_last_error(gl: &GenericGlContext) {
6889 let mut error_count = 20;
6891 let mut last = gl.get_error();
6892 while last != gl::NO_ERROR && error_count > 0 {
6893 let e_string = match last {
6894 gl::INVALID_ENUM => "INVALID_ENUM".to_string(),
6895 gl::INVALID_VALUE => "INVALID_VALUE".to_string(),
6896 gl::INVALID_OPERATION => "INVALID_OPERATION".to_string(),
6897 gl::INVALID_FRAMEBUFFER_OPERATION => "INVALID_FRAMEBUFFER_OPERATION".to_string(),
6898 gl::OUT_OF_MEMORY => "OUT_OF_MEMORY".to_string(),
6899 gl::STACK_UNDERFLOW => "STACK_UNDERFLOW".to_string(),
6900 gl::STACK_OVERFLOW => "STACK_OVERFLOW".to_string(),
6901 _ => format!("Unknown error: {:0x}", last),
6902 };
6903
6904 println!("OPENGL ERROR OCCURRED: {}", e_string);
6905 last = gl.get_error();
6906 error_count -= 1;
6907 }
6908}